dmenu application launcher that i can call with a hotkey. i don’t have any files or icons on a my desktop, and basically use it like an easily toggleable low security screensaver.
i don’t use a compositor, as i love how snappy i3 is all by itself, and dislike window stacking. i find transparency distracting, and rounded corners and gaps eat up a lot of extra space that i’d prefer to use. i don’t use borders or title panes on my windows, and have a very small polybar setup running at the bottom of my screen that displays some useful info about my system and windows open. i make heavy use of virtual desktops, generally having around 5-7 open at a time, each one dedicated to a separate task.
recently i’ve been trying alacritty, after using st as my main terminal for a long time. so far i really like the yaml config with live reloading, and alacritty seems to start up about equally fast as st (i have not done any benchmarks). i’ve noticed alacritty typically takes up more ram per instance, but it’s a negligible amount (3-5MB) that doesn’t impact performance. alacritty’s font handling is also extremely clear and crisp, and was the main reason i initially started looking for a replacement for st. i slightly miss the ability to use ligatures, but everything else is always perfectly proportioned and aligned, so i’m willing to give up some eye candy for that.
i use zsh for an interactive shell, but do any shell scripting in bash i’m a really big fan of the completion system in zsh, and always find myself disappointed at the tab completion in other shells.
i don’t use a plugin manager, and just have a file that clones the few external repositories i use if they don’t already exist. i have a relatively small .zshrc that calls a bunch of scripts from an include folder for a more modularized setup.
zshmux is a script i wrote that runs whenever i open a new shell to check for running tmux sessions. i can then connect to one, make a new session, or drop into a bare shell depending on what i need to do.
i have a tmux server running continuously on all of my machines, both for persistent environments across sessions, as well as multiplexing/window splitting and scrollback. any project or self-contained task gets it’s own tmux session, allowing me to leave a project at any time, while still keeping the context and history available for picking back up in the future. a session on my computer can run anywhere from a few minutes to indefinitely, depending on what it’s used for. i use tmux-resurrect to keep sessions alive across reboots, letting me keep that context for as long as i need it.
i use neovim, a fork of vim for all of my text editing needs. it’s extremely fast, both computationally, and for actually writing code. there’s no perceptable lag between keypresses, even on extremely underpowered computers, which really helps me keep up my flow while typing. it also really speeds up the editing process itself, as the combition of motions and text objects alone is overwhelmingly powerful.
neovim is also extremely customizable. my config tends towards minimalist at first glance, but everything i need is available using hotkeys. i don’t use a filetree plugin, instead relying on fuzzy finding with telescope, or tab completion in ex mode.
any heavier filesystem work gets done in a tmux split, or using toggleterm if it’s quick.
<SPACE> as my leader key, and i’ve remapped
<ESC> on a system level, giving me a much more comfortable experience that let’s me stay on the home row more. i’ve also remapped window movements to use
<CTL> + hjkl, and use tmux-vim-navigator to move seamlessly between neovim and tmux splits.
a big reason i use neovim over vim is the LSP and treesitter integration, which you can see in effect in the screenshot above. i really enjoy the ability to jump around between areas of the project with out opening the file browser, just
<CTL-[> and you’re at the definition.
at this point i reflexively use vim motions whenever i’m typing, littering my documents and emails with ‘:w’ and ‘ZZ’. but i think this is a small price to pay for the massive advantage these motions give you when writing and editing.
for accessing the internet i mainly use firefox, with a customized userChrome.css and quite a few extensions.
the most important extension i use in my setup is tree-style-tabs which gives you a nesting vertical sidebar for your tabs. it allows you to fit way more tabs on a single screen, and gives much better organization due to the nesting and collapsibility of tab trees.
in combination with tree-style-tabs, i modified my userChrome.css to dynamically, hide the sidebar and address bar unless i mouse over them. this lets me browse the web without any browser decorations, but still have access to them at a moments notice.
another extension i use heavily is multi-account-containers, which lets me isolate webpages into their own separate ‘accounts’. this allows separation between multiple contexts, and gives me contextual account credentials and cookies. for example, accessing my email provider in my work container opens my work email, while doing the same in a personal container opens my personal email. i can have these open right next to each other, and switch between them without logging in and out, or needing two separate browsers.
i use a theme called X::DotShare by crshd that i found here. you can see it use in any screenshots with a terminal. i enjoy a color scheme that has highly distinctive colors, and this satisfies that, while simultaneously being easy on my eyes.
in addition, i use dark reader in firefox to force dark mode on any website i visit. in combination with redshift, this helps a lot with eye strain.
i use a customized version of iosevka, with changes mainly focused on the ability to quickly and accurately distinguish similar glyphs at a glance.
i have music playing at all times, unless i’m doing something that requires me to listen intently or record something. i mainly use cmus running in a tmux session on the device connected to my speakers, as i can control my music from any device i can ssh from for ad-hoc wireless control. cmus reads from a nfs directory on one of my servers, which also hosts a private airsonic instance that lets me listen to my music when i’m away from home.
i monitor my devices using a split screen of htop and btop++, to watch processes and performance respectively.
all of my computers have a tmux session with this setup running in the background so i can easily check on performance at a glance or kill a misbehaving program over ssh.
i also maintain a personal log server that all of my devices sync their logs with for long term storage, with a pretty aggressive log rotation on each device to minimize space while still collecting detailed logs.
these are the things that i use the most in my day to day computer usage. i really try to streamline every process that i use often, and i feel my desktop setup shows that. i plan to write more in depth on each piece in the future, with deeper explorations around the environments for each program.