Jak korzystać z przyciągania okien w Ubuntu? [duplikować]

14

Możliwa duplikat:
Jak emulować winkey + strzałkę zmaksymalizować klawisze skrótów systemu Windows 7?

Próbuję Ubuntu i chcę, aby moje okna były przyciągane w lewo i w prawo, tak jak Windows 7, kiedy używam klawiszy skrótu klawisz Windows + strzałka. W jaki sposób mogę to zrobić?

Doug
źródło
Ubuntu używa Compiz do zapewnienia efektów okna. Szukałem, ale nie widzę żadnej oficjalnej wtyczki dla Compiz, która da ci efekt Win 7, szkoda, ponieważ jest to fajna funkcja okna. Będę szukać i wysyłać jako odpowiedź, jeśli coś znajdę.

Odpowiedzi:

18

Można to łatwo włączyć w Menedżerze ustawień CompizConfig. (Zainstaluj, jeśli jeszcze tego nie zrobiłeś).

Następnie w obszarze Zarządzanie oknami włącz opcję Siatka. Zachowałem domyślne wiązania CTRL + ALT + NumPad, ale możesz łatwo zmienić Super + Arrow, jak wolisz.

bitslave
źródło
Jedyne, czego mi brakuje, to łączenie działań. Tj. Przesuwanie okna w prawo i na dół powoduje, że okno znajduje się w prawej dolnej części ekranu (podobnie jak zachowanie okien).
kleinfreund
@kleinfreund, jeśli klikniesz Gridprzycisk obok pola wyboru, możesz zmienić wiele ustawień; Corners / Edgeszakładka umożliwia skonfigurowanie dokowanie rożny.
swref
To nie działa na Pop OS 18.10, kluczowe skróty, nic nie robią
Zach Bloomquist
4

Przejdź tutaj, aby uzyskać pełne instrukcje w czytelnej dla człowieka formie z Ubuntu Mike'a (dziękuję Mike), a oto oryginalny post na forum Ubuntu (dzięki gotsanity). Sprawdziłem to w moim systemie, więc powinno działać dla ciebie. Dodałem też i zredagowałem trochę, aby ułatwić zrozumienie.

Jedyne zmiany, które wprowadziłbym w jego wskazówkach, to to, że najpierw sprawdzasz, czy masz zainstalowany program Compiz (najłatwiej jest skorzystać z menedżera oprogramowania i wstawić słowo „compiz” w oknie wyszukiwania).

Jeśli to zrobisz, wpisz następujące polecenie w terminalu:

sudo apt-get install compizconfig-settings-manager wmctrl

W przeciwnym razie menedżer ustawień compiz nie będzie obecny w twoim systemie.

Otwórz terminal i wpisz:

xinput list

Wyświetli się lista. Znajdź swój numer identyfikacyjny myszy. Będziesz potrzebował tego numeru w kolejnych krokach. Mój był 10. Twój najprawdopodobniej będzie inny.
Poniższe polecenia tworzą nowy ukryty folder w folderze domowym, w którym przechowywane są potrzebne skrypty i przenoszone do niego.

mkdir .scripts

cd .scripts

Następnie wpisz

gedit compizsnap-left.sh    

Pojawi się edytor tekstu. Wklej to, a następnie zmień identyfikator myszy z 11 na liczbę z danych wyjściowych polecenia „xinput list”. Gdy to zrobisz, zapisz plik.

#!/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    

Następnie zrób to samo dla pozostałych dwóch skryptów. (Nie zapominając o zmianie ID myszy)

compizsnap-right.sh

Kod:

#!/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    

I

compizsnap-max.sh

Kod:

#!/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    

(Czy pamiętasz, aby zmienić identyfikator myszy)

Teraz musimy powiedzieć compizowi, jak się zachowywać, gdy mysz przesunie się w prawą, górną i lewą stronę ekranu.

Uruchom System> Preferencje> CompizConfig Settings Manager. Przejdź do sekcji poleceń. Ustaw następujące opcje:
W polu Polecenie 0:

sh ~/.scripts/compizsnap-left.sh

W polu Command 1:

sh ~/.scripts/compizsnap-right.sh

W polu Command 2:

sh ~/.scripts/compizsnap-max.sh

Na koniec przejdź do zakładki powiązań krawędzi i ustaw polecenie 0 w lewo, ustaw polecenie 1 w prawo i ustaw polecenie 2 na górę.

NB Compiz może narzekać, że są już ustawione funkcje dla wiązań krawędzi, których chcesz użyć - zamień je na własne.

Elegantować się
źródło
to działa świetnie, jakieś wskazówki, jak go uruchomić z dwoma monitorami w konfiguracji TwinView?
Nathan Schwermann
2

Jedną z różnic między większością menedżerów okien Unix i Windows jest to, że większość menedżerów okien Unix oferuje odporność na ruch okien na krawędziach ekranu. Dlatego nie potrzebujesz żadnych specjalnych poleceń, aby przenieść okna do lewej lub prawej krawędzi ekranu; po prostu przeciągnij jeden w kierunku krawędzi, a zatrzyma się, gdy się tam dostanie. Nie znam żadnych skrótów klawiaturowych Gnome (na razie standardowy menedżer okien Ubuntu), które przesuwają okna.

garyjohn
źródło