Linux multi-touch gesture recognizer

Overview

Follow Touchégg on... Twitter

Touchégg

Touchégg is an app that runs in the background and transform the gestures you make on your touchpad or touchscreen into visible actions in your desktop.

For example, you can swipe up with 3 fingers to maximize a window or swipe left with 4 finger to switch to the next desktop.

Many more actions and gestures are available and everything is easily configurable.

Demo

🎥 Ubuntu demo
🎥 elementary OS demo
🎥 Touchscreen demo

Table of contents

Installation

On the releases page you will find a package for your distribution.

Otherwise you can compile the source code yourself by following the instructions available in the HACKING.md file.

Ubuntu, Debian and derivatives

On Ubuntu, it is recommended to use the official PPA to install Touchégg and receive updates:

$ sudo add-apt-repository ppa:touchegg/stable
$ sudo apt update
$ sudo apt install touchegg

If PPAs are not available on your operating system, download the .deb package and install it. Double click on the package may work, otherwise install it from the terminal:

$ cd ~/Downloads # Or to the path where the deb package is placed at
$ sudo apt install ./touchegg_*.deb # Install the package

Run Touchégg manually by running the command touchegg or reboot to get started.

Included by default on elementary OS 6 and Zorin OS 16.

Fedora, CentOS, RHEL and derivatives

On Fedora, openSUSE and CentOS (EPEL) it is recommended to use the official COPR to install Touchégg and receive updates.

$ sudo dnf copr enable jose_exposito/touchegg
$ sudo dnf install touchegg

On other RPM based operating systems, download the .rpm package and install it. Double click on the package may work, otherwise install it from the terminal:

$ cd ~/Downloads # Or to the path where the rpm package is placed at
$ sudo dnf install touchegg-*.rpm # Install the package

Run Touchégg manually by running the command touchegg or reboot to get started.

Arch Linux, Manjaro and derivatives

Install the touchegg package from AUR.

Notice that on Arch services are not enabled or started by default, so you'll have to do it manually:

$ sudo systemctl enable touchegg.service
$ sudo systemctl start touchegg

Once the service is enabled, run Touchégg manually by running the command touchegg or reboot to get started.

A version for Arch based distributions without systemd support, like Artix, is also available on AUR

Void Linux

Touchégg is available from the main repository. To use it, you have to enable its service after installing.

$ sudo xbps-install touchegg
$ sudo ln -s /etc/sv/touchegg /var/service

Alpine Linux

Uncomment the url for the testing repository in /etc/apk/repositories, then install:

$ sudo apk update
$ sudo apk add touchegg

The Touchégg package includes an Openrc init script for starting the Touchégg daemon at boot. To enable:

$ sudo rc-update add touchegg

The init script can also be used to manually start and stop the Touchégg daemon as required:

$ sudo rc-service touchegg start
$ sudo rc-service touchegg stop

GNOME

If you are using the GNOME Desktop Environment it is recommended to also install this extension:

https://github.com/JoseExposito/gnome-shell-extension-x11gestures

Both Touchégg and the extension need to installed, so don't forget to follow the install instructions for your distro!

Configuration

After installing Touchégg you'll notice that you can start using multi-touch gestures. However, you are not forced to use the gestures and actions that come out of the box, you can configure the gestures you'd like to use and the actions they'll trigger.

Using Touché

Touché is a desktop application to easily configure your touchpad and touchscreen multi-touch gestures.

Touché on GNOME

Follow the instructions on the project page to install it.

Manual configuration

Touché is the recommended way of configuring your gestures. However, you can also manually configure Touchégg by editing an XML file.

Start by copying the default configuration from /usr/share/touchegg/touchegg.conf to ~/.config/touchegg/touchegg.conf. You can do it using your file manager or by running this command in your terminal:

$ mkdir -p ~/.config/touchegg && cp -n /usr/share/touchegg/touchegg.conf ~/.config/touchegg/touchegg.conf

Now open ~/.config/touchegg/touchegg.conf with your favorite text editor. It is a XML document with 3 main sections:

  • Global settings

  • Global gestures: <application name="All">...</application>

  • Application specific gestures: <application name="Google-chrome,Firefox"></application>

    The application name can be obtained by running this command and clicking on the target application window:

    $ xprop | grep WM_CLASS

Find more information in the sections below.

Global settings

Option Value Default Description Example
animation_delay Number 150 Delay, in milliseconds, since the gesture starts before the animation is displayed Use the MAXIMIZE_RESTORE_WINDOW action. You will notice that no animation is displayed if you complete the action quick enough. This property configures that time
action_execute_threshold Number 20 Percentage of the gesture to be completed to apply the action. Set to 0 to execute actions unconditionally Use the MAXIMIZE_RESTORE_WINDOW action. You will notice that, even if the animation is displayed, the action is not executed if you did not move your fingers far enough. This property configures the percentage of the gesture that must be reached to execute the action
color Hex color 3E9FED Color of the animation #909090
borderColor Hex color 3E9FED Color of the animation FFFFFF

Available gestures

Swipe

From libinput documentation: Swipe gestures are executed when three or more fingers are moved synchronously in the same direction.

Note that three is the minimum number of fingers that Touchégg allows for swipe gestures on touchpads and two on touchscreens.

Example:

<gesture type="SWIPE" fingers="3" direction="UP">
  <action type="MAXIMIZE_RESTORE_WINDOW">
    <animate>true</animate>
  </action>
