Pull to refresh

Применение мультитач в Linux

Мне всегда нравились touch-жесты в MacOS. Особенно как можно пятью пальцами, скользящими к центру, запустить Launchpad. Выглядит красиво, не правда ли? Хочется так же на линукс? Прошу под кат.

Сегодня я расскажу вам о программе touchegg. Её пишет всего один человек по имени José Expóstio. Собрать её можно из исходников или, если Вы используете ArchLinux, скачать из пользовательского репозитория AUR(touchegg или touchegg-svn).

Всё, что делает это приложение, это запуск команд при распознавании ваших пальцев(пять пальцев она распознаёт точно, больше не проверял).
Но изначально счётом жестов занимается synclient, поэтому все пальцы считать touchegg не получится. Так что же нужно делать?
Правильно, запретить synclient обрабатывать наши пальцы:
$ synclient TapButton2=0
$ synclient TapButton3=0
$ synclient ClickFinger2=0
$ synclient ClickFinger3=0
$ synclient HorizTwoFingerScroll=0
$ synclient VertTwoFingerScroll=0


Теперь touchegg готов работать на полную. Конфиг файл лежит соответственно в ~/.config/touchegg/touchegg.conf. В конфиг файле Вам нужно указать жест и действие, которое будет выполняться при распознавании определённого жеста. Все жесты. Все действия.

Таким образом, мой конфиг имеет вид:
<touchégg>
    
    <settings>
        <property name="composed_gestures_time">0</property>
    </settings>
    
 
    <application name="All">
        
        <gesture type="TAP" fingers="2" direction="">
            <action type="MOUSE_CLICK">BUTTON=3</action>
        </gesture>
    
        <gesture type="TAP" fingers="3" direction="">
            <action type="MOUSE_CLICK">BUTTON=2</action>
        </gesture> 
 
        <gesture type="TAP" fingers="5" direction="">
            <action type="CLOSE_WINDOW"></action>
        </gesture>
 
        <gesture type="DRAG" fingers="2" direction="ALL">
            <action type="SCROLL">SPEED=7:INVERTED=false</action>
        </gesture>
 
 
        <gesture type="DRAG" fingers="3" direction="UP">
            <action type="MAXIMIZE_RESTORE_WINDOW"></action>
        </gesture>
        
        <gesture type="DRAG" fingers="3" direction="DOWN">
            <action type="MINIMIZE_WINDOW"></action>
        </gesture>
        
 
        <gesture type="DRAG" fingers="3" direction="LEFT">
            <action type="MOVE_WINDOW"></action>
        </gesture>
        
        <gesture type="DRAG" fingers="3" direction="RIGHT">
            <action type="MOVE_WINDOW"></action>
        </gesture>
 
        <!-- <gesture type="DRAG" fingers="4" direction="UP">
            <action type="SEND_KEYS">Super+W</action>
        </gesture> -->
        
        <gesture type="DRAG" fingers="4" direction="DOWN">
            <action type="SHOW_DESKTOP"></action>
        </gesture>
 
 
        <gesture type="PINCH" fingers="3" direction="ALL">
            <action type="RESIZE_WINDOW"></action>
        </gesture>
        
        <gesture type="PINCH" fingers="5" direction="ALL">
            <action type="SEND_KEYS">Alt+F1</action>
        </gesture>
 
        
        <gesture type="PINCH" fingers="2" direction="IN">
            <action type="SEND_KEYS">Control+KP_Subtract</action>
        </gesture>
 
        <gesture type="PINCH" fingers="2" direction="OUT">
            <action type="SEND_KEYS">Control+KP_Equal</action>
        </gesture>
 
    </application>
 
 
    <application name="Okular, Gwenview">
 
        <gesture type="PINCH" fingers="2" direction="IN">
            <action type="SEND_KEYS">Control+KP_Add</action>
        </gesture>
 
        <gesture type="PINCH" fingers="2" direction="OUT">
            <action type="SEND_KEYS">Control+KP_Subtract</action>
        </gesture>
 
        <gesture type="ROTATE" fingers="2" direction="LEFT">
            <action type="SEND_KEYS">Control+L</action>
        </gesture>
 
        <gesture type="ROTATE" fingers="2" direction="RIGHT">
            <action type="SEND_KEYS">Control+R</action>
        </gesture>
 
    </application>
 
 
    <application name="google-chrome-stable, Chromium-browser, Dolphin">
 
        <gesture type="DRAG" fingers="2" direction="LEFT">
            <action type="SEND_KEYS">Alt+Left</action>
        </gesture>
 
        <gesture type="DRAG" fingers="2" direction="RIGHT">
            <action type="SEND_KEYS">Alt+Right</action>
        </gesture>
        
    </application>
 
 
</touchégg>


Единственное, что мне пришлось изменить в начальном конфиг файле это увеличение и уменьшение двумя пальцами(т.к. называемый “pinch zoom”). Но, к сожалению, и когда я приближал пальцы, и отдалял, у меня работало только увеличение. Как оказалось, это был баг, который был исправлен в svn версии touchegg. Поэтому у меня стоит версия из репозитория svn.

Теперь осталась тривиальная задача — создать скрипт, который будет запускать touchegg при вхождении в систему:
#!/bin/bash

synclient TapButton2=0
synclient TapButton3=0
synclient ClickFinger2=0
synclient ClickFinger3=0
synclient HorizTwoFingerScroll=0
synclient VertTwoFingerScroll=0

/usr/bin/touchegg


Дать ему право на запуск и добавить в автостарт.

Ну вот и всё! Всё прекрасно работает:
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.