XMonad 0.13

[email protected]
да и кол-во - не просто есть/нету, а сколько
это можно просто сделать, если писать в файл
с каналом будет чуть сложнее, имхо, но тоже решаемо
если будет время и настроение, то поэкспериментирую
но обещать ничего не могу )))
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
В общем примерно так:
1 - скрипт, срабатывающий при минимизации окна
#!/usr/bin/env zsh
N1=`cat $HOME/MW`
echo $(( $N1 + 1 )) > $HOME/MW
exit 0
2 - скрипт, срабатывающий при обратном процессе
#!/usr/bin/env zsh
N1=`cat $HOME/MW`
if [[ $N1 -ge 2 ]]
    then echo $(( $N1 - 1 )) > $HOME/MW
else echo > $HOME/MW
fi
exit 0
Это я поигрался в терминале
Но(!) оно заточено под работу с обычным текстовым файлом. При таком раскладе с выводом в xmobar всё печально - нужно будет прописывать скрипт, который будет постоянно проверять содержимое файла и выводить его в xmobar.

Как реализовать с каналом я ещё не придумал.
Вопрос в том, как в sh/bash/zsh-скрипте получить те данные, которые выведены в панель.
Можно конечно костыльнуть и писать одновременно в пайп и в файл, а потом считывать из файла, а в xmobar выводить из канала...
Блин, но это такой костыльный костыль, что мне даже стыдно ((((
Сейчас погуглю, а то я не большой спец в скриптописании
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
В общем, так ничего и не придумалось
Остаётся костылять
mkfifo /tmp/$USER/minwin
#!/usr/bin/env zsh
MW1=$HOME/MW
MW2=/tmp/$USER/minwin
F1=`cat $MW1`
echo $(( $F1 + 1 )) > $MW1 > $MW2
echo $F1
exit 0
#!/usr/bin/env zsh
MW1=$HOME/MW
MW2=/tmp/$USER/minwin
F1=`cat $MW1`

if [[ $F1 -ge 2 ]]
    then echo $(( $F1 - 1 )) > $MW1 > $MW2
else echo > $MW1 > $MW2
fi
echo $F1
exit 0
, Run PipeReader "/tmp/haron/minwin" "MW"
но работает - только что проверил

может завтра на свежую голову чегойсь поумнее придумаю....
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Поставил у себя, работает, и все бы хорошо, НО... оно работает невзирая на то действительно ли минимизируются/поднимаются окна. Т.е. если минимизировать/поднимать уже нечего, но продолжать нажимать хоткей, то кол-во свернутых окон в баре плюсуется/минусуется как ни в чем не бывало))) Или другими словами получилось что скрипты просто отображают нажатие хоткеев, на окна им наплевать)))
И еще, если свернутое окно само закроется (напр., обновление - оно само закрывается по завершении) то на баре это никак не отразится, там останется индикация что есть свернутое окно.
[email protected]
если свернутое окно само закроется
то это решается элементарно
дописыванием команды в скрипт-обновлялку

[email protected]
Или другими словами получилось что скрипты просто отображают нажатие хоткеев, на окна им наплевать)))
предложи вариант лучше
моих знаний хаскела недостаточно для написания модуля, который будет отслеживать состояние всех окон и выводить в канал нужную информацию
я и так потратил время на хрень, которая мне и на фиг не нужна
тратить ещё больше времени, чтобы реализовать ещё более крутую хрень, которая мне также не нужна, у меня никакого желания нет
все фишки я пилю в первую очередь для себя, согласно своим потребностям и виденью их реализации
если это окажется полезным ещё кому-то - пользуйтесь, ничего против не имею
такой вот подход
хорош он или плох - дело десятое и обсуждать это я не собираюсь
менять тоже

в общем, если тебе это подходит - пользуйся, не подходит - сделай своё
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
А для чего XMonad.Hooks.Minimize? Вроде как "обрабатывает подсказки оконного менеджера для минимизации и восстановления окон. Используется с XMonad.Layout.Minimize"
Я поставил и ничего не понял - XMonad.Layout.Minimize что с ним, что без него работает одинаково.
Я смотрю он у тебя применяется, и что он делает?
[email protected]
Я смотрю он у тебя применяется,
Понятия не имею.
написано, что должен использоваться в паре с XMonad.Layout.Minimize
вот я и поставил
возможно, учитывая что он прописывается в handleEventHook, он должен выводить именно информацию о скрытых окнах
но у меня весь вывод, кроме ws отрублен на корню
можно включить и посмотреть, но у меня сейчас нет на это времени
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Да, похоже он только для вывода информации и нужен, потому что без него и так все работает
вечером попробую разобраться, если найду время
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
потыкал я этот хук
в общем, никакой пользы от него, как и никакого вреда, не обнаружил
отключал в конфиге обрезание (кхм... :) вывода в xmobar, думал будет как-то отображаться хотя бы наличие (про количество не говорю) минимизированных окон - фиг там
или у меня так конфиг заточен, или эта фишка не работает
отключил его нафиг
и немного допилил скрипты

минимизировать
#!/usr/bin/env zsh
MW1=/tmp/$USER/MW
MW2=/tmp/$USER/minwin
F1=`cat $MW1`
F2=$(( $F1 + 1 ))
if [[ $F2 -eq 1 ]]; then
    W="window"
else W="windows"
fi
echo $(( $F1 + 1 )) > $MW1
echo '<fc=#ff6500><fn=1>'$F2'</fn></fc>' $W > $MW2
exit 0

разминимизировать :)
#!/usr/bin/env zsh
MW1=/tmp/$USER/MW
MW2=/tmp/$USER/minwin
F1=`cat $MW1`
F2=$(( $F1 - 1 ))
if [[ $F2 -eq 1 ]]; then
    W="window"
else W="windows"
fi
if [[ $F1 -gt 1 ]]
    then echo $F2 > $MW1 && echo '<fc=#ff6500><fn=1>'$F2'</fn></fc>' $W > $MW2
else echo > $MW1 > $MW2
fi
exit 0

В итоге получается вот так


всё что мог - сделал, на большее мозгов не хватает )))
кому нужно - пользуйтесь
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
 
Зарегистрироваться или войдите чтобы оставить сообщение.