JoseExposito / touchegg

Linux multi-touch gesture recognizer
GNU General Public License v3.0
3.68k stars 172 forks source link

Connection with Touchegg daemon lost on Manjaro 20.2 #413

Closed Zatfer17 closed 3 years ago

Zatfer17 commented 3 years ago

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

Leinatan commented 3 years ago

Same here with Manjaro 20.2 KDE

Zatfer17 commented 3 years ago

Same here with Manjaro 20.2 KDE

I thought it was something related to the fact that Gestures comes preinstalled in Manjaro and so the two cannot coexist, but even after uninstalling it nothing changed :(

JoseExposito commented 3 years ago

Hi!

How did you installed Touchégg? Using the AUR PKGBUILD? I'm not sure how it handles the systemd intalation, so the first thing should be checking if the daemon is running. It should look like:

$ sudo systemctl status touchegg                                                                   
● touchegg.service - Touchégg
     Loaded: loaded (/lib/systemd/system/touchegg.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 14:05:21 CET; 4min 16s ago

If it is not running, you will need to start it:

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

If it was running, could you copy and paste the output of the daemon please?

$ sudo systemctl restart touchegg && journalctl -u touchegg -b -f

This command will restart the daemon and show the logs.

Zatfer17 commented 3 years ago

Hi!

How did you installed Touchégg? Using the AUR PKGBUILD? I'm not sure how it handles the systemd intalation, so the first thing should be checking if the daemon is running. It should look like:

$ sudo systemctl status touchegg                                                                   
● touchegg.service - Touchégg
     Loaded: loaded (/lib/systemd/system/touchegg.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 14:05:21 CET; 4min 16s ago

If it is not running, you will need to start it:

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

If it was running, could you copy and paste the output of the daemon please?

$ sudo systemctl restart touchegg && journalctl -u touchegg -b -f

This command will restart the daemon and show the logs.

Hi, I confirm you that it was not running. Doing what you suggested worked like a charm and now gestures are up and running! Thank you! I would suggest to edit the readme for the Manjaro installation. Have a nice day!

JoseExposito commented 3 years ago

I'm have not use Arch Linux that much, but, should it be possible to add this step to the PKGBUILD? It makes sense to me to start the service on install. @jbouter ??

jbouter commented 3 years ago

I'm not 100% sure, but I don't think any of the regular systemd daemons are enabled and started by default on Arch. I'll check on the #archlinux IRC channel.

jbouter commented 3 years ago

Yeah, so no services are started and enabled by default on Arch. However, upon installation of the AUR package the following is shown on the user's terminal:

Enable & start the daemon:
systemctl enable --now touchegg

And post-upgrade, the following is shown:

Restart daemon:
systemctl daemon-reload && systemctl restart touchegg
JoseExposito commented 3 years ago

Cool! Thanks a lot for clarifying this @jbouter. If this is how it works on Arch I'm happy with it.

Leinatan commented 3 years ago

Still doesn't work for me :/

sudo systemctl restart touchegg && journalctl -u touchegg -b -f
[sudo] password for nataniel: 
-- Logs begin at Sat 2020-06-27 11:55:09 CEST. --
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting Touchégg in daemon mode
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting daemon server...
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Server started
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: A list of detected compatible devices will be displayed below:
déc 20 10:32:54 manjaro-nataniel touchegg[45225]: New client connected with ID: 8
déc 20 10:46:14 manjaro-nataniel touchegg[45225]: New client connected with ID: 19
déc 20 10:46:52 manjaro-nataniel systemd[1]: Stopping Touchégg...
déc 20 10:46:53 manjaro-nataniel systemd[1]: touchegg.service: Succeeded.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Stopped Touchégg.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Started Touchégg.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg v2.0.4.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Usage: touchegg [--daemon [threshold animation_finish_threshold]] [--client]
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Multi-touch gesture recognizer.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: For more information please visit:
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: https://github.com/JoseExposito/touchegg
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Option                Meaning
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Without arguments Touchégg starts in client mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting Touchégg in daemon mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting daemon server...
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Server started
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: A list of detected compatible devices will be displayed below:
déc 20 10:46:57 manjaro-nataniel touchegg[158350]: New client connected with ID: 8
sudo systemctl restart touchegg && journalctl -u touchegg -b -f
[sudo] password for nataniel: 
-- Logs begin at Sat 2020-06-27 11:55:09 CEST. --
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting Touchégg in daemon mode
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting daemon server...
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Server started
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: A list of detected compatible devices will be displayed below:
déc 20 10:32:54 manjaro-nataniel touchegg[45225]: New client connected with ID: 8
déc 20 10:46:14 manjaro-nataniel touchegg[45225]: New client connected with ID: 19
déc 20 10:46:52 manjaro-nataniel systemd[1]: Stopping Touchégg...
déc 20 10:46:53 manjaro-nataniel systemd[1]: touchegg.service: Succeeded.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Stopped Touchégg.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Started Touchégg.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg v2.0.4.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Usage: touchegg [--daemon [threshold animation_finish_threshold]] [--client]
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Multi-touch gesture recognizer.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: For more information please visit:
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: https://github.com/JoseExposito/touchegg
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Option                Meaning
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Without arguments Touchégg starts in client mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting Touchégg in daemon mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting daemon server...
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Server started
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: A list of detected compatible devices will be displayed below:
déc 20 10:46:57 manjaro-nataniel touchegg[158350]: New client connected with ID: 8
Zatfer17 commented 3 years ago

Still doesn't work for me :/

sudo systemctl restart touchegg && journalctl -u touchegg -b -f
[sudo] password for nataniel: 
-- Logs begin at Sat 2020-06-27 11:55:09 CEST. --
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting Touchégg in daemon mode
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting daemon server...
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Server started
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: A list of detected compatible devices will be displayed below:
déc 20 10:32:54 manjaro-nataniel touchegg[45225]: New client connected with ID: 8
déc 20 10:46:14 manjaro-nataniel touchegg[45225]: New client connected with ID: 19
déc 20 10:46:52 manjaro-nataniel systemd[1]: Stopping Touchégg...
déc 20 10:46:53 manjaro-nataniel systemd[1]: touchegg.service: Succeeded.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Stopped Touchégg.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Started Touchégg.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg v2.0.4.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Usage: touchegg [--daemon [threshold animation_finish_threshold]] [--client]
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Multi-touch gesture recognizer.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: For more information please visit:
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: https://github.com/JoseExposito/touchegg
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Option                Meaning
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Without arguments Touchégg starts in client mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting Touchégg in daemon mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting daemon server...
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Server started
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: A list of detected compatible devices will be displayed below:
déc 20 10:46:57 manjaro-nataniel touchegg[158350]: New client connected with ID: 8
sudo systemctl restart touchegg && journalctl -u touchegg -b -f
[sudo] password for nataniel: 
-- Logs begin at Sat 2020-06-27 11:55:09 CEST. --
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting Touchégg in daemon mode
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Starting daemon server...
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: Server started
déc 20 10:32:45 manjaro-nataniel touchegg[45225]: A list of detected compatible devices will be displayed below:
déc 20 10:32:54 manjaro-nataniel touchegg[45225]: New client connected with ID: 8
déc 20 10:46:14 manjaro-nataniel touchegg[45225]: New client connected with ID: 19
déc 20 10:46:52 manjaro-nataniel systemd[1]: Stopping Touchégg...
déc 20 10:46:53 manjaro-nataniel systemd[1]: touchegg.service: Succeeded.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Stopped Touchégg.
déc 20 10:46:53 manjaro-nataniel systemd[1]: Started Touchégg.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg v2.0.4.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Usage: touchegg [--daemon [threshold animation_finish_threshold]] [--client]
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Multi-touch gesture recognizer.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: For more information please visit:
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: https://github.com/JoseExposito/touchegg
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Option                Meaning
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
déc 20 10:46:53 manjaro-nataniel touchegg[158350]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Without arguments Touchégg starts in client mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting Touchégg in daemon mode
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Starting daemon server...
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: Server started
déc 20 10:46:53 manjaro-nataniel touchegg[158350]: A list of detected compatible devices will be displayed below:
déc 20 10:46:57 manjaro-nataniel touchegg[158350]: New client connected with ID: 8

Make sure you are on Xorg and not on Wayland, Manajro runs by default on Wayland, this could be one reason. Otherwise maybe try uninstalling Gestures and libinput packages, which may be conflicting

Leinatan commented 3 years ago

Yes I made sure! I'm definitely on X

Zatfer17 commented 3 years ago

Well I give up :( Ball to the creator

JoseExposito commented 3 years ago

A list of detected compatible devices will be displayed below:

I doesn't look like any device was detected. Can you check if your device is detected by libinput, please?

$ sudo libinput list-devices

In Ubuntu, that command is installed with the libinput-tools package. Your touchscreen or touchpad should be listed there.

Leinatan commented 3 years ago

Mmh weird because my touchpad works great from day 0! Here's what libinput say:

Device:           Power Button
Kernel:           /dev/input/event2
Group:            1
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Video Bus
Kernel:           /dev/input/event10
Group:            2
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Video Bus
Kernel:           /dev/input/event11
Group:            2
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Lid Switch
Kernel:           /dev/input/event0
Group:            3
Seat:             seat0, default
Capabilities:     switch
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Sleep Button
Kernel:           /dev/input/event1
Group:            4
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Audient iD4
Kernel:           /dev/input/event21
Group:            5
Seat:             seat0, default
Capabilities:     pointer 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   button
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   flat *adaptive
Rotation:         n/a

Device:           Integrated Camera: Integrated C
Kernel:           /dev/input/event20
Group:            6
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           Logitech M315/M235
Kernel:           /dev/input/event19
Group:            7
Seat:             seat0, default
Capabilities:     keyboard pointer 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   button
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   flat *adaptive
Rotation:         n/a

Device:           AT Translated Set 2 keyboard
Kernel:           /dev/input/event3
Group:            8
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           SynPS/2 Synaptics TouchPad
Kernel:           /dev/input/event12
Group:            9
Seat:             seat0, default
Size:             67x36mm
Capabilities:     pointer 
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    none
Disable-w-typing: enabled
Accel profiles:   flat *adaptive
Rotation:         n/a

Device:           TPPS/2 IBM TrackPoint
Kernel:           /dev/input/event18
Group:            10
Seat:             seat0, default
Capabilities:     pointer 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   *button
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   flat *adaptive
Rotation:         n/a

Device:           ThinkPad Extra Buttons
Kernel:           /dev/input/event5
Group:            11
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a
JoseExposito commented 3 years ago

OK, so the issue is with how you touchpad is handled by libinput:

Device:           SynPS/2 Synaptics TouchPad
Kernel:           /dev/input/event12
Group:            9
Seat:             seat0, default
Size:             67x36mm
Capabilities:     pointer 

The capabilities section only shows pointer, and it should display gesture. This means that, either your touchpad doesn't support multitouch or, most likely, it is being handled by the Synaptics driver, instead of by the libinput driver.

Have a look to the Arch Linux wiki to know how to configure libinput: https://wiki.archlinux.org/index.php/Libinput

Leinatan commented 3 years ago

Okay thanks, I installed libinput but nothing happens anyway, so I'm giving up (I learned to give up, don't want to spend hours on it just to have cool gestures...). Thanks anyway for trying!

JoseExposito commented 3 years ago

Yep, Arch can be really difficult, I totally understand you 😆

jbouter commented 3 years ago

Okay thanks, I installed libinput but nothing happens anyway, so I'm giving up (I learned to give up, don't want to spend hours on it just to have cool gestures...). Thanks anyway for trying!

Hey @Leinatan, if it's not too late, I'd like to chime in. I forcefully enable my touchpad to use libinput by creating the following file:

/etc/X11/xorg.conf.d/10-libinput.conf

With the following content:

Section "InputClass"
  Identifier "libinput touchpad catchall"
  MatchIsTouchpad "on"
  MatchDevicePath "/dev/input/event*"
  Driver "libinput"
EndSection

If the /etc/X11/xorg.conf.d directory does not exist, just create it. It does take a restart of xorg to get it to load, so I'd suggest rebooting after you've created the config file.

I recommend installing xdotool, wmctrl and libinput as well:

sudo pacman -S xdotool wmctrl libinput

Hope this helps! And if not, please let me know!

Leinatan commented 3 years ago

@jbouter thank you for helping! Sorry I dit wait almost one month before re-trying.

I created /etc/X11/xorg.conf.d/10-libinput.conf and populated it with the content, installed the recommended packages, rebooted, but it's still not working ;(

Running sudo systemctl status touchegg outputs the following:


touchegg.service - Touchégg
     Loaded: loaded (/usr/lib/systemd/system/touchegg.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-01-15 10:51:38 CET; 2min 17s ago
   Main PID: 574 (touchegg)
      Tasks: 2 (limit: 18839)
     Memory: 11.8M
     CGroup: /system.slice/touchegg.service
             └─574 /usr/bin/touchegg --daemon

jan 15 10:51:38 nataniel-manjaro touchegg[574]: https://github.com/JoseExposito/touchegg
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Option                Meaning
jan 15 10:51:38 nataniel-manjaro touchegg[574]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but exe>
jan 15 10:51:38 nataniel-manjaro touchegg[574]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Without arguments Touchégg starts in client mode
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Starting Touchégg in daemon mode
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Starting daemon server...
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Server started
jan 15 10:51:38 nataniel-manjaro touchegg[574]: A list of detected compatible devices will be displayed below:
jan 15 10:51:44 nataniel-manjaro touchegg[574]: New client connected with ID: 6
...skipping...
● touchegg.service - Touchégg
     Loaded: loaded (/usr/lib/systemd/system/touchegg.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-01-15 10:51:38 CET; 2min 17s ago
   Main PID: 574 (touchegg)
      Tasks: 2 (limit: 18839)
     Memory: 11.8M
     CGroup: /system.slice/touchegg.service
             └─574 /usr/bin/touchegg --daemon

jan 15 10:51:38 nataniel-manjaro touchegg[574]: https://github.com/JoseExposito/touchegg
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Option                Meaning
jan 15 10:51:38 nataniel-manjaro touchegg[574]:  --daemon        Run Touchégg in daemon mode. This mode starts a service that gathers gestures but exe>
jan 15 10:51:38 nataniel-manjaro touchegg[574]:  --client        Connect to an existing Touchégg daemon and execute actions in your desktop
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Without arguments Touchégg starts in client mode
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Starting Touchégg in daemon mode
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Starting daemon server...
jan 15 10:51:38 nataniel-manjaro touchegg[574]: Server started
jan 15 10:51:38 nataniel-manjaro touchegg[574]: A list of detected compatible devices will be displayed below:
jan 15 10:51:44 nataniel-manjaro touchegg[574]: New client connected with ID: 6
~
~
~
jbouter commented 3 years ago

@Leinatan Is the client side of touchegg running?

Leinatan commented 3 years ago

It seems yes, that's what happens when I run touchegg:

[nataniel@nataniel-manjaro ~]$ touchegg
Touchégg v2.0.5.
Usage: touchegg [--daemon [start_threshold finish_threshold]] [--client]

Multi-touch gesture recognizer.
Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
For more information please visit:
https://github.com/JoseExposito/touchegg

Option          Meaning
 --daemon       Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
 --client       Connect to an existing Touchégg daemon and execute actions in your desktop
Without arguments Touchégg starts in client mode

Starting Touchégg in client mode
terminate called after throwing an instance of 'std::runtime_error'
  what():  Another instance of Touchégg is already running. If you are sure that Touchégg is not already running, delete the lock file with the following command and try again:
$ rm /home/nataniel/.config/touchegg/.touchegg.lock
Aborted (core dumped)
jbouter commented 3 years ago

Could you try killing the running touchegg and starting your own in the terminal. Then try some gestures on your touchpad and see if it shows in the terminal.

Leinatan commented 3 years ago

Okay I did that, and it shows plain nothing in the terminal!

jbouter commented 3 years ago

I'm assuming then that touchegg works, but is simply still not getting any input from your touchpad. This is most likely because your touchpad still isn't using libinput (meaning the xorg config I recommended earlier isn't working).

Could you try running the following two commands:

First, check your connected devices using xinput list. It'll give output like such:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=13   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech TrackPoint                id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=10   [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated I           id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=15   [slave  keyboard (3)]

In above example (my systems' output) my touchpad (ETPS/2 Elantech Touchpad) has an ID of 13. Going on that (adjust the ID to your output), execute xinput list-props 13.

If the device is using libinput, output will look as such:

Device 'ETPS/2 Elantech Touchpad':
        Device Enabled (162):   1
        Coordinate Transformation Matrix (164): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (297): 1
        libinput Tapping Enabled Default (298): 0
        libinput Tapping Drag Enabled (299):    1
        libinput Tapping Drag Enabled Default (300):    1
        libinput Tapping Drag Lock Enabled (301):       0
        libinput Tapping Drag Lock Enabled Default (302):       0
        libinput Tapping Button Mapping Enabled (303):  1, 0
        libinput Tapping Button Mapping Default (304):  1, 0
        libinput Natural Scrolling Enabled (305):       1
        libinput Natural Scrolling Enabled Default (306):       0
        libinput Disable While Typing Enabled (307):    1
        libinput Disable While Typing Enabled Default (308):    1
        libinput Scroll Methods Available (309):        1, 1, 0
        libinput Scroll Method Enabled (310):   1, 0, 0
        libinput Scroll Method Enabled Default (311):   1, 0, 0
        libinput Click Methods Available (312): 1, 1
        libinput Click Method Enabled (313):    0, 1
        libinput Click Method Enabled Default (314):    1, 0
        libinput Middle Emulation Enabled (315):        0
        libinput Middle Emulation Enabled Default (316):        0
        libinput Accel Speed (317):     0.200000
        libinput Accel Speed Default (318):     0.000000
        libinput Accel Profiles Available (319):        1, 1
        libinput Accel Profile Enabled (320):   1, 0
        libinput Accel Profile Enabled Default (321):   1, 0
        libinput Left Handed Enabled (322):     0
        libinput Left Handed Enabled Default (323):     0
        libinput Send Events Modes Available (282):     1, 1
        libinput Send Events Mode Enabled (283):        0, 0
        libinput Send Events Mode Enabled Default (284):        0, 0
        Device Node (285):      "/dev/input/event6"
        Device Product ID (286):        2, 14
        libinput Drag Lock Buttons (324):       <no items>
        libinput Horizontal Scroll Enabled (325):       1
Leinatan commented 3 years ago

Thanks!

xinput list command isn't recognized though.


$ xinput list
bash: xinput: command not found
$ sudo pacman -S xinput
[sudo] password for nataniel: 
error: target not found: xinput

EDIT: I found the package in pamac,

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Comfort Curve Keyboard 3000     id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [slave  pointer  (2)]
⎜   ↳ Logitech M315/M235                        id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Microsoft Comfort Curve Keyboard 3000     id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=15   [slave  keyboard (3)]
    ↳ Microsoft Comfort Curve Keyboard 3000     id=16   [slave  keyboard (3)]
    ↳ Logitech M315/M235                        id=17   [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=18   [slave  keyboard (3)]
$ xinput list-props 13
Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (130):   1
        Coordinate Transformation Matrix (132): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (287): 1
        libinput Tapping Enabled Default (288): 0
        libinput Tapping Drag Enabled (289):    1
        libinput Tapping Drag Enabled Default (290):    1
        libinput Tapping Drag Lock Enabled (291):       0
        libinput Tapping Drag Lock Enabled Default (292):       0
        libinput Tapping Button Mapping Enabled (293):  1, 0
        libinput Tapping Button Mapping Default (294):  1, 0
        libinput Natural Scrolling Enabled (267):       1
        libinput Natural Scrolling Enabled Default (268):       0
        libinput Disable While Typing Enabled (295):    1
        libinput Disable While Typing Enabled Default (296):    1
        libinput Scroll Methods Available (271):        1, 1, 0
        libinput Scroll Method Enabled (272):   1, 0, 0
        libinput Scroll Method Enabled Default (273):   1, 0, 0
        libinput Accel Speed (280):     0.200000
        libinput Accel Speed Default (281):     0.000000
        libinput Accel Profiles Available (282):        1, 1
        libinput Accel Profile Enabled (283):   1, 0
        libinput Accel Profile Enabled Default (284):   1, 0
        libinput Left Handed Enabled (285):     0
        libinput Left Handed Enabled Default (286):     0
        libinput Send Events Modes Available (252):     1, 1
        libinput Send Events Mode Enabled (253):        0, 0
        libinput Send Events Mode Enabled Default (254):        0, 0
        Device Node (255):      "/dev/input/event15"
        Device Product ID (256):        2, 7
        libinput Drag Lock Buttons (269):       <no items>
        libinput Horizontal Scroll Enabled (270):       1
jbouter commented 3 years ago

sudo pacman -S xorg-xinput

Leinatan commented 3 years ago

Ok I edited my previous post with the outputs of xinput! ;)

Leinatan commented 3 years ago

Mhh, running touchegg doesn't work anymore:


$ touchegg --client
Touchégg v2.0.5.
Usage: touchegg [--daemon [start_threshold finish_threshold]] [--client]

Multi-touch gesture recognizer.
Touchégg is an app that runs in the background and transform the gestures you make on your touchpad into visible actions in your desktop.
For more information please visit:
https://github.com/JoseExposito/touchegg

Option          Meaning
 --daemon       Run Touchégg in daemon mode. This mode starts a service that gathers gestures but executes no actions
 --client       Connect to an existing Touchégg daemon and execute actions in your desktop
Without arguments Touchégg starts in client mode

Starting Touchégg in client mode
Parsing you configuration file...
Using configuration file "/usr/share/touchegg/touchegg.conf"
Configuration parsed successfully
Connecting to Touchégg daemon...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...
Connection with Touchégg daemon lost. Reconnecting in 5 seconds...

And

$ sudo systemctl status touchegg
[sudo] password for nataniel: 
Sorry, try again.
[sudo] password for nataniel: 
● touchegg.service - Touchégg
     Loaded: loaded (/usr/lib/systemd/system/touchegg.service; enabled; vendor preset: disabled)
     Active: inactive (dead) since Sat 2021-01-16 11:12:58 CET; 3min 7s ago
    Process: 551 ExecStart=/usr/bin/touchegg --daemon (code=killed, signal=TERM)
   Main PID: 551 (code=killed, signal=TERM)

jan 16 11:07:42 nataniel-manjaro touchegg[551]: Option                Meaning
jan 16 11:07:42 nataniel-manjaro touchegg[551]:  --daemon        Run Touchégg in daemon mode. This mode starts a servic>
jan 16 11:07:42 nataniel-manjaro touchegg[551]:  --client        Connect to an existing Touchégg daemon and execute act>
jan 16 11:07:42 nataniel-manjaro touchegg[551]: Without arguments Touchégg starts in client mode
jan 16 11:07:42 nataniel-manjaro touchegg[551]: Starting Touchégg in daemon mode
jan 16 11:07:42 nataniel-manjaro touchegg[551]: Starting daemon server...
jan 16 11:07:42 nataniel-manjaro touchegg[551]: Server started
jan 16 11:07:42 nataniel-manjaro touchegg[551]: A list of detected compatible devices will be displayed below:
jan 16 11:07:49 nataniel-manjaro touchegg[551]: New client connected with ID: 6
jan 16 11:12:58 nataniel-manjaro systemd[1]: touchegg.service: Succeeded.

Has the line " New client connected with ID: 6" something to do with the xinput ID (which should be 13, as in your case)?

jbouter commented 3 years ago

This is really interesting! I have found that the touchegg daemon can possibly crash when disconnecting the client-side application. You can restart it using sudo systemctl restart touchegg. The ID should indeed by 13, but not because it is the case with me, but your entry also shows ID as 13:

⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [slave  pointer  (2)]

@JoseExposito do you have any other recommendations? It shows the touchpad is using libinput but it doesn't seem to register?

Leinatan commented 3 years ago

Yeah I meant it should be 13, and by chance it's the same as you (I have a thinkpad t530, maybe you do too?)

Ok I could successfully restart touchegg with systemctl! (But it's still not working). Okay, well I'm happy you find this interesting haha XD Hopefully there is a solution, and if not, let's not spend too much time and energy on it ;)

jbouter commented 3 years ago

The order in starting is a bit interesting sometimes.

Thinkpad T495s here, so I'm not surprised it's identical! But I do think the ID can vary based on connected devices (and order of connecting).

On a more debugging note, is your user member of the input group?

Leinatan commented 3 years ago
$ groups
sys network power lp audio wheel autologin nataniel

It seems not!

jbouter commented 3 years ago

Try the following, where <username> (obviously) is your own username.

sudo usermod -aG input <username>

You need to log in to your desktop environment again in order for the group to load globally. If you don't want to log in again, you can use newgrp input and in the same terminal session start the touchegg client again.

Leinatan commented 3 years ago

No luck ;(

JoseExposito commented 3 years ago

This is really interesting! I have found that the touchegg daemon can possibly crash when disconnecting the client-side application. You can restart it using sudo systemctl restart touchegg

Yes, it is a bug that seems to happen in Arch, probably because of a newer kernel. It was already solved: https://github.com/JoseExposito/touchegg/pull/424

On a more debugging note, is your user member of the input group?

There is no need to add your user to the input group. It is actually not recommended, as it represents a security issue because then, any program you run will have access to your keyboard input. The daemon runs as part of that group exposing only the required bits in a secure manner: https://github.com/JoseExposito/touchegg/blob/master/installation/touchegg.service#L7

@Leinatan I can think of 2 issues.

The first one could be that your touchpad is not using the libinput driver, but I think that the configuration Jeffrey gave you is correct. Just in case, let's double check it:

$ grep -e "input driver" /var/log/Xorg.0.log
[...]
[   724.554] (II) Using input driver 'libinput' for 'Apple Inc. Magic Trackpad 2'

If your touchpad is handled by libinput, then the other possible issue is that it is not being recognized as a multi-touch device:

$ sudo libinput list-devices
[...]
Device:           Apple Inc. Magic Trackpad 2
Kernel:           /dev/input/event19
Group:            5
Seat:             seat0, default
Size:             162x115mm
Capabilities:     pointer gesture
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    button-areas *clickfinger 
Disable-w-typing: n/a
Accel profiles:   none
Rotation:         n/a
[...]

The Capabilities property must include gesture, otherwise Touchégg is not going to be able to handle your device. In that case, you'll need to report the issue in the libinput project.

Another easy way of testing that libinput is recognizing your gestures is by running the following command and performing a swipe gesture:

$ sudo libinput debug-events
[...]
 event19  GESTURE_SWIPE_BEGIN +3.460s   3
 event19  GESTURE_SWIPE_UPDATE +3.460s  3  7.11/ 0.67 (28.48/ 2.68 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.471s  3  9.86/ 1.28 (36.86/ 4.77 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.482s  3 11.28/ 1.84 (42.16/ 6.86 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.494s  3 13.60/ 2.63 (50.82/ 9.84 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.505s  3 10.31/ 2.31 (38.53/ 8.65 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.516s  3 12.77/ 3.19 (47.75/11.93 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.527s  3 11.58/ 3.03 (43.28/11.33 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.538s  3 12.62/ 3.51 (47.19/13.12 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.549s  3  8.44/ 1.99 (31.55/ 7.46 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.561s  3  5.45/ 1.44 (20.38/ 5.37 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.572s  3  7.77/ 2.15 (29.04/ 8.05 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.583s  3  5.75/ 1.36 (21.50/ 5.07 unaccelerated)
 event19  GESTURE_SWIPE_UPDATE +3.594s  3  5.23/ 1.20 (19.55/ 4.47 unaccelerated)
 event19  GESTURE_SWIPE_END +3.627s 3
[...]

That's is the output of a 3 fingers swipe. If that works, Touchégg should work as well. Let's see what we can find :smile:

Leinatan commented 3 years ago

The Capabilities property must include gesture, otherwise Touchégg is not going to be able to handle your device. In that case, you'll need to report the issue in the libinput project.

Well I think we found the culprit! It's only capable of being a pointer. Thanks @JoseExposito and @jbouter for your help! Unfortunately I'll leave it there, having gestures is not my top priority at the moment ;)