Como a posição "inteligente" e redimensionar as janelas do terminal Linux?

2

Eu gostaria de fazer um brainstorming sobre como criar um script que funcionasse em várias UIs de desktop e com múltiplos terminais Linux (se possível) que fariam a janela do terminal "esperta". Problema com tamanho e posição estaticamente definidos é óbvio - diferentes resoluções de tela.

Caso 1 do usuário: Ann gosta de trabalhar com várias janelas principais e gostaria de ter uma metade superior da tela e outra metade da tela, mas a largura de cada uma deveria ser 80% da resolução da tela. / p>

Caso de usuário 2: Bill usa apenas um terminal, mas ele gosta de tê-lo no canto inferior direito e ter 40% de largura e 30% de resolução de tela inteira.

    
por valentt 15.07.2013 / 12:11

1 resposta

3

Você deve ser capaz de fazer algo com wmctrl :

wmctrl is a UNIX/Linux command line tool to interact with an EWMH/NetWM compatible X Window Manager.

The tool provides command line access to almost all the features defined in the EWMH specification. It can be used, for example, to get information about the window manager, to get a detailed list of desktops and managed windows, to switch and resize desktops, to make windows full-screen, always-above or sticky, and to activate, close, move, resize, maximize and minimize them.

Basta escrever scripts para Ann e Bill que se pareçam com isto:

#!/bin/bash
xterm &
sleep 2  ## sleep just to let the terminas appear and become the active window
wmctrl -r :ACTIVE: -e 5,-1,-1,660,540
        -----------   -- -- -- --- ---
             |         | |  |   |   |---> Window height
             |         | |  |   |-------> Window width             
             |         | |  |-----------> Window Y coordinates
             |         | |--------------> Window X coordinates
             |         |----------------> Gravity
             |--------------------------> Apply to the active window

A gravidade pode ser uma das fonte :

  • NorthWest (1)
  • North (2),
  • NorthEast (3),
  • West (4),
  • Center (5),
  • East (6),
  • SouthWest (7),
  • South (8),
  • SouthEast (9)
  • Static (10).

A gravity of 0 indicates that the Window Manager should use the gravity specified in WM_SIZE_HINTS.win_gravity.

Você deve ser capaz de descobrir uma maneira de especificar especificamente a janela do terminal, se você olhar através de man wmctrl . Caso contrário, use meu sleep & & active hack.

Atualizar em resposta ao seu comentário:

Posso obter a janela ativa para ir para o canto inferior direito da tela com isto:

wmctrl -r :ACTIVE: -e 4,3040,900,620,620

Não tenho certeza do que a gravidade está fazendo, mas especificar X e Y funciona. Estou executando um sistema com uma área de trabalho estendida espalhada por duas telas:

$ xrandr  | grep -w connected
VGA-0 connected 1440x900+1600+0 (normal left inverted right x axis y axis) 408mm x 255mm
DP-3 connected 1600x900+0+0 (normal left inverted right x axis y axis) 344mm x 194mm

Então, 1600+1440 = 3040 , o que significa que 3040 colocará minha janela no canto inferior direito. Você precisará ajustar de acordo com sua configuração, é claro.

    
por 15.07.2013 / 15:15