Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado

Publicado por Ta_PegandoFogo em 19/02/2025

[ Hits: 2.314 ]

 


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,hidden

Este 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

Outras dicas deste autor

Wi-fi fica desconectando no Ubuntu 21.10 [Resolvido]

Imagens e vídeos não são reproduzidos no navegador [Resolvido]

Leitura recomendada

Atualizando seu Linux Mint

Orientação a objetos com a linguagem Ruby

Servidor de domínios Samba com troca de senha obrigatória

Corrigindo erro ao adicionar plugin AddThis no Joomla! 3.0

Peppermint 10 em um PC da "pré-histórico"

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts