我想启动一个具有最底部属性的应用程序。这意味着该窗口将始终位于其他窗口的底部。
这可能吗?我认为一定有一个应用程序可以做这样的事情,但我不知道如何找到它...
例如,我想chromium-browser
从最底部的属性开始。我该怎么做?
答案1
你可以使用魔鬼派2(http://www.gusnan.se/devilspie2/),即使用脚本在创建窗口时执行操作的程序,该脚本以Lua(http://www.lua.org/manual/)
使用以下命令安装:sudo apt-get install devilspie2
,然后运行devilspie2
。您应该会看到错误消息:
No script files found in the script folder - exiting.
它将创建该文件夹为~/.config/devilspie2/
。创建以下文件,并将其保存在此目录中,扩展名为.lua
,例如chromium.lua
:
debug_print("Window Name: " .. get_window_name())
debug_print("Application name: " .. get_application_name())
debug_print("WM_CLASS: " .. get_class_instance_name())
debug_print("Window Class: " .. get_window_class())
if (string.match(get_application_name(),"Chromium$")) then
set_window_below();
end
然后运行devilspie2 --debug &
并打开铬.终端应该显示:
Window Name: Untitled - Chromium
Application name: Untitled - Chromium
全部铬窗口(任何以“Chromium”结尾的应用程序名称)打开时魔鬼派2正在运行现在将被设置为位于所有正常窗口下方。
打开其他程序时魔鬼派2正在使用调试开关运行,应该可以帮助您修改此代码以用于其他应用程序。
自动运行魔鬼派2
创建一个文件~/.config/autostart/devilspie2.desktop
,包含:
[Desktop Entry]
Type=Application
Name=Devilspie2
Exec=devilspie2
NoDisplay=true
Terminal=false
添加附加条件
如果仅偶尔运行应用程序的脚本,您可以:
跑步魔鬼派2仅在需要时才应用,例如
devilspie2 & app ; killall devilspie2
,尽管它会将其规则应用于运行时创建的所有新窗口。对于 GTK 应用程序,该选项
--name=
会更改应用程序名称和--class=
窗口类。 铬尽管有文档记录,但无法识别这一点。使用修改后的环境运行该命令,例如
window-below= chromium-browser
,并使用以下规则:if (string.match(get_application_name(),"Chromium$")) and (string.match(io.input("/proc/" .. get_window_property("_NET_WM_PID") .. "/environ"):read("*a"), "window-below=")) then set_window_below(); end