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.