My (challenging) experience building a window switcher for Ubuntu

This page summarizes the projects mentioned and recommended in the original post on /r/rust

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • gtk4-rs

    Rust bindings of GTK 4

    To build the UI, I used gtk-rs. My experience with this library was quite pleasant; it was easy to use and there were a lot of examples. However, it isn't as widely used as, say, React, so it was difficult to find answer on Stack Overflow (I come from a JavaScript/Typescript background).

  • gtk-rs

    Discontinued Rust bindings for GTK 3

    To build the UI, I used gtk-rs. My experience with this library was quite pleasant; it was easy to use and there were a lot of examples. However, it isn't as widely used as, say, React, so it was difficult to find answer on Stack Overflow (I come from a JavaScript/Typescript background).

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • xdotool

    fake keyboard/mouse input, window management, and more

    Eventually, I needed to find the ID of windows, move them, and bring them to the front—I realized I couldn't do that with gtk-rs. I needed to interact with the window manager (X11 server). So from inside my application, I ran commands that called xdotool.

  • x11rb

    X11 bindings for the rust programming language, similar to xcb being the X11 C bindings

    xdotool worked ... but I didn't want to depend on external command-line tools, so I decided to look for X11 bindings for Rust. The best library I could find was x11rb. It had very little documentation and almost no one used it (it was difficult to find people who could help me with it). Fortunately, it had a detailed tutorial. Still, it was a struggle to make things works sometimes.

  • quicktile

    Adds window-tiling hotkeys to any X11 desktop. (An analogue to WinSplit Revolution for people who don't want to use Compiz Grid)

    As the author of QuickTile, which is written in Python but even closer to what you describe than a window manager would be, I have to say that, yeah, doing X11 stuff takes a lot of knowledge that's not ideally documented in non-print sources.

  • ripgrep

    ripgrep recursively searches directories for a regex pattern while respecting your gitignore

    Nope. I hate Snaps.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts