LINUX.ORG.RU

Fvwm, возможно ли определение WindowStyle

 , windowstyle


0

2

Добрый вечер. Прошуршал документацию, встал над такой проблемой, можно ли както в функции определить есть ли у текущего окна title? Хочу сделать чтото вроде этого:

 + I ThisWindow(Title) WindowStyle !Title
 + I TestRc(NoMatch) WindowStyle Title

Можно конечно для каждого окна делать параметр State N и ссылаться в проверке на него, но это костыль ;)



Последнее исправление: Lwulf (всего исправлений: 3)

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

https://aur.archlinux.org/packages/fvwm+/ — 04-Conditionals.patch

1.) Conditional: HasTitle, HasBorders (This patch allows for two new conditionals that's matched within condition commands: HasTitle checks whether a window has a titlebar or not. hasBorders checks to see if a window has a border.)

Spoofing ★★★★★
()
DestroyFunc ToggleTitle
AddToFunc ToggleTitle
+ I ThisWindow (HasHandles) Style $[w.name] !Title, !Handles
+ I TestRc (NoMatch) Style $[w.name] Title, Handles

Key d W 4 ToggleTitle

Используется тоже костыль. Насколько я понял из документации, возможности проверить Style нет. Зато отчего-то есть возможность проверить наличие уголков. Что и заюзано. Но лучше, наверное, через стейт.

Hoodoo ★★★★★
()

Spoofing Через патчи видел, стараюсь пока обойтись «чистой сборкой»...не знаю правда зачем, но всётаки.

Hoodoo вопрос о Title|!Title когдато поднимался в мэйл рассылке(ветка 2004-2006), на что Томас писал, что «пока не реализовано».

Обидно, но пока допиливаю остальной функционал, декорации пока повесил на ручное управление. State - конечно выход, но его надо задавать изначально и для каждого окна(тоесть в системе с заголовками, окно не имеющее заголовка, первый toggle пропускает или наоборот (: ).

Есть ещё вопросик, запощу тут, дабы не плодить темы. Есть вот такой код

DestroyFunc Thumbnail
AddToFunc Thumbnail
+ I Raise
+ I InfostoreAdd Icon-$[w.id] $[w.iconfile]
+ I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
    "xwd -silent -id $[w.id] | convert -scale $[infostore.fvwm_icon_size] -frame 1x1 \
    -mattecolor black -quality 0 xwd:- png:$[infostore.fvwm_tmp]/window-$[w.id].png \
    && echo Nop"
+ I TestRc (Match) Test (f $[w.iconfile], f $[infostore.fvwm_tmp]/window-$[w.id].png) \
    PipeRead "composite -gravity SouthEast -geometry +4+6 \
    $[w.iconfile] $[infostore.fvwm_tmp]/window-$[w.id].png \
    $[infostore.fvwm_tmp]/window-$[w.id].png && \
    echo WindowStyle IconOverride, Icon $[infostore.fvwm_tmp]/window-$[w.id].png || echo Nop"
+ I Schedule 150 Iconify on

DestroyFunc DeThumbnail
AddToFunc DeThumbnail
    + I Exec rm -f $[infostore.fvwm_tmp]/window-$[w.id].png
    + I PipeRead "echo Test \\(i \\$\\[infostore.Icon-$[w.id]\\]\\) WindowStyle Icon \\$\\[infostore.Icon-$[w.id]\\]"
    + I TestRc (NoMatch) WindowStyle NoIconOverride, Icon
    + I Schedule 100 InfostoreRemove Icon-$[w.id]

# FvwmEvent
DestroyModuleConfig FvwmEvent: *
*FvwmEvent: deiconify DeThumbnail

если не спешить, то отрабатывает он вполне нормально, но если развернуть\свернуть несколько раз подрят, то иконка замещается на превьюшку и в итоге мы получаем скрин окна с наложенным и слегка сдвинутым скрином окна. Есть идеи как лечить это, кроме + I ThisWindow DestroyWindowStyle ?

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

Что-то очень много всего. Это из beginner's guide взято? Если нет, то там вроде было что-то подобное, попробуй использовать пример оттуда.

Ещё вот тут был какой-то сишный тамбнейлер вроде, можно его попробовать: http://box-look.org/content/show.php/Lethe?content=91022

Или посмотреть, как вот тут сделано: http://box-look.org/content/show.php/Cyb'?content=81247

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

Сишный на x64 не осилил сборку, а прилогающийся файл ничего не выдает.

Взято изначально было с конфига taviso, он делал как раз DestroyWindowStyle. Конфиг сейчас переписал по новой и проблема срабатывает только в функции ShowDesktop(стянутой из вики), а именно если раз 5 подрят использовать ф-ю, то проявляется выше описанный лаг. В принципе я понимаю, что надо как-то отслеживать и не давать выполнять ShowDesktop, пока не закончилось предыдущее действие, но в голову пока ничего не приходит кроме использования Schedule\Deschedule. Ну да фиг с ним, через пару дней всётаки допилю мелочи и выложу скрин\конфиг.

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