Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Dica publicada em Linux / Introdução
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Introdução
Eu instalei o Lubuntu outro dia, e percebi que as janelas não faziam como o Windows, em que, se apertar a tecla Meta (Windows) junto com uma das flechas, a janela em foco se posiciona automaticamente na tela. Além disso, percebi que não tinha um que maximizasse e desmaximizasse adequadamente também. Então, pedi para o ChatGPT criar scripts para isso e os coloquei nos atalhos.Testado somente no Lubuntu.
Script 1 - Movimentação e Posicionamento
#!/bin/bash
# Define a altura da borda superior e inferior (em pixels)
border_top_height=0 # Ajuste conforme necessário
border_bottom_height=0 # Ajuste conforme necessário
# Obtém as dimensões da tela
screen_width=$(xdpyinfo | awk '/dimensions:/ {print $2}' | cut -d'x' -f1)
screen_height=$(xdpyinfo | awk '/dimensions:/ {print $2}' | cut -d'x' -f2)
# Remove maximizações verticais e horizontais
wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
# Calcula novas dimensões com base na direção
case "$1" in
up)
width=$screen_width
height=$((screen_height / 2 - border_top_height))
x=0
y=0
;;
down)
width=$screen_width
height=$((screen_height / 2 - border_bottom_height))
x=0
y=$((screen_height / 2))
;;
left)
width=$((screen_width / 2))
height=$screen_height
x=0
y=0
;;
right)
width=$((screen_width / 2))
height=$screen_height
x=$((screen_width / 2))
y=0
;;
*)
echo "Usage: $0 {up|down|left|right}"
exit 1
;;
esac
# Move e redimensiona a [em]janela[/em] ativa
wmctrl -r :ACTIVE: -e 0,$x,$y,$width,$height
// fim do script
Funciona assim:
- Salve este script como move_window.sh na sua pasta home no seu usuário, e use chmod a+x para torná-lo executável
- Para mandar um comando para a janela se mover, mande executar o arquivo a partir do gerenciador de atalhos junto com a posição desejada. E.g.: para mover a janela em foco para a direita, use "./move_window.sh right" (sem aspas). Para os outros eixos, são "up", "down" e "left". Então, basta atribuir esse comandos a atalhos de teclado. Nas configurações tem um "gerenciador de ações globais". Caso queira pelo terminal, tem este artigo aqui: https://www.geeksforgeeks.org/create-desktop-shortcuts-using-the-terminal-on-ubuntu/
Script 2 - maximizar e minimizar janela
#!/bin/bash
# Define a porcentagem da largura e altura da tela para a janela
width_percent=60 # Largura da janela em porcentagem da largura da tela
height_percent=70 # Altura da janela em porcentagem da altura da tela
# Obtém o ID da janela ativa
win_id=$(xdotool getactivewindow)
# Obtém as dimensões da tela
screen_width=$(xwininfo -root | awk '/Width:/ {w=$2} END {print w}')
screen_height=$(xwininfo -root | awk '/Height:/ {h=$2} END {print h}')
# Calcula a largura e altura da janela com base nas porcentagens
window_width=$((screen_width * width_percent / 100))
window_height=$((screen_height * height_percent / 100))
# Calcula a posição para centralizar a janela
x_position=$(((screen_width - window_width) / 2))
y_position=$(((screen_height - window_height) / 2))
# Verifica o estado da janela ativa
state=$(xprop -id "$win_id" _NET_WM_STATE)
# Alterna o estado da janela ativa
if echo "$state" | grep -q "_NET_WM_STATE_MAXIMIZED_VERT" && echo "$state" | grep -q "_NET_WM_STATE_MAXIMIZED_HORZ"; then
# Se estiver maximizada, desmaximiza e centraliza
wmctrl -ir "$win_id" -b remove,maximized_vert,maximized_horz
wmctrl -ir "$win_id" -e 0,$x_position,$y_position,$window_width,$window_height
else
# Se não estiver maximizada, maximiza
wmctrl -ir "$win_id" -b add,maximized_vert,maximized_horz
fi
// fim do script
Funciona assim:
- O meu monitor é 1366x768, então pode ser que você tenha que ajustar o tamanho da janela em "width_percent" e "height_percent" caso o seu monitor seja de uma resolução diferente.
- Mesma coisa que o outro, mas, esse, só precisa mandar executá-lo sem nenhum argumento extra. Eu salvei como "maximize_window.sh", aliás.
Script 3 - Tela cheia absoluta
este é mais para se você manipular a área de trabalho acidentalmente, colocando ela em foco enquanto usa o manipulador de janelas, "diminuindo" a área de trabalho.#!/bin/bash
# Define a altura da borda superior e inferior (em pixels)
border_top_height=0 # Ajuste conforme necessário
border_bottom_height=0 # Ajuste conforme necessário
# Obtém as dimensões da tela
screen_width=$(xdpyinfo | awk '/dimensions:/ {print $2}' | cut -d'x' -f1)
screen_height=$(xdpyinfo | awk '/dimensions:/ {print $2}' | cut -d'x' -f2)
# Remove maximizações verticais e horizontais
wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
# Define a largura e altura para a janela ocupar toda a tela
width=$screen_width
height=$screen_height
x=0
y=0
# Move e redimensiona a janela ativa para ocupar toda a tela
wmctrl -r :ACTIVE: -e 0,$x,$y,$width,$height
// fim do script
Funciona assim:
- Mesma coisa. Salve na /home do usuário, chmod a+x, atribua a um atalho.
Script 4 - Minimizar janela
wmctrl -r :ACTIVE: -b add,hiddenEste não é um script para ser salvo, é para ser executado diretamente [por um atalho].
Para quem quiser um Openbox bem abastecido (de atalhos), este é o link do meu arquivo de configuração do Openbox "rc.xml". É só copiar e colar.
https://drive.google.com/drive/folders/1YVbgNaQ-U8KEvBZbtiRHf6OjKVkOZGlm?usp=sharing
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro