Dúvida - erro no meu script personalizado do i3status (any_position_wrapper) [RESOLVIDO]

1. Dúvida - erro no meu script personalizado do i3status (any_position_wrapper) [RESOLVIDO]

Tadeu
T.D.Reis

(usa Arch Linux)

Enviado em 19/11/2023 - 19:27h

Fala galera, tudo beleza? To tentando adicionar duas novas informações ao meu i3status modificando o seguinte script: https://github.com/i3/i3status/blob/main/contrib/any_position_wrapper.sh

Meu script modificado está assim:

#!/usr/bin/env bash

function update_holder {

local instance="$1"
local replacement="$2"
echo "$json_array" | jq --argjson arg_j "$replacement" "(.[] | (select(.instance==\"$instance\"))) |= \$arg_j"
}

function remove_holder {

local instance="$1"
echo "$json_array" | jq "del(.[] | (select(.instance==\"$instance\")))"
}

function cmus {

artist=$(printf $(cmus-remote -C status | grep "tag artist" | cut -c 12-))

if [[ $artist = *[!\ ]* ]]; then
song=$(printf $(cmus-remote -C status | grep title | cut -c 11-))
printf "$artist ﱘ $song"
else
json_array=$(remove_holder holder__i3_layout)
fi
}

function split {

local layout=$(i3-msg -t get_tree | jq --raw-output 'recurse(.nodes[]; .nodes !=null) | select(.nodes[].focused).layout')
if [ "$layout" == splith ] ; then
local json='{ "full_text": "[horizontal]", "color": "#92BFEB" }'
json_array=$(update_holder holder__split "$json")
elif [ "$layout" == splitv ] ; then
local json='{ "full_text": "[vertical]", "color": "#92BFEB" }'
json_array=$(update_holder holder__split "$json")
elif [ "$layout" == tabbed ] ; then
local json='{ "full_text": "[tabbed]", "color": "#92BFEB" }'
json_array=$(update_holder holder__split "$json")
elif [ "$layout" == stacked ] ; then
local json='{ "full_text": "[stacked]", "color": "#92BFEB" }'
json_array=$(update_holder holder__split "$json")
else
json_array=$(remove_holder holder__split)
fi
}
i3status | (read line; echo "$line"; read line ; echo "$line" ; read line ; echo "$line" ; while true
do
read line
json_array="$(echo $line | sed -e 's/^,//')"
split
cmus
echo ",$json_array"
done)


As informações do cmus não estão sendo exibidas. Confesso, não faço ideia do porque. Provavelmente o erro é por causa da minha incapacidade em JSON, não sei praticamente nada kkkkk Se alguém aí souber e puder dar uma força, valeu mesmo!

Obs: sei que o i3blocks ou mesmo a polybar podem fazer isso também e de forma mais fácil. Porém, o i3status me atende muito bem e não queria ter que instalar outro painel. E, um das funções que quero, que no script chama "split" está funcionando de boa, só o cmus que não.
Obs²: código no pastebin: https://pastebin.com/EBxG0mm1


  


2. Re: Dúvida - erro no meu script personalizado do i3status (any_position_wrapper) [RESOLVIDO]

Tadeu
T.D.Reis

(usa Arch Linux)

Enviado em 20/11/2023 - 18:40h

O gênio aqui esqueceu de ler e entender como funciona essa opção de adicionar informações ao i3status com esse tipo de script. Não tem como exibir o status do cmus dessa forma, não. Tive que usar o i3blocks mesmo. Consegui adicionar a opção de exibir o layout atual e o estado do num/capslock, mas, essas informações que precisam "printar" um resultado (dinâmico) na i3bar, não tem jeito não.


3. Re: Dúvida - erro no meu script personalizado do i3status (any_position_wrapper) [RESOLVIDO]

Tadeu
T.D.Reis

(usa Arch Linux)

Enviado em 21/01/2024 - 18:51h

Na verdade, tem jeito sim. Esses dias, de bobeira, resolvi fazer uns testes com esse script novamente. O problema era o comando echo.

Ainda tá bem tosco, preciso melhorar a função. Mas tá funcionando, isso que importa por enquanto.

Da seguinte forma funcionou:

function cmus {
local artist=$(cmus-remote -C status | grep "tag artist" | cut -c 12-)
song=$(cmus-remote -C status | grep title | cut -c 11-)
if [[ "$artist" ]]; then
local json='{ "full_text": "'$artist' - '$song'", "color": "#ffd966" }'
json_array=$(update_holder holder__cmus "$json")
else
json_array=$(remove_holder holder__cmus)
fi
}


Fazendo a alteração também no i3status:

order += "tztime holder__cmus"

tztime holder__cmus {
format = "holder__cmus"
}









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts