除了让窗口始终位于最顶部之外,有没有办法强制所有应用程序以最小化方式启动或让它们在后台加载,以便它们不会在我正在处理的窗口顶部打开?
我注意到很多类似的问题都得到了盲目的回答,其解决方案涉及摆弄窗口规则设置,CompizConfig > General > Focus & Raise Behavior
但实际上这并不能防止这种焦点窃取。
答案1
从软件中心检查 GDevilSpie,这里有一个教程 http://www.webupd8.org/2011/02/how-to-start-applications-minimized.html
答案2
如果你正在使用工作区(在 Compiz 中称为视口),你可以使用devilspie2在不同的工作区中打开最大化的应用程序。它使用 lua 作为脚本语言,因此功能非常强大。它与视口配合得不是很好,因为从技术上讲,视口只是一个大工作区的一部分,因此需要一些解决方法和外部工具。这是我用来将 pidign 对话放置到我的全高清屏幕 (1920×1080) 的视口 3,3(从顶部和左侧算起第三个)的脚本:
-- a helper function to capture string from external command output
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
if (get_window_class()=="Pidgin" and get_window_role()=="conversation") then
-- get the current viewport
vp = os.capture("xprop -root |grep '_NET_DESKTOP_VIEWPORT(CARDINAL) = ' |cut -d ' ' -f 3-4 |tr -d ','")
-- unfortunately, the below does not work due to a bug in xdotool
-- vp = os.capture("xdotool get_desktop_viewport")
-- set_window_geomtery is relative to current position, it seems, so go to the left and top most vieport
os.execute("xdotool set_desktop_viewport 0 0")
-- set the window maximized and to viewport 3,3
set_window_geometry(3930,2250,650,950)
maximize()
-- now go to the original viewport
os.execute("xdotool set_desktop_viewport " .. vp)
end
该脚本依赖于x11-utils
和xdotool
。这会导致应用程序打开时出现非常短暂的闪烁。可以使用 CCSM 并将 Wall 滑动持续时间设置为零毫秒来消除此问题。