Тонкая настройка xmobar

Continue

Текущая скорость сети

Для вывода используются встроенные средства xmobar



Запись в строке template

<action=`XMVnstat-h` button=1><action=`XMVnstat-d` button=3>%dynnetwork%</action></action>

Для реализации указанных действий требуется установленная и настроенная утилита vnstat и парочка внешних скриптов

~/.local/bin/XMVnstat-h
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else vnstat -h | xargs -0 notify-send -t 0
fi
exit 0



~/.local/bin/XMVnstat-d
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else vnstat -d | xargs -0 notify-send -t 0
fi
exit 0



* В связи с тем, что форумный движок неадекватно реагирует на строку настройки сети для xmobar, привожу её в самом конце и без тегов

Run DynNetwork ["-S","True","-d","1","-t","<fc=#cccccc><dev>:</fc> <rx> <fc=#00dd00>↓</fc><fc=#ff6500>↑</fc> <tx>"] 10
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Взял себе, пасибо :)
https://github.com/warlock90000/awesome
Continue

Отображение использованного за текущий день трафика
*требуется наличие vnstat



Этим занимается внешний скрипт XMTraf

~/.local/bin/XMTraf
#!/bin/sh
RX=`vnstat | grep 'today' | awk '{print $2$3}'`
TX=`vnstat | grep 'today' | awk '{print $5$6}'`
echo $RX' <fc=#00dd00>↓</fc><fc=#ff6500>↑</fc> '$TX
exit 0

Запись в xmobarrc
Run Com        "XMTraf" [] "" 50

Запись в строке template
<action=`XMVnstat` button=1><action=`XMVnstat-m` button=3>%XMTraf%</action></action>

Действия:

~/.local/binXMVnstat
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else vnstat | xargs -0 notify-send -t 0
fi
exit 0



~/.local/bin/XMVnstat-m
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else vnstat -m | xargs -0 notify-send -t 0
fi
exit 0



Продолжение следует
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Переключение раскладки

Лично у меня раскладка настраивается строкой в .xinitrc
setxkbmap -layout us,ru -variant -option grp:caps_toggle,terminate:ctrl_alt_bksp &

Для отображения текущей раскладки используется внутренняя функция xmobar
* из-за неадекватной реакции форумного движка строку приведу в конце поста

EN выводится серо-голубым, RU - красно-оранжевым

Запись в строке template
<action=`xdotool key Mode_switch` button=12345>%kbd%</action>

Т.е. любое действие мышью (ЛКМ, СКМ, ПКМ, поворот колёсика вперёд/назад) переключает раскладку

Строка настройки
* используется альтернативный шрифт fn=1 -> "xft:Terminus:size=12:weight=bold:antialias=true:hinting=true"

Run Kbd [("us", "<fn=1><fc=#95d5f5>EN</fc></fn>"), ("ru", "<fn=1><fc=#ff6500>RU</fc></fn>")]
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Занятая память



Выводится встроенными средствами xmobar

Run Memory     ["-S","True","-t","<fc=#cccccc>RAM:</fc> <usedratio>","-L","50","-H","85","--normal","#ffff00","--high","#ff6500"] 50
До 50% - дефолтный цвет, 50-85% жёлтый, выше 85% красно-оранжевый.

Запись в строке template
<action=`XMTop-mem` button=1><action=`XMFree` button=3>%memory%</action></action>

Действия:

~/.local/bin/XMTop-mem
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head | xargs -0 notify-send -t 0
fi
exit 0



~/.local/bin/XMFree
#!/bin/sh
if (pidof dunst >/dev/null); then kill $(pidof dunst)
else free | xargs -0 notify-send -t 0
fi
exit 0



Продолжение следует
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Ну и напоследок - Как сделать простую кликабельную кнопку в xmobar.

Xmobar предоставляет возможность вывести изображения в формате *.xbm или *.xpm
Для этого требуется задать путь к каталогу с изображениями.
У меня это выглядит так
iconRoot         = "/home/haron/.xmonad/resources"

