Introdução:
O script a seguir alinha o centro da janela ativa do usuário com o centro da tela. Pretende-se que seja ligado a um atalho de teclado em Definições - > Teclado - > Menu de atalhos.
Uso:
- Salve o script como
~/bin/center_active_window.py
. Certifique-se de que tenha permissões executáveis comchmod +x ~/bin/center_active_window.py
- Abrir configurações do sistema - > Teclado - > Atalhos - > Personalizadas. Clique em + .
- Você será solicitado com um pop-up solicitando Nome e Comando. O nome pode ser qualquer coisa, o comando deve ser o caminho completo para o novo script, por exemplo,
/home/your_user_name/bin/center_active_window.py
. Clique em Aplicar - Clique no texto
Disabled
e atribua a ele uma vinculação de tecla personalizada quando solicitado. Estou usando Ctrl + Super + C , mas você pode usar o que quiser.
Código-fonte
Também disponível como gist no GitHub
#!/usr/bin/env python3
# Author: Serg Kolo
# Date: Oct 3rd, 2016
# Description: Script for aligning the center of
# user's active window with the center of the monitor
# Tested on: Ubuntu 16.04
# Written for: http://askubuntu.com/q/832720/295286
from __future__ import print_function
from gi.repository import Gdk
import subprocess
def get_offset(*args):
command = ['xprop','-notype','_NET_FRAME_EXTENTS',
'-id',str(args[0])
]
out = subprocess.check_output(command)
return int(out.decode().strip().split(',')[-2])
def main():
screen = Gdk.Screen.get_default()
window = screen.get_active_window()
window.unmaximize()
window_width = window.get_width()
window_y = window.get_origin()[-1]
print(window_y)
window_monitor = screen.get_monitor_at_window(window)
monitor_center = screen.get_monitor_geometry(window_monitor).width/2
# if centers of window and screen are aligned
# the top left corner will be at screen_center - window_width/2
new_position = monitor_center - window_width /2
# For some reason there is vertical offset necessary
# Apparently this comes form _NET_FRAME_EXTENTS value
offset = get_offset(int(window.get_xid()))
window.move(new_position,window_y-offset)
print(window.get_origin())
if __name__ == '__main__':
main()