</gesture>

Pinch

From libinput documentation: Pinch gestures are executed when two or more fingers are located on the touchpad and are either changing the relative distance to each other (pinching) or are changing the relative angle (rotate).

Example:

<gesture type="PINCH" fingers="4" direction="IN">
  <action type="CLOSE_WINDOW">
    <animate>true</animate>
    <color>F84A53</color>
    <borderColor>F84A53</borderColor>
  </action>
</gesture>

Tap

Tap gestures are executed when two or more fingers "click" on the touchscreen.

Only available on touchscreens

Example:

<gesture type="TAP" fingers="2">
  <action type="MOUSE_CLICK">
    <button>3</button>
    <on>begin</on>
  </action>
</gesture>

Available actions

Maximize or restore a window (MAXIMIZE_RESTORE_WINDOW)

Maximize the window under the pointer. If it is already maximized, restore it.

Options:

Option Value Description
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="3" direction="UP">
  <action type="MAXIMIZE_RESTORE_WINDOW">
    <animate>true</animate>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

Animation

Minimize a window (MINIMIZE_WINDOW)

Minimize the window under the pointer.

Options:

Option Value Description
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="3" direction="DOWN">
  <action type="MINIMIZE_WINDOW">
    <animate>true</animate>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

Animation

Tile/snap a window (TILE_WINDOW)

Resize and move the window under the pointer to use half of the screen.

Options:

Option Value Description
direction left/right Use the left or right half of the screen
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="3" direction="LEFT">
  <action type="TILE_WINDOW">
    <direction>left</direction>
    <animate>true</animate>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

<gesture type="SWIPE" fingers="3" direction="RIGHT">
  <action type="TILE_WINDOW">
    <direction>right</direction>
    <animate>true</animate>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

Animation

Fullscreen a window (FULLSCREEN_WINDOW)

Toggles fullscreen mode for the window under the pointer.

Options:

Option Value Description
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="3" direction="UP">
  <action type="FULLSCREEN_WINDOW">
    <animate>true</animate>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

Close a window (CLOSE_WINDOW)

Close the window under the pointer.

Options:

Option Value Description
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="PINCH" fingers="4" direction="IN">
  <action type="CLOSE_WINDOW">
    <animate>true</animate>
    <color>F84A53</color>
    <borderColor>F84A53</borderColor>
  </action>
</gesture>

Animation

Switch desktops/workspaces (CHANGE_DESKTOP)

Change to another desktop/workspace.

Options:

Option Value Description
direction previous/next/up/down/left/right/auto The desktop/workspace to switch to. It is recommended to use previous/next for better compatibility. However, some desktop environments, like KDE, allow to configure a grid of desktops and up/down/left/right come in handy. With SWIPE gestures, auto will use your natural scroll preferences to figure out the direction.
cyclic true/false Set it to true when using previous/next directions to navigate from last desktop to first desktop or from first to last.
animate true/false Set it to true to display the animation. false otherwise.
animationPosition up/down/left/right/auto Edge of the screen where the animation will be displayed. With SWIPE gestures, auto will use your natural scroll preferences to figure out the animation position.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="4" direction="LEFT">
  <action type="CHANGE_DESKTOP">
    <direction>next</direction>
    <animate>true</animate>
    <animationPosition>right</animationPosition>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

<gesture type="SWIPE" fingers="4" direction="RIGHT">
  <action type="CHANGE_DESKTOP">
    <direction>previous</direction>
    <animate>true</animate>
    <animationPosition>left</animationPosition>
    <color>3E9FED</color>
    <borderColor>3E9FED</borderColor>
  </action>
</gesture>

Animation

Show desktop (SHOW_DESKTOP)

Show the desktop. If the desktop is already being shown, restore all the windows.

Options:

Option Value Description
animate true/false Set it to true to display the animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF

Example:

<gesture type="SWIPE" fingers="4" direction="DOWN">
  <action type="SHOW_DESKTOP">
    <animate>true</animate>
    <color>909090</color>
    <borderColor>FFFFFF</borderColor>
  </action>
</gesture>

Animation

Keyboard shortcut (SEND_KEYS)

Emulate a keyboard shortcut.

Options:

Option Value Description
repeat true/false Whether to execute the keyboard shortcut multiple times (default: false). This is useful to perform actions like pinch to zoom.
modifiers Keysym Typical values are: Shift_L, Control_L, Alt_L, Alt_R, Meta_L, Super_L, Hyper_L. You can use multiple keysyms: Control_L+Alt_L.See "Keysyms" below for more information.
keys Keysym Shortcut keys. You can use multiple keysyms: A+B+C. See "Keysyms" below for more information.
on begin/end Only used when repeat is false. Whether to execute the shortcut at the beginning or at the end of the gesture.
decreaseKeys Keysym Only used when repeat is true. Keys to press when you change the gesture direction to the opposite. You can use multiple keysyms: A+B+C. This is useful to perform actions like pinch to zoom, check Example 2 below.
animate true/false Set it to true to display the animation set in animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF
animation Animation See custom animations

Keysyms:

Keysyms can be found in two places:

  • Regular keys are in /usr/include/X11/keysymdef.h, you can open it with your favorite text editor.

    It is important to remove the XK_ prefix. For example, the super keysym is defined as XK_Super_L but it must be used as Super_L in the configuration.

  • Special keys (e.g. media keys, browser back, sleep, etc.) are in /usr/include/X11/XF86keysym.h.

    Again, remove XK_, but leave the rest (including the bit before the XK_). For example, XF86XK_Back becomes XF86Back.

