I'm sharing my workflow I've developed over the past few years given that it might interest some of you, apart from the fact that so few of my friends have seen me use it in person. Beyond that, I'm posting because 1) I can and 2) this quarantine induced cabin fever is driving me up the wall. For reference, the pictures I've uploaded are a pair of screenshots for my two 3440x1440 monitors. The two are identical U3415WB Dell ultrawides I bought circa 2016. I use them both in portrait mode since the screen real estate for anything worth doing (with the notable exception of working with media) is far more valuable vertically than it is horizontally. In fact, the design of text in general behaves as much. Although they look somewhat ridiculous positioned this way given how long they are, I'm frequently able to read entire wiki pages without paging up and down and generally do not worry about moving the viewport so that I may read/write. It's a luxury I didn't know I wanted. In addition, the U2315WBs are curved, and while curved monitors are for the most part gimmicks, they do help with viewing angles, and this becomes truer the more elongated they become. As a monitor increases in size, so does the viewing angle and the capacity of the current reigning display technology (the LCD) to display an image faithfully is compromised given that by their nature they will distort.
My principle machine is running a bespoke OS based on Gentoo and Pentoo. The defining characteristic of Gentoo, a Linux based distro, is that it is source based, while Pentoo adds pentesting capabilities on top of base Gentoo. Typically in an OS, to install a program you'd download a binary that has been compiled for you. Programs begin from source (code), after all, and compilation allows them to be run by translating them into machine code. You'll run the application and not think twice about this, or once for that matter. However, for the power users out there - in particular the power user-developers or, rarer yet, power user-developer-engineers - this comfort is not without sacrifice. The most salient is choice. For open source programs, there are a number of decisions a developer or maintainer might take during compilation as a consequence of appealing to a wider user base. For instance, the compiler has optimization flags, some of which are aggressive and never see the light of day because of their potential risk for introducing instability, nipping the possibility for targeting specific architectures and thus faster execution times. More significantly, compiler use flags provide the option to include or exclude components, some of which you may never use or need, bogging down what could be a more performant application in respect to either time or space, or conversely, adding support for legacy or niche tech you would otherwise consider important. I compile everything to my needs/tastes, including the Linux kernel, and as a consequence it's the leanest machine this side of the Atlantic for all that it does, with the added effect of all but eliminating the opaqueness that plagues the vast majority of OSs. It is no longer a "black box" as I know exactly what is installed and how it is configured. It's like the difference between a fine tailored suit and one picked off the rack at whats-it-r-us's. One of them makes you look like a millionaire. The other makes you look like a sack of potatoes and lasts for just as long. The metaphor extends itself past the aesthetics of course, and functionally the OS becomes what it should be: a viable operating system, and not a bloated contorted shell of its former self.
Generally, the defining feature of an OS is the desktop environment, the standard interface we all know: shortcuts splattered across the home screen, a menubar, the ubiquitous close/maximize/minimize window options, etc. Desktop environments are fundamentally mouse oriented, and they make sense when the application is principally graphical as the precision for maneuvering the cursor is obvious in use cases like photo editing or video games. Its ease of use is also apparent. The price of admission, however, is time. They are really fucking slow. For this very reason I use a tiling window manager sans desktop environment to run my applications and automagically position them across the screens. The window manager, in this case the aptly named Awesome, will drape any application every which way in one fell keystroke, while maximizing the space of the screen it occupies with a proportion you specify. Typing commands/hotkeys for this purpose requires an awfully steep learning curve and a significant investment in time, but the payoff is present any time I boot or bring up an environment requiring a suite of applications, which is practically every day. So, no mouse. It's great. Smooth as butter. I like to pretend I'm conducting an orchestra, because that's what it looks like anyway and I don't just mean this metaphorically.
I use conky to display telemetric data (shown on the bottom) that is partly generated using scripts I wrote to display temperature, core and memory usage, disk capacity, current kernel version, and days since I've last synced the machine with Gentoo upstream. One of the first lessons I learned in computer maintenance and PC builds in general is the usage of live telemetry so you can know when your CPU is about to catch on fire. I've been burned by this more than once (note the forced pun here). My NIC is configured with a trunk port that expects two VLANs corresponding to a home network and a management network from which I administer my "homelab". I run the ifplugd daemon to automatically hide and spawn interfaces as they are pulled up or pulled down, and so the activity of these can be monitored. Should I work on my laptop away from my monitors (say at my favorite bar or away from my daily annoyances at home or whatever), the wireless interface is displayed with a decibel meter instead.
On the left screen you'll see my browser on the top left - qutebrowser, named after the Qt framework. All my applications have vim key bindings (within reason) and qutebrowser is without exception, as this is one of its main features. Use h, j, k, and l to increment/decrement the position of the viewport, Ctrl-d and Ctrl-u to page up and down respectively, Shift-o to type a URI for a new tab, etc. Completion commands are able to auto search any number of websites. If I type the string <o az sous chef knife>, qutebrowser queries Amazon for "sous chef knife". I have a dozen or so of these set up like this: stack overflow, wikipedia, google, etc. It has more impressive/sophisticated features such as macros and script injection, but I'll stop there. I use st as my terminal - st standing for "simple terminal". It's quite lean for a terminal at roughly 5000 LOC, compared to my previous urxvt at roughly 32K LOC, and supports true colors and unicode chars. I don't read Kanji or Cyrillic or Devanagari but they do look awfully pretty on my command line. It was a thoroughly enjoyable exercise to show off the unicode support of st, as there is no garbled output when reading foreign scripts, including wide glyph fonts demanded by some like Chinese, since I've installed fonts that cover most of the world's languages. If you were in the mood to read Egyptian hieroglyphics on your terminal you very well could. It's also considerably faster than any other terminal I've used. I currently use bash as my shell, but the trajectory here points to adopting zsh at some point due to its interoperability and completion features. Regardless, I've customized my prompt to indicate when I am running as root (through color coding), and to show the current user, hostname and a few basic command metrics.
My music player tends to sit at the top left of my right screen. It's something I cobbled together once I became tired of the incessant youtube ads and abominable audio quality (youtube compression does its work here). In essence, it's a double-paned tmux session with ncmpcpp controlling a remote mpd instance on my media server. I use a CLI spectrum visualizer called vis positioned on the bottom pane, with ncmpcpp resting on top. A local mpd instance streams the audio from the remote mpd instance. I use the native mpd client bundled with mpd to start streaming, which works well enough. Since I don't put anything in my audio library unless it's lossless, the sound source is pristine. I've got a decent audio interface (Akai EIE) and excellent headphones (NAD Viso HP50) so the entire signal chain is very clean, or at least sufficiently so to my ears.
I have several custom toolchains I use to develop software, two of which are shown here. I use the TeX typesetting system to create pdf documents. I use vim as my text editor and vimtext alongside a dozen other vim plugins to automatically compile LaTeX/LuaLaTeX code to pdf, which is then opened and rendered using zathura. This is done automatically on save. TeX errors show inside of the editor itself in a separate vim window. For the uninitiated, the typesetting system TeX was created by the venerable computer scientist and prodigy Donald Knuth, who wrote the seminal text on data structures and algorithms (the core mechanisms upon which computer science rests) which served as the sole impetus for its creation. TeX was then further refined by Leslie Lamport into LaTeX, another Turing award recipient known for his work in distributed computing, so you better believe it's glorious, although I'll concede it is of course like anything else not without its many faults. There is a similar workflow for C (left screen), C++, and Python development.
I use a unified color scheme across my applications as well as the OS, so the aesthetic design is coherent and cohesive and functional where it needs to be (e.g. color coding). In the same vein, the wallpaper I've chosen for the left screen is "Italian Girl Drawing Water" by William Adolphe Bouguereau and the wallpaper for the right screen is "School of Athens" by Raphael. Bouguereau is a 19th century French academic painter. I love his work, even if some of it is kind of gaudy, while Raphael needs no introduction. At any rate, these are two of my favorite paintings. I've seen the Raphael fresco in person, that fateful time I got lost in the Vatican museum looking for the bathroom (I'm not joking here, this really happened). I have a third I use when I flip one of the monitors horizontally, "An Experiment on a Bird in the Air Pump" that I saw at the National Gallery many moons ago in London. It brings me warm fuzzy feelings and ye olde Enlightenment vibes. Anyway, the painter is Joseph Wright of Derby, an 18th century English painter. I'm in the midst of programming a wallpaper randomization routine once I get a wrangle on Awesome's lua code so that on startup it should choose other works from a selection of other artists, which should be Very Nice, but I'm uncertain when that will happen.
If you've made it this far, congratulations. I will be the first to acknowledge the pedantic and borderline absurd and obsessive micro optimizations I embellish my machines with - despite their being without question functionally superior. For the overwhelming majority of people, this is all quite unnecessary - even for other developers or software engineers. I understand. But just like those of my friends that happen to be tattoo artists who are inked from head to toe, you won't find a more visceral evidence of the culture I've internalized. In the end the verdict is that this workflow is hilariously fast in parallel to something like you'd expect on Windows, which in comparison now seems astronomically slow. Because of this one could say the grind to implement them is justified, but the reality is that the work I've put in refining my tools stretches beyond the quantitative and clinical analysis of functionality.
I once heard from a visiting professor that the sign you enjoy something immensely is when it causes time to stand still. The shrinks like to call this phenomena a 'flow' state. Technology can be invigorating, especially when it's artfully done, when form follows function and each is given attention. In that light, I suppose one could say these optimizations justify themselves and cease to become unreasonable ventures. I strongly suspect that my path towards self actualization is inextricable from pushing machines to their limit, and so, these kinds of things are meant to be, however ludicrous they might seem from those outside looking in. I won't end every essay with a quote, but I will when I feel it is suitable, and in this case the enthusiasm for making a machine run at its best, with grace, is evident:
Any sufficiently advanced technology is indistinguishable from magic.
-Hazards of Prophecy: Failure of Imagination, Arthur C. Clarke