Alterando Status do DWM

Publicado por Xerxes em 16/10/2019

[ Hits: 5.255 ]

 


Alterando Status do DWM



Gosto muito do gerenciador de janelas i3, principalmente o i3-gaps. Mas, ultimamente tenho preferido usar o DWM, pois ele parece ser mais simples e leve que o i3. Mas o DWM não é tão "out of the box" quanto o i3. Quando iniciamos o DWM pela primeira vez, vemos que o status exibe apenas a versão do DWM, algo como "dwm-6.2".

Para alterar o status, basta usarmos um comando com o "xsetroot", dessa forma:

xsetroot -name "hello world!"

Bem fácil, não?

Se quiser exibir a data, bastaria usar o seguinte:

xsetroot -name "$(date)"

Como já deve ter percebido, a informação não se atualiza automaticamente. Para que ela seja atualizada, é necessário criar um "loop" em um Shell Script. Por exemplo:

while true; do
	xsetroot -name "$(date)"
	sleep 2
done

Mas além da data e hora, se você quiser encontrar outras informações, pode seguir os comandos abaixo:

1. Para exibir o uso médio do processador no último minuto:

cat /proc/loadavg | awk '{print $1}'

2. Para exibir a temperatura do processador:

sed 's/000$/°C/' /sys/class/thermal/thermal_zone0/temp
Ou:
sed 's/000$/°C/' /sys/class/hwmon/hwmon0/temp2_input

Busque em "thermal" e em "hwmon", pois depende do computador.

3. Para ver o espaço livre em disco, use o seguinte:

df -h | awk '{ if ($6 == "/") print $4 }'

4. Para ver uso da memória:

free -h | awk '(NR==2){ print $3 }'

5. Para ver o volume do som:

amixer get Master | awk -F'[][]' 'END{ print $2 }'

6. Para ver o status do dispositivo de rede:

cat /sys/class/net/enp1s0/operstate

Obs.: troque "enp1s0" pelo SEU dispositivo.

7. E para pegar a data e hora de forma mais organizada, use:

date +"%a %d %h %H:%M"

Agora, para colocar todas as informações em um script, faça o seguinte:

#!/bin/bash

DATE=$(date +"%a %d %h %H:%M")
VOL=$( amixer get Master | awk -F'[][]' 'END{ print $2 }')
CPUUSE=$(cat /proc/loadavg | awk '{print $1}')
MEMUSE=$(free -h | awk '(NR==2){ print $3 }')
TEMPCPU=$(sed 's/000$/°C/' /sys/class/hwmon/hwmon0/temp2_input)
DISKFREE=$(df -h | awk '{ if ($6 == "/") print $4 }')
NETSTATE=$(cat /sys/class/net/enp1s0/operstate)

echo " CPU: $CPUUSE% | TEMP: $TEMPCPU | /: $DISKFREE | MEM: $MEMUSE | VOL: $VOL | NET: $NETSTATE | $DATE"

Salve o arquivo e torne-o executável ("chmod +x arquivo"). No meu caso resolvi salvar como "info.sh".

Ao executar o script, receberá uma saída assim:

CPU: 1.00% | TEMP: 92°C | /: 423G | MEM: 1,3Gi | VOL: 100% | NET: up | qua 02 out 09:42

Para colocar essa informação no status do dwm coloque em um "loop", assim:

while true; do
        xsetroot -name "$(sh ~/info.sh)"
        sleep 10
done &

Altere o tempo do "sleep" a seu gosto. No meu caso, coloquei o "loop" no arquivo ".xinitrc", antes de executar o DWM. Assim:

setxkbmap -layout br

while true; do
        xsetroot -name "$(sh ~/info.sh)"
        sleep 10
done &

exec dwm

Então, quando inicio o "dwm", a informação vai para o status automaticamente.

Para mais informações:
Outras dicas deste autor

Erro ao montar shares pelo nome?

SimpleScreenRecorder no Debian Wheezy

Como rodar Forays no Linux

App do Facebook pesado? Use a versão Lite!

Criando atalho para Whisker Menu no Xfce

Leitura recomendada

Compiz: Resolvendo problema com vídeos piscando

Configurando IP estático com rede cabeada no Arch Linux

Não rolou nenhuma das docks famosas? Improvise uma!

Ativando o Multilib (forma fácil) no Slackware

Bloqueando máquinas pelo endereço MAC da placa de rede

  

Comentários
[1] Comentário enviado por xerxeslins em 29/11/2020 - 12:33h

Atualização do script (precisa do top para pegar dados de uso do processador):

#!/bin/bash

DATE=$(date +"%a %d %h %H:%M")
VOL=$( amixer get Master | awk -F'[][]' 'END{ print $2 }')
#CPUUSE=$(cat /proc/loadavg | awk '{print $1}')
CPUUSE=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }')
MEMUSE=$(free -h --si | awk '(NR==2){ print $3 }')
MEMAVA=$(free -h --si | awk '(NR==2){ print $7 }')
TEMPCPU=$(sed 's/000$/°C/' /sys/devices/platform/coretemp.0/hwmon/hwmon3/temp3_input)
DISKFREE=$(df -h | awk '{ if ($6 == "/") print $4 }')
NETSTATEW=$(cat /sys/class/net/wlp0s29f7u2/operstate)
NETSTATEE=$(cat /sys/class/net/enp8s0/operstate)
MYSSID=$(iwgetid -r)

echo " $CPUUSE $TEMPCPU | $DISKFREE $MEMUSE/$MEMAVA | $VOL | w:$NETSTATEW ($MYSSID) e:$NETSTATEE | $DATE"



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts