Как использовать привязку окна для Ubuntu? [Дубликат]

14

Возможное дублирование:
Как эмулировать сочетания клавиш Winkey + стрелка в Windows 7?

Я пробую Ubuntu и хочу, чтобы мои окна привязывались влево и вправо, как в Windows 7, когда я использую горячие клавиши Window Key + Arrow. Как я могу это сделать?

Doug
источник
Ubuntu использует Compiz для создания оконных эффектов. Я посмотрел, но не вижу ни одного официального плагина для Compiz, который даст вам эффект Win 7, что очень жаль, так как это хорошая функция окна. Я продолжу смотреть и отправлю как ответ, если найду что-то.

Ответы:

18

Это легко включить в диспетчере настроек CompizConfig. (Установите его, если вы еще этого не сделали).

Затем в разделе «Управление окнами» включите Grid. Я сохранил привязки по умолчанию CTRL + ALT + NumPad, но вы можете легко изменить его Super + Arrow, как вам нравится.

bitslave
источник
Единственное, чего мне не хватает, - это сочетать действия. Т.е. перемещение окна вправо и вниз приводит к тому, что окно находится в нижней правой четверти экрана (аналогично поведению окон).
kleinfreund
@kleinfreund, если вы Gridнажмете кнопку рядом с флажком, есть множество настроек, которые вы можете изменить; Corners / Edgesвкладка позволяет настроить угол стыковки.
swref
Это не работает на Pop OS 18.10, сочетания клавиш, они ничего не делают
Зак Bloomquist
4

Перейдите сюда для получения подробных инструкций в удобочитаемой для человека форме от 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 может жаловаться на то, что уже есть функции, установленные для привязок ребер, которые вы хотите использовать - замените их своими.

одевать
источник
это прекрасно работает, какие-либо советы о том, как заставить его работать с двумя мониторами в конфигурации TwinView?
Натан Шверманн
2

Одно из различий между большинством оконных менеджеров Unix и Windows заключается в том, что большинство оконных менеджеров Unix обеспечивают сопротивление движению окон по краям экрана. Поэтому вам не нужны никакие специальные команды для перемещения окон на левый или правый край экрана; просто перетащите один к краю, и он остановится, когда попадет туда. Я не знаю ни одного Gnome (стандартного оконного менеджера Ubuntu на данный момент), сочетания клавиш для перемещения окон.

garyjohn
источник