Monthly Archives: May 2015

Fedora 22上guake的双屏幕问题

Fedora22明天应该就要GA了,周末先升级到了f22,整体感觉还不错,比较显著的更改就是由yum转到dnf,但是继续用yum也是可以的。

但每次升级Fedora,都要跟guake的双屏幕问题斗争一番。不是失去焦点回不来就是只能在一个屏幕上显示。这次又是只能在第一次启动guake的屏幕上显示,不跟随鼠标来选择屏幕,虽然在配置里已经勾选了”Appear on mouse display”。曾经一度想过换一个下拉式的terminal,试了tilda和yakuake,还有xfce4-terminal的新drop-down特性(xfce4-terminal –drop-down),但都不能满足我的需求,不是不能全屏就是不能跟随鼠标移动,xfce4-terminal的下拉特性还是实验性质的,全屏之后还会变回原来的样子。最后还是继续折腾guake吧。

经过一番debug发现,选择屏幕的函数set_final_window_rect()在切换屏幕之后根本没有调用到,当然就不能跟随鼠标了。找到函数调用者,发现原来是全屏的影响

        if not self.is_fullscreen:
            window_rect = self.set_final_window_rect()

也就是说,在全屏模式下,不会切换屏幕。这个修改是因为在全屏的时候不需要给terminal发送resize信号,这个信号会导致terminal上的内容重排,有时很烦人。一个小patch去掉全屏判断就解决这个问题了,虽然需要继续忍受resize信号,但也比不能双屏幕好。

user@dhcp-13-216:~/guake$ git diff
diff --git a/src/guake/guake_app.py b/src/guake/guake_app.py
index 9b89c33..b1c4da7 100644
--- a/src/guake/guake_app.py
+++ b/src/guake/guake_app.py
@@ -663,8 +663,7 @@ class Guake(SimpleGladeApp):
         self.hidden = False

         # setting window in all desktops
-        if not self.is_fullscreen:
-            window_rect = self.set_final_window_rect()
+        window_rect = self.set_final_window_rect()
         self.get_widget('window-root').stick()

         # add tab must be called before window.show to avoid a