sotolf

Going rather minimalistic


scrotwm screenshot

As time goes by I've been quite comfortable with staying with Arch-Linux as my operating system, but that bug for something that changes is coming over me now and again, so now mostly I've been spending that energy on window manager hopping rather than on distrohopping.

I have a very terminal based workflow, doing most of my stuff out of terminals, so tiling window managers seem to do a very good job for me. So I'm testing out different tiling window managers to have that fresh new system feeling. I thought some thoughts of how I've been faring this far would be nice.

Qtile

Qtile is a really cool tiling wm written in python, and I really enjoy that it can do so many things rather well, I've been living in it for almost a month now and it has been serving me well, but it always has been feeling a tiny bit sluggish and resource heavy, and it has a lot of features that I don't really use and need. It's configured in python, which is a great plus since it's a quite nice language for me to wrap my head around, and the bar is very nice and fully featured, I'm quite sure I could stay happy living in it, but in the end the tiny bit of lag on my system, and it using a bit much ram for me (2-300 Mb) was enough for me to look at greener grass.

I3

i3 is a wm that I've been using for a long time, It was my daily driver for over 4 years, and it's a very nice and comfortable window manager to work in, the configuration files are easy to understand, and working in it just feels, nice, the reason why I kind of went away from it lately is that I have found that I tend to set up my windows exactly like what the automatic tilers usually do, every time, so I don't really use the manual tiling the way it should be, so that was more or less the reason why I decided to check out something else

Awesomewm

Awesomewm is one that I have been seeing around a lot, so I was trying it out not long ago, trying to get it configured to something that I would be happy with using. But it and I don't seem to agree very much, awesome can do a lot, really a lot, more than I need, so basically most of my time working on configuring it was trying to disable features, and it got annoying playing configuration whack a mole, for every thing I disabled some othre function was sticking out as a sore thumb, and in the end the straw that broke my back was that I wasn't able to stop window icons to show up in the bar, and I don't like the messy look that they left there. I should probably give it another honest try some time, but for now I'm just frustrated with it and just thinking about it makes me annoyed, so I'll let it rest for a while and then see if I can bend it in to doing what I want it to instead of what it wants to do

DWM

DWM is the next one on the docket, and one that I've been kind of afraid of starting since it's configured through editing c source code, and it's kind of very bare without having to patch it, but it turned out not being so bad, and all in all I was pretty happy with the result that I managed to get running. And it's one that I'll be coming back to and use more later, since I basically just got it set up before I found one that I like even more, which is

Spectrwm

Spectrwm is just a small, nice quite minimal wm that does more or less exactly the things that I want, and little more, it has nice configuration files, and 3 layout types, it has a small bar that can show text, and that's basically it, it feels really snappy to work with, and when you get through the configuration file it basically just works. It has very sensible defaults, and since it doesn't really do much, my tendency to endlessly tinkering with my setup kind of doesn't act up, it took about 20 minutes to get a decent setup, and I've only revisited the configuration file a couple of times to set up a keybinding and that has been it, it's my current setup.

So what lies in the future.

I still am not quite finished with my hopping, there are a couple of wms that I still want to try out, probably highest on the list right now is bspwm, and I've also installed herbstluftwm, but the latter one of the two has a quite manual way of tiling that I have come to find not really be too useful for me for the way I work, but I'm willing to give it a try to see if it's something I'd be happy with as well. There is probably a glaring hole there for people that knows tilers, and that is xmonad, yeah, I should probably give it a try, but I don't like the huge buildchain of haskell, it's a cool language and I enjoy writing in it, but man, it's over a Gigabyte of dependencies, it's big and bloated, and I don't really feel like having it installed since I don't really use it for anything else, I might give it a looksie again some time, but it's not something that “sparks joy” for me at the moment.

All in all playing and experimenting with different tilers has been a lot of fun so far, and for sure if you're willing to experiment a bit and feel the itch for distro hopping, maybe doing a bit of wm-hopping would be something for you as well :) Give it a try.

screenshot qtile with terminals

As I'm slowly get my system to something that I Like better I've started to think about backing up my dotfiles, I've just usually resorted to setting up everything from scratch, or copy them over with a USB stick.

I have seen that people post their git files to github, but the process of setting up a repository and symlink everything wasn't really that appealing.

So I was scouring the web for some better solution and I stumbled upon dotbare and it's a really neat solution, it basically makes your home directory into a bare github repository, and then sets up some convenience functions for you, it even has some interactive functions built with fzf which really makes working with it comfortable.

I've aliased my dotbare to config, so now it's really easy for me to just edit my configuration files and then go

config fadd

choose the one I want to commit and press enter, then

config commit

And write a little commit message, and ending with

config push

To upload it to github.

It's a really nice way to keep my configfiles updated, and them being public is also a nice chance for me to take some time to comment and clean them up, since some of them have gotten really messy and not very nice.

So now I have at least most of this setup:

up in my git repository and I'm very happy with the workflow. It's really worth a try if you feel like having a nice way of backing up your dotfiles without having to pollute your system with dozens of symliks.

The first few days of Advent of code 2020


I've been having a lot of fun these first few days of Advent of code Each year I'm trying to solve it in a new language, I've done Python, Elixir, Rust and Racket, and this year I'm using F#, and I have to say I'm really impressed with how much fun it is to write in it, and how nice an experience it is to work with in general.

I have a github repository of my solutions this year so if you're interested you can look at my progress.

I've found the easiest way to set up a working environment for F# is to just use visual studio code and the ionide plugin, it has neat plugins and it makes it easy to test out things in a repl to check if what I wrote actually matches up with what I intended it to do.

The more I use F# the more I'm impressed at how clear and understandable it makes the code, and the syntax is really neat, not too wordy, but also not so terse that it's being too cryptic. The type inference is really good and the strong typing has saved my butt multiple times when I forgot a parameter and started making unintentionally curried functions.

Through the interoperation with C# it also has libraries for a lot of different things, and since dotnet core now are well supported under linux it's really a lot less hassle than the last time that I tried to get it up and running.

As for the calendar itself, this year it hasn't been that difficult yet, but it's just the beginning, so it's probably coming. I'm not competing for time or anything, I just want to get through as much as I can and learn as much as I can. What I'll be doing this year that I didn't manage too well last year, is to actually look at other's solutions and ask for help if I'm in over my head, and try not to just bang my head against the wall and give up.

As a last little thing there is an awesome community over at reddit and it's crazy to see all the shenanigans that people get up to there, and it's so friendly and helpful.

I think that's all that I had on my mind today, I'll try to keep up writing here to get used to not letting things go for too long.

Advent of Code

So tomorrow it's time for Advent of code again, and I'm really looking forward to it. There shouldn't be many people not knowing what it is now after years of the “contest” going on. I'll be taking part of it again, like I've done every year since 2016 now, it's just such a fun little thing to work on. And doing it together with the really nice community over at reddit also makes it even more fun.

I'm usually working in a new language every year, which might be the reason why I never manage to go through everything, but it's just such a nice experience to work through the troubles that I find and trying to get into the language, and doing these problems really help.

I started out doing AoC in 2016 and since it was the first time trying something I was doing it in python, and redoing some of the days later in other languages, and I really got into it, just getting part of the story and solving by itself was so much fun.

Then in 2017 I decided to do the calendar in Elixir, and it went to my surprise way better than I thougth it would, and it's until now the farthest that I've got through the calendar before finding days where I couldn't go any further.

2018 was my Rust year, and I was struggling a lot, first of all rust wasn't as good as it is now, and secondly I had very little clue about what I was doing, so that was the year of fighting the borrow checker, I'm thinking about actually doing some rust again though so it didn't scare me away, it's a fun langauge to play with.

Racket was my language last year, And it was a lot of fun, not having used scheme that much it was a lot of fun to learn, and again I did better than I thought I would, I was burning out around day 17 or something, but it really was fun, and I learned a lot about racket and schemes.

So that brings us to this year, And this year I'm planning to do F# the tools has come quite far since the first time that I gave it a try, and I really like the syntax, it just looks good in my eyes, so now let's see how it is when I put it to a bit more of a test than just the small things that I've done until now, and I'm really looking forward to it.

I hope to see you too this year, have a lot of fun and learn something new :)

Getting back into Linux

So I was thinking I'll try out this blogging thing again to get some writing done, and I hope I will be able to keep it up, I'm not really thinking anyone's going to be reading it, but it might be nice to have for myself

I got myself a new cheapo laptop in the beginning of this year and since it came with win10 and had WSL on it I kept it on windows, mostly to be able to play games.

But then a couple of weeks ago my urges to tinker started resurfacing, and I missed working in a tiling wm so well, in an inspired moment I decided to just nuke everything on that PC and install Linux. Now since it's over a year ago since I last was doing anything other than server work on it, I was thinking to just go with one of the larger distros, but the problem was, because of the corona thing, no stores was open, I was too lazy to go to work and pick up a USB stick and I was impatient so then the saga began.

I researched a bit and found out about unetbootin, which has the functionality of booting into an unpacked iso on the machine itself which would make it possible for me to install a distro without much problems. But no, my machine only booted with EFI, and that does not really play nice with unetbootin at all.

After a lot of research again I found a solution for the problem, the rEFInd bootloader is installable in windows and would allow me to boot from another partition on my system, which made the thing I was about to do possible, but first of all a warning don't do what I did if you have no way of rescuing your system, with that out of the way.

So I installed the rEFInd bootloader, and found that my PC had a windows rescue partition that was 1 GB at the end of the disk, so I went ahead and deleted it since I wasn't going to need it, also since it was only 1 GB it reduced the amount of distros I could install, but I found that Arch has one that is small enough to fit in, so I decided to just jump in again legs first.

So I crossed my fingers and rebooted my machine, and it all worked, I chose my arch partition, and from there it was smooth sailing, the Arch install process doesn't hold your hand, but also it's not that difficult to do, just keep your tongue straight in your mouth and you'll get there.

And from there I've been slowly starting to tinker and customize my system and it's so much fun, I now have a qtile-window manager setup that I'm really happy with, and it just feels like being home again.

So now I've reopened pandora's tinker-box, and I'm having so much fun with it!