Если у вас нет изображений в требуемом формате, то вы легко можете найти их в сети или конвертировать существующий значок любого формата в нужный формат.
Я использую для этого один из онлайн-сервисов
Как правило, я беру изображение из используемой в системе темы размером 24х24. Поле конвертации я с помощью гимпа масштабирую полученный значок, делая несколько копий разного размера - 16х16, 18х18 etc

В качестве альтернативы можно использовать команду, с помощью которой можно сразу конвертировать и изменять размер

convert -resize 18x18 /path/to/icon.png /path/to/icon.18x18.xpm

Запись в template для вывода изображения в xmobar выглядит так:

<icon=arch-mono-16x16.xpm/>

Осталось только повесить на неё необходимые действия.
Но... не тут то было! xmobar не позволяет навесить действие на избражение!

***UPD - костыль больше не нужен. 01.06.2017г.

Чтож, нам не привыкать строить костыли )))
Создаём простой скрипттик. Неважно, какое у него будет содержимое. Главное, чтобы был пустой выхлоп!
Я реализовал это так

~/.local/bin/XMNull
#!/bin/sh
cat /tmp/.null > /dev/null
exit 0

Прописываем его в xmobarrc

Run Com        "XMNull" [] "" 0
* в обязательном порядке устанавливаем частоту выполнения скрипта 0

теперь можно править нашу запись в template

<action=`i3lock -i /home/haron/wall/starrynight.png` button=1><action=`compdown` button=2><action=`compreboot` button=3><icon=arch-mono-16x16.xpm/>%XMNull%</action></action></action>

Теперь у нас есть кнопка, при клике на которую выполняются различные действия.

ЛКМ - блокировка экрана командой
i3lock -i /home/haron/wall/starrynight.png

ПКМ - внешний скрипт compreboot
~/.local/bin/compreboot
#!/bin/sh
zenity  --question --text "You really want to restart your computer?"
if [ $? = 0 ]
	then systemctl reboot
fi
exit 0

СКМ - внешний скрипт compdown
~/.local/bin/compdown
#!/bin/sh
zenity  --question --text "You really want to shut down your computer?"
if [ $? = 0 ]
	then  systemctl poweroff
fi
exit 0

*для выполнения обоих скриптов требуется наличие zenity

Вот такая симпатичная кнопочка у нас получилась в результате

Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
В результате всех манипуляций имеем вот такую панельку



А это полное содержимое моего xmobarrc

Config {
         font             = "xft:Terminus Re33:size=12:antialias=true:hinting=true"
       , additionalFonts  = ["xft:Terminus:size=12:weight=bold:antialias=true:hinting=true","xft:Terminus Re33:size=4"]
       , borderColor      = "#151515"
       , border           = NoBorder
       , bgColor          = "#151515"
       , fgColor          = "#959595"
       , alpha            = 1
       , position         = TopP 1 54
       , textOffset       = 14
       , iconOffset       = -1
       , lowerOnStart     = True
       , pickBroadest     = True
       , persistent       = False
       , hideOnStart      = False
       , iconRoot         = "/home/haron/.xmonad/resources"
       , allDesktops      = True
       , overrideRedirect = True
       , commands         = [
                              Run XMonadLog
                            , Run Com        "XMNull" [] "" 0
                            , Run Com        "XMUpdate" [] "" 600
                            , Run PipeReader "/tmp/pipe" "Update"
                            , Run DynNetwork ["-S","True","-d","1","-t","<fc=#cccccc><dev>:</fc><fn=2> </fn><rx><fn=2> </fn><fc=#00dd00>↓</fc><fc=#ff6500>↑</fc><fn=2> </fn><tx>"] 10
                            , Run Com        "XMTraf" [] "" 50
                            , Run Cpu        ["-S","True","-t","<fc=#cccccc>CPU:</fc><fn=2> </fn><total>","-L","25","-H","75","--normal","#ffff00","--high","#ff6500"] 10
                            , Run Com        "TCPU" [] "" 10
                            , Run Com        "TMB" [] "" 10
                            , Run Com        "TGPU" [] "" 10
                            , Run Memory     ["-S","True","-t","<fc=#cccccc>RAM:</fc><fn=2> </fn><usedratio>","-L","50","-H","85","--normal","#ffff00","--high","#ff6500"] 50
                            , Run Com        "XMRom" [] "" 100
                            , Run Com        "XMUptime" [] "" 100
                            , Run Com        "XMVol" [] "" 10
                            , Run PipeReader "/tmp/vol" "Vol"
                            , Run Kbd        [("us", "<fn=1><fc=#95d5f5>EN</fc></fn>"), ("ru", "<fn=1><fc=#ff6500>RU</fc></fn>")]
                            , Run Com        "XMTime" [] "" 10
                            , Run Com        "XMWeather" [] "" 100
                            ]
       , sepChar  = "%"
       , alignSep = "}{"
       , template = "<action=`i3lock -i /home/haron/wall/starrynight.png` button=1><action=`compdown` button=2><action=`compreboot` button=3><icon=arch-mono-16x16.xpm/>%XMNull%</action></action></action> %XMonadLog%}{<action=XMYaourt>%Update%%XMUpdate%</action>  <action=`XMVnstat-h` button=1><action=`XMVnstat-d` button=3>%dynnetwork%</action></action>  <action=`XMVnstat` button=1><action=`XMVnstat-m` button=3>%XMTraf%</action></action>  <action=`XMTop-cpu` button=1><action=`XMHtop` button=3>%cpu% %TCPU%</action></action>  <action=`XMSensors` button=13>%TMB%  %TGPU%</action>  <action=`XMTop-mem` button=1><action=`XMFree` button=3>%memory%</action></action>  <action=`XMdf-h` button=1><action=`XMblkid` button=3>%XMRom%</action></action>  <action=`XMLast` button=12>%XMUptime%</action>  <action=`/usr/bin/pulseaudio-ctl up` button=5><action=`/usr/bin/pulseaudio-ctl down` button=4><action=`/usr/bin/pulseaudio-ctl mute` button=1><action=`XMncmpcpp` button=2><action=`mpc toggle` button=3>%Vol%%XMVol%</action></action></action></action></action>  <action=`xdotool key Mode_switch` button=1345>%kbd%</action>  <action=`XMCal` button=1><action=`XMXClock` button=3>%XMTime%</action></action>  <action=`XMWeather-current` button=13>%XMWeather%</action>"
       }

Как видите, не так уж оно и громоздко. )))
Актуальные версии моих конфигов, а также используемые скрипты, изображения etc мохно найти на гитхабе

Желаю удачи в настройке и использовании XMOBAR

* в связи с тем, что у меня в качестве основной оболочки используется zsh, а так же помимо дефолтного шрифта применяются альтернативные, приведенные в блоге скрипты немного отличаются от тех, что выложены на гитхабе - я адаптировал их для использования в любых системах, удалив некоторые используемые мною опции.
** некоторое используемые мною функции я не стал описывать, т.к. они либо весьма специфичны (к примеру, вывод текущей температуры берётся из gis-weather), либо требуют доработки

СПАСИБО ЗА ВНИМАНИЕ!
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
На фоне общих сокращений день недели (Воскресенье, Понедельник и т.д.) смотрится громоздко и занимает неоправданно много места. Лучше:
DAY=`date +%a`
со всеми вытекающими...

Haron_Prime
в воскресенье день недели отображается красно-оранжевым, в субботу оранжевым, в сотальные дни дефолтным цветом
А как же праздничные? )

Наворочено, конечно, много, но если это помогает убить время без вреда для здоровья (с), почему бы нет...
Aivar, мне больше нравится полное написание дня недели
Но это уже дело личных предпочтений.

Aivar
Наворочено, конечно, много
Да я просто решил попробовать сделать xmobar интерактивным - прикрутить календарик.
И.... не смог остановиться ))))
Большую часть этих фишек я не использую и использовать вряд ли буду - мне удобнее с клавиатуры всё это делать, благо там куча дополнительных кнопок и на них уже повешены все нужные мне функции.
Но если есть свободное время и, к тому же, скучно, то почему бы не побороться со скукой таким вот образом?
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
а где самые нужные 'интерактивные' элементы mpd и rtorrent??)) (или там чем вы пользуетесь)
вообще идея с календариком в notify выглядит прикольно... остальное как по мне так 'малоюзабельно'(чисто моё мнение).
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.