Issue at hand.
I have always done multi/tri-head displays in a side-by-side configuration but I have noticed recently that I was mainly focused on my external secondary display. My primary display is the laptop screen at 2880x1620 on a small 14” screen and an external 32” also at 2880x1620. I have always battled bad posture, especially when on the computer for long hours. After an 8hour day, the base of my neck was killing me. Obviously mistakes were made with my current setup and I was left with one option. To continue to use multiple displays, I must stack my secondary display above my laptop which will remove the repitive movements of my neck shifted to the side for hours while focused on a task. I made the move and implemented some health based notifications to give myself reminders regarding my posture as well as taking breaks and resting my eyes. This small changes lead me to take the initiative and see what changes I can implement to streamline my work-flow and increase productivity. Here goes!
I have always customized my desktop environments to look good since I do have to stare at this thing 8+ hours each day. When using GNOME I would use extensions to ‘tweak’ the default behavior in hopes of streamlining my workflow when eyes on screen. I have read plenty of articles from developers and admins alike swearing by tiling window managers, especially the improvements in productivty and workflow. These included: awesomeWM, i3/i3gaps, qtile, bspwm, xmonaid and so on… After test driving all the ones I mentioned above, I settled on xmonad. From my first test-run, it just felt good and right for me. Researching various unique setups, I stumbled across Axarva’s dotfiles-2.0 repo. I really liked his minimalist design and decided to use this as the base for my current setup. I present [Xmonad]: I’ve come to suck your blood.
- Theme/Colorscheme: Dracula-alt-buttons GTK / Dracula
- picom (X compositor)
- tint2 (panels, dock and taskbar)
- eww (sidebar and dashboard)
- dunst (notifications)
- rofi (app switch/launch)
- kitty (colorls gem + ligatures + autocomplete )
- zsh (oh-my-zsh + power10k theme)
- Thunar (file manager)
- qutebrowser / firefox
- FiraCode Nerd Font
Kitty’s auto-complete feature is awesome. The fact that you can tab through all command-line switches a command can accept is dope. This setup has 9 workspaces in total to be utilized by 2 independent monitors. I use my external 32” display as primary display above my 14” laptop screen. On the primary monitor, I only use workspaces 1, 3, 5, 7 and 9. I am sure you guessed it, on the laptop I’ll only use 2, 4, 6 and 8. As you’ll see from my config, I utilize auto-placing (doShift) of most windows to specific workspaces, in actuality I auto shift every single app I use on the daily. This works for me and ensures applications are indeed where I expect them to be as to not mess up my workflow. Granted, its a simple keystroke(s) to move them “manually”. I also configured tint2 to visually signal what’s going on,
I do not normally end up using all 9 workspaces at the same time as more often then not I may be only utilizing 4 to 6 workspaces across both displays. Using tint2 to provide a visual legend of which workspace is currently toggled, which workspaces have inactive tasks and which are unoccupied is convenient.
I am always on the command line for the vast majority of my day/tasks. While I had been using vscodium I wanted to ditch it and go back to vim/nvim. I am familiar with the keybindings and it just works for me. Coupled with an extensive plugin ecosystem you can achieve almost like for like replacement of vscode (CoC anyone?) not to mention for resource footprint is non-existant compared to the 400mb+ for vscodium on a good-day. I am striving to move to a mouse-free development environment. I am well on my way but I still have a ways to go before i can fully ditch my mouse during coding sessions (for good?).
- Vundle plugin manager
- NERDTree (tabs, devicons, syntax highlighting)
- CoC (must-have)
- FiraCode Nerd Font / Source Code Pro Nerd Font
- jupyter notebook/lab
My workflow includes dealing with fairly detailed and comprehensie tasks (or todo) list that I interact with
multiple times per-dday both personally and professionally. I have been using todo.sh for quite sometime and
only recently (since my move to XMonad) had I used it outside of the terminal. Thaks to the dofi project, I
was able to wrap todo-txt insie of Rofi and invoke via
Win + D
This functionality is the main driving force behind my switch in workflow to a tiling window manager as my daily desktop environment. I am quite aware you have plenty of keybindings for the other major DE’s on Linux. Using a gnome extension I am able to auto place a window in a certain workspace, which xmonad handles right out of the box. Borders and Menus in xmonad? Gone.. here we can configure keybindings for all tasks we need to do. Literally, I may post my entire xmonad.hs soon to show you the level of granularity you can achieve.
||Launch terminal (alacritty)|
||Open rofi menu|
||Open rofi powermenu|
||Open rofi ssh menu|
||Open tasks in rofi|
||Open calibre library|
||Toggle the main bars|
||Activate inhibitor (Stops autolocking)|
||Dectivate inhibitor (Enables autolocking)|
||Toggle gaps (toggle to get screen space)|
||Navigate through windows|
||Navigate through windows|
||Switch through layouts|
||Make a floating window tiled|
||doFloat + move window|
||Resize window and doFloat|
||Start screen recordingg|
||Stop screen recording|
I hope this inspires someone to mix things up and change up their workflow and environments. I found that productivity has increased substantially since I rarely mvoe my hands from the keyboard and the distractions are minimal on screen. Of course this all is null and void if I cannot stay on task, but thankfully I have integrated todo.sh into my workflow as I am still learning to be disclipined while working from home. More to come on that. If you are interested in running this very same setup, you can head over to github and check out my dotfiles but you’ll definitely need to be a fan of the dracula colorscheme cause its present everywhere in my setup.
Later and happy tiling!!