Интерактивный xmobar


прикольненько...
Ошибки в тексте-неповторимый стиль автора©
https://youtu.be/J3_Mmfww8so

https://youtu.be/xoPBSKQDKEc
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Haron_Prime
Теперь настроим управление громкостью
...
* в дальнейшем планируется отредактировать скрипт, для вывода данных через PipeRider
У меня почему-то не получается сделать два канала pipe. Громкость выводится и работает нормально, создается в .xinitrc
export _volume_pipe=/tmp/.volume-pipe
[[ -S $_volume_pipe ]] || mkfifo $_volume_pipe
Но если запускаю таким же образом второй для проверки обновлений, описаной здесь и вывожу на бар - оба выдают "Updating..."
indeviral, это у тебя для mpd? Поделись скриптом?
s-ugra@ya.ru,
mkfifo /tmp/pipe &
mkfifo /tmp/vol &
проблем не наблюдаю
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
s-ugra@ya.ru
[[ -S $_volume_pipe ]] || mkfifo $_volume_pipe
Можно узнать, почему проверяется наличие сокета, а создается пайп?
Aivar
s-ugra@ya.ru
[[ -S $_volume_pipe ]] || mkfifo $_volume_pipe
Можно узнать, почему проверяется наличие сокета, а создается пайп?
Честно говоря не знаю, я когда начинал с xmonad первый конфиг взял отсюда, так оно и осталось.
Т.е. скопипастили чужую ошибку.
[[ -p $_volume_pipe ]] || mkfifo $_volume_pipe
ЗЫ. Я, конечно, не в теме XMonad и всего, что с ним связано, но, имхо, раз уж взялись за что либо, то абсолютно все действия должны быть осознанными. Иначе какой кайф от допила XMonad/XMobar/чего-то еще, если вы не знаете как оно работает.
Вот жеж, таки да, замечание справедливо, скопипастил. Потому что xmonad хочется поставить сейчас, а в совершенстве изучить bash и haskell получится не скоро, поэтому осознанно скопипастил. Теперь разобрался. Вызывается условие: канал существует (проверяется исключающим ошибку методом) или создается. Но сбой в обеих pipe вызывало что-то другое, не знаю что. Файлы создавались, данные в них писались, но на панель не выводились. Вернул все назад и сделал заново. Заработало. Однако возникла другая проблема. Если вешать на саму панель скрипт проверки обновлений, то при слабом или отсутствующем интернет соединении (что у меня бывает) панель не грузится или морозится если уже загружена, пока не выполнится скрипт. А это может длиться 1 - 5 минут. Думаю как от этого избавиться. Пока засунул скрипт в .xinitrc.
Там создается канал и в него сразу пишется пустое значение чтобы на панели не торчала надпись "Updating..." И там же запускается скрипт проверки, который работает бесконечным циклом - если интернета нет, то он проверяет его наличие каждую минуту, если есть - делает проверку с интервалом 1 час

.xinitrc

...
mkfifo /tmp/.getpkg-pipe &
echo >> /tmp/.getpkg-pipe &
/home/s-adm/.scripts/get-pkg.sh &
...

Скрипт get-pkg.sh

#!/bin/sh

SLEEP_INTERVAL=60
while :; do

    TESTHOST="8.8.8.8"
    ping -c 1 -w 5 $TESTHOST &>/dev/null

    if [[ $? -ne 0 ]]
        then SLEEP_INTERVAL=3600
        pac=$(checkupdates | wc -l)

        check=$((pac))
        if [[ "$check" != "0" ]]
            then
            echo "$pac pkg" >> /tmp/.getpkg-pipe
        else echo >> /tmp/.getpkg-pipe
        fi
    else SLEEP_INTERVAL=60
    fi

    sleep $SLEEP_INTERVAL
done

Теперь панель не виснет. Но не знаю насколько хорошо это вышло. Буду благодарен за комменты/подсказки.
Комменты/подсказки.
s-ugra@ya.ru
mkfifo /tmp/.getpkg-pipe &
echo >> /tmp/.getpkg-pipe &
/home/s-adm/.scripts/get-pkg.sh &
Что за мода пошла в .xinitrc везде сунуть амперсанд даже если он не нужен?! В данном случае он оправдан только после запуска скрипта.
По скрипту: ненужные определения переменных, ненужная операция test, "дозапись" в именованный канал... Короче:
#!/usr/bin/bash

while :
do
if `ping -c1 -w5 8.8.8.8 &> /dev/null`
  then SLEEP_INTERVAL=1h
  pac=`checkupdates | wc -l`
  [ $pac != 0 ] && pac="$pac pkg" || pac=
  echo "$pac" > /tmp/.getpkg-pipe
  else SLEEP_INTERVAL=1m
fi
sleep $SLEEP_INTERVAL
done
 
Зарегистрироваться или войдите чтобы оставить сообщение.