Desktop setup for an efficient development workflow

Is this even important? Even though sometimes is a neglected aspect of the development environment, the desktop setup is actually really important in the long run for increasing the comfort of opening/managing applications.

 

It may not look significant, but reducing the amount of time and effort spent on managing the multiple applications needed for the development helps a lot in avoiding the physical and mental strain that comes with repetitive actions.

Need some inspiration? Here’s my core setup:

Operating System: Kubuntu 16.04.3 LTS

KDE Plasma Version: 5.8.7

Multi-monitor and grouping of applications on each one

I use 2 monitors, but in most cases, 3 monitors are even better. When using more than one monitor you’ll have to think about which applications go on which screen – there is no definitive answer to this, you need to find whatever fits your specific needs. In my case, I prefer to keep the code tools on the main screen (or on the left one if the displays are symmetrical as in the case of a desktop computer. If you use a laptop, then the laptop’s display is the main one) and the output of the code (the browser in most cases for the web development) on the secondary screen. Chances are, you’ll be spending most of your time looking at the code rather than looking at the browser.

The window shortcuts feature from Plasma

KDE Plasma comes with a very useful feature that allows you to bring a certain application window into focus by pressing a custom key combination (more specifically, this is a feature of Plasma’s window manager, kwin). While it may seem easy enough to open an existing window using the mouse on the items in the taskbar/dock or using Alt+Tab, I found that on the long run this is somewhat tiring and time-consuming because it takes the focus away from the working area of the display. Of course, if at some point you find yourself simply switching between 2 windows, nothing can beat a quick tap on the old Alt+Tab combination.

The most basic way to access this feature is by invoking the context menu of the window bar (right click -> More Actions -> Window Shortcut):

window-context-menu

and then pressing some combination in the input that is presented:

window-shortcut-input

Following this, if the assignment was successful, the shortcut is displayed in the window’s title bar:

window-titlebar-with-shortcut

Alternatively, you can make the shortcut persistent by using the special window/application settings (Right click -> More Actions -> Special Application Settings):

special-application-settings

You can experiment with various combinations to see which are more comfortable (if you are going to use this on a regular basis, the shortcuts need to be easy to reach and not too hard on your hands). My setup is to use about 4 permanent shortcuts for the most used applications: the editor: Alt + 1, browser: Alt + 2, terminal: Alt + 3 and the messaging client: Alt + 4. The Alt key combinations are comfortable to use with either the left hand alone (left Alt and the upper number keys) or both hands (right hand on right Alt and left hand on the upper number keys).

Unless you define a custom window/application rule for it, the shortcut will be lost when the application window is closed.

Quickly finding a window on the desktop

Even if you use window shortcuts, you may sometimes go through a busy day where you get a lot of application windows cluttering the screen and repeatedly switching to another window gets annoying. There are 2 ways to speed up the process:

1. Using a desktop effect to present all windows. This is provided not only by KDE Plasma but by most Linux distributions, MS Windows and Mac OS. With Plasma, you can easily search among the open windows by typing a string that is present in the window’s title. This is only available if the desktop effects are enabled.

2. Plasma specific: the window list plugin. You can add this plugin to your panel on a default installation since it’s one of the plugins that ships with the standard Plasma. Just assign a comfortable shortcut to this plasmoid and then click on the window name in the list. It can be navigated with the keyboard as well, but at least in the version present in Plasma 5.8 you have to press Tab before being able to do that (probably some focus issue needs to be fixed by the developers).

window-list-widget

Moving windows between monitors with a keyboard shortcut

All you have to do is assign a shortcut to the “Window to Screen” action in the Global Keyboard Shortcuts settings (System Settings -> Shortcuts -> Global Shortcuts -> KWin). My assignment is Meta + 1 and Meta + 2 (the Meta key is usually the Windows key on most systems).

Launching applications with keyboard shortcuts

Plasma comes with bundled tools for defining custom shortcuts for running a command (System Settings -> Shortcuts -> Custom Shortcuts).

custom-shortcuts

The shortcuts that I have defined and consider useful are Meta + E for opening the file manager (KDE comes with Dolphin as default, but you can also use a twin-panel file manager like Krusader if you feel the need for something more advanced. This shortcut is the same as the one in Ms Windows), Ctrl + backtick for launching a new instance of the terminal emulator and Meta + L for locking the screen. Plasma has its own screen locker but I prefer using i3lock, a tool that comes with the i3 window manager: apt install i3lock.

Terminal setup

Tabs and terminal multiplexing

Plasma comes with its default Konsole terminal emulator, but most of the setup should work with any similar application.

As many other terminal emulators, Konsole features tabs. The most efficient use of the terminal comes with using tabs and a terminal multiplexer. Ubuntu comes by default with byobu which offers this feature via tmux (https://github.com/tmux/tmux/wiki). There are only a few keyboard shortcuts that you need to learn in order to be able to split the terminal or open a new set of terminals. Here is a sample setup:

konsole

There is one tab for each host (including the local machine) and the current tab hosts 2 tmux/byobu panes with 3 splits running different commands. This is extremely useful when you want to easily monitor the output of a command that writes to a log for instance or have connections to different machines on the same screen. Even more, applications opened in byobu will keep running even if the connection drops (on remote machines) and you can reattach to the existing byobu session with all its applications and layout after reconnecting.

By default, Konsole opens a new tab with Ctrl + Shift + T and switches between tabs with Shift + right/left arrow.

Of course, you can always bring up a new Konsole instance using a custom keyboard shortcut (Ctrl + ` in my setup).

Jump!

If you find yourself repeatedly changing directories in the terminal and dislike having to write long paths (especially if your shell does not tolerate case insensitive autocomplete), you may like an enhanced cd command like jump: https://github.com/wting/autojump.

cd-ing to a common but deep path directory is as easy as writing a command like this one in the terminal:

$:~ j path # searches a frequently used cd target dir that contains "path" and switches to it
$:~/a/long/and/boring/but/frequently/used/path

Jump is present in the default Ubuntu repositories as auto jump (apt install autojump to install it).

Messaging

Rambox

Rambox is a client for web-based messaging and emailing services (http://rambox.pro). The application is basically a wrapper around a web view that renders the web application, with the benefit of having notifications for messages/emails in one place. Also, it is lighter than the separate client on the system resources (from my experience, the official Skype client alone, for instance, takes double the amount of RAM as Rambox). At the time of this writing, Rambox is stable and actively developed.

Scroll to Top