LINUX.ORG.RU

Как упорядочить иконки в stalonetray?

 ,


0

1

Fvwm поверх Mint Mate. Использую stalonetray. При загрузке иконки появляются в трее в любом порядке. Нельзя ли их как нить упорядочить? Посмотрел настройки stalonetray, ничего подходящего. Вот мой конфиг

decorations none
geometry 6x3
icon_size 19
max_geometry 6x3
parent_bg true
transparent false
icon_gravity SE
#no_shrink true
#skip_taskbar true

Ответ на: комментарий от ananas

Не пойму в каком месте делать задержку. Вот например у меня две функции - раскладка клавиатуры и значок сети, и хотелось бы, что их иконки появилися последовательно:

DestroyFunc FvwmGxkb
AddToFunc   FvwmGxkb
+ I PipeRead 'echo SetEnv gxkb_started `ps -e | grep -c gxkb`'
+ I Test (EnvMatch gxkb_started 0) Exec exec gxkb

DestroyFunc FvwmNMap
AddToFunc   FvwmNMap
+ I PipeRead 'echo SetEnv nmap_started `ps -e | grep -c nm-applet`'
+ I Test (EnvMatch nmap_started 0) Exec exec nm-applet

Затем они запускаются

DestroyFunc StartFunction
AddToFunc   StartFunction
+ I FvwmGxkb
+ I FvwmNMap

И только затем запускается tray в правой панели

DestroyModuleConfig RightPanel:*
Test (x stalonetray) *RightPanel: (120x70, Swallow(NoClose,UseOld) stalonetray 'Exec exec stalonetray', Frame 0)

Мне нужно вставить задержу в определении или запуске функций? Типа

 
+ I Test (EnvMatch nmap_started 0) Exec exec sleep 20
+ I Exec exec nm-applet

Или трей запускать раньше запуска функций? А это невозможно, поскольку в правой панели используются функции из определения и они должны быть уже определены.

rustamych ★★★ ()
Ответ на: комментарий от rustamych
  1. все эти сложные конструкции PipeRead ’echo SetEnv ниачем.

  2. желаешь последовательности - запускай все в одном скрипте. тут у тебя гонка. fvwm делвет форк на Exec, а если stalonetray еще и не запущен к этому моменту, то кто у тебя кого опередит, одному cpu известно

ananas ★★★★★ ()
Ответ на: комментарий от ananas

Эта конструкция проверяет запущено приложение или нет. Я запускаю все последовательно в конфиге. Конфиг взял по умолчанию и переделал под себя. Как запускать одним скриптом не знаю. Подскажите на примере двух моих приложений.

rustamych ★★★ ()
Ответ на: комментарий от rustamych

Эта конструкция проверяет запущено приложение или нет

эта конструкция избыточна

  1. SetEnv в данном случае варварство, для каких-то временных переменных стоит использовать InfoStore

  2. Exec запускает команды через шел. так что в твоем случае для запуска единственного экземпляра достаточно

+I Exec pkill -0 -x gxkb || exec gxkb
ananas ★★★★★ ()
Последнее исправление: ananas (всего исправлений: 1)
Ответ на: комментарий от ananas

Т.е. вы предлагаете вместо

DestroyFunc FvwmNMap
AddToFunc   FvwmNMap
+ I PipeRead 'echo SetEnv nmap_started `ps -e | grep -c nm-applet`'
+ I Test (EnvMatch nmap_started 0) Exec exec nm-applet
делать так?
DestroyFunc FvwmNMap
AddToFunc   FvwmNMap
+ I Exec pkill -o -x nm-applet || exec nm-applet
Но есть же разница. В моем случае проверяется запущен или нет nm-applet и, если не запущен, то запускается. В вашем он обязвтельно прихлопывается и затем запускается.

rustamych ★★★ ()
Ответ на: комментарий от rustamych

потому что у меня не pkill -o, а pkill -0, т.е. посылка нулевого сигнала для проверки существования процесса. а у тебя сейчас отправка сигнала по-улочанию (TERM) самому старому процессу из найденых

ananas ★★★★★ ()
Последнее исправление: ananas (всего исправлений: 1)
Ответ на: комментарий от ananas

Я не нашел в man pkill опцию -O, есть только -o (вот мануал https://linux.die.net/man/1/pkill). У вас это цифра ноль или заглавная буква О? Поэтому я подумал, что вы ошиблись.

InitFunction я вообще не использую. Я взял конфиг по умолчанию и исправил под себя. В стандартном конфиге сначала определяются функции а потом уже запускаются в следующем разделе. Можно попробовать, здесь https://zensites.net/fvwm/guide/functions.html описано как. А в чем собственно выгода от этого?

rustamych ★★★ ()
Ответ на: комментарий от rustamych

потому что (это написано в ман-е) InitFunction выполняется только при запуске, а StartFunction еще и при перезапуске.

и как результат - при использовании InitFunction можно убрать все эти проверки на уже запущено

ananas ★★★★★ ()
Ответ на: комментарий от ananas

А может вы мне подскажете по еще одной проблеме, которую я как то обсуждал здесь fvwm alt-tab настроить , нашел какой то костыль, но не очень хороший. Проблема описана вначале. Вкратце, если конфиге стоит по умолчанию

Silent Key Tab A M WindowList Root c c NoDeskSort, SelectOnRelease Meta_L
то при нажатии alt-tab появляется окно со списком окон и дальнейшее нажатие alt-tab двигает по списку окон. Но при отпускании alt не переходит на выбранное окно, а все остается на экране и надо еще кликнуть левой кнопкой мыши, чтобы перейти к выбранному окну. Решение нашел такое
DestroyFunc FuncFvwmNextWindow
AddToFunc FuncFvwmNextWindow
+ I Next (CurrentPage, !Iconic, AcceptsFocus) FlipFocus NoWarp
+ I Current Raise

DestroyFunc FuncFvwmPrevWindow
AddToFunc FuncFvwmPrevWindow
+ I Prev (CurrentPage, !Iconic, AcceptsFocus) Focus NoWarp
+ I Current Raise

Key Tab A M FuncFvwmNextWindow  # Alt-Tab
Key Tab A SM FuncFvwmPrevWindow # Alt-Tab

В таком случае список окон не появляется и движение происходит по кругу, по открытым окнам. Чтобы работать с двумя окнами приходится все сворачивать в панель и оставлять нужные. Хотелось бы, что бы как в минте. Там при нажатии alt-tab открывается список окон, но по умолчанию при отпускании alt открывается предыдущее открытое.

rustamych ★★★ ()