Note that only keysyms that are mapped onto a keycode can be used by Touchégg. You can use xmodmap -pk to show the current mapping. To add a keysym that is not mapped by default (for example XF86ZoomIn), you can tell xmodmap to map it to any free keycode:

xmodmap -e 'keycode any=XF86ZoomIn'

Example 1: Pinch to zoom example

<gesture type="PINCH" fingers="2" direction="IN">
  <action type="SEND_KEYS">
    <repeat>true</repeat>
    <modifiers>Control_L</modifiers>
    <keys>KP_Subtract</keys>
    <decreaseKeys>KP_Add</decreaseKeys>
  </action>
</gesture>

<gesture type="PINCH" fingers="2" direction="OUT">
  <action type="SEND_KEYS">
    <repeat>true</repeat>
    <modifiers>Control_L</modifiers>
    <keys>KP_Add</keys>
    <decreaseKeys>KP_Subtract</decreaseKeys>
  </action>
</gesture>

Example 2: Switch between windows (Alt+Tab)

<gesture type="SWIPE" fingers="3" direction="LEFT">
  <action type="SEND_KEYS">
    <repeat>true</repeat>
    <modifiers>Alt_L</modifiers>
    <keys>Shift_L+Tab</keys>
    <decreaseKeys>Tab</decreaseKeys>
  </action>
</gesture>

<gesture type="SWIPE" fingers="3" direction="RIGHT">
  <action type="SEND_KEYS">
    <repeat>true</repeat>
    <modifiers>Alt_L</modifiers>
    <keys>Tab</keys>
    <decreaseKeys>Shift_L+Tab</decreaseKeys>
  </action>
</gesture>

Example 3: Open Gnome application launcher

<gesture type="PINCH" fingers="4" direction="IN">
  <action type="SEND_KEYS">
    <repeat>false</repeat>
    <modifiers>Super_L</modifiers>
    <keys>A</keys>
    <on>begin</on>
  </action>
</gesture>

Animation

Execute a command (RUN_COMMAND)

Run any command.

Options:

Option Value Description
repeat true/false true if the command should be executed multiple times. false otherwise.
command Command The command to execute.
on begin/end Only used when repeat is false. If the command should be executed on the beginning or on the end of the gesture.
decreaseCommand Command Only used when repeat is true. Command to run when you change the gesture direction to the opposite. Check Example 2 below.
animate true/false Set it to true to display the animation set in animation. false otherwise.
color Hex color Color of the animation. For example: 909090
borderColor Hex color Border color of the animation. For example: #FFFFFF
animation Animation See custom animations

Example 1:

<gesture type="SWIPE" fingers="4" direction="DOWN">
  <action type="RUN_COMMAND">
    <repeat>false</repeat>
    <command>notify-send 'Hello' 'World'</command>
    <on>begin</on>
  </action>
</gesture>

Example 2:

<gesture type="SWIPE" fingers="4" direction="DOWN">
  <action type="RUN_COMMAND">
    <repeat>true</repeat>
    <command>notify-send 'Swipe direction' 'DOWN'</command>
    <decreaseCommand>notify-send 'Swipe direction' 'UP'</decreaseCommand>
  </action>
</gesture>

Mouse click (MOUSE_CLICK)

Emulate a mouse click.

Options:

Option Value Description
button 1/2/3 Left click (1), middle click (2) or right click (3)
on begin/end If the command should be executed on the beginning or on the end of the gesture.

Example:

<gesture type="TAP" fingers="2">
  <action type="MOUSE_CLICK">
    <button>3</button>
    <on>begin</on>
  </action>
</gesture>

Custom animations

The keyboard shortcut action and the execute a command action allow to set a custom animation. These are the available values:

Animation Example
CHANGE_DESKTOP_UP Switch desktops/workspaces
CHANGE_DESKTOP_DOWN Switch desktops/workspaces
CHANGE_DESKTOP_LEFT Switch desktops/workspaces
CHANGE_DESKTOP_RIGHT Switch desktops/workspaces
CLOSE_WINDOW Close a window
MAXIMIZE_WINDOW Maximize or restore a window
RESTORE_WINDOW Maximize or restore a window
MINIMIZE_WINDOW Minimize a window
SHOW_DESKTOP Show desktop
EXIST_SHOW_DESKTOP Show desktop
TILE_WINDOW_LEFT Tile/snap a window
TILE_WINDOW_RIGHT Tile/snap a window

Daemon configuration

Touchégg runs in two different processes, one of them is a systemd daemon configured in /lib/systemd/system/touchegg.service. In addition to the --daemon argument, you can pass two optional arguments:

Option Value Default Description Example
start_threshold Number Calculated automatically according to your device characteristics Amount of motion to be made on the touchpad before a gesture is started Put 3 fingers on your touchpad. You will notice that the action does not start until you move them a little bit. This property configures how much you should move your fingers before the action starts
finish_threshold Number Calculated automatically according to your device characteristics Amount of motion to be made on the touchpad to reach the 100% of an animation Use the MAXIMIZE_RESTORE_WINDOW action. You will notice that you need to move your fingers a certain ammount until the animation fills your entire screen. This property configures how much you need to move your fingers

It is recommended NOT to configure start_threshold and finish_threshold since an optimal value is calculated for you.

However, if your device size is unknown, you will need to set their values manually:

$ journalctl -u touchegg -b
[...]
It wasn't possible to get your device physical size, falling back to default start_threshold and finish_threshold. You can tune this values in your service file:
https://github.com/JoseExposito/touchegg#daemon-configuration

The recommended values are:

  • start_threshold: The 3% of the height of your screen in mm
  • finish_threshold: The 15% of the height of your screen in mm

For example, if your screen height is 100mm, edit /lib/systemd/system/touchegg.service and set the right values:

ExecStart=/usr/bin/touchegg --daemon 3 15

Finally, restart the daemon and make sure the right values are printed:

$ sudo systemctl daemon-reload && sudo systemctl restart touchegg

$ journalctl -u touchegg -b -f
Compatible device detected:
  [...]
  Calculating threshold and animation_finish_threshold. You can tune this values in your service file
  threshold: 3
  animation_finish_threshold: 15

FAQ

Does Touchégg work on Wayland?

No, Touchégg only work on X11.

What hardware is supported?

Under the hood, Touchégg relies on libinput.

All hardware supported by libinput is supported by Touchégg.

Is there a GUI to configure Touchégg?

Yes, Touché is the official desktop application.

Copyright

Copyright 2011 - 2021 José Expósito <[email protected]>

The source code is available under GPL v3 license on GitHub

