在双显示环境中如何在右侧显示器上使用guake


Answers:


21

我使用两台监视器,并希望将Guake显示在右侧一台(默认情况下显示在左侧一台)。

我所做的是编辑/usr/bin/guake/文件,用此get_final_window_rect方法替换了该方法:

def get_final_window_rect(self):
    """Gets the final size of the main window of guake. The height
    is the window_height property, width is window_width and the
    horizontal alignment is given by window_alignment.
    """
    screen = self.window.get_screen()
    height = self.client.get_int(KEY('/general/window_height'))
    width = 100
    halignment = self.client.get_int(KEY('/general/window_halignment'))

    # get the rectangle just from the first/default monitor in the
    # future we might create a field to select which monitor you
    # wanna use
    monitor = 1 # use the right most monitor
    window_rect = screen.get_monitor_geometry(monitor)
    # see if we don't have another screen, and if so, use the first one
    if window_rect.width == 0:
        monitor = 0
        window_rect = screen.get_monitor_geometry(monitor)
    total_width = window_rect.width
    window_rect.height = window_rect.height * height / 100
    window_rect.width = window_rect.width * width / 100

    if width < total_width:
        if halignment == ALIGN_CENTER:
            window_rect.x = (total_width - window_rect.width) / 2
            if monitor == 1:
                    right_window_rect = screen.get_monitor_geometry(0)
                    window_rect.x += right_window_rect.width
        elif halignment == ALIGN_LEFT:
            window_rect.x = 0
        elif halignment == ALIGN_RIGHT:
            window_rect.x = total_width - window_rect.width
    window_rect.y = 0
    return window_rect

基本上,它1用作监视器索引,以后将正确的屏幕宽度添加到guake窗口的起点显示

希望这可以帮助!


您是如何打开该文件进行编辑的?我通过xdg-open $ file做到了,但它以只读方式打开。
凯文2014年

任何文本编辑器都可以使用sudo,并且可以在命令开头使用admin权限
wilfo 2014年

奇怪的是,每当我为左显示器设置“启动器放置”时,每次打开它时,它就会在左右之间交替。将其设置在正确的位置可以使其每次正常工作。
rmobis

3
这是真的。您的评论使我安装了最新版本的Guake(来自该ppa:https://launchpad.net/~webupd8team/+archive/ubuntu/unstable看来,他们已经安装了该版本,因此现在您可以在鼠标所在的屏幕上显示的终端之间进行选择,或将其锁定在特定的屏幕上,我认为这是一个足够好的解决方案
wilfo

@wilfo的注释标识了原始开发人员的更新,这提供了最简单的解决方案。Guake 0.7.2的内置功能增加了设置显示的功能以及许多其他有用的设置。
史蒂文·霍维尔

2

解决方案非常简单,因为您要将Guake屏幕与右侧监视器对齐,因此在屏幕的起始位置(x,y),y坐标将相同,即它将从0开始但x坐标将会改变,并且应该等于您左侧显示器的宽度。为了做到这一点,您需要做两件事。

I.如上所述,将监视器号更改为1。排队

window_rect = screen.get_monitor_geometry(0)

用1替换0。

二。在起始坐标的x位置添加第一个屏幕宽度。去做这个。

更换

if width < total_width:
    if halignment == ALIGN_CENTER:
        window_rect.x = (total_width - window_rect.width) / 2
    elif halignment == ALIGN_LEFT:
        window_rect.x = 0
    elif halignment == ALIGN_RIGHT:
        window_rect.x = total_width - window_rect.width
window_rect.y = 0
return window_rect

通过

if width < total_width:
     if halignment == ALIGN_CENTER:
         window_rect.x += (total_width - window_rect.width) / 2
     elif halignment == ALIGN_LEFT:
         window_rect.x += 0
     elif halignment == ALIGN_RIGHT:
         window_rect.x += total_width - window_rect.width
window_rect.y = 0
return window_rect

完成这些更改并重新启动guake后(退出并重新启动),您应该获得所需的Guake屏幕对齐方式。

希望这可以帮助 :)


1

我也提出了一个问题:双显示环境中右侧显示器的guake-Ubuntu 15.10(Wily Werewolf))

在Ubuntu 15.10中,guake进行了一些更改。要将终端更改为正确的监视器,必须进行以下编辑:

