mirror of
https://gitlab.com/EternalWanderer/voidcruiser.nl
synced 2025-06-08 14:14:24 +02:00
Move to src dir
This commit is contained in:
parent
79fd67e916
commit
bb3007d53f
83 changed files with 1316 additions and 2 deletions
91
src/content/rambles/xmonad-bits.md
Normal file
91
src/content/rambles/xmonad-bits.md
Normal file
|
@ -0,0 +1,91 @@
|
|||
---
|
||||
title: "Xmonad Configuration Bits"
|
||||
date: "2023-09-13T16:47:48+02:00"
|
||||
author: "$HUMANOID"
|
||||
tags: ["xmonad", "haskell"]
|
||||
description: "A few interesting things I've done with my XMonad config"
|
||||
---
|
||||
|
||||
So the other day I was hacking some more on my XMonad config and came across a
|
||||
few quirks that I don't think I've seen other people implement in their configs.
|
||||
Though truth be told, I haven't really looked at a lot of other people's config
|
||||
files.
|
||||
|
||||
> "Where is your config file anyway?"
|
||||
|
||||
Haven't published it yet as it's still a huge mess of half baked Haskell
|
||||
snippets.
|
||||
|
||||
## Complex terminal sessions
|
||||
|
||||
I use [Kitty](https://sw.kovidgoyal.net/kitty/) as my terminal. It's amazing and
|
||||
probably warrants its own article one day. One of the really cool features is
|
||||
that it allows you to override options on launch with the `-o` or `--override`
|
||||
parameter. This allows you to change any of the values in your `kitty.conf`,
|
||||
this includes the font and colour pallet.
|
||||
|
||||
I've been using this to start terminals with
|
||||
[BQN](https://mlochbaum.github.io/BQN/) compatible font.
|
||||
|
||||
```sh
|
||||
kitty -o font_size=17 -o font_family='BQN386 Unicode' -e bqn
|
||||
```
|
||||
|
||||
This works great and I assigned it to a keybinding for a while. However, some
|
||||
time later I decided to check out [R](https://www.r-project.org/) and wanted to
|
||||
have a similar keybinding with slightly different options. Here it dawned on me
|
||||
that it would be silly to copy-paste the BQN keybinding and change a few things,
|
||||
so I abstracted that away into a function that takes a list of options and feeds
|
||||
that to Kitty.
|
||||
|
||||
```haskell
|
||||
runInKittyWithOpts :: [String] -> String -> X ()
|
||||
runInKittyWithOpts opts executable = spawn $ "kitty "
|
||||
++ (unwords . map ("-o " ++)) opts
|
||||
++ " -e " ++ executable
|
||||
```
|
||||
|
||||
If I now want to start a kitty session with a BQN font and R repl, I can add
|
||||
something like the following to a keybinding:
|
||||
```haskell
|
||||
runInKittyWithOpts rOptions "R"
|
||||
where rOptions = [ "font_size=17"
|
||||
, "font_family='BQN386 Unicode'"
|
||||
]
|
||||
```
|
||||
|
||||
Since I write quite a bit, I also have a kitty session with a giant margin left
|
||||
and right of the "terminal" section of the window as that empty space helps me
|
||||
concentrate. All this is, is the previous function without the `-e` parameter:
|
||||
```haskell
|
||||
kittyWithOpts :: [String] -> X ()
|
||||
kittyWithOpts opts = spawn $ "kitty "
|
||||
++ (unwords . map ("-o " ++)) opts
|
||||
```
|
||||
Though I didn't let that stop me from golfing it down to a point free version:
|
||||
```haskell
|
||||
kittyWithOpts :: [String] -> X ()
|
||||
kittyWithOpts = spawn . ("kitty " ++) . (unwords . map ("-o " ++))
|
||||
```
|
||||
My prefered settings for a "text hole" terminal.
|
||||
```haskell
|
||||
kittyWithOpts [ "font_family='BQN386 Unicode'"
|
||||
, "font_size=14"
|
||||
, "single_window_margin_width='5 200'"
|
||||
]
|
||||
```
|
||||
|
||||
If I were to implement this properly, I would make a kitty module with all
|
||||
options in DataType. But alas, I'm not patient/bored enough for that... yet.
|
||||
|
||||
## Mouse bindings
|
||||
|
||||
I thought it would be neat to be able to scroll up and down while holding my
|
||||
modifier key to change my screen brightness and audio levels. The basic concept
|
||||
here was quite simple; us a lambda function that chucks whatever data it gets
|
||||
onto the ground because the type signature for mousebindings forces you to deal
|
||||
with a focussed window.
|
||||
|
||||
```haskell
|
||||
, ((modMask, button4), \_ -> safeSpawn "pulsemixer" ["--change-volume","+1"])
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue