GithubHelp home page GithubHelp logo

pop-os / touchegg Goto Github PK

View Code? Open in Web Editor NEW
37.0 15.0 4.0 118.69 MB

Pop!_OS fork of https://github.com/JoseExposito/touchegg

License: GNU General Public License v3.0

CMake 2.34% Shell 0.20% C++ 96.58% C 0.76% Makefile 0.11%

touchegg's Introduction

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, Zorin OS 16 and Pop!_OS 21.04+

Fedora, CentOS, RHEL and derivatives

On Fedora, Touchegg is available in the official repository:

$ dnf install touchegg
# You may also need to manually start the service
$ sudo systemctl start touchegg
$ sudo systemctl enable touchegg

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

$ sudo dnf copr enable joseexposito/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

openSUSE

Touchégg is available in the official repositories.

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

If the version of Touchégg included for your distro is too old (v1.x) it is recommended to use the official COPR to install Touchégg and receive updates.

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

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

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.
times 2...15 Only used when repeat is true. Number of times to repeat the action.
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.
times 2...15 Only used when repeat is true. Number of times to repeat the action.
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' "Swipe down, DEVICE_TYPE=$TOUCHEGG_DEVICE_TYPE"</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 amount 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 works 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.

Can I use 2 finger swipes for web browser navigation?

No, at least not with Touchégg. It is up to the web browser to implement that feature. You can request this feature in your favourite's web browser bug tracker.

Copyright

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

The source code is available under GPL v3 license on GitHub

touchegg's People

Contributors

13r0ck avatar 20manas avatar ahoneybun avatar bhison avatar cbodenst avatar crater2150 avatar danirabbit avatar davegregg avatar eworm-de avatar gurrgur avatar hvassaa avatar ichaox avatar ids1024 avatar imabuddha avatar isantop avatar jackpot51 avatar jborque avatar joseexposito avatar m-roberts avatar mariojim avatar matthijskooijman avatar maurges avatar shoogle avatar sodface avatar stweil avatar tintou avatar vimpostor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

touchegg's Issues

Touchegg Improvements

Three Finger Window Focus > Don't require lifting fingers to move more than one window
1-to-1 workspace animation gestures

Context menu on desktop remains visible when using touchpad gesture to navigate workspaces

Issue:
title

Steps to Reproduce:

  1. Right click on desktop to open the context menu
  2. Use gesture to move up or down a workspace, or open the workspaces view
  3. See the issue.

Screen cast of the issue:

Screencast.from.02-03-2022.01.07.03.PM.mp4

Expected Behavior:
Context menu should be closed when gestures for workspaces are used(it works as expected with gesture for application library)

Cosmic-Workspaces Version:

gnome-shell-extension-cosmic-workspaces:
  Installed: 0.1.0~1643679642~21.10~fb53648
  Candidate: 0.1.0~1643679642~21.10~fb53648
  Version table:
 *** 0.1.0~1643679642~21.10~fb53648 1001
       1001 http://apt.pop-os.org/release impish/main amd64 Packages
       1001 http://apt.pop-os.org/release impish/main i386 Packages
        100 /var/lib/dpkg/status

touchegg version:

touchegg:
  Installed: 2.0.12pop0~1635793287~21.10~49a7df0
  Candidate: 2.0.12pop0~1635793287~21.10~49a7df0
  Version table:
 *** 2.0.12pop0~1635793287~21.10~49a7df0 1001
       1001 http://apt.pop-os.org/release impish/main amd64 Packages
        100 /var/lib/dpkg/status
     1.1.1-0ubuntu4 500
        500 http://us.archive.ubuntu.com/ubuntu impish/universe amd64 Packages

Switching workspaces with gestures sometimes gets interrupted and reverts to previous workspace

(1) Issue/Bug Description:

After a recent update I've noticed a really annoying behavior when switching workspaces. It seems to happen only when using the touch-pad gestures (4-finger swipe up/down). Basically, if I'm swiping between workspaces quickly, it seems sometimes one of the windows steals focus after I scroll past it. So it yanks me back to that desktop rudely, interrupting where I was trying to go.

It's easily reproducible for me by just opening multiple firefox windows on multiple workspaces, and just swiping up and down between them using the 4-finger touch pad gesture.

