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

Publicado por Ta_PegandoFogo em 19/02/2025

[ Hits: 186 ]

 


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

Vídeo-aula de como se criar uma vídeo-aula

Instalando a impressora LexMark x1270 no Ubuntu Lucyd

Instalando plugin Java para Firefox no Debian

Instalando multifuncional ou impressoras no SLAX 10.2 de maneira simples e permanente

How To: Configurar proxy web em servidor Debian

  

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