Skip to content

An extension for Gnome Shell that enhances the user experience for devices with a touchscreen. Currently in beta.

Notifications You must be signed in to change notification settings

mityax/gnome-extension-touchup

Repository files navigation

TouchUp [Beta]

An extension for Gnome Shell that enhances the user experience for devices with a touchscreen – primarily focused (and tested) on tablets.

TouchUp aims to provide an intuitive, configurable, clean and seamless interface. However, please be aware that this is not always possible nor easy since Gnome extension development does not come without challenges or limits and has a steep learning curve.

Installation

Get it on GNOME Extensions

🛠️ or build and install from source: npm run enable:release

Roadmap & Implementation Status

This is a rough overview over this extension's implemented features and goals (in no particular order). It's a lot, and it's changing, mostly due to new ideas or unforeseen complications – so please don't take this as a fixed plan but more as an idea of the direction TouchUp is heading. Also, I have limited time to work on this project, so please don't expect new features very frequently – you can help speed up progress by donating.

  • Navigation bar, as known from Android/iOS
    • Gesture mode
    • Buttons mode
    • Invisible gestures mode
    • Compatibility with the "Dash to Dock" extension (move the dock up)
  • Edge swipe actions (left/right edge: back, top/bottom edge: show panel and navigation bar)
  • Touch gestures for Gnome Shell notifications
    • Touchscreen swipe gesture
    • Touchpad two-finger gestures
  • Add "copy"/"open" button in notifications for elements like 2FA codes or links
  • Onscreen Keyboard (OSK)
    • Key popups
    • "Extended" keys (make padding between keys reactive)
    • Compatibility with the "GJS OSK" extension (?)
    • Swipe-close keyboard
  • Virtual Touchpad (use device as touchpad when connected to a second monitor) [WIP]
  • Floating temporary screen rotation button when auto-rotation is disabled but device is being rotated (as in android)
  • Pattern unlock
  • Improved swipe gestures in the overview
    • Swipe up windows in overview to close them
    • Single-finger swipe left/right to switch workspace
    • Hold and move to drag and drop windows
    • Single-finger swipe up/down to open/close overview/app list
    • Move windows to another screen via dragging to the corner
  • Gesture-driven top menu pull down animations
  • Touch-enabled volume controls
  • Voice input in onscreen keyboard
  • Option to display individual windows instead of workspaces when navigating using gesture navigation bar
  • Run arbitrary commands on touch-mode change

Each of these features can be enabled/disabled individually and most can be further customized in the extension settings.

In case you'd like to suggest a feature or work on one yourself, please don't hesitate to create an issue so we can discuss it!

A Note on Compatibility

TouchUp is developed for and actively tested on upstream Gnome Shell. It is not tested on derivations thereof, such as in Ubuntu, and I don't have capacity to include those at the moment (should you be willing to contribute as a long-term beta tester, and to investigate issues on a specific shell derivation yourself, please open an issue to get in touch).

However, TouchUp will automatically disable features that fail to initialize, and show a notification for these. Other features might work on your shell derivation. Consider logging out and back in when a feature failed to initialize – this way you ensure the failed feature leaves no traces in your session.

By the way: TouchUp does not even load the code for disabled features into memory – thus you only 'pay' for features you actually enable.

Why an Extension?

Developing this functionality in the form of a Gnome extension allows a seamless interplay between a touch-centered usage and one based on keyboard and mouse. It facilitates a dual usage of devices such as tablets with removable keyboards or convertibles, without the need to manually switch between login sessions or to compromise on awkward user interfaces. Elements of the interface that are useful in both, touch and non-touch mode (e.g. notification swipe gestures) will always be active, while elements that are useless or annoying when having a keyboard and touchpad at hand (e.g. the gesture navigation bar) will only be active in touch mode.

This also means that users can just use their well-known and stable Gnome Shell (with their favorite extensions) and can add the additional touch functionality at the press of a button; There is no need to set up and get used to a different, possibly unpolished or permanently-in-beta shell, just to have decent touch interaction with the device.

Lastly, as the development of an extension like this one is decoupled from Gnome Shell itself, it can make faster iterations and profit off using more modern tooling such as Typescript (though extension review can of course also take its time).

Contributing

Should you want to contribute, which I'd greatly appreciate, please first have a look at CONTRIBUTING.md. This is especially important if you plan to contribute more than just a simple typo- or bugfix.

Support

Your support fuels this work and helps TouchUp to make Gnome an alternative to corporate touch operating systems. It'll also allow me to allocate more time to this project, thereby making progress faster. Even a dollar a month helps!

To donate, choose a platform below:

Buy Me a Coffee at ko-fi.com
Recommended! Most payment methods, one-time or recurring donations, no sign up required.

Buy Me a Coffee at patreon.com
Many payment methods, best for a recurring donation.

Buy Me a Coffee
Donate by card, no sign up required.

About

An extension for Gnome Shell that enhances the user experience for devices with a touchscreen. Currently in beta.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published