DevilsPie2 无法与 Ubuntu 20.04 Gnome 桌面配合使用

DevilsPie2 无法与 Ubuntu 20.04 Gnome 桌面配合使用

好的。我终于有时间安装 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 相关的错误

我已经重新启动了显示管理器,并且已完全重启...没有效果。

有小费吗?

附加信息
这是我安装的 gnome-extensions 的列表,以防出现某种冲突,有人可以识别:
在此处输入图片描述

答案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(第二项)的输出中的窗口类。

相关内容