Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: [HOWTO] CompizSnap (Замена Aero Snap из Windows 7)  (Прочитано 2850 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PbI4

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
[HOWTO] CompizSnap (Замена Aero Snap из Windows 7)
« : 26 Октябрь 2010, 21:34:33 »
1. Устанавливаем пакеты Xautomation, плагин к Compiz'у Grid и менеджер настройки CompizConfig следующей командой в терминале:

sudo apt-get install xautomation compiz-fusion-plugins-extra compizconfig-settings-manager
2. Создаём в домашней директории папку с именем ".scripts" и в ней текстовый файл "compizsnap.sh".
Открываем в текстовом редакторе и вставляем следующее содержимое в только что созданный "compizsnap.sh":

#!/bin/bash
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.

MOUSE=`xinput -list | grep -i 'mouse' | grep id= | sed 's:.*id=\([0-9]*\).*:\1:' `
TP=`xinput -list | grep -i 'touchpad' | grep id= | sed 's:.*id=\([0-9]*\).*:\1:' `

left() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_4' 'keyup Control_L' 'keyup Alt_L'
}  

right() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_6' 'keyup Control_L' 'keyup Alt_L'
}

top() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_8' 'keyup Control_L' 'keyup Alt_L'
}

bottom() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_2' 'keyup Control_L' 'keyup Alt_L'
}

topleft() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_7' 'keyup Control_L' 'keyup Alt_L'
}

topright() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_9' 'keyup Control_L' 'keyup Alt_L'
}

bottomleft() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_1' 'keyup Control_L' 'keyup Alt_L'
}

bottomright() {
xte 'keydown Control_L' 'keydown Alt_L' 'key KP_3' 'keyup Control_L' 'keyup Alt_L'
}

# ----- 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 'mouse button pressed'
done
    $1
else if /usr/bin/X11/xinput --query-state $TP | grep down
then
   while (/usr/bin/X11/xinput --query-state $TP | grep down)
do
echo 'touchpad button pressed'
done
    $1
else
echo "exiting because button is not pressed"
    exit 1
fi
fi
Замечание: При притягивании окна к верхнему краю, "раскрытие на полный экран" заменено на "раскрытие на верхнюю половину экрана", чтобы не дублировать двойной щелчок на заголовке окна.

3. Сохраняем и делаем получившийся скрипт исполняемым (Свойства - Права - Выполнение - ставим галочку).

4. Открываем менеджер настройки CompizConfig (Система - Параметры), переходим в модуль Команды категории Общие и приводим его к такому виду:



5. Назначаем закрепления граней таким образом:



6. Убедитесь, что напротив модулей Команды в категории Общие и Grid в категории Управление окнами стоят галочки.

Переведено и отредактировано с http://ubuntuforums.org/
« Последнее редактирование: 26 Октябрь 2010, 21:37:29 от PbI4 »

Оффлайн maskin

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
    • lastfm
Re: [HOWTO] CompizSnap (Замена Aero Snap из Windows 7)
« Ответ #1 : 07 Январь 2011, 17:23:07 »
Вышеописанный метод имеет недостатки.
К примеру, в windows 7, развернув окно таким образом, при перетаскивании его восстанавливается исходный размер окна.
Тут этого не происходит. Плюс, бывает немного нечетко вытягивается окно вдоль левого или правого края.
Чтоб достичь идентичного результата нужно проделать следующее:
Установить утилиту wmctrl. Для этого выполните в терминале:
sudo apt-get install wmctrlВ уже созданом на предыдущем шаге файле compizsnap.sh нужно заменить соответствующие функции на:
left() {
   WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x' `&& HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
}
top {
   wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
}
right {
   WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x' `&& HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
}

Все. Готово. Наслаждайтесь :)

P.S. Эти команды взяты отсюда: http://www.omgubuntu.co.uk/2009/11/get-aero-snap-in-ubuntu/
Метод, описанный по ссылке тоже неидеален, но вместе с предыдущим постом этого фака - то, что нужно.
Также замечу, что отсутствует необходимость настраивать время реакции по краям, как это описано по ссылке, т.к. тут развертывание окна срабатывает только при отпускании кнопки мыши на верхнем, левом или правом краях, а не при простом наведении.
« Последнее редактирование: 07 Январь 2011, 17:25:16 от maskin »
Горшочек, не вари(с)

Оффлайн SergeyCA4ok

  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: [HOWTO] CompizSnap (Замена Aero Snap из Windows 7)
« Ответ #2 : 06 Сентябрь 2011, 00:16:00 »
все хорошо получилось, спасибо :D

Вот только у меня слева панель 22 пикселя.
После замены в скрипте кусков "$WIDTH/2" на "($WIDTH-22)/2" окна стали нужной ширины, но right окно на эти же 22 пикселя отодвигается от правого края экрана. в коде не разбираюсь, потому решил сделать неправильно, но приемлимо для пользования:
для right оставил изначальное "$WIDTH/2"
для left "$WIDTH/2-30" (да, 22 было мало и поднял до 30, ибо рамка emerald не учитывается при расчете ширины окна и накладывается "поверх").
Был бы рад, если б кто-то пояснил, как сделать правильно.

Еще одно, пусть и не важное: при left/right к верхней границе окно "приклеивается", а к левой/правой нет.

ЗЫ: дабы разбираться в таких вещах нужно Си учить?
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 08 Сентябрь 2011, 23:59:55 от SergeyCA4ok »

Оффлайн ii343hbka

  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
Re: [HOWTO] CompizSnap (Замена Aero Snap из Windows 7)
« Ответ #3 : 06 Сентябрь 2011, 00:34:41 »
ЗЫ: дабы разбираться в таких вещах нужно Си учить?
нет.
это обычный bash
ж)
ммм... Убунточка

 

Страница сгенерирована за 0.056 секунд. Запросов: 24.