Como usar o guake no monitor do lado direito no ambiente de tela dupla

Respostas:

21

Eu uso dois monitores e queria que o Guake fosse exibido à direita (onde, por padrão, ele é exibido à esquerda).

O que eu fiz foi editar meu /usr/bin/guake/arquivo substituindo o get_final_window_rectmétodo por este:

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

Basicamente, ele usa 1como índice de monitor e, posteriormente, adiciona a largura certa da tela ao ponto de início da janela do guake

espero que isto ajude!

wilfo
fonte
Como você abriu esse arquivo para editá-lo? Eu fiz isso através do arquivo xdg-open $, mas ele é aberto como somente leitura.
kevin
Qualquer editor de texto vai fazer, uso sudono início do comando para ter privilégios de administrador
wilfo
Estranhamente, isso alterna entre esquerda e direita toda vez que a abro quando defino 'Posicionamento do iniciador' apenas para o monitor esquerdo. Ajustá-lo para o correto faz com que funcione sempre.
Rmobis 19/05
3
É verdade. Seu comentário fez com que minha instalação fosse a versão mais recente do Guake (deste ppa: https://launchpad.net/~webupd8team/+archive/ubuntu/unstablee parece que eles fizeram isso agora, agora você pode escolher entre o terminal que aparece na tela em que o mouse está ou bloqueando-o em uma tela específica, que eu acho que é uma solução bastante boa na minha opinião
wilfo
O comentário do @ wilfo, identificando as atualizações dos desenvolvedores originais, fornece a solução mais simples. Os recursos internos do Guake 0.7.2 adicionam a capacidade de definir a exibição, bem como muitas outras configurações úteis.
Steven C. Howell
2

A solução é muito simples, pois você deseja alinhar a tela do Guake ao monitor do lado direito, para que na posição inicial (x, y) da tela, a coordenada y seja a mesma, ou seja, começará a partir de 0, mas coordenada x vai mudar e deve ser igual à largura do seu monitor do lado esquerdo. Para poder fazer isso, você precisa fazer duas coisas.

I. Altere o número do monitor para 1, conforme sugerido acima. Na linha

window_rect = screen.get_monitor_geometry (0)

Substitua 0 por 1.

II Adicione a largura da primeira tela na posição x da coordenada inicial. para fazer isso.

Substituir

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

De

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

Depois de fazer essas alterações e reiniciar o guake (Saia e inicie novamente), você deverá obter o alinhamento desejado da tela do Guake.

Espero que isto ajude :)

lalit
fonte
1

Também fiz uma pergunta: guake no monitor do lado direito em ambiente de tela dupla - Ubuntu 15.10 (Wily Werewolf))

No Ubuntu 15.10, o guake mudou um pouco. Para mudar seu terminal para o monitor certo, você precisa editar:

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

então mude na linha 831:

window_rect = screen.get_monitor_geometry(monitor)

de:

window_rect = screen.get_monitor_geometry(1)

matar e reiniciar guake

Alguém sabe uma maneira de fazer isso menos hacky?

clvx
fonte
1

Como o lalit disse, a melhor maneira de encontrar isso no ubuntu 14.04LTS estava mudando

window_rect = screen.get_monitor_geometry(0)

para

window_rect = screen.get_monitor_geometry(0)

mas mudando

    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

para

 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

A única diferença é no primeiro "se", sem adicionar "total_width" a "window_rect.x", aparece no meio do meu monitor esquerdo.

PS: Desculpe Lalit, mas não posso adicionar um comentário à sua postagem, pois ainda não tenho pontos = (

Ramiro RC
fonte
1

A solução do wilfo não funciona para mim. No meu caso, resolvi no Linux Mint com o seguinte código:

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

Eu pego daqui , mas mudei 80para 100.

smartmouse
fonte
1

Boas notícias!

Na versão 0.8.5, o Guake será exibido no monitor ativo, para que você não precise mais ajustar o código do Guake.

eterno-aprendiz
fonte
a versão 0.5.0 (a do repo do ubuntu) também é compatível com:apt-get install --only-upgrade guake
Artur Klesun 7/16
0

Eu não testei isso, mas acho que você pode editar / usr / bin / guake, pois é um script python.

Encontrar

window_rect = screen.get_monitor_geometry(0) #line 824 na minha máquina

e mude o 0 para o índice do monitor em que você deseja que o guake seja exibido.

Jack
fonte
1
Editei a linha 0para 1dentro /usr/lib/guake/guake.py. E reinicie o guake, mas nada muda.
ironsand
0

Apenas para adicionar às respostas do smartmouse e do wilfo, depois de fazer a alteração em / usr / bin / guake, é necessário reiniciar com força. O logout da sessão guake não termina o processo do Guake.

Abra o monitor do sistema e interrompa o processo de aplicação do guake e, em seguida, reinicie

Anuraag
fonte
0

Eu tive que mudar isso no Ubuntu 16.04 LTS com 2 monitores.

Eu estava tentando os métodos acima, mas percebi que o código havia mudado desde então. Entrei, ~/.gconf/apps/guake/generaleditei %gconf.xmle mudei display_n (int)de 0para 1para o meu segundo monitor.

Espero que isto ajude :)

pwnall1337
fonte
-1

Eu tentei no Ubuntu 14.04, achei que você só precisava clicar em "Preferências" no ícone do guake (tela superior direita) em qualquer monitor, depois clicar em "Mostrar" no mesmo monitor, para ver o terminal do guake aparecer no monitor que você estão usando !!!

Tony Chen
fonte
Não está claro (pelo menos para mim) como essa abordagem "definirá monitor_index". Você poderia editar esta resposta para esclarecer como ela responde à pergunta? Obrigado!
Elder Geek