Being Productive on Linux
I received a lot of great responses to the last post, thanks to all that commented, emailed and shared the post. I’d like to particularly call out the comment that Daniel Foré, the founder of elementary OS left on Reddit:
Hey /u/wezm Sorry to hear that you decided to leave us. We committed HiDPI fixes to screenshot very recently but overall HiDPI support is something we still consider a work in progress. We recently backported the dbus fix and I believe the patched package is currently in staging for testing. The copy paste issue in Mail was also resolved recently. We try to push out updates pretty regularly so this fixes should go out to stable soon.
I hadn’t heard about a couple of the other issues you raised but I’ll follow up on those and see what we can do. We’re a very small team, but I can allocate a bit of our bounty budget to some of these long outstanding problems.
We agree that getting the latest apps is less than ideal right now and we’re working on a solution to address that issue in elementary OS. For now, if you need to install a deb, using
apt install ./app.debwill automatically resolve package dependencies unlike
We really appreciate your feedback and support and hope you’ll decide to come back soon. Either way, I’m glad to see you trying more open source software instead of just going back to MacOS :)
His response was helpful, gracious, and positive, so thank you Daniel.
Desktop Environment Update
The following issues led me to switch back to GNOME:
- No HiDPI icons in the icon bar.
- System tray icons inconsistently sized and spaced in HiDPI
- No grouping of running applications in icon bar:
- Each window shows as an identical icon so it’s difficult to know which one to click.
- You’re driven to clicking on them because there is no overlay when Alt-Tabbing, making the whole process quite hit and miss.
- No keyboard shortcuts for screenshots.
The Budgie developers are aware of many of these issues and are working on a 10.3 release to address them.
On Being Productive
I received some comments regarding my desire to replicate parts of my macOS environment on Linux and the amount of time I’ve taken to make it work for me:
Amazing amount of work to make the environment fit the person. I have long since resigned, and just use the defaults of whatever distro i use. I dont spend much time in the os anyway. Mainly in the apps.
I really don’t get why someone would want to change platform while doing his damnest to keep things exactly as before.[…]
I believe it’s worth the time to optimise my environment. I use a computer every day for work plus a lot of my hobbies/leisure time. As the comic above shows, little wins add up. Even if I spend a bit more time than will be paid back directly, these tweaks can still help you stay in the zone and bring a bit of happiness each time I use them. :-)
I gradually incorporated the tools that I use on macOS over many years. There’s no denying attempting to replicate that gradual work all at once is time-consuming but I think it’s worth it if only to give Linux a fair chance as a macOS replacement. If there are better options on Linux I’m open to them. However, given I know these ones already, the best approach seems to be replicating the functionality I know first. Over time I’m sure I’ll gradually incorporate more Linux specific tools into my workflow.
So here’s how I’ve gone about replacing my most important productivity tools:
Many people pointed me at Albert. I was aware of it but was holding off on installing it because I wanted to give the built-in launchers a fair go before replacing them. elementary, GNOME and Budgie all have a way to summon a search field, enter a search term and launch an app. In the end, I did install Albert as it shows up faster and has extra features like custom web searches (E.g AUR and Arch packages) and a calculator that I was missing from Alfred.
I did have to disable file indexing though. Albert’s memory consumption would climb to over 2Gb with it enabled (bug).
Jim Priest suggested I check out CopyQ for clipboard history. It’s been a great clipboard history replacement. It’s packed with features and I’ve barely scratched the surface on what it can do. I look forward to making more use of it in the future.
Snippets (Text Expansion)
After not having much luck with AutoKey-Py3 I did some more searching and came up with Xpander. I created a PKGBUILD for it since it wasn’t already in the AUR. I then made a conversion script to convert my Alfred snippets into Xpander phrases.
Xpander is pretty reliable at triggering and expanding phrases when it should,
which was not my experience with AutoKey. However, it does weird things to the
Tab key. It appears to send the Tab keypress to all apps and also makes
it necessary to press
Tab twice to invoke completion in the shell and
Needless to say, this is quite frustrating. As a result, I’ve stopped using it
for the moment in favour of my custom keyboard firmware described in the next
I haven’t given up entirely on Xpander though. It mostly works so I’ve been
working on cleaning up the code with a view to adding tests, fixing the
issue and ultimately start shifting the implementation from Python to Rust.
In Part 2 I said the following regarding Karabiner:
The main thing that I’m missing from Karabiner is simultaneous keys. These allow holding
dto access the arrow keys on the
hjklkeys (I.e. access arrow keys without leaving the home row). I haven’t looked into whether this is possible to replicate because I’ve ordered a programmable replacement controller for my Filco mechanical keyboard. I plan to build home row arrows into it so they work on any computer. This will also allow me to move the Caps Lock, Super and Alt config from earlier into the keyboard.
The replacement controller has arrived and I’ve programmed a custom keymap into it that does the following:
Taboperates as a modifier to switch to a function layer when held and normal
Tabkey when pressed and released normally.
- The function layer has arrow keys mapped to
hjkl, so holding
Taballows me to arrow around without leaving the home row.
Endare bound to keys above
hjklon the function layer.
This has largely replicated my use of Karabiner. As a bonus, the new keyboard
firmware also has macro support so I’ve been able to put some of my most used
Alfred snippets directly in the keyboard. I have macros for my name, personal
and work email address, phone number, and more. For example,
Tab+2 types my
email address into any application on any computer the keyboard is plugged
into. I have published the firmware on GitHub.