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

Haron_Prime
"save_weather_path": "",
А я путь прописал в
save_cur_data_path": "~/.config/gis-weather/cur_weather",
а save_weather_path у меня пустой
s-ugra@ya.ru
а save_weather_path у меня пустой
значит используются дефолтные настройки
Они прописаны в самой программе.
Вообще, эти переменные нужны, если ты хочешь задать другой путь для сохранения. В противном случае все данные будут сохраняться в ~/.config/gis-weather

s-ugra@ya.ru
А я путь прописал
в этом нет необходимости, если используешь дефолтный путь
лучше вообще это не трогать
тем более, что это вообще совершенно другой параметр и он не имеет отношения к описанному в статье
все необходимые параметры я перечислил
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
исправил
От скуки прикрутил ещё кое-какие рюшечки





Вот такие менюшки для запуска приложений (ЛКМ) и для открытия каталогов-закладок в дефолтном фм (ПКМ).
Использовано mygtkmenu
В xmobarrc
<action=`mygtkmenu .menurc` button=1><action=`mygtkmenu .bookmarksrc` button=3><icon=arch-mono-16x16.xpm/></action></action>
Образец .menurc
Образец .bookmarksrc

И ещё одна вот такая



Тот же mygtkmenu + xdotool
В xmobarrc
<action=`mygtkmenu .workspacesrc` button=1>%XMonadLog%</action>
Образец .workspacesrc

* это конечно не то что кликабельные ws, но зато работает и не ломает мой текущий конфиг xmonad
лентяям может пригодиться

P.S> чуть не забыл - управление плейером переделал
<action=`XMncmpcpp` button=3><action=`mpc prev` button=1><icon=backward.16x16.xpm/></action><fn=2> </fn><action=`mpc toggle` button=1><icon=start.16x16.xpm/></action><fn=2> </fn><action=`mpc next` button=1><icon=forward.16x16.xpm/></action></action>
На скрине выше видно три кнопки
ЛКМ по кнопкам - предыдущая композиция | пуск/пауза | следующая композиция
ПКМ по любой кнопке - покзать/скрыть ncmpcpp

P.P.S> разделил первую менюшку на две - приложения отдельно, закладки отдельно
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Приятная новость - в крайней версии xmobar стало возможно создавать кликабельные кнопки из изображений без применения костылей в виде скрипта с нулевым выхлопом.
Если раньше приходилось делать так
Run Com        "XMNull" [] "" 0
.....
<action=`mygtkmenu .menurc` button=1><action=`mygtkmenu .bookmarksrc` button=3><icon=arch-mono-16x16.xpm/>%XMNull%</action></action>
XMNull
#!/usr/bin/env zsh

cat /tmp/haron/.null > /dev/null
exit 0
то теперь этот костыль больше не нужен - действие по клику можно повесить прямо на изображение
<action=`mygtkmenu .menurc` button=1><action=`mygtkmenu .bookmarksrc` button=3><icon=arch-mono-16x16.xpm/></action></action>

Обнаружил это только что. Хотел отписаться на гитхабе - обратиться к разработчику с просьбой пофиксить такое нелогичное поведение, но вспомнил, что за последние дни xmobar обновился дважды, и решил на всякий случай проверить. Оказалось, что уже пофикшено.
/me доволен
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
P.S> добавил ещё одну команду. Точнее две - переключение по непустым ws колёсиком мыши
В итоге получилось вот так
<action=`mygtkmenu .workspacesrc` button=13><action=`xdotool key Control_L+Alt_L+Left` button=4><action=`xdotool key Control_L+Alt_L+Right` button=5>%XMonadLog%</action></action></action>
ЛКМ/ПКМ - показать меню
Колёсико от себя - перейти к предыдущему непустому ws
Колёсико на себя - перейти к следующему непустому ws
Соответственно эти действия должны быть настроены в xmonad.hs
import qualified XMonad.Actions.DynamicWorkspaceOrder as DO
..........
    , ((mod1Mask .|. controlMask,      0xff53),  DO.moveTo Next HiddenNonEmptyWS)
    , ((mod1Mask .|. controlMask,      0xff51),  DO.moveTo Prev HiddenNonEmptyWS)
Реализуются они с помощью модуля XMonad.Actions.DynamicWorkspaceOrder
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Для запуска приложений (подойдет в данном случае и для запуска по клику) нашел для себя интересную фишку. Например, я не помню открыт у меня pcmanfm или нет, но он мне понадобился. Два экземпляра мне никогда не нужно, если он уже открыт на каком-то ws, то просто перейти к нему, иначе запустить.
Требуется пакет wmctrl.
Пишем скрипт find_app.sh
#!/bin/bash
WMCTRL=`which wmctrl`;
GREP=`which grep`;
APPLICATION=$1;
BASENAME=`basename $APPLICATION | tr "[:upper:]" "[:lower:]"`
FOUND=0;

function findwindow {
    IFS=$'\n';
    MAX_MATCHES=0;
    for RUNNING in `$2 -l -x | awk '{print $1, $3}' | tac`; do
        MATCH_COUNT=`echo $RUNNING | tr "[:upper:]" "[:lower:]" | $3 -o $1 | wc -l`
        if [ $MATCH_COUNT -gt $MAX_MATCHES ]; then
            MAX_MATCHES=$MATCH_COUNT
            WINDOW_ID=`echo $RUNNING | cut -c1-11`
            FOUND=1;
        fi;
    done
}

findwindow $BASENAME $WMCTRL $GREP;
if [ $FOUND -eq 0 ]; then
    $APPLICATION &
else
    $WMCTRL -i -a $WINDOW_ID
fi
Запускает/находим приложение командой
find_app.sh pcmanfm
s-ugra@ya.ru
Например, я не помню открыт у меня pcmanfm или нет, но он мне понадобился.
Лично я во всех тайлинговых WM, при их запуске, всегда запускаю автоматом постоянно используемые приложения (и никогда их не закрываю), например, терминал-эмулятор - 1 ws, pcmanfm - 2 ws и уже на автомате перехожу в нужные ws при использовании этих приложений.
vasek
всегда запускаю автоматом постоянно используемые приложения
Разумный подход, если делаешь на компе всегда одно и то же. Но для меня в таком подходе есть и маленький минус - никогда не знаешь для чего включишь комп в следующий раз, и если это будет только для посмотреть новости, то зачем мне ненужные окна? Тогда, пожалуй, уж лучше написать скрипт запуска нескольких приложений, повесить на хоткей и запускать если такая задача возникла.
s-ugra@ya.ru
Тогда, пожалуй, уж лучше написать скрипт запуска нескольких приложений, повесить на хоткей и запускать если такая задача возникла.
Конечно, это дело вкуса, кому как удобнее. Но мне терминал-эмулятор и pcmanfm нужны постоянно, при каждом запуске. Кроме запуска автоматом, конечно, имеются и хоткеи для этих приложений (мало ли не нароком закроешь).
 
Зарегистрироваться или войдите чтобы оставить сообщение.