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?


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.