Совместимость с Devilspie2 KeePass2
Я использую keepass2 для управления паролями (поэтому я хочу, чтобы он всегда был сверху и прикреплен ко всем рабочим областям, и это основная причина, по которой я установил Devilspie2).
Хотя я могу как "закрепить", так и "поместить" окно Keepass в соответствии с его классом окна и/или именем приложения (оба работают)... после того, как я открываю окно "Редактировать запись", "закрепить" для функциональность просто перестает работать для приложения keepass, и ни одно из приведенных ниже решений не заставит его работать стабильно.
Они могут закрепить и расположить окно Keepass перед открытием окна «Редактировать запись»:
if (string.match(get_application_name(), "KeePass2")) then
set_window_geometry(960, 500, 960, 500);
end
if (string.match(get_application_name(), "KeePass2")) then
pin_window();
end
if (string.match(get_application_name(), "KeePass")) then
set_window_geometry(960, 500, 960, 500);
end
if (string.match(get_application_name(), "KeePass")) then
pin_window();
end
if (string.match(get_window_name(), "Edit Entry")) then
set_window_geometry(960, 500, 960, 500);
end
if (string.match(get_window_name(), "Edit Entry")) then
pin_window();
end
if (get_window_name() == "Edit Entry") then
pin_window();
end
ПРИМЕЧАНИЕ:
расположение «Редактировать запись» не является жизненно важным... его также нельзя изменить вне Devilspie2. Также, если я остановлю и перезапущу Devilspie2 с открытым окном «Редактировать запись» ... он сразу же начнет работать. Если я закрою «Редактировать запись» и открою новую «Редактировать запись», Devilspie2 перестанет работать (без закрепления), и Devilspie2 потребуется перезапуск.
Также я заметил что-то странное, что имя приложения меняется, когда открыто окно «Редактировать запись» (отсюда и использование «Keepass» и «Keepass2» выше.
Когда окно «Редактировать запись» НЕ открыто, а база данных НЕ открыта, отладка показывает:
Class: KeePass2
Application: KeePass
Window: KeePass
Когда окно «Редактировать запись» НЕ открыто, но база данных открыта, отладка показывает:
Class: KeePass2
Application: PrivateDBNName.kdbx - KeePass
Window: PrivateDBname.kdbx - KeePass
Когда окно «Редактировать запись» открыто, отладка показывает:
Class: KeePass2
Application: KeePass2
Window: Edit Entry
Очевидно, что позиционирование и закрепление окон Keepass в соответствии с именами их оконных классов кажется наиболее интуитивным, но это просто приводит к той же проблеме, которую я описал выше, когда после открытия окна «Редактировать запись» devilspie2 просто перестает работать с KeePass вообще, тем самым побеждая цель его установки и много усилий для его настройки :-/.
Любые советы приветствуются.
Кое-что интересное
Вывод этой команды показывает что-то странное для keepass:
$ wmctrl -lx
0x06a000f8 2 gedit.Gedit localhost debug.lua (~/.config/devilspie2) - gedit
0x0260005d 2 keepass2.KeePass2 N/A PrivteDBName.kdbx - KeePass
0x026009a2 2 keepass2.KeePass2 N/A Edit Entry
--имя хоста всегда отсутствует, независимо от того, работает ли Keepass или нет
Да, надоедливая ошибка
. Итак, я установил KeePassXC через PPA и первым делом запустил:
$ wmctrl -lx
0x07800006 2 keepassxc.KeePassXC localhost PrivateDBName - KeePassXC
Еще одна ошибка
. Теперь позиционирование и закрепление с помощью KeePassXC работает. После того, как я действительно создаю новую запись пароля в базе данных, devilspie2 снова перестает работать.
Так что теперь есть две разные версии KeePass (довольно популярное приложение), которые не будут корректно работать с пиннингом devilspie2. Но каким-то образом дробное масштабирование имеет более высокий приоритет, чем обычно ожидаемая пользователем возможность позиционировать и закреплять окно.. :-/ идти за мороженым... избегая «дьявола».
Приятное обновление: удалил Keepass2 и перезагрузил машину.. теперь закрепление KeePassXC продолжает работать после того, как я создаю новую запись в БД... глючат библиотеки зависимостей?
--Имя локального хоста -действительно- существует.
Я настроил Devilspie2 и почти все работает так, как ожидалось. подсказка, пост подсказки №3 скоро будет.
За вычетом настройки высоты окна работает следующее:
if (get_window_class() == "KeePassXC") then
set_window_geometry(960, 500, 960, 495)
pin_window();
end
Примечание:
Это приложение действительно похоже на то, что gnome/ubuntu должны изначально включать, поскольку оно обеспечивает такую высокую добавленную стоимость с точки зрения удобства использования. Я уверен, что многие пользователи выбрали бы это положение и закрепляли окна с помощью точного графического интерфейса вместо дробного масштабирования в любой день. (просто мое скромное мнение)