AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 473788
Accepted
Matthias Braun
Matthias Braun
Asked: 2018-10-08 06:09:03 +0800 CST2018-10-08 06:09:03 +0800 CST 2018-10-08 06:09:03 +0800 CST

Exemplo simples de swaybar

  • 772

Eu gostaria de ter uma barra de status simples e calma para o Sway que eu uso com o Arch Linux.

As configurações que encontrei até agora usam um programa separado como waybar ou i3status . Embora pareçam ótimos, gostaria de mantê-lo simples e usar status_commandmencionado man sway-bardiretamente.

De preferência, esta barra de status funcionaria igualmente bem com o i3 , o que deve ser possível, pois o Sway visa que sua configuração seja compatível com o i3.

sway
  • 4 4 respostas
  • 24798 Views

4 respostas

  • Voted
  1. Matthias Braun
    2018-10-08T06:09:03+08:002018-10-08T06:09:03+08:00

    Eu tenho esse script em ~/.config/sway/status.sh:

    # The Sway configuration file in ~/.config/sway/config calls this script.
    # You should see changes to the status bar after saving this script.
    # If not, do "killall swaybar" and $mod+Shift+c to reload the configuration.
    
    # Produces "21 days", for example
    uptime_formatted=$(uptime | cut -d ',' -f1  | cut -d ' ' -f4,5)
    
    # The abbreviated weekday (e.g., "Sat"), followed by the ISO-formatted date
    # like 2018-10-06 and the time (e.g., 14:01)
    date_formatted=$(date "+%a %F %H:%M")
    
    # Get the Linux version but remove the "-1-ARCH" part
    linux_version=$(uname -r | cut -d '-' -f1)
    
    # Returns the battery status: "Full", "Discharging", or "Charging".
    battery_status=$(cat /sys/class/power_supply/BAT0/status)
    
    # Emojis and characters for the status bar
    # ? ? ? ? ⚡ ? \|
    echo $uptime_formatted ↑ $linux_version ? $battery_status ? $date_formatted
    

    A parte ~/.config/sway/configque define a barra de status é esta:

    bar {
        position top
        # Keep in mind that the current directory of this config file is $HOME
        status_command while ~/.config/sway/status.sh; do sleep 1; done
    
        colors {
            # Text color of status bar
            statusline #ffffff
            # Background of status bar
            background #323232
        }
        font pango:DejaVu Sans Mono 10
    }
    

    É assim que a barra fica usando esta configuração:

    barra estabilizadora

    As configurações acima também funcionam no i3 com um resultado idêntico.

    Você precisa ter uma fonte apropriada instalada para renderizar os caracteres emoji, por exemplo:

    pacman -S noto-fonts-emoji
    

    ou

    apt install fonts-noto-color-emoji
    
    • 14
  2. Best Answer
    Matthias Braun
    2019-01-07T06:27:50+08:002019-01-07T06:27:50+08:00

    Aqui está minha barra de status atual:

    som da captura de tela da barra de status ativado

    Quando o áudio é silenciado:

    som da captura de tela da barra de status desativado

    Conteúdo do status.shque ~/.config/sway/configchama:

    # The Sway configuration file in ~/.config/sway/config calls this script.
    # You should see changes to the status bar after saving this script.
    # If not, do "killall swaybar" and $mod+Shift+c to reload the configuration.
    
    # The abbreviated weekday (e.g., "Sat"), followed by the ISO-formatted date
    # like 2018-10-06 and the time (e.g., 14:01). Check `man date` on how to format
    # time and date.
    date_formatted=$(date "+%a %F %H:%M")
    
    # "upower --enumerate | grep 'BAT'" gets the battery name (e.g.,
    # "/org/freedesktop/UPower/devices/battery_BAT0") from all power devices.
    # "upower --show-info" prints battery information from which we get
    # the state (such as "charging" or "fully-charged") and the battery's
    # charge percentage. With awk, we cut away the column containing
    # identifiers. i3 and sway convert the newline between battery state and
    # the charge percentage automatically to a space, producing a result like
    # "charging 59%" or "fully-charged 100%".
    battery_info=$(upower --show-info $(upower --enumerate |\
    grep 'BAT') |\
    egrep "state|percentage" |\
    awk '{print $2}')
    
    # "amixer -M" gets the mapped volume for evaluating the percentage which
    # is more natural to the human ear according to "man amixer".
    # Column number 4 contains the current volume percentage in brackets, e.g.,
    # "[36%]". Column number 6 is "[off]" or "[on]" depending on whether sound
    # is muted or not.
    # "tr -d []" removes brackets around the volume.
    # Adapted from https://bbs.archlinux.org/viewtopic.php?id=89648
    audio_volume=$(amixer -M get Master |\
    awk '/Mono.+/ {print $6=="[off]" ?\
    $4" ?": \
    $4" ?"}' |\
    tr -d [])
    
    # Additional emojis and characters for the status bar:
    # Electricity: ⚡ ↯ ⭍ ?
    # Audio: ? ? ? ? ? ?
    # Separators: \| ❘ ❙ ❚
    # Misc: ? ? ? ? ⭐ ? ↑ ↓ ✉ ✅ ❎
    echo $audio_volume $battery_info ? $date_formatted
    

    Aqui está a parte da barra de status de ~/.config/sway/config:

    bar {
        position top
    
        # Keep in mind that the current directory of this config file is $HOME
        status_command while ~/.config/sway/status.sh; do sleep 1; done
    
        # https://i3wm.org/docs/userguide.html#_colors
        colors {
            # Text color of status bar
            statusline #f8b500
    
            # Background color of status bar
            background #5e227f
        }
    }
    

    status.shfunciona também com i3 quando chamado /.config/i3/configusando o mesmo barbloco mostrado acima.

    Aqui está um link para minha configuração atual do Sway contendo status.sh.

    • 6
  3. Nishant
    2019-05-25T22:16:26+08:002019-05-25T22:16:26+08:00

    Eu amo o bash, mas estou usando um script Python para isso. Parece que a biblioteca padrão do Python tem muitos utilitários para esse tipo de coisa.

    from datetime import datetime
    from psutil import disk_usage, sensors_battery
    from psutil._common import bytes2human
    from socket import gethostname, gethostbyname
    from subprocess import check_output
    from sys import stdout
    from time import sleep
    
    def write(data):
        stdout.write('%s\n' % data)
        stdout.flush()
    
    def refresh():
        disk = bytes2human(disk_usage('/').free)
        ip = gethostbyname(gethostname())
        try:
            ssid = check_output("iwgetid -r", shell=True).strip().decode("utf-8")
            ssid = "(%s)" % ssid
        except Exception:
            ssid = "None"
        battery = int(sensors_battery().percent)
        status = "Charging" if sensors_battery().power_plugged else "Discharging"
        date = datetime.now().strftime('%h %d %A %H:%M')
        format = "Space: %s | Internet: %s %s | Battery: %s%% %s | Date: %s"
        write(format % (disk, ip, ssid, battery, status, date))
    
    while True:
        refresh()
        sleep(1)
    

    Aqui está uma captura de tela da barra:

    captura de tela da barra de status

    • 5
  4. JiaHao Xu
    2021-02-16T23:18:01+08:002021-02-16T23:18:01+08:00

    swaystatus

    Eu escrevi uma barra de status leve, mas rica em recursos, swaystatus para i3 e sway.

    Ele é escrito completamente em C/C++ para torná-lo o mais leve possível e especificamente, para evitar a criação de novos processos a cada segundo como no script Bash.

    Ele usa bibliotecas como libupower-glib, libasounde libnmpara recuperar informações de bateria, volume e rede em vez de usar upower, amixerou nmcli.

    Para luz de fundo, carga e meminfo, ele lê diretamente /sys/class/backlightde /proc/loadavge /proc/meminfo.

    No meu computador x86-64, ele compila em um único binário com apenas 49K de tamanho usando clang-11.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve