Being Productive on Linux
This is the third post in my series on finding an alternative to Mac OS X. Part 2 was about my experience with elementary OS and the switch back to Arch 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.deb
will automatically resolve package dependencies unlikedpkg -i
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
In part 2 I settled on Budgie for my desktop environment. I've since switched back to GNOME with the Dash to panel extension, which gives a very Budgie-esque result:
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
- Limited,
Alt+Tab
implementation. - 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 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 work flow.
So here's how I've gone about replacing my most important productivity tools:
Launcher
Albert
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).
Clipboard History
CopyQ
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.
The one minor annoyance is that it's a Qt app so it feels a bit out of place on my predominantly GTK+ desktop. Its window is hidden most of the time anyway so this isn't a huge issue.
Snippets (Text Expansion)
Xpander
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 vim
.
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
section.
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 Tab
issue and ultimately start shifting the implementation from Python to Rust.
Keyboard Customisation
In Part 2 I said the following regarding Karabiner:
The main thing that I'm missing from Karabiner is simultaneous keys. These allow holding
s
andd
to access the arrow keys on thehjkl
keys (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:
Caps Lock
asControl
- Swap
Alt
andSuper
Tab
operates as a modifier to switch to a function layer when held and normalTab
key when pressed and released normally.- The function layer has arrow keys mapped to
hjkl
, so holdingTab
allows me to arrow around without leaving the home row. Home
,Page Down
,Page Up
,End
are bound to keys abovehjkl
on 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.
Subscribe to the feed or follow me on Twitter for updates. If you enjoyed this post consider supporting me on GitHub Sponsors.
This is part 3 in a series. Read Part 4