Existe-t-il un moyen de placer une fenêtre au centre de l'écran après son ouverture ou de le faire s'ouvrir au centre de l'écran?
Cela doit être fait en ligne de commande.
wmctrl L'outil fournit un accès en ligne de commande à presque toutes les fonctionnalités définies dans la spécification EWMH (Conseils étendus du gestionnaire de fenêtres) . Il peut être utilisé, par exemple , pour obtenir des informations sur le gestionnaire de fenêtres, pour obtenir une liste détaillée des bureaux et des fenêtres gérées, pour commuter et redimensionner les bureaux, pour rendre les fenêtres plein écran , toujours au-dessus de ou collantes , et pour activer , fermer , déplacer , redimensionner , maximisez et réduisez-les .
Vous pouvez l'installer par
Sudo apt-get install wmctrl
Vous pouvez obtenir des informations sur vos bureaux virtuels (espaces de travail) avec
wmctrl -d
one@onezero:~$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
Et listez les fenêtres ouvertes avec wmctrl -l
. L'option -G
vous indique la géométrie des fenêtres:
one@onezero:~$ wmctrl -l
0x02000004 0 onezero Desktop
0x02e00002 0 N/A DNDCollectionWindow
0x02e00003 0 N/A launcher
0x01e00004 0 onezero cairo-dock
0x02e00004 0 N/A panel
0x04800061 0 onezero Transmission
0x02e0000a 0 N/A Dash
0x03a00044 0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006 0 onezero one@onezero: ~
0x04c000e9 0 onezero Google - Mozilla Firefox
wmctrl -lG
one@onezero:~$ wmctrl -lG
0x02000004 0 0 0 1360 768 onezero Desktop
0x02e00002 0 -1460 -868 1360 768 N/A DNDCollectionWindow
0x02e00003 0 0 24 58 744 N/A launcher
0x01e00004 0 290 653 780 115 onezero cairo-dock
0x02e00004 0 0 0 1360 24 N/A panel
0x04800061 0 408 95 732 500 onezero Transmission
0x02e0000a 0 -1402 -844 1302 744 N/A Dash
0x03a00044 0 0 24 1360 744 onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006 0 127 94 983 434 onezero one@onezero: ~
0x04c000e9 0 5 47 1349 715 onezero Google - Mozilla Firefox
Vous pouvez spécifier une fenêtre en référençant son titre ou un titre partiel après -r. -e est pour déplacer et redimensionner
wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>
<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.
Donc, pour déplacer une fenêtre dans le coin supérieur gauche et lui donner une largeur de 1000 sur 700, vous devez utiliser 0,0,0,1000,700.
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
Pour le déplacer/le redimensionner. Pour cela, j’ai utilisé la solution de contournement consistant à "annuler la maximisation" en utilisant l’option -b
wmctrl -r "Mozilla Firefox" -b add, maximized_vert, maximized_horz
wmctrl -r "Mozilla Firefox" -b supprimer, maximized_vert, maximized_horz
one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
Les choses que vous devez comprendre en premier
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
c’est ma résolution d’écran donc x = 1360 & y = 786
Aligner une fenêtre sur la moitié gauche de l'écran
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
Aligner une fenêtre sur la moitié droite de l'écran
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
Alignement d'une fenêtre sur center of screen
1360/4 = 340
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
Manipulez-le à partir des paramètres de votre écran
qui fonctionne avec la fenêtre actuellement active
IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
width=$(xdotool getactivewindow getwindowgeometry --Shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --Shell | head -5 | tail -1 | sed 's/[^0-9]*//')
newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))
xdotool getactivewindow windowmove "$newPosX" "$newPosY"
Si quelqu'un veut qu'un extrait de code soit copié/collé pour le faire, en voici un:
winname='foo'
IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
Remplacez foo
par le nom de la fenêtre que vous souhaitez centrer sur la première ligne, bien sûr.
Explication (décomposition sous la forme d'un exemple de session de console):
Obtenir les dimensions de l'écran
llama@llama:~$ xdpyinfo | grep dimensions
dimensions: 1920x1080 pixels (508x285 millimeters)
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*'
1920x1080
x
508x285
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1
1920x1080
llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
llama@llama:~$ echo $sw $sh
1920 1080
Obtention des informations de géométrie de la fenêtre
llama@llama:~$ wmctrl -lG | grep foo
0x00a0000c 0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;'
0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;'
1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;'
1143 505 722 475
llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
llama@llama:~$ echo $wx $wy $ww $wh
1143 505 722 475
Déplacement de la fenêtre
llama@llama:~$ echo 0,foo,bar,$ww,$wh
0,foo,bar,722,475
llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh
0,960,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh
0,599,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
0,599,303,722,475
La plupart des applications doivent respecter le paramètre --geometry au démarrage (certaines préfèrent -geometry, essayez la seconde si la première ne fonctionne pas pour vous):
gnome-terminal --geometry 80x25+100+100
Le paramètre geometry a cette forme:
WIDTHxHEIGHT+XOFF+YOFF
Vous pouvez laisser des parties inutiles:
gnome-terminal --geometry +20+50 #No size, just offsets
Pour plus de détails:
man X
puis appuyez sur "/" et recherchez SPÉCIFICATIONS DE GÉOMÉTRIE
ou voir ici: http://www.cotse.com/dlf/man/xwindows/geometry.htm