[Решено] Не запускается xmobar

Пробую на виртуалке xmonad + xmobar.
Сначала без конфига стартую как в вики:
xmobar -B white -a right -F blue -t '%LIPB%' -c '[Run Weather "LIPB" [] 36000]' &
В процессах висит, на экране нет. Прочитал про overrideRedirect, сделал минимальный конфиг:
cat .xmobarrc
Config {
    overrideRedirect = False
   , bgColor =      "black"
   , fgColor =      "grey
   , position =     Top
}
Получаю ошибку при старте:
xmobar: runInteractiveProcess: runInteractiveProcess: exec: doesn't exist (No such file or directory)
Ошибка по гуглу возникает при запуске шел скрипта, которого у меня нет.
Убираю из конфига overrideRedirect = False, xmobar стартует без ошибок, но как обычное окно, т.е. под тайлинг. Смотрел конфиг Haron_Prime, но там стоит дефолтный True. К слову, с ним та же история. Где я ошибаюсь, ребят?
В xmonad.hs такой вход:
main = do
    xmproc <- spawnPipe "/usr/bin/xmobar /home/abs/.xmobarrc"
А не смущает, что в строке запуска и в конфиге указаны одни и те же параметры, но с разными значениями?
   , bgColor =      "black"
   , fgColor =      "grey
-B white ...... -F blue
к тому же
  -a alignsep   --alignsep=alignsep    Separators for left, center and right text alignment. Default: '}{
что может означать -a right лично я не представляю....
имхо, лучше сделать себе полноценный xmobarrc и запускать сабж без аргументов

P.S> рекомендую ознакомиться с этим

P.P.S> различные варианты xmobarrc можно посмотреть, к примеру, в моём репозитории на гитхабе. Лучше начинать с самых старых - они попроще.
А вообще в сети этого добра навалом.
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Haron_Prime
А не смущает, что в строке запуска и в конфиге указаны одни и те же параметры, но с разными значениями?
Запуск с параметрами был 1 раз, остальные - через конфиг.

Haron_Prime
P.S> рекомендую ознакомиться с этим
По нему и начал изучение.

Haron_Prime
P.P.S> различные варианты xmobarrc можно посмотреть, к примеру, в моём репозитории на гитхабе. Лучше начинать с самых старых - они попроще.
А вообще в сети этого добра навалом.
Absalon
Смотрел конфиг Haron_Prime

Предпочтию изучать правильно - не по чужим конфигам, в которым поди разбирись, что автор хотел, а по вики и с2с. Кроме того, я посмотрел с десяток виде гайдов и статей, но там везде устаревший синтаксис или неверные команды и, как следствие, ошибки при обновлении.
Проблему удалось решить, но решения я не увидел ни в оф. с2с гайде, ни в вики. Оказалось, что нужно прописывать дополнительные хуки для xmobar в xmonad.hs, в противном случае, xmobar или вообще не виден, или он виден начиная со 2 воркспейса.
Absalon
Оказалось, что нужно прописывать дополнительные хуки для xmobar в xmonad.hs, в противном случае, xmobar или вообще не виден, или он виден начиная со 2 воркспейса.
import XMonad.Hooks.DynamicLog - чтобы выводить информацию о ws, layouts и заголовки окон
import XMonad.Hooks.ManageDocks - чтоб xmobar нормально отображался на всех ws и работало скрытие
Вместо второго хука некоторые используют Gaps
import XMonad.Layout.Gaps - но в этом случае нужно шаманить с layouts - для каждого прописывать необходимый отступ
Ну и в самом xmobar стоит разобраться с опциями overrideRedirect, allDesktops etc

