LINUX.ORG.RU

FVWM


0

0

Здравствуйте!
Мне вдруг показалось, что FVWM это тот WM, что мне нужен.
Всё это время я находился в KDE (и сейчас пока), но вот, я скачал FVWM, FVWM-Themes. Темы предложенные меня не_разочаровали - они подтвердили гибкость этой системы.
Проблема:
Хочу добавить в меню наряду с такими пунктами как Иконизировать, Максимизировать, Переместить и т.д. пункт "Пропускать в Списке Окон".
Но команда Style, позволяет назначить стиль WindowListSkip только заранее известному окну (или всем сразу).
Вопрос: каким образом можно выбрать окно пользователю также, как это делается в командах Move, Resize и т.д.?????

★★★★★

У меня еще вопрос:
хочу объединить теперь кнопки "Убрать из Списка Окон", "Добавить в Список Окон" в одну "Добавить/Убрать из Списка Окон".
Возможно ли выполнить какую либо команду проверив еще какой-нибудь стиль окна, помимо CirculateHit, CirculateHitIcon и CirculateHitShaded?

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

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

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

Да проблема в определении в списке/не в списке.
Я уже попробовал сделать это дело с помощью State. Получилась функция:
DestroyFunc ChangeList
AddToFunc ChangeList
+ I Current [!State 0] WindowStyle WindowListSkip
+ I Current [State 0] WindowStyle WindowListHit
+ I State 0

Но она имеет недостаток - недостаток проявляется при вызове ее из окна root. Функция WindowStyle позволяет выбрать окно, но State всё еще работает с окном root. Как быть?

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

:-) В приципе это решение :-) Хотя и не совсем то, что я ожидал. Теперь, если для какого-либо окна установлено, что оно не может получить фокус, то соответственно мы не можем добавить/убрать его из списка..

Еще любопытно, каким образом в fvwm-themes организовали, что можно нарисовать что-нибудь с зажатой правой кнопкой мыши на рабочем столе и вызвать таким образом приложение? Ищу вот в их конфигах, но пока безуспешно.

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

Нашел в FAQ - оказывается это организовано через libstroke. Будем знать :-)

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

> если для какого-либо окна установлено, что оно не может получить фокус, то соответственно мы не можем добавить/убрать его из списка..

А если попробовать вместо:

Function ChangeList

Вызывать так:

NoWindow Pick Function ChangeList

P.S. Честно говоря, мне самому сейчас лень проверять, поэтому просто идейки кидаю :)

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

>А если попробовать вместо: >Function ChangeList >Вызывать так: >NoWindow Pick Function ChangeList >P.S. Честно говоря, мне самому сейчас лень проверять, поэтому просто идейки кидаю :)

Ничего страшного, я вам и так премного благодарен! :-) Вобщем так получалось, что наоборот окно каждый раз надо выбирать :-) Зато вызов Pick Function ChangeList, давал результат.. результат такой же как когда был + I State 0.. Однако я догадался поменять везде Current на ThisWindow. Теперь всё действительно так как нужно!

Теперь я еще понял, что Stroke это стандартная функция FVWM'а :-)

Да, с FVWM всё-таки можно создать десктоп своей мечты!! А вы можете рассказать о своем FVWM ( я так понимаю, что вы его используете, раз уж так хорошо знаете :-) ) ?

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

> Теперь всё действительно так как нужно!

Значит, я не понял, как нужно :) Я специально сконструировал так, чтобы fvwm _всегда_ просил показать окно. Тогда в случае, если нужно произвести действие над окном, которое не может получить фокус, надо просто нажать другую комбинацию клавиш, которая попросит указать окно независимо от того, активно ли сейчас какое-нибудь окно или нет.

В твоём же случае, теоретически, конечно, можно выполнить действие над окном, которое не может получить фокус, но для этого нужно, чтобы команда выполнялась в контексте Root window. При вызове команды клавиатурной комбинацией этого можно добиться только если не осталось ни одного окна, которое может получить фокус (даже иконок, потому что иконки тоже получают фокус); при вызове мышой, это возможно только при клике в Root window.

Кроме того, такое поведение, как ты получил, проще сделать так: заменить ThisWindow на Pick, убрать Pick перед вызовом функции. Кстати, предложенное мной поведение проще сделать, вызывая полученную функцию как NoWindow Function ChangeList.

> А вы можете рассказать о своем FVWM

Он постоянно меняется :) Сейчас это примерно такая шняга:

Монотонный фон (я его всё-равно вижу не чаще 1 раза за две недели). Иконок, следовательно, на нём тоже нет. Никаких, даже для минимизированных окон. Стандартное оформление (no themes). Как показала практика, хоть и выглядит неказисто, на первый взгляд, зато меньше всего напрягает. Отсутствуют таскбары, панели, FvwmButtons'ы и прочая фигня, чтобы приложение раскрывалось на весь экран. Соответственно, нужные мне прикладухи по кнопкам всплывают/тонут (часы, например). Для запуска использую меню, благо их можно насоздавать разных сколько душе угодно и вешать на кнопки, пока они на клаве не кончатся. Для переключения между задачами - WindowsList'ы. Один отфильтровывает только неиконизированные окна на текущем десктопе, другой показывает все на всех десктопах (оба не показывают окна с WindowsListSkip). Из остальных прелестей моего рабоче-домашнего окружения, относящихся к FVWM, разве что динамические меню со специализированными, заточенными мной под себя задачами :)

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


> Значит, я не понял, как нужно :) Я специально сконструировал так,
> чтобы fvwm _всегда_ просил показать окно. Тогда в случае, если нужно > произвести действие над окном, которое не может получить фокус, надо > просто нажать другую комбинацию клавиш, которая попросит указать
> окно независимо от того, активно ли сейчас какое-нибудь окно или нет.

> В твоём же случае, теоретически, конечно, можно выполнить действие
> над окном, которое не может получить фокус, но для этого нужно,
> чтобы команда выполнялась в контексте Root window. При вызове > команды клавиатурной комбинацией этого можно добиться только если не
> осталось ни одного окна, которое может получить фокус (даже иконок,
> потому что иконки тоже получают фокус); при вызове мышой, это возможно
> только при клике в Root window.

А, вон оно, что. Я действительно мыхой пока только вызывал эту функцию. Я всё еще не особо привык к каким-либо горячим клавишам.

> Кроме того, такое поведение, как ты получил, проще сделать так:

Будем учиться..

> Он постоянно меняется :) Сейчас это примерно такая шняга:

Да я только начинаю. Пока только сделал то, что здесь спрашивал, и плавный передвижение по виртуальному экрану мышью (простое EdgeScroll 10 10 - тут не подходит).
Вообще виртуальные экраны это прикольно. Надо будет сделать кнопку, чтобы растягивать окно на весь виртуальный экран :-) Не понравиться - удалим.

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