sudo vim /usr/lib/python2.7/dist-packages/guake/guake_app.py

然后更改第831行:

window_rect = screen.get_monitor_geometry(monitor)

通过:

window_rect = screen.get_monitor_geometry(1)

杀死并重启guake

有人知道减少这种麻烦的方法吗?


1

正如lalit所说,我发现在ubuntu 14.04LTS上执行此操作的最佳方法正在改变

window_rect = screen.get_monitor_geometry(0)

window_rect = screen.get_monitor_geometry(0)

但是改变

    if width < total_width:
    if halignment == ALIGN_CENTER:
        window_rect.x = (total_width - window_rect.width) / 2
    elif halignment == ALIGN_LEFT:
        window_rect.x = 0
    elif halignment == ALIGN_RIGHT:
        window_rect.x = total_width - window_rect.width
window_rect.y = 0
return window_rect

 if width < total_width:
     if halignment == ALIGN_CENTER:
         window_rect.x += total_width + (total_width - window_rect.width) / 2
     elif halignment == ALIGN_LEFT:
         window_rect.x += 0
     elif halignment == ALIGN_RIGHT:
         window_rect.x += total_width - window_rect.width
window_rect.y = 0
return window_rect

唯一的区别是在第一个“ if”中,没有在“ window_rect.x” guake中添加“ total_width”,这出现在我的左监视器中间。

PS:对不起,拉利特,但由于我还没有积分=(


1

wilfo的解决方案对我不起作用。就我而言,我在Linux Mint上使用以下代码解决了问题:

def get_final_window_rect(self):
    """Gets the final size of the main window of guake. The height
    is the window_height property, width is window_width and the
    horizontal alignment is given by window_alignment.
    """
    screen = self.window.get_screen()
    height = self.client.get_int(KEY('/general/window_height'))
    width = 100
    halignment = self.client.get_int(KEY('/general/window_halignment'))

    # future we might create a field to select which monitor you
    # wanna use
    #monitor = 0 # use the left most monitor
    monitor = screen.get_n_monitors() - 1 # use the right most monitor

    monitor_rect = screen.get_monitor_geometry(monitor)
    window_rect = monitor_rect.copy()
    window_rect.height = window_rect.height * height / 100
    window_rect.width = window_rect.width * width / 100

    if width < monitor_rect.width:
        if halignment == ALIGN_CENTER:
            window_rect.x = monitor_rect.x + (monitor_rect.width - window_rect.width) / 2
        elif halignment == ALIGN_LEFT:
            window_rect.x = monitor_rect.x
        elif halignment == ALIGN_RIGHT:
            window_rect.x = monitor_rect.x + monitor_rect.width - window_rect.width

    window_rect.y = monitor_rect.y
    return window_rect

我从这里拿走,但我改成80100


1

好消息!

在版本0.8.5上,Guake将显示在活动监视器上,因此您无需再调整Guake代码。


版本0.5.0(Ubuntu存储库中的版本)也支持它:apt-get install --only-upgrade guake
Artur Klesun

0

我还没有测试过,但是我想您可以编辑/ usr / bin / guake,因为它是python脚本。

window_rect = screen.get_monitor_geometry(0) #line 824在我的机器上

并将0更改为要显示的guake监视器的索引。


1
我将该行编辑01/usr/lib/guake/guake.py。并重新启动guake,但没有任何变化。
ironsand 2014年

0

仅添加到smartmouse和wilfo的答案中,一旦更改了/ usr / bin / guake,就必须重新启动。注销guake会话不会结束Guake进程。

打开系统监视器并杀死guake应用程序进程,然后重新启动


0

我必须在具有2个监视器的Ubuntu 16.04 LTS上更改此设置。

我正在尝试上述方法,但后来意识到代码已更改。我进入~/.gconf/apps/guake/general并编辑了第二个显示器%gconf.xml,并将其display_n (int)0更改1为。

希望这可以帮助 :)


-1

我在Ubuntu 14.04中尝试,我发现您只需要在任一监视器中的guake图标(右上屏幕)上单击“首选项”,然后在同一监视器中单击“显示”,然后您可以看到在您的监视器上弹出guake终端正在使用 !!!


目前尚不清楚(至少对我而言),这种方法将如何“设置monitor_index”。您能否编辑此答案以阐明其如何回答问题?谢谢!
年长者怪胎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.