Перейдите сюда для получения подробных инструкций в удобочитаемой для человека форме от Ubuntu Майка (спасибо, Майк), и вот оригинальное сообщение на форуме Ubuntu (спасибо gotsanity). Я проверил это в своей системе, чтобы она работала для вас. Я также добавил и отредактировал немного, чтобы попытаться сделать его немного легче для понимания.
Единственные изменения, которые я хотел бы внести в его указания, - это сначала проверить, установлен ли у вас compiz (самый простой способ - использовать диспетчер программного обеспечения и поместить «compiz» в окне поиска).
Если вы это сделаете, то наберите в терминале следующее: -
sudo apt-get install compizconfig-settings-manager wmctrl
В противном случае менеджер настроек compiz не будет присутствовать в вашей системе.
Откройте терминал и введите:
xinput list
Появится список. Найдите свой идентификационный номер для вашей мыши. Этот номер понадобится вам на следующих шагах. Моего было 10. Твое, скорее всего, будет другим.
Эти следующие команды создают новую скрытую папку в вашей домашней папке для хранения необходимых сценариев и перемещают вас в нее.
mkdir .scripts
cd .scripts
Затем введите
gedit compizsnap-left.sh
Откроется текстовый редактор. Вставьте его, а затем измените свой идентификатор мыши с 11 на номер из вывода команды «xinput list». Когда вы это сделаете, сохраните файл.
#!/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
Затем сделайте то же самое для двух других сценариев. (Не забудьте поменять идентификатор мыши)
compizsnap-right.sh
Код:
#!/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
И
compizsnap-max.sh
Код:
#!/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
(Вы помните, чтобы изменить идентификатор мыши)
Теперь нам нужно рассказать compiz, как себя вести, когда мышь перемещается вправо, вверх и влево от экрана.
Запустите «Система»> «Установки»> «Менеджер настроек CompizConfig». Перейти в раздел команд. Установите следующее:
в поле Command 0:
sh ~/.scripts/compizsnap-left.sh
В поле Command 1:
sh ~/.scripts/compizsnap-right.sh
В поле Command 2:
sh ~/.scripts/compizsnap-max.sh
Наконец, перейдите на вкладку «Привязки к краям» и установите команду 0 влево, установите команду 1 вправо и установите команду 2 в верхнее положение.
NB Compiz может жаловаться на то, что уже есть функции, установленные для привязок ребер, которые вы хотите использовать - замените их своими.