P.S> мой текущий конфиг xmonad.hs не стоит брать за образец, т.к. я вчера начал перепиливать его под clickable workspace и не всё ещё закончил. Он в основном рботает, но есть шероховатости. Лучше смотреть конфиг от 30.08.2017 или более ранние - они полностью рабочие, лежат в Old_&_bak/XMonad&XMobar_config_bak
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Кстати, у вас я смотрю стоит ПайпРидер. Это из за тормозов при выполнении напрямую? Если я ставлю больше 2 скриптов питоновских в панель, у меня даже секунды с параметром обновления 10, обновляются через 4-6 секунд.
Absalon
Кстати, у вас я смотрю стоит ПайпРидер. Это из за тормозов при выполнении напрямую?
Нет. Шелл-скрипты не тормозят. Раньше у меня всё было на скриптах и встроенных модулях.
Но я решил немного модифицировать свой конфиг, чтобы при минимальном занятом месте можно было выводить максимум информации. Для этого и использую пайпридеры.
Принцип примерно такой:
1 - есть скрипт, который выводит данные в канал
2 - есть скрипт, который переключает состояние вывода в xmobar, он повешен как действие по клику на значке (использую символы Awesome Font)
Получается примерно так
<action=`скрипт2` button=1>значок</action>%вывод_из_пайпа%
При клике скрипт2 проверяет, запущен ли скрипт1
Если запущен, то скрипт2 останавливает скрипт1 и очищает содержимое канала
Если скрипт1 не запущен, то скрипт2 его запускает и в канал поступают данные, которые и отображаются на панели
Кроме клика это же действие повешено на хоткей в конфиге xmonad.hs
В результате получается имитация сворчиваемых блоков, в каждом из которых отображается информация из одного или нескольких каналов.
При старте на панели только значки. Кликом или хоткеями можно развернуть/свернуть любой отдельный блок либо все блоки сразу.
Вот тут и далее я об этом писал. Там есть скрины и ссылки на видео. Сейчас правда, кое-что уже изменил - расположение некоторых блоков и работу отдельных скриптов.
Встроенными модулями xmobar мне это реализовать не удалось, поэтому всё повешено на свои скрипты, которые выводят данные в каналы.
На текущий момент это выглядит так



Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
В качестве примера - скорость сети
Скрипт, расчитывающий скорость и выводящий данные в канал
#!/usr/bin/env zsh
# Author - Haron Prime
# License © 2017 WTFPL http://www.wtfpl.net/

while true; do
    ORX=`cat /sys/class/net/enp3s0/statistics/rx_bytes`
    OTX=`cat /sys/class/net/enp3s0/statistics/tx_bytes`
    sleep 1 &&
    NRX=`cat /sys/class/net/enp3s0/statistics/rx_bytes`
    NTX=`cat /sys/class/net/enp3s0/statistics/tx_bytes`
    TRX=`echo "scale=2; ($NRX-$ORX)" | bc -l`
    TTX=`echo "scale=2; ($NTX-$OTX)" | bc -l`

    if [ $TRX -ge 1048576 ]; then
        RX=`echo "scale=2; ($TRX/1048576)" | bc -l`"MB/s"
    elif [ $TRX -ge 1024 ]; then
        RX=`echo "scale=2; ($TRX/1024)" | bc -l`"KB/s"
    else
        RX=$TRX"B/s"
    fi

    if [ $TTX -ge 1048576 ]; then
        TX=`echo "scale=2; ($TTX/1048576)" | bc -l`"MB/s"
    elif [ $TTX -ge 1024 ]; then
        TX=`echo "scale=2; ($TTX/1024)" | bc -l`"KB/s"
    else
        TX=$TTX"B/s"
    fi

    echo ' <action=`XMVnstat-h` button=1><action=`XMVnstat` button=3>'$RX'<fn=2> </fn><fc=#0e0></fc><fc=#e50></fc><fn=2> </fn>'$TX'</action></action>' > /tmp/haron/NS
done

Скрипт, переключающий состояние блока
#!/usr/bin/env zsh
# Author - Haron Prime
# License © 2017 WTFPL http://www.wtfpl.net/

PID=`ps aux | grep XMNetSpeed | grep -v grep | awk '{print $2}'`
if [[ -n $PID ]];then
    kill $PID
    echo > /tmp/haron/NS
    exit 0
else
    XMNetSpeed &
    exit 0
fi
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Offtop, но лучше задать вопрос по ходу.
Haron_Prime, с xmonad ты уже на ты, а потому вопрос — можно ли в текущем workspaces скрыть любое приложение (сделать его не видимым), как в spectrwm.
Например, часто открыто в одном workspaces 2-3 приложения, из которых 1 используется постоянно, а остальные не так часто, но закрывать их нежелательно, так же как и переносить в другой workspaces — а потому очень удобная опция просто их скрыть (сделать невидимыми - убрать в никуда), чтобы не мешались, а при необходимости просто их вызвать.
Ошибки не исчезают с опытом - они просто умнеют
vasek, можно
Есть хук XMonad.Layout.Minimize

import XMonad.Layout.Minimize

    , ((modm,                            0x7a),  withFocused minimizeWindow                           --Mod4+Z
    , ((modm,                            0x61),  sendMessage RestoreNextMinimizedWin                   --Mod4+A

myLayoutHook =  avoidStruts
                $ minimize
                $ Tog.toggleLayouts (noBorders Full)
                $ smartBorders
                $ onWorkspace  (myWorkspaces !! 0)  (Full  ||| myTL   ||| myMTL)
               etc
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
 
Зарегистрироваться или войдите чтобы оставить сообщение.