Ask HN: What linux desktop tools/apps boosted your productivity?
I have switched to Ubuntu 16.04 from MacOS two years ago. Compiz is one of the things helped me manage my workspace and windows which really boosted my productivity. I wonder what other tools I might be missing out.
Thank you.
95 comments
[ 5.6 ms ] story [ 144 ms ] thread- AutoKey (key shortcuts)
- Conky (desktop widgets)
- lsyncd (syncing files)
I was using Conky for a todo list on my second monitor, then I added another more specific todo list called "weekdo", one for notes(like how to spell certain words that consistently stymie me). After growing to four lists, each a Conky instance, I wrote a more specific purpose displayer. That was worse on resources, but a rewrite incorporating all the lists into one process was an improvement, even on Conky.
But this is about Conky. Conky pretties up your desktop, displays useful information, and inspires you to take more control of your desktop. Long live Conky.
[1]https://github.com/cjbassi/gotop
https://cerebroapp.com
- Parcelite clipboard history - very useful for various reasons. It's such a basic tool for me now I don't know how people live without one.
Not a tool, but for any shell work learning the readline key bindings is a good time saver: Ctrl+a/e/n/p/b/f. It's just so much more clunky using other keys
My solution to that issue is "just" alternate bindings which obsolete both the standard and vi navigation keys. At the home row, I have the arrow keys on my right hand and a "nav cluster" of my own devising (page up/down, tab left/right, workspace left/right) on the left.
Definitely not for everyone, but a possible way to have your cake and eat it too.
- I use i3 inside XFCE. This allows me to use the xfce launcher, status bar, tray icons and other goodies, e.g. adding external monitor pops open the display properties, volume bar is available anytime. All this saves me from binding buttons & doing other changes in my i3 config.
- Since Win+{1,2,...0} (buttons which change workspaces in i3) are now hardwired in my brain, I have arranged the icons on the taskbar of my Windows-10 machine to what I have in i3.
Win+1 is assigned to Emacs on i3, so that's the first icon on my windows taskbar.
Win+2 -> shell/git bash
Win+3 -> Thunar/Windows Explorer
Win+4 -> Firefox/Firefox
Win+7 -> Anki/Anki
This saves a lot of brain cycles, as my Windows workflow is also a bit like what I usually use on Debian.
Last week I try using EXWM but wasn't able to make it work as per my expectations, so switched back to i3, but EXWM is definitely a TODO on my list.
Shutter for screen shots
parsec for streaming a local windows box
I'm also shamelessly addicted to guake (drop down terminal). I know there are more robust alternatives, but having grown up with Quake/CS, it just feels right.
From the website's description:
Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.
I just copied some of the set-up from here[1]
[0] - https://orgmode.org/
[1] - http://doc.norang.ca/org-mode.html
I use almost nothing out of it. I have the default spacemacs configuration. I literaly just write bullet lists and cycle TODO and DONE states on them. Still the best todo-manager :)
Anyhow, some time ago I came across a blog post where the author wrote some elisp just to copy the stuff from clipboard, save it, link it to the buffer. I don't have the link handy, but maybe this SO answer might help you:
https://stackoverflow.com/questions/17435995/paste-an-image-...
https://gist.github.com/fikovnik/e0fa86aea29f761b6a4ddcfda46...
I take big stabs at it becoming my goto. I feel like I've done a lifetime of development to just dance around figuring out this tool.
Do you have any suggestions for making it stick? I'm making 2019 my year to really get emacs and put some time into fun Lisp. Any tips relating specifically to org-mode and not just "how to not quit using emacs" would be greatly appreciated.
[0] https://www.literatureandlatte.com/store
My job has shifted towards ops and managing kubernetes clusters at scale. Since I'm refiguring everything I used to do this year, I figure I might as well try things I always meant to that have been around forever and seem to do it just fine without buying into commercial tools (that largely aren't available for my platform anyway).
Because of my work focus on virtualization, my primary machine is starting to be a mini cluster and I have a 5 node rack adjacent. Being portable between all these environments is becoming an asset very quickly.
Maybe it's silly, but I'm not moving around comfortably in almost anything like I was. World's my oyster I guess.
The video on golfing is great to learn how to "think Emacs": https://www.youtube.com/watch?v=dE2haYu0co8
Avoid using Ctrl; either palm-press or map Capslock to Ctrl. http://ergoemacs.org/emacs/emacs_pinky.html
Don't lean heavily on movement commands, the easiest way to navigate around Emacs is searching. Instead of pressing C-p five times or even C-u C-p C-p, just search for the word you're going to with C-s.
Official reference card is good: https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf
Steal heavily from other people's configs. Since you're new and you like org-mode see these two files: https://github.com/magnars/.emacs.d/blob/master/settings/san... http://pages.sachachua.com/.emacs.d/Sacha.html#org2b182a5
Hope that helps.
Most of my day-to-day development happens in VS Code, most of my in-console or over-the-ssh editing in vim. For interactive/exploratory programming I often grab jupyter notebook.
But having emacs with an org-file open at all times is nice. The bullet lists are pretty :-) And I am slowly branching out to other things that org-mode is capable off. I.e. I started writing a presentation outline in org-mode, then I realized that I could just write the whole thing there and export it to reveal-js html with few key-strokes.
Emacs kinda feel like a weird animal when getting started but that's just muscle memory. The best way to have it stick is to get a better understanding of its power. I wrote a 5 episode tutorial series that should get you on the right path: https://mickael.kerjean.me/2017/03/18/emacs-tutorial-series-...
I like the format. Thanks!
My WM of choice is StumpWM (with XMonad-like shortcuts on Super) and my terminal of choice is simply xterm running Bash.
This setup is incredibly minimal and efficient in all respects.
My Ubuntu box (an Ubuntu-approved Dell tower IIRC) required constant attention and ultimately died after two years while my mid-2011 Mac Mini went through 4 major Mac OSX/MacOS versions and countless security patches without a single issue and all the company-provided MacBooks I've had since 2010 have been zero-maintenance.
However, linux has improved over time for desktop use, and more things have moved to the web. So really I feel like I rarely leave the browser. And if I do, it is just to a text editor or IDE.
Having a lightweight setup eliminates a lot of problems. I try to install almost nothing, honestly.
The less you have installed, the less attack surface you have, the less updates you need, and the less chance for breakage.
Usually if something breaks in desktop linux for me, it is because I know I was doing something non-standard. Trying to use unstable packages, custom settings, etc.
Apple solves that problem by barely letting you do anything at all, thus removing the PEBKAC.
There are some issues if I am nitpicking but overall the experience is just outstanding.
Unfortunately, you'll have to test them for yourself since I don't have a use for them.
https://github.com/VSCodium/vscodium
Osx breaks my dev environment at every update. there's just news on this site saying it dropped support for some nvidia card.
In the meantime, I've had the same debian install for 5 years, and zero trouble.
Let's discuss the question instead.
Furthermore, you can take advantage of rsync ignore files to exclude things you don't want to back up.
Also, a rolling release distro, which you'd think would be less stable, provides better hardware support as the kernel and firmware packages are much more recent (not to mention libraries/build dependencies). Personally, I'd never go back to a fixed-release distro.
Yep, that seems key. I've just spend full 5 days (I'm in between contracts, so I have the time) trying to install Arch on my Early 2013 15" MacbookPro. I turned out that, due to buggy/nonstandard hardware, a fully functional dual boot with Windows is not possible (if your disk is GPT, you won't have sound on Windows and if it's MBR, the DisplayPort monitor won't come back from suspend on Arch). Just coming to that conclusion took around 4 days of experiments. I've spend one more day trying to set up wireless, and have just given up. There are more interesting things to do with computers than finding workarounds for a minefield of hardware/firmware/drivers bugs.
High school me would have loved installing Arch (I did LFS back then). Current me doesn't have time for that bullshit.
that's headache for me
Redshift for blue light filtering, although KDE now has that built-in.
zsh and the oh-my-zsh suite has been really helpful
A bunch of cli tools are nice. Ripgrep is a super fast grep tool that comes in handy for searching inside of files... can basically search your whole filesystem at lightspeed.
- Clipit - clipboard management
- i3 Desktop window manager - gave me a superb boost of productivity
- Indicator Netspeed unity - live network consumption/speed indicator applet
- Flameshot for screenshots and annotation [1] - Albert Launcher [2] - Jumpapp for quickly launching or switching between windows [3]
They are all desktop agnostic.
[1]: https://github.com/lupoDharkael/flameshot [2]: https://albertlauncher.github.io [3]: https://github.com/mkropat/jumpapp
rsyn^I e.o^I:/va^Iw^I/ ./ -av --prog^I
autocompletes to
rsync example.org:/var/www/ ./ -av --progress
with alternatives listed if I press tab sooner (e.g. --protocol, --protect-args are shown with the purpose of those flags).
On a local filesystem,
ls /v/w/h/i^I
autocompletes to
ls /var/www/html/index.html
The non-default shell tool I use most often is "jq", a JSON processor. I can interact with a REST API, and answer a lot of one-off queries just in the shell.
I should probably write a tab-completion module for our REST API...
iptables -A OUTPUT -p udp --dport 53 -m string --hex-string "|08|facebook|03|com" --algo bm -j DROP
Not joking
rofi - Fast, phenomenally good launcher
terminator - Terminal that allows splitting, tabbing, and more importantly bonding
redshift - Literally, shift my red light levels by time of day
retext - I write a lot of markdown. Seeing it real-time previewed makes life significantly better for me.
steam - A distraction now and then certainly helps
`alias did="vim +'normal Go' +'r!date' ~/did.txt"`
Then type `did` in your terminal and write what you just did.
More generally, you can get a great boost of productivity by mastering your text editor. I have a preference for Vim, but have nothing against emacs.
It also allows for faster throw-away function editing and saving if you want to keep it. `function`, `funced`, `funcsave`, `functions`
* Tmux: Use pane splitting so much, always frustrates me to see others moving so slowly through terminal windows and tabs. bonus: I also have pane splitting to re-attach to existing SSH connection if it was split from a SSH session.
I used to use tmuxinator and probably will again, more valuable if multiple projects simultaneously.
* Guake/Gnome Drop Down Terminal: Terminal dropdown is just such a huge time saver.
* z: jump to recent directories, https://github.com/jethrokuan/z
* fzf: get ctrl + r history search functionality back that bash provides, also provides ctrl + o to open files in $EDITOR https://github.com/jethrokuan/fzf
* copyq: Best clipboard manager evah! You NEED a clipboard manager, can't believe I went years without it, I trigger mine with ctrl + alt + c
* pipe to clipboard: `<command with output> | xsel --clipboard`, wrap xsel in a `cb` abbreviation in fish for autoexpansion. `abbr -a cb xsel --clipboard` may need to install `xsel` first.
* workspace tiling: I map 9 workspaces to the same grid on the keyboard with these keys + an <alt> modifier. I also assign certain applications to always auto-assign to specific workspaces:
w e r
s d f
x c v
* clock: set it to show seconds, you can easily perform loose timing way. Use `time <command>` if you are on the terminal.
* timezone: if you work with a team who is in one timezone, just set it to use their timezone during working day. I made a script to toggle this back and forth easily
I also display my timezone in my tray if I am toggling timezones.
* Arch Linux: On previous distros I would have to futz with package sources way too much. With Arch it is the easiest and most productive ever by using the `yay` package manager/wrapper. I can type `yay -S <package name>` and 99% of the time it will be available and even automates building it from source if there isn't a binary. It just works, I will never go back. Arch has some of the best packaging out there, I will use Arch for this reason alone, it saves many hours of time.
* ethernet cable: I use ethernet cabling whenever possible. Lower latency times and in video conferences you can say "not me" when the stream breaks down. Results in you not having to troubleshoot wifi. Using wires is amazing!
* Jabra 410 WIRED speakerphone: one reason, hardware mute button. Don't have to fiddle through windows to see if you are on mute. Big red ring around the speakerphone shows if you are muted or not.
* Screen annotations + touchscreens: The reason to use a touchscreen with linux is screen annotations. Arch + Gnome 3 works well enough with `yay -S gromit-mpx` as an alternative to Compiz Annotate. This saves time because during presentations you can communicate much more efficiently by drawing a red circle around something. You don't need a touchscreen and can use a mouse pointer, but that does slow things down, still better than no annotations though.
* noise cancelling headphones: this is the best investment I have ever made. Do this.
* Focus music: "hey google, play focus music" and also I purchased lifetime subscriptions for brain.fm and focus@will. I toggle between the 3. Combined with noise cancelling headphones you can get into some killer focus zones with these!
* rubber ducking: similar to other posts here for marking @todos etc, which I may look into their suggestions for a CLI method. But for now I ...
I use zsh myself. Have not tried fish yet but only heard good things about it.
Also, regarding the pipe to clipboard, I liked the 'pbcopy' command on Mac. So, right now I have added an alias pbcopy='xclip -selection clipboard'. It's really handy.
From hardware aspect (although it was never asked), I use a hhkb type-s with the hasu controller. You may think it's a small change, but the fact that you can remap the arrow keys to {h,j,k,l} also helps because you no longer need to stretch your arm to your arrow keys. It did cost a bit of money, but I'm happy that I have it. And aside from the arrow key remap, I also remapped other keys to help with basic functionalities.