LINUX.ORG.RU

[Fvwm] Иконизация :)

 


0

0

Здрасьте. Не знаю - в той ли ветку пишу, но возня с fvwm больше всего напоминает именно программирование :)
Вопрос вот в чём. Выдираю я значит из fvwm-crystal разные функции полезные и наткнулся на то, что для организации "popup-приложений" - всплывают или уходят по нажатию используется перемещение оного приложения на другой десктоп. Я не совсем поримаю зачем это делается - нельзя чтоли его просто сворачивать / разворачивать (то есть просто делать для окна iconify). Или это окно как-то ущербно по отношению к тому, которое просто выкинуто на другой десктоп? В мане по fvwm ответа на вопрос не нашёл. Вот для примера функции для conky, которые, вроде бы, делают примерно одно и то же. В чём преимущество второго подхода для меня пока остаётся загадкой.
------------------------
# FvwmConkyI {{{
DestroyFunc FvwmConkyI
AddToFunc FvwmConkyI
+ I Style Conky StickyAcrossPages, FixedSize, FixedPosition, !Maximizable
+ I Style Conky SkipMapping, WindowListSkip, StaysOnTop
+ I None (Conky) X conky 2> /dev/null
+ I TestRc (NoMatch) All (Conky) Iconify
# }}}
------------------------
# FvwmConky {{{
DestroyFunc FvwmConky
AddToFunc FvwmConky
+ I None (Conky) FvwmConky_Init
+ I All (Conky, CurrentDesk) FvwmConky_Hide
+ I TestRc (NoMatch) FvwmConky_Show

DestroyFunc FvwmConky_Init
AddToFunc FvwmConky_Init
+ I Style Conky !Title,SkipMapping,WindowListSkip,FixedSize,FixedPosition, \
!Maximizable, NoIcon, !Iconifiable, StickyAcrossPages, StaysOnTop
+ I X conky 2> /dev/null
+ I Wait Conky
+ I All (Conky) MoveToDesk 0 666
+ I Prev (CurrentPage) Focus

DestroyFunc FvwmConky_Show
AddToFunc FvwmConky_Show
+ I All (Conky) MoveToDesk 0 $[desk.n]
+ I All (Conky) Focus

DestroyFunc FvwmConky_Hide
AddToFunc FvwmConky_Hide
+ I All (Conky) MoveToDesk 0 666
+ I Prev (CurrentPage, AcceptsFocus, Visible) Focus
# }}}

★★

Ну чтобы уж совсем было честно - вот вариант с иконификацией, когда мы и Wait для конки делаем и фокус предыдущему окну после сокрытия возвращаем
# FvwmConkyI {{{
DestroyFunc FvwmConkyI
AddToFunc FvwmConkyI
+ I Style Conky StickyAcrossPages, FixedSize, FixedPosition, !Maximizable
+ I Style Conky !Title, SkipMapping, WindowListSkip, StaysOnTop
+ I None (Conky) Function Conky_Init
+ I TestRc (NoMatch) Function Conky_Toggle

DestroyFunc Conky_Init
AddToFunc Conky_Init
+ I X conky 2> /dev/null
+ I Wait Conky

DestroyFunc Conky_Toggle
AddToFunc Conky_Toggle
+ I All (Conky, Iconifiable) Iconify
+ I TestRc (Match) Prev (CurrentPage, AcceptsFocus, Visible) Focus
+ I TestRc (NoMatch) Iconify
# }}}

Но всё равно оно как-то компактнее и логичнее для меня выглядит. Вобщем вопрос остаётся открытым - чем принципиально иконификация хуже/лучше перемещения на другой десктоп?

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

Хотя можно и так...
# Conky_Popup {{{
DestroyFunc Conky_Popup
AddToFunc Conky_Popup
+ I Style Conky StickyAcrossPages, FixedSize, FixedPosition, !Maximizable
+ I Style Conky SkipMapping, WindowListSkip, StaysOnTop
+ I None (Conky) KeepRc X conky 2> /dev/null
+ I TestRc (Match) KeepRc Wait Conky
+ I TestRc (Match) Break
# Toggle if allready started
+ I All (Conky, Iconifiable) Iconify
+ I TestRc (Match) Prev (CurrentPage, AcceptsFocus, Visible) Focus
+ I TestRc (NoMatch) All (Conky) Iconify
# }}}

P.S. Вы мне не мешаете - приятно иногда вот так вот побеседовать с умным человеком :))

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

>P.S. Вы мне не мешаете - приятно иногда вот так вот побеседовать с умным человеком :))

:D Продолжай, мы все внимательно слушаем

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

Короче, в итоге, можно сделать примерно вот так:
# App_Popup {{{
# $0 - idenity name
# $1 - executable name
DestroyFunc App_Popup
AddToFunc App_Popup
+ I None ($0) KeepRc X $1
+ I TestRc (Match) KeepRc Wait $0
+ I TestRc (Match) Break
# Toggle if allready started
+ I All ($0) Iconify
# }}}
Тогда любое приложение можно таким вот образом запускать.

lv ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.