(2) Steps to reproduce (if you know):

  1. Use tiled windows (no active hint, no window titles, gaps: 2)
  2. Open 3+ firefox windows each in their own workspace
  3. Enable "focus follows mouse" in Tweaks (I have this on but turning it off doesn't seem to fix is, just mentioning for completeness)
  4. swipe between workspaces using 4-finger swipe touchpad gesture (it's not 100% of the time, you have to try for a bit)
  5. Sometimes, it will quickly switch back to the workspace you just left

(3) Expected behavior:

When I change workspaces, it stays on the workspace I changed to.

(4) Distribution (run cat /etc/os-release):

NAME="Pop!_OS"
VERSION="22.04 LTS"
ID=pop
ID_LIKE="ubuntu debian"
PRETTY_NAME="Pop!_OS 22.04 LTS"
VERSION_ID="22.04"
HOME_URL="https://pop.system76.com"
SUPPORT_URL="https://support.system76.com"
BUG_REPORT_URL="https://github.com/pop-os/pop/issues"
PRIVACY_POLICY_URL="https://system76.com/privacy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy
LOGO=distributor-logo-pop-os

(5) Gnome Shell version:

gnome-shell/jammy,now 42.1-0ubuntu0.1pop1~1654265234~22.04~d8fe566 amd64

(6) Pop Shell version (run apt policy pop-shell or provide the latest commit if building locally):

pop-shell:
  Installed: 1.1.0~1654621639~22.04~b299641
  Candidate: 1.1.0~1654621639~22.04~b299641
  Version table:
 *** 1.1.0~1654621639~22.04~b299641 1001
       1001 http://apt.pop-os.org/release jammy/main amd64 Packages
       1001 http://apt.pop-os.org/release jammy/main i386 Packages
        100 /var/lib/dpkg/status

(7) Where was Pop Shell installed from:

apt I assume (came pre-installed)

(8) Monitor Setup (2 x 1080p, 4K, Primary(Horizontal), Secondary(Vertical), etc):

One 3440x1440 Ultrawide

(9) Other Installed/Enabled Extensions:

Sound Input & Output Device Chooser
Systemd Manager
Vitals
Cosmic Dock
Cosmic Workspaces
COSMIC X11 Gestures
Pop COSMIC
Pop Shell
System76 Power
Ubuntu AppIndicators

(10) Other Notes:

Might be relevant: I'm using an Apple Magic Trackpad.

I feel like this didn't happen before and only started happening recently after an update. But this might be related: I think it used to maybe instead give me those "window is ready" notifications. Now instead of those notifications, it steals focus and switches workspaces.

Four-finger left-swipe not working on fresh Pop!_OS install with version 2.0.15

The Issue

After a clean install with Pop!_OS 22.04 Intel iso 21, and subsequently completing a full upgrade of packages, four-finger left-swipe no longer functions.

Background in case other users think they might have this problem

In Pop!_OS multitouch trackpad gestures are supported. In Cosmic for Gnome, Pop!_OS utilizes three finger gestures for quickly moving window focus as part of it's less directly mouse-driven design (swiping fingers is faster than moving a cursor discretely and clicking). The general direction of the sweep is used to allow focus to be thrown quickly through windows.

Along side three-finger gestures, Pop!_OS uses four-finger interactions to access some of the shell features including switching between workspaces, and deploying the Workspace and Application Views.

Pop!_OS' inclination to making individual UX elements more mono-functional means that the Applications View and Workspaces View are separated. By default, a four-finger right-swipe will bring up the Applications View and a subsequent left- or right- swipe will dismiss the view. For Workspaces View, the left-swipe is used. Up and Down switch between logically adjacent workspaces.

Is this my problem?

If four-finger left-swipes, which bring up the Workspaces View, don't work for you this may be your issue. You can run touchegg --debug in a terminal and check if your output matches below.

Logs

When attempting a four-finger left-swipe, touchegg --debug yields the following:

Gesture begin detected
               Gesture information:
                              Fingers: 4
                              Type: SWIPE
                              Direction: LEFT
               Gesture performed on app: Gjs
               Action configured for this gesture
               Ignoring this gesture. This could mean no action is configured, the configured action is not 
               supported or that it was performed in a system window (panel, dock, desktop, etc)

Doing the same to the right provides constant output indicating Gesture update detected ({some number}%)

Other notes:

On a much older Pop!_OS install (updated from 21.10, and regularly since), updating did not break the four-finger left-swipe gesture. Restarting Touchegg did not remedy the issue either. The problem didn't present until after rebooting following the update (as far as I could tell).

My Screen/Page Gets Randomly Zoomed In And Out

Describe the bug

My screen/page gets randomly zoomed in and out to 120%, 60%, etc. even when I am not using my touchpad or keyboard. This happens when I am using FireFox, the command line, pdf viewers, etc. I am using a Dell Inspiron 15 5548 and I have dual booted Pop!_OS 22.04 with Windows Ten. I installed the linux distro a few days ago.

At first, I tried disabling the HiDPI Daemon, but that did not work. I also can confirm that this is not a touchpad/hardware issue because this doesn't occur when I use windows ten.

Later then, I thought that the problem could be something with the drivers because my laptop is from 2015 and is pretty old.

After some time, I ran journalctl -f, so I could see what was exactly happening when the bug occurred. The logs of the bug are posted below in the Logs section. A person reviewed these logs and told me that the bug could have something to do with "touchegg segfaulting".

P.S. I disabled touchegg on my laptop and the bug was still occurring. So, I am not sure if touchegg is still relevant to the bug.

In addition, I forgot to mention that other than random zooming, on FireFox, the webpage can get preloaded at 90%, 30%, etc. instead of at 100%.

Expected behaviour

I should only be able to zoom in/out the page of an application with keyboard shortcuts or my touchpad.

Actual behaviour

At irregular times, the page of an application gets randomly zoomed in/out to 120%, 65%, etc.

Logs

If required, include logs of the bug:

Dec 31 19:00:18 pop-os gnome-shell[3570]: Window manager warning: Buggy client sent a _NET_ACTIVE_WINDOW message with a timestamp of 0 for 0x300003e
Dec 31 19:00:19 pop-os gnome-shell[3570]: Window manager warning: Buggy client sent a _NET_ACTIVE_WINDOW message with a timestamp of 0 for 0x300003e
Dec 31 19:00:20 pop-os gnome-shell[3570]: Window manager warning: Buggy client sent a _NET_ACTIVE_WINDOW message with a timestamp of 0 for 0x300003e
Dec 31 19:00:24 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:24 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:24 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:24 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:25 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:25 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:25 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:25 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:26 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:27 pop-os wpa_supplicant[520]: wlp3s0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-42 noise=9999 txrate=72200
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:27 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:29 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:29 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:29 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:29 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:30 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:32 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:32 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:32 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:32 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): EDID vendor "AUO", prod id 4588
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Printing DDC gathered Modelines:
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1526 768 771 777 800 +hsync -vsync (48.0 kHz eP)
Dec 31 19:00:33 pop-os /usr/libexec/gdm-x-session[3297]: (II) modeset(0): Modeline "1366x768"x0.0 73.30 1366 1406 1438 1908 768 771 777 800 +hsync -vsync (38.4 kHz e)
Dec 31 19:00:33 pop-os kernel: touchegg[3817]: segfault at 0 ip 000055b970a2330d sp 00007ffd56e56da0 error 4 in touchegg[55b970a21000+30000]
Dec 31 19:00:33 pop-os kernel: Code: 7c 24 04 89 44 24 04 e8 31 3e 01 00 48 8b 75 00 8b 43 2c 48 8b 7b 18 89 46 04 48 8b 44 24 18 64 48 2b 04 25 28 00 00 00 75 0f <48> 8b 07 48 8b 40 20 48 83 c4 28 5b 5d ff e0 e8 7f ef ff ff 90 48
Dec 31 19:00:34 pop-os systemd[3233]: app-gnome-touchegg-3817.scope: Consumed 1.616s CPU time.
Dec 31 19:00:34 pop-os touchegg[512]: Client disconnected
Dec 31 19:01:01 pop-os PackageKit[2418]: get-packages transaction /633_eacddabb from uid 1000 finished with success after 778ms
Dec 31 19:01:01 pop-os PackageKit[2418]: get-updates transaction /634_dcbecbdd from uid 1000 finished with success after 614ms

Your environment

  • Version of Touchégg: Touchégg v2.0.12.
  • Operating System: Pop!_OS
  • Desktop Environment: Gnome

Unable to install on Debian

Hello. Any idea why this isn't installing?

sudo add-apt-repository ppa:touchegg/stable
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 362, in
sys.exit(0 if addaptrepo.main() else 1)
^^^^^^^^^^^^^^^^^
File "/usr/bin/add-apt-repository", line 345, in main
shortcut = handler(source, **shortcut_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
return handler(shortcut, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 86, in init
if self.lpppa.publish_debug_symbols:
^^^^^^^^^^
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 126, in lpppa
self._lpppa = self.lpteam.getPPAByName(name=self.ppaname)
^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 113, in lpteam
self._lpteam = self.lp.people(self.teamname)
^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'people'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.