THIS ARTICLE IS VERY OUT OF DATE. CHANGES TO COME: 🏗️👷
At the moment I have:
Out of that on a daily basis I use my desktop, server, 1 Laptop, and 1 Phone. Most of my computing is done using my laptop since I tend to wander around the house while I’m working on something.
To Make life easier for you If you’re wanting to jump to a specific section then here’s a table of contents for you.
I currently use a Lenovo ThinkPad P50 ad my daily driver laptop. It takes over from where my ThinkPad T430 left off, after a long slew of repairs it was better to just get something new after the hinge broke for the 2nd time. Chosen for its performance and upgradability and additionally the ability to handle more modern video since I like to watch movies and the T430 sometimes had a hard time with newer higher quality codecs.
I currently Dual-Boot between Windows 10 and Solus, spending the majority of my time in Linux since I find it nicer.
Currently the hardware in my laptop is configured with the following specs. There may at some point be the need to increase my storage capacity even further than the current 4TB
The majority of my time is spent using Linux since there is little that I can’t do on it. I am slowly curating a set of software that I commonly use. But at the moment I use Solus as my distro with custom forks of DWM and other suckless tools to create a desktop that works for me.
As It says in the overview I run Solus Linux. Originally I ran ArchLinux on every Linux machine I had. But I decided to try something different since, while I found ArchLinux did everything that I wanted while allowing me full control over how it did it, I just felt like I wanted a change.
I found Solus after hearing about Pardus and the PiSi package manager. I was interested since the fork of PiSi that Solus uses can use package deltas to reduce the download time of updates, and with Solus being a curated rolling release it makes sense to minimise the size of updates to keep download times low.
The only drawback to using Solus instead of arch is that there is no
AUR equivalent so some of the software that I might want to use might
not be available, for example the libxft-bgra package that
fixes colour emoji rendering in libxft. Luckily Solus packages are build
using a system called solbuild which is easy enough to
understand using a YAML syntax file that defines all
of the build information in a declarative manner. This allows me to
avoid manually installing programs and affords me all of the protection
that eopkg gives.
The package manager eopkg is in my experience easy to use and also relatively simple to script. It also has the ability to check package consistency and detect file conflicts. Eopkg also keeps a transaction log that allows for easy roll-back to an earlier state if changes break something (an issue I am yet to face). Eopkg also ensures against kernel issues by intentionally not removing old kernel versions, instead opting to add the new kernel as a new entry in the boot loader and setting it as default.
Like many others in the Linux community I too have been sucked into the rabbit-hole of tiling window managers. From watching various videos by Luke Smith I picked up on the HOLY entity that is dmenu. And after a short while decided I would try a tiling window manager. Not being sure how it all worked I initially used Luke’s LARBS system on a spare laptop. While it certainly proved an interesting look at the world of ricing it didn’t quite feel right for me.
In the end After a long time experimenting with different methods I
decided to make my own build of DWM Not being massively skilled with git, and
having no experience with C I figured this would be quite a challenge.
However, after a few days Weeks I had a stable and
functional build of dwm.
This wasn’t enough though..
I was lacking a nice status bar. I wanted a system tray. I NEEDED a better colour scheme. So it was time for a refresh and restart. And after having a look at the available patches, of which there are quite a lot, I had a list. Unfortunately, it was a long list and despite my best efforts I just couldn’t get them all to play nicely. I figured I was going to have to start learning C, or at least work out how to use a difftool properly.
The solution appeared in the form of a fork that had the patches already integrated with compiler macros used to only activate the ones that I wanted. This allowed me to quickly Test out other patches and eventually I found a set that works for me, these are available as a repo on GitHub.
I guess it’s worth pointing out how I do my statusbar since it is an integral part of my setup. If you’ve looked at my dwm repo then you would have seen that I use the systray patch, I have this enabled since I use some applications that work better with a tray icon (e.g kde connect) Also I use dwmblocks to create my statusbar (Check Later as I will create a repo for the scripts and my dwmblocks). I use most of Luke Smith’s scripts, with the exception of some that I have either modified or created myself, while also using his build of dwmblocks.
And since then I haven’t really looked back. I find that I work faster and have a better set of workflows since I made the switch. Now I find it weird to switch back to a full desktop environment.
I am attempting to keep my software choices as minimalist as possible, however there are some “bloated” applications that I use simply because I want to. This is in no way an exhaustive list, but I will attempt to address the most common things that people will ask about. I might also include some script snippets where relevant.
I suppose since I spend the majority of my time doing it the first thing I will mention is how I listen to music. I mostly listen to an offline music library and I play that using mpd as my music server. Which honestly might as well just be called the standard music server since it’s so ubiquitous. And in an unsurprising move I supplement it by using the abhorrently named ncmpcpp which I am still configuring to get the keybindings right for me.
Second to my music library I listen to online radio. I do this using a bash script that utilises dmenu and mpv to stream the radio without a clunky web app in the way. This is probably a good point for a code snippet to break up the monotony of my rambling.
To keep this code block “short” I’ve removed all but one of the stations. (it’s also worth noting that this script relies on my build of dmenu and will not work out of the box.)
#!/bin/bash
## Station format NAME¬STREAM-URL
## list must end with 'exit¬exit'
readonly SplitChar='¬'
readonly Stations="BBC Radio 1¬http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p
exit¬exit"
chooseStation() {
DmenuArgs='-l 10 -R -c -bw 3 -p'
DmenuPrompt="Radio Station:"
StationNames="$(echo "$Stations" | cut -d"$SplitChar" -f 1)"
ChosenStationName="$(echo "$StationNames" | dmenu $DmenuArgs "$DmenuPrompt" )"
[ -z "$ChosenStationName" ] && { echo "exit"; return; }
echo $ChosenStationName > "$HOME/.RadioOn"
ChosenStationUrl="$(echo "$Stations" | grep "${ChosenStationName}¬" | cut -d"$SplitChar" -f 2 )"
echo "$ChosenStationUrl"
}
Control() {
[ -z "$1" ] && exit 0
mpvCommand="$1"
case $mpvCommand in
stop)
playerctl -p mpv stop
;;
pause)
playerctl -p mpv pause
;;
play)
playerctl -p mpv play
;;
toggle)
playerctl -p mpv play-pause
;;
*)
playerctl -p mpv stop
;;
esac
}
arg="$1"
if [[ -f "$HOME/.RadioOn" ]]; then
Control "$arg"
exit
fi
chosen=""
echo "t" > "$HOME/.RadioOn"
while [[ "$chosen" != "exit" ]]; do
chosen="$(chooseStation)"
[ "$chosen" != "exit" ] && mpv --no-terminal "$chosen" || break
done
rm "$HOME/.RadioOn"
The next most common thing that I do is browse the web. Now I personally use Microsoft Edge. And honestly there isn’t much of a reason to why other than I like how it works. Browsers are subjective and what I like to use may not be what you use.
Next I think I’ll talk video since I do like to watch films. There’s not really much to say here I use mpv configured to do hardware decoding, leveraging the GPU since I have it. I normally try to keep my media local since it means less time waiting for things to buffer and that I can watch things without network.
It’s worth mentioning the terminal emulator that I use while I’m talking about a majority CLI piece of software. Following in the footsteps of my WM I decided to use st another piece of suckless software. I took a similiar approach to this as I did to DWM except I skipped the manual patching and just went for the flexipatch build.
As I’m sure you can tell from the fact that I’m hosting a website I have a server. Unlike some people who have more liquid assets than me I own my server outright. This means that I don’t have to pay any costs bar the expense of running it.
This also gives me the flexibility to do anything I want both hardware and software wise. If I want more space I can just swap some drives. If i need some odd setup for some sofware I can do that.
My current server is a HP ProLiant DL380 G6. And I’ve now owned it
for about 4/
The server currenly runs Fedora 34 (Server edition). and hosts a variety of services.
As this server is also a bit of a testbed the software on it varies. But at a base overview I use neovim as my editor, zsh as my shell, and run a gitea instance to store my projects. I use Fail2Ban to catch anyone trying (and subsequently failing) to access the server by ssh. And have at least 1 minecraft server running most of the time