Como usar o snap da janela para o Ubuntu? [duplicado]

14

Possível duplicata:
Como emular o winkey + arrow O Windows 7 maximiza as teclas de atalho?

Estou tentando o Ubuntu e quero que minhas janelas se encaixem à esquerda e à direita, como o Windows 7, quando uso as teclas de atalho Janela + Seta. Como posso fazer isso?

Doug
fonte
O Ubuntu usa o Compiz para fornecer efeitos de janela. Eu olhei, mas não consigo ver nenhum plugin oficial para o Compiz, que lhe dará o efeito Win 7, que é uma pena, pois é um bom recurso de janela. Vou continuar procurando e postando como resposta se encontrar alguma coisa.

Respostas:

18

Isso é fácil de ativar no Gerenciador de configurações do CompizConfig. (Instale, se você ainda não tiver).

Em Gerenciamento de janelas, ative Grade. Eu mantive as ligações padrão de CTRL + ALT + NumPad, mas você pode alterá-lo facilmente Super + Arrow como preferir.

escravo
fonte
A única coisa que me falta é combinar ações. Ou seja, mover a janela para a direita e para a parte inferior resulta em uma janela no canto inferior direito da tela (semelhante ao comportamento da janela).
Kleinfreund # 6/16
@kleinfreund Se você clicar no Gridbotão ao lado da caixa de seleção, há muitas configurações que você pode alterar; a Corners / Edgesguia permite configurar a ancoragem de canto.
swref 21/08/19
Isso não funciona em Pop OS 18.10, os atalhos de teclas, eles não fazem nada
Zach Bloomquist
4

aqui para obter instruções completas, de forma legível para humanos, no Ubuntu de Mike (obrigado Mike) e aqui está o post original do fórum do Ubuntu (obrigado gotsanity). Eu verifiquei isso no meu sistema para que funcione para você. Também adicionei e editei um pouco para tentar facilitar a compreensão.

As únicas alterações que eu faria nas instruções dele são que você primeiro verifique se possui o compiz instalado (a maneira mais fácil é usar o gerenciador de software e colocar "compiz" na janela de pesquisa.

Se você fizer isso, digite o seguinte em um terminal: -

sudo apt-get install compizconfig-settings-manager wmctrl

Caso contrário, o gerenciador de configurações do compiz não estará presente no seu sistema.

Abra um terminal e digite:

xinput list

Ele exibirá uma lista. Encontre o seu número de identificação para o mouse. Você precisará desse número nas próximas etapas. O meu era 10. O seu provavelmente será diferente.
Esses próximos comandos criam uma nova pasta oculta na sua pasta pessoal para armazenar os scripts necessários e movê-lo para ela.

mkdir .scripts

cd .scripts

Então digite

gedit compizsnap-left.sh    

Um editor de texto será exibido. Cole isso e altere a identificação do mouse de 11 para o número da saída do comando "xinput list". Quando você fizer isso, salve o arquivo.

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2-10))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-10

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

Em seguida, faça o mesmo para os outros dois scripts. (Não esquecendo de alterar o ID do mouse)

compizsnap-right.sh

Código:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -ge $TEMPWIDTH ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

E

compizsnap-max.sh

Código:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done
    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[1\]=." | sed s/"valuator\[1\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

(Você se lembrou de alterar o ID do mouse)

Agora precisamos dizer ao compiz como se comportar quando o mouse se move para a direita, superior e esquerda da tela.

Execute Sistema> Preferências> Gerenciador de configurações do CompizConfig. Vá para a seção de comando. Defina o seguinte:
No campo Comando 0:

sh ~/.scripts/compizsnap-left.sh

No campo Comando 1:

sh ~/.scripts/compizsnap-right.sh

No campo Comando 2:

sh ~/.scripts/compizsnap-max.sh

Por fim, vá para a guia Ligações de borda e defina o comando 0 para a esquerda, defina o comando 1 para a direita e defina o comando 2 para o topo.

NB Compiz pode reclamar que já existem funções definidas para as ligações de arestas que você deseja usar - substitua-as pelas suas.

Tog
fonte
isso funciona muito bem, alguma dica de como fazê-lo funcionar com dois monitores na configuração do TwinView?
Nathan Schwermann
2

Uma das diferenças entre a maioria dos gerenciadores de janelas Unix e o Windows é que a maioria dos gerenciadores de janelas Unix oferece resistência ao movimento das janelas nas bordas da tela. Portanto, você não precisa de nenhum comando especial para mover as janelas para a borda esquerda ou direita da tela; basta arrastar um em direção a uma borda e ele irá parar quando chegar lá. Eu não conheço nenhum atalho de teclado do Gnome (o gerenciador de janelas padrão do Ubuntu por enquanto) que move janelas.

garyjohn
fonte