Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save zachfeldman/9ecf378e02762b437d30090232a6338d to your computer and use it in GitHub Desktop.
Save zachfeldman/9ecf378e02762b437d30090232a6338d to your computer and use it in GitHub Desktop.
Resources Mentioned in Framework Video

Useful Tools and Resources

Ubuntu

Ubuntu
Ubuntu is a popular Linux distribution for desktops, servers, and cloud computing, known for its ease of use and robust community support.

Toshy

Toshy
Toshy is a tool that remaps keyboard shortcuts on Linux to make them similar to MacOS, facilitating a smoother transition for Mac users.

Kinto

Kinto
Kinto is a cross-platform key remapping tool that helps users maintain their keyboard shortcuts when switching between MacOS and Linux.

1Password

1Password
1Password is a password manager that securely stores and manages user passwords and sensitive information across multiple devices.

Bitwarden

Bitwarden
Bitwarden is an open-source password manager that provides secure password storage and management for individuals and teams.

Steam

Steam
Steam is a digital distribution platform for video games, offering a wide range of games and a robust community for gamers.

Proton

Proton
Proton is a compatibility layer developed by Valve that uses WINE (Wine Is Not an Emulator) to allow Windows games to run on Linux through the Steam platform, enhancing the gaming experience on Linux.

Tilix

Tilix
Tilix is a tiling terminal emulator for Linux that allows users to arrange terminal windows in various layouts for better productivity.

Visual Studio Code

Visual Studio Code
Visual Studio Code is a free, open-source code editor developed by Microsoft, offering support for debugging, syntax highlighting, and version control.

Sublime Text

Sublime Text
Sublime Text is a sophisticated text editor for code, markup, and prose, known for its speed and advanced features.

VirtualBox

VirtualBox
VirtualBox is a free and open-source virtualization software that allows users to run multiple operating systems simultaneously on a single hardware platform.

Figma

Figma
Figma is a web-based design tool used for interface design, prototyping, and collaboration, popular among designers and developers.

GIMP

GIMP
GIMP (GNU Image Manipulation Program) is a free and open-source raster graphics editor used for tasks such as photo retouching, image composition, and image authoring.

Photopea

Photopea
Photopea is a free online photo editor that works with both raster and vector graphics, providing a wide range of editing tools similar to Adobe Photoshop.

LibreOffice

LibreOffice
LibreOffice is a free and open-source office suite that includes applications for word processing, spreadsheets, presentations, and more.

VLC Media Player

VLC Media Player
VLC Media Player is a versatile, open-source media player that supports a wide range of audio and video formats on Ubuntu.

Spotify

Spotify
Spotify is a digital music service that gives you access to millions of songs, available on Linux through their desktop application.

@zachfeldman
Copy link
Author

Question on here, so you are using Toshy, are you using it with Wayland or X11?

@Memogcia mostly Wayland these days. I'm using that last GNOME Extension they recommend in the Toshy README to do so. It's not 100% bulletproof, I had to manually select my keyboard type for instance, but seems to work pretty well! Maybe @RedBearAK has more to add to this discussion (btw, amazing tool you've built with Toshy!)

@RedBearAK
Copy link

@zachfeldman

Hey, Zach. I accidentally know who you are, through your YT video related to this gist. By happenstance I saw the video a few weeks back, and was caught very much off guard when you not only mentioned Toshy offhand, but actually spent some time talking about how helpful it is. I never really expected to hear any kind of professional even mention Toshy at all, much less in a video with a fairly wide audience. So that was a bit of an 🤯 moment. (I think it only showed up in my YT recommends because I've watched other videos about Linux, macOS and Framework.)

I promptly put a link to the video in the Toshy README. 😆

Toshy is of course based on the Kinto config, so you can thank the Kinto dev for the basic functionality of how the config works. But I did make the config much more dynamic, wrote a whole new installer, hacked some Wayland support into the keymapper, added a Synergy solution, and have a different way of running the services. Handling the "managed" Python environment with a venv also allows it to install more easily on the distros that have shifted the way they deal with installing extra Python packages. Somehow the installer script is now ~160KB due to needing to handle so many different distro and desktop environment behaviors. And even Python environment quirks.

Regarding needing to specify the keyboard type manually (I hope you're doing that from inside the config file), in my testing I've generally only needed to do that with a keyboard that is acting like a Mac/Apple keyboard (Meta/Super/Win/Cmd key to the left of the Space bar) while not having "Apple" or "Magic" in the device name. So I'm a little confused why you'd need to do that with the Framework laptop keyboard. It should naturally be identified as a "Windows" type keyboard, and work as expected. Unless you're talking about an external "universal" keyboard that's operating in a Mac/iOS mode? I'd be interested in getting more details in a Toshy issue.

Just recently I found a window context solution (for the app-specific remapping) for Wayland compositors using a protocol from wlroots, and then shortly after translated that into a solution for the new COSMIC desktop environment, just in time for the alpha release from Pop!_OS. I think I might have accidentally created a general Linux keymapper that has support for the most Wayland environments at the moment? 🤔 Of course most of the Wayland environments require installing the keymapper via Toshy, to get the supporting components. Some are irritatingly complicated.

GNOME is definitely a pain with needing the 3rd-party shell extensions for the Wayland session. "Xremap" and "Focused Window D-Bus" usually get updated in a reasonable time frame, but I also usually need to prompt the devs to just update the shell version the extensions claim to be compatible with. The GNOME 47 beta just became available a few days ago, so I need to put Fedora Rawhide in a VM and probably notify those devs again right about now. The other extension repo has issues disabled, so I've never communicated with that dev.

From the tray icon menu I saw in your video, you have a fairly recent install of Toshy, but I made some pretty aggressive progress on making the config faster and less CPU intensive recently, so you might want to think about doing a reinstall from a new zip of Toshy.

The Toshy installer is designed to preserve changes you've made to the config file and any preferences you've selected, so you should find it acting exactly the same way after a reinstall. But there may be an obvious difference in the CPU usage of the xwaykeyz process while doing random rapid typing, before and after. (I "mash keys" as fast as I can to test this.) And there will be a couple more services (for Wlroots and COSMIC) that will start up at login and check to see if they are needed for the window context (then they quit immediately if they aren't needed).

@zachfeldman
Copy link
Author

Wow thanks for the shoutout in the README @RedBearAK , I'm honored!! Yes the Wayland support is what really attracted me after Kinto didn't get to that in their roadmap (I know they're buried in isssues and working as fast as they can, so no problems there).

I filed RedBearAK/toshy#377 to track my keyboard issue. I realized on one keyboard my "Command" key is just a keycap I put on the alt key so it's expected. But I had this issue on another, Satechi brand keyboard.

I think I might have accidentally created a general Linux keymapper that has support for the most Wayland environments at the moment?

Hahaha amazing.

I will reinstall Toshy on my systems so I can get those improvements. Keep up the amazing work @RedBearAK !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment