好的。我终于有时间安装 devilspie2 并运行这个非常清晰的教程。当然,它不起作用。然而,我读到的所有文章都指向 3 年前的文章和故障排除。
问题 1:
devilspie2 是否仍然适用于/兼容运行 X11 窗口管理器的 ubuntu 20.04 上的 gnome 版本 3.36.8?
假设它仍然适用/兼容......(github 存储库仍然活跃https://github.com/dsalt/devilspie2)
问题2:
我做错了什么?我的脚本对任何应用程序的窗口都没有影响:
debug_print("Application: " .. get_application_name())
debug_print("Window: " .. get_window_name());
if (get_window_name() == "gedit") then
set_window_workspace(8);
end
if (get_window_name() == "Mozilla Firefox") then
set_window_geometry(50, 100, 800, 600);
end
devilspie2 --debug
运行没有问题,并确认正在读取包含我的脚本的文件
Using scripts from folder: /home/user/.config/devilspie2
------------
List of Lua files handling "window_open" events in folder:
/home/user/.config/devilspie2/debug.lua
List of Lua files handling "window_close" events in folder:
List of Lua files handling "window_focus" events in folder:
List of Lua files handling "window_blur" events in folder:
------------
我在系统日志中找不到与 devilspie2 和/或 lua 相关的错误
我已经重新启动了显示管理器,并且已完全重启...没有效果。
有小费吗?
答案1
问题 1:devilspie2 是否仍然适用于/兼容运行 X11 窗口管理器的 ubuntu 20.04 上的 gnome 版本 3.36.8?
即使在 22.04 上,只要你运行 X11 即可。它无法在 Wayland 上运行。
问题 2:我做错了什么?我的脚本对任何应用程序的窗口均无效:
如果您的配置文件正确,并且devilspie2
正在运行(检查 的输出ps ax | grep devilspie2
),则安装应该正确。某些规则可能因特定原因而不起作用。
get_window_name()
将返回窗口标题。(get_window_name() == "Mozilla Firefox")
将仅匹配具有确切标题“Mozilla Firefox”的窗口,即一个空的、新的 Firefox 窗口。Gedit 的窗口永远不会被命名为gedit
,因此永远不会被匹配。使用例如(string.match(get_window_name(), "Mozilla Firefox"))
或(string.match(get_window_name(), "gedit"))
来匹配窗口标题中的子字符串。set_window_workspace(8);
仅在有工作区 8 的情况下才会起作用。为了使其在 Gnome Shell 上运行,请在“设置”、“多任务”(Ubuntu 22.04)或 Gnome Tweaks(早期版本)中更改为“静态工作区”。
尖端
您可以通过终止正在运行的进程 ( ) 来“调试”您的 devilpie2 设置
killall devilspie2
,然后修改配置文件,然后重新启动 devilspie2。在该终端中,您可以方便地使用Ctrl+终止 devilspie2C并再次重新启动它。安装后,系统上会隐藏一份非常全面的手册,列出所有命令
devilspie2
。使用less /usr/share/doc/devilspie2/README.gz
来查看它。不要犹豫使用窗口类来代替标题。例如,这可以避免打开有关 gedit 的文章的 Firefox 窗口被匹配为 gedit 窗口:
if (get_window_class() == "Gedit") then set_window_workspace(8); end
wmctl -lx
请参阅或xprop | grep WM_CLASS
(第二项)的输出中的窗口类。