Issues
  • Touchégg in Precise

    Touchégg in Precise

     ./touchegg
    Reading config from  "/home/daisy/.config/touchegg/touchegg.conf" 
    Segmentation fault (core dumped)
    
    i compiled it myself,
    p.s. i run ubuntu(precise LTS) in macbook 8.1
    

    Original issue reported on code.google.com by [email protected] on 27 Mar 2012 at 6:16

    Type-Defect auto-migrated 
    opened by GoogleCodeExporter 63
  • Funciona fatal en HP G62

    Funciona fatal en HP G62

    Hola, he comprado hace unos días un HP G62, he instalado Touchegg y no se si 
    es el trackpad del portátil que es horrible o si es realmente la aplicación 
    que no me funciona muy bien. El scroll con dos dedos va medio bien, empieza a 
    bajar pero a mitad camino sube para luego volver a bajar, a veces no responde. 
    Los demás gestos, drag con 3-4-5 dedos, pinch o rotate no funciona nada. Me 
    gustaría ayudar pero no se como, estoy muy bien acostumbrado al trackpad del 
    Macbook,  y me gustaria tener una experiencia de usuario similar en mi nuevo  
    HP...
    
    Saludos!!!!
    

    Original issue reported on code.google.com by [email protected] on 1 Oct 2011 at 11:42

    auto-migrated Type-Configuration 
    opened by GoogleCodeExporter 44
  • Fatal IO error in Arch Linux

    Fatal IO error in Arch Linux

    After having compiled touchegg and trying to launch it, I get the following:
    
    Reading config from  "/home/davide/.touchegg/touchegg.conf" 
    touchegg: Fatal IO error: client killed
    
    

    Original issue reported on code.google.com by [email protected] on 14 Mar 2011 at 8:46

    auto-migrated Type-Other 
    opened by GoogleCodeExporter 38
  • Connection with Touchegg daemon lost on Manjaro 20.2

    Connection with Touchegg daemon lost on Manjaro 20.2

    Describe the bug

    Gestures are not detected, indeed that's what appears in terminal when running touchegg: Connection with Touchégg daemon lost. Reconnecting in 5 seconds...

    Your environment

    Touchégg v2.0.4. Manjaro 20.2 Gnome

    opened by Zatfer17 36
  • Change target device of touchegg

    Change target device of touchegg

    I'm having trouble to get touchegg to work on my Lenovo Yoga 500, which is a device with a touchscreen AND a normal touchpad. And after installing touchegg it works like a charm on the touchscreen, but thats not the device, I wanna use it on, I wanna use it on my normal touchpad. So is there any possibillity to either change the target-device of touchegg or add a second one?

    opened by Wursteintopf 32
  • No gesture detected on Ubuntu 16.04

    No gesture detected on Ubuntu 16.04

    Still not working for me on Ubuntu 16.04 using the Gnome DE. I tried to call touchegg in the .xprofile file, but that did not work for me. I tried with 3 and 4 fingers, but the event isn't caught.

    opened by DavidPeicho 29
  • Cannot make touchégg work on Ubuntu 12.04

    Cannot make touchégg work on Ubuntu 12.04

    Sorry if this has been asked before, but I am unable to make touchégg work in 
    Ubuntu 12.04. I have searched around for my issue, but all I found was that it 
    was fixed in an update. However, even after compiling from the latest SVN 
    source, I cannot get touchégg to recognize my multitouch gestures.
    
    When I start touchégg from the terminal, it gives me the following output:
    
    Try to make a multitouch gesture. If everything goes well the information about 
    the gesture must appear 
    [+] Avaliable gesture: 
         Name ->  Flick 
    [+] Avaliable gesture: 
         Name ->  Drag 
    [+] Avaliable gesture: 
         Name ->  Pinch 
    [+] Avaliable gesture: 
         Name ->  Rotate 
    [+] Avaliable gesture: 
         Name ->  Tap 
    [+] Avaliable gesture: 
         Name ->  Touch 
    
    However, everything does not seem to go well because, no matter what I do (1, 
    2, 3, or 4 fingers), it does not show me anything.
    
    I have a 2012 HP DV6T-7000 Quad Edition with, according to xinput, a SynPS/2 
    Synaptics TouchPad. I really want to make multitouch work. Thanks in advance 
    for any help anyone could provide.
    

    Original issue reported on code.google.com by [email protected] on 11 Oct 2012 at 12:17

    Type-Defect auto-migrated 
    opened by GoogleCodeExporter 26
  • Arch Linux: Intermittent crash freeing Gesture unique_ptr

    Arch Linux: Intermittent crash freeing Gesture unique_ptr

    Describe the bug

    Touchegg client crashes sometimes on gesture. Not quite sure what exactly causes it.

    Expected behaviour

    The gesture should run the action

    Actual behaviour

    Touchegg crashes

    Your environment

    • Version of Touchégg: 2.0.6 (Arch version 2.0.6-1)
    • Operating System: Arch Linux
    • Desktop Environment: KDE

    Here is the log from a crash. If anything else is needed to figure this out, let me know! log2.txt

    bug Priority-High 
    opened by iwismer 25
  • Gnome Shell problems

    Gnome Shell problems

    Using touchegg with Gnome Shell on Ubuntu 11.10, I noticed two problems.
    
    1.
    
    Under Gnome 3, the desktop background is usually completely empty (no files / 
    folders).
    However, touchegg apparently ignores any gestures executed outside a window. 
    So, using touchegg gestures for desktop switching via send_keys does not work 
    at all on an empty desktop.
    My proposal: Do only ignore gestures executed outside a window if they are 
    associated with a window-related action, but execute e.g. send_keys.
    
    2.
    
    Maybe this relates to the same problem. In the activities view of Gnome Shell, 
    no gestures are recognized.
    

    Original issue reported on code.google.com by Linus.Seelinger on 14 Sep 2011 at 4:32

    Type-Defect auto-migrated Priority-High 
    opened by GoogleCodeExporter 23
  • Touchegg can't see gesture events even though geisview can

    Touchegg can't see gesture events even though geisview can

    System is Ubuntu Mate 20.04. Touchegg version is 2021-09100709-stable-2.0.11-ubuntu20.04.1 compiled from the github repository.

    Touchegg is running as a daemon. Touchegg was previously configured to detect "pinch in" and "pinch out" using touche (see attached touchegg.conf).

    When the touchegg client is run ("touchegg" with no parameters) and gestures are performed, the client produces no output. The expected behavior when running the touchegg client is for gesture events to be noted on the console.

    Since geisview does see gesture inputs (tested with pinch), the device and driver are set up for multitouch.

    The output of "geisview > pinch.txt" is attached. It represents the output of geisview during a single pinch.

    pinch.txt touchegg.conf.txt geisview

    bug 
    opened by compilebunny 22
  • Pinch always out

    Pinch always out

    Hi ! Sorry if the issue has been raised before, I did not see anything on this 
    site (maybe in Spanish, but even being a French, my understand as some 
    limitations... ^^)
    
    First, thank you José for your job with Touchegg, it's a very nice software !
    
    I did managed to get Touchegg working pretty well (SVN-173 version on Kubuntu 
    12.04 and disabling 2 and 3 fingers in Synaptics before launching Touchegg, 
    everything is fine).
    
    However, when I try to pinch, Touchegg always pinch "out" whatever the 
    direction of my pinch. This is true for 2 and 3 fingers (did not test further).
    
    Rotate seems to work OK, but I can't use for the zoom it because it is messing 
    up with drag for 2 fingers...
    
    Is there something I'm doing wrong ? Thanks in advance for any help !
    

    Original issue reported on code.google.com by [email protected] on 16 Oct 2012 at 7:12

    Attachments:

    Type-Defect auto-migrated 
    opened by GoogleCodeExporter 22
  • CI: Compile for Debian Sid

    CI: Compile for Debian Sid

    Related to https://github.com/JoseExposito/touche/issues/63 and https://github.com/JoseExposito/touchegg/issues/542.

    Users are facing this issue due to incompatibilities with their libinput version. Compile a new package to avoid it.

    opened by JoseExposito 0
  • Stops working on logout/login, or sometimes randomly

    Stops working on logout/login, or sometimes randomly

    Describe the bug

    Occasionally I go to use a gesture and notice that it doesn't work. Then I try all of them, and nothing works. Sometimes this happens randomly, but it is guaranteed to happen after a logout/login.

    Stopping and starting the systemd service does not seem to do much of anything.

    Logs

    $ touchegg --debug
    ...
    

    When I do this, touchegg starts working normally, printing correct results to the terminal.

    • Version of Touchégg: Touchégg v2.0.12.
    ██████████████████  ████████   jacob@jacob-thinkpad 
    ██████████████████  ████████   -------------------- 
    ██████████████████  ████████   OS: Manjaro Linux x86_64 
    ██████████████████  ████████   Host: 20Y1S00C00 ThinkPad P14s Gen 1 
    ████████            ████████   Kernel: 5.15.7-1-MANJARO 
    ████████  ████████  ████████   Uptime: 7 hours, 43 mins 
    ████████  ████████  ████████   Packages: 1387 (pacman), 17 (snap) 
    ████████  ████████  ████████   Shell: zsh 5.8 
    ████████  ████████  ████████   Resolution: 1920x1080 
    ████████  ████████  ████████   DE: Cinnamon 5.0.7 
    ████████  ████████  ████████   WM: Mutter (Muffin) 
    ████████  ████████  ████████   WM Theme: Mint-Y-Dark-Aqua (Adapta-Maia) 
    ████████  ████████  ████████   Theme: Mint-Y-Dark-Aqua [GTK2/3] 
    ████████  ████████  ████████   Icons: Papirus-Dark-Maia [GTK2/3] 
                                   Terminal: gnome-terminal 
                                   CPU: AMD Ryzen 7 PRO 4750U with Radeon Graphics (16) @ 1.700GHz 
                                   GPU: AMD ATI 07:00.0 Renoir 
                                   Memory: 5767MiB / 21809MiB 
    
    opened by spikespaz 8
  • On KDE, gestures still activate when the screen is locked and causes the lock screen to go unresponsive

    On KDE, gestures still activate when the screen is locked and causes the lock screen to go unresponsive

    NOTE: I am using this configuration: https://github.com/NayamAmarshe/ToucheggKDE

    Describe the bug

    TouchEgg can still be activated by gestures and do things like showing the presently open windows or opening the desktops grid view while on the lock screen in KDE Plasma. (Three finger swipe up and three finger pinch on my configuration respectively)

    When this is done, the lock screen becomes completely unresponsive and I am unable to enter my password to log back in, with the quickest way out of it being a force shut down.

    To reproduce, enter the lock screen (press Super + L) then do a gesture which activates one of the above mentioned actions.

    Expected behaviour

    Nothing should happen.

    Actual behaviour

    The action is activated while on the lock screen and the lock screen becomes completely unresponsive indefinitely until action such as a reboot is taken.

    Logs

    NOTE: These are logs by running journalctl -u touchegg.service but there isn't much useful info to be had anyway. These logs are from boot until the point of me force shutting down (by holding the power button). I did close my laptop lid (and cause it to sleep) then reopen it at some point.

    Nov 22 16:44:55 arch systemd[1]: Started Touchégg Daemon.
    Nov 22 16:44:55 arch touchegg[346]: Touchégg v2.0.12.
    Nov 22 16:44:55 arch touchegg[346]: Starting Touchégg in daemon mode
    Nov 22 16:44:55 arch touchegg[346]: Starting daemon server...
    Nov 22 16:44:55 arch touchegg[346]: Generating D-Bus introspection data
    Nov 22 16:44:55 arch touchegg[346]: Creating D-Bus server
    Nov 22 16:44:55 arch touchegg[346]: Server started at address unix:abstract=touchegg
    Nov 22 16:44:55 arch touchegg[346]: A list of detected compatible devices will be displayed below:
    Nov 22 16:44:56 arch touchegg[346]: Compatible device detected:
    Nov 22 16:44:56 arch touchegg[346]:         Name: MSFT0001:02 06CB:7F8F Touchpad
    Nov 22 16:44:56 arch touchegg[346]:         Size: 101.583mm x 66.5833mm
    Nov 22 16:44:56 arch touchegg[346]:         Calculating start_threshold and finish_threshold. You can tune this values in your service file
    Nov 22 16:44:56 arch touchegg[346]:         start_threshold: 26.2139
    Nov 22 16:44:56 arch touchegg[346]:         finish_threshold_horizontal: 359.941
    Nov 22 16:44:56 arch touchegg[346]:         finish_threshold_vertical: 235.925
    Nov 22 16:44:56 arch touchegg[346]: terminate called after throwing an instance of 'std::runtime_error'
    Nov 22 16:44:56 arch touchegg[346]:   what():  Error initialising Touchégg: libinput open.
    Nov 22 16:44:56 arch touchegg[346]: Touchégg should be run in daemon mode by systemd in order to be part of the 'input' group and have access to your touchpad.
    Nov 22 16:44:56 arch touchegg[346]: If you prefer to run Touchégg without using systemd, please execute the following command:
    Nov 22 16:44:56 arch touchegg[346]: $ sudo usermod -a -G input $USER
    Nov 22 16:44:56 arch touchegg[346]: And reboot to solve this issue
    Nov 22 16:44:56 arch systemd[1]: touchegg.service: Main process exited, code=dumped, status=6/ABRT
    Nov 22 16:44:56 arch systemd[1]: touchegg.service: Failed with result 'core-dump'.
    Nov 22 16:45:01 arch systemd[1]: touchegg.service: Scheduled restart job, restart counter is at 1.
    Nov 22 16:45:01 arch systemd[1]: Stopped Touchégg Daemon.
    Nov 22 16:45:01 arch systemd[1]: Started Touchégg Daemon.
    Nov 22 16:45:01 arch touchegg[949]: Touchégg v2.0.12.
    Nov 22 16:45:01 arch touchegg[949]: Starting Touchégg in daemon mode
    Nov 22 16:45:01 arch touchegg[949]: Starting daemon server...
    Nov 22 16:45:01 arch touchegg[949]: Generating D-Bus introspection data
    Nov 22 16:45:01 arch touchegg[949]: Creating D-Bus server
    Nov 22 16:45:01 arch touchegg[949]: Server started at address unix:abstract=touchegg
    Nov 22 16:45:01 arch touchegg[949]: A list of detected compatible devices will be displayed below:
    Nov 22 16:45:02 arch touchegg[949]: Compatible device detected:
    Nov 22 16:45:02 arch touchegg[949]:         Name: MSFT0001:02 06CB:7F8F Touchpad
    Nov 22 16:45:02 arch touchegg[949]:         Size: 101.583mm x 66.5833mm
    Nov 22 16:45:02 arch touchegg[949]:         Calculating start_threshold and finish_threshold. You can tune this values in your service file
    Nov 22 16:45:02 arch touchegg[949]:         start_threshold: 26.2139
    Nov 22 16:45:02 arch touchegg[949]:         finish_threshold_horizontal: 359.941
    Nov 22 16:45:02 arch touchegg[949]:         finish_threshold_vertical: 235.925
    Nov 22 16:45:02 arch touchegg[949]: Compatible device detected:
    Nov 22 16:45:02 arch touchegg[949]:         Name: Wacom HID 5168 Finger
    Nov 22 16:45:02 arch touchegg[949]:         Size: 344.1mm x 193.5mm
    Nov 22 16:45:02 arch touchegg[949]:         Calculating start_threshold and finish_threshold. You can tune this values in your service file
    Nov 22 16:45:02 arch touchegg[949]:         start_threshold: 3.87
    Nov 22 16:45:02 arch touchegg[949]:         finish_threshold_horizontal: 55.056
    Nov 22 16:45:02 arch touchegg[949]:         finish_threshold_vertical: 30.96
    Nov 22 16:45:04 arch touchegg[949]: New client connection request
    Nov 22 16:45:04 arch touchegg[949]: New client connected
    

    Your environment

    • Version of Touchégg: 2.0.12
    • Operating System: Arch Linux, Kernel is 5.15.3-arch1-1
    • Desktop Environment: KDE Plasma 5.23.3
    opened by CAG2Mark 0
  • Feature request: Add Tap-and-Hold gestures.

    Feature request: Add Tap-and-Hold gestures.

    Is your feature request related to a problem? Please describe

    I have no easy way for right (or middle) click emulation with just using one finger or a stylus, like it is standard and for me quite user friendly in Windows.

    Describe the solution you'd like

    I want to have a gesture that triggers when I tap the screen with one finger and hold for a to-be-specified amount of time without moving more than a to-be-specified distance.

    This can be used to emulate a right click, for example.

    And it would be a nice addon if there would be the option for an animation of e.g. a circle around the tap point, which gets filled over time and when it is completely full the gesture triggers.

    Describe alternatives you've considered

    Two finger tap. This is less convenient, and also not so easily foreseeable/ controllable if the click will be issued at the location of finger 1 or finger 2.

    enhancement 
    opened by dreirund 2
  • Feature request: Allow to specify rotation manually (e.g. with a `--rotate` option).

    Feature request: Allow to specify rotation manually (e.g. with a `--rotate` option).

    Is your feature request related to a problem? Please describe

    I have a setup where I have two monitors, configured to show the same screen area:

    • One monitor, the laptop monitor (DSI1 in below xrandr output), is physically portrait, so it is rotated in software by 90° to be used in landscape (which is for the laptop the "natural" way),
    • the other monitor, the external monitor (HDMI1 in below xrandr output), is physically in landscape and not rotated. This one is a monitor with touchscreen.

    Both are configured at 1280x720 pixel (more precisely: The laptop monitor is at 720x1280 pixel and rotated right) and are at the same virtual position, i.e. they show ther same content.

    touchegg now automatically rotates the gestures by 90°, because it thinks that it has to do so from the rotation of DSI1. This in the end leads to wrong gestures, since in fact the touch screen is the non-rotated monitor HDMI1.

    If I set HDMI1 explicitly as primary monitor with xrandr, then touchegg takes it's rotation from there, i.e. it does not apply rotation and gestures work normally.

    However, I cannot set HDMI1 as primary because that then interferes with my window manager which then displays the window switch dialogue on <ALT>+<TAB> only on one monitor (if I have no monitor set as primary it displays on both), and might have other interferences (Reference: The other side of this issue at xfwm's side).

    Describe the solution you'd like

    Add an optional option to manually specifiy a rotation to be applied to gestures (default to the automation as it is now when no option is specified).

    Describe alternatives you've considered

    Setting xrandr --output HDMI1 --primary.

    Additional context

    Output of xrandr:

    Screen 0: minimum 8 x 8, current 1280 x 720, maximum 32767 x 32767
    DSI1 connected 1280x720+0+0 right (normal left inverted right x axis y axis) 0mm x 0mm
       720x1280      60.08*+
       640x480       59.94  
       720x405       59.51    58.99  
       360x640       60.00  
       640x360       59.84    59.32  
    DP1 disconnected (normal left inverted right x axis y axis)
    HDMI1 connected 1280x720+0+0 (normal left inverted right x axis y axis) 310mm x 170mm
       1920x1080     60.00 +  50.00    59.94  
       1600x1200     60.00  
       1680x1050     59.88  
       1280x1024     75.02    60.02  
       1440x900      74.98    59.90  
       1366x768      60.00  
       1280x800      59.91  
       1152x864      75.00  
       1280x768      59.87  
       1280x720      60.00*   50.00    59.99    59.94  
       1440x576      50.00  
       1024x768      75.03    70.07    60.00  
       1440x480      60.00    59.94  
       800x600       72.19    75.00    60.32  
       720x576       50.00  
       720x480       60.00    59.94  
       640x480       75.00    72.81    66.67    60.00    59.94  
       720x400       70.08  
    
    bug 
    opened by dreirund 8
  • Add actions to move and resize windows

    Add actions to move and resize windows

    Apparently, this functionality was present in 1.x versions (MOVE_WINDOW & RESIZE_WINDOW), and I don't see any reason why we can't have these features now.

    wishlist 
    opened by egormanga 1
Releases(2.0.14)
Owner
José Expósito
José Expósito
Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.

Gesture Recognition Toolkit (GRT) The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for re

Nicholas Gillian 780 Aug 5, 2022
In this tutorial, we will use machine learning to build a gesture recognition system that runs on a tiny microcontroller, the RP2040.

Pico-Motion-Recognition This Repository has the code used on the 2 parts tutorial TinyML - Motion Recognition Using Raspberry Pi Pico The first part i

Marcelo Rovai 16 Jun 18, 2022
UVIC ECE 499 Real-Time Gesture Recognition Project

Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your website in Markdown files. Whenever you commit t

Lyndon Bauto 3 Sep 21, 2019
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation

Build Type Linux MacOS Windows Build Status OpenPose has represented the first real-time multi-person system to jointly detect human body, hand, facia

null 24.7k Aug 13, 2022
SecMML: Secure MPC(multi-party computation) Machine Learning Framework

SecMML 介绍 SecMML是FudanMPL(Multi-Party Computation + Machine Learning)的一个分支,是用于训练机器学习模型的高效可扩展的安全多方计算(MPC)框架,基于BGW协议实现。此框架可以应用到三个及以上参与方联合训练的场景中。目前,SecMM

null 77 Jul 14, 2022
from Microsoft STL, but multi-platform

mscharconv <charconv> from Microsoft STL, but multi-platform. Tested with MSVC, gcc, and clang on Windows, Linux, and macOS (will likely work on other

Borislav Stanimirov 35 Jun 8, 2022
YOLOv4 accelerated wtih TensorRT and multi-stream input using Deepstream

Deepstream 5.1 YOLOv4 App This Deepstream application showcases YOLOv4 running at high FPS throughput! P.S - Click the gif to watch the entire video!

Akash James 34 Jul 28, 2022
A multi object tracking Library Based on tensorrt

YoloV5_JDE_TensorRT_for_Track Introduction A multi object detect and track Library Based on tensorrt 一个基于TensorRT的多目标检测和跟踪融合算法库,可以同时支持行人的多目标检测和跟踪,当然也可

zwg_cv 47 Aug 3, 2022
ORB-SLAM3 is the first real-time SLAM library able to perform Visual, Visual-Inertial and Multi-Map SLAM with monocular, stereo and RGB-D cameras, using pin-hole and fisheye lens models.

Just to test for my research, and I add coordinate transformation to evaluate the ORB_SLAM3. Only applied in research, and respect the authors' all work.

B.X.W 5 Jul 11, 2022
Port of the 2020 support library to Raspberry Pi for the VL53L3CX Time-of-Flight ranging sensor with advanced multi-object detection

Port of ST VL53L3CX (2020) driver library to Raspberry Pi This is a port of the support library to Raspberry Pi for the VL53L3CX Time-of-Flight rangin

Niall Douglas 4 Jul 27, 2022
SIMULATeQCD is a multi-GPU Lattice QCD framework that makes it simple and easy for physicists to implement lattice QCD formulas while still providing the best possible performance.

SIMULATeQCD a SImple MUlti-GPU LATtice code for QCD calculations SIMULATeQCD is a multi-GPU Lattice QCD framework that makes it simple and easy for ph

null 10 Apr 23, 2022
Multi-tap FDN reverb

Eko Multi-tap Diffusion Network reverb Modelled on the Rounds Reverb by native istruments with some additional features not found on the orginal. Eko

null 7 Apr 6, 2022
A program developed using MPI for distributed computation of Histogram for large data and their performance anaysis on multi-core systems

mpi-histo A program developed using MPI for distributed computation of Histogram for large data and their performance anaysis on multi-core systems. T

Raj Shrestha 2 Dec 21, 2021
Tandem - [CoRL 21'] TANDEM: Tracking and Dense Mapping in Real-time using Deep Multi-view Stereo

TANDEM: Tracking and Dense Mapping in Real-time using Deep Multi-view Stereo Lukas Koestler1*    Nan Yang1,2*,†    Niclas Zeller2,3    Daniel Cremers1

TUM Computer Vision Group 655 Aug 3, 2022
A coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations.

A coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations.

preCICE 438 Aug 3, 2022
Multi-Scale Representation Learning on Proteins

Multi-Scale Representation Learning on Proteins (Under Construction and Subject to Change) Pending: Update links for dataset. This is the official PyT

Vignesh Ram Somnath 16 Aug 2, 2022
Preloader for Linux on M1

Preloader-M1 ~~~~~~~~~~~~~ To build: * make sure you have the appropriate toolchain (see Makefile), * put links to Image and apple-m1-j274.dtb fr

Corellium 94 Jun 30, 2022
A meme system info tool for Linux, based on nyan/uwu trend on r/linuxmasterrace.

UwUFetch A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace. Currently supported distros Nyarch Linuwu, Nyartix Linuwu, D

TheDarkBug 431 Aug 10, 2022
APFS module for linux, with experimental write support (out-of-tree repository)

Apple File System ================= The Apple File System (APFS) is the copy-on-write filesystem currently used on all Apple devices. This module pro

APFS for Linux 201 Aug 4, 2022