# Rahm's Rice'd Desktop Environment This is Rahm's desktop environment. Namely it's an amalgamation of scripts, executables, scum, villany, and configuration all duct-taped together to create a marginally functional desktop environment of dubious stability, but it seems to be pretty good. [![Screenshot](screenshot.jpg)](https://git.josher.dev/cgit/rde.git/) (BTW, I'm not actually in Dallas, I'm in the same place as Mr. Money Moustache, and yes, I use Arch btw) # Requirements * Definitely need GHC. If you use Hugs, you deserve the pain. * X11, duh! * Xinerama is helpful * Monofur NERD Font. Should be included with the NERD fonts package. * GCC, because when I take off my Functional Programmer hat, I put on my systems-dev glasses. * Perl, because when I take off my systems-dev glasses, I put on my UNIX beard. * Not Python, because when I take off the UNIX beard I skip the Soy latte and go back to the FP hat. * Knowledge of Linux/Unix or an intense desire for masochism (which, as long as it's consensual, I'm totally fine with.) * Linux. BSD support is coming, be patient!! * Not Winblows -- Get out of here * Not MacOS -- I don't have a clever pejorative. # Configuration ## Window Manager The window manager is XMonad, obviously, but _heavily_ configured. The way I configured XMonad is to be similar to Vim in that some keys are actually modal. I.e. require another key-press to effectuate the system Probably the biggest difference between this configuration and standard configurations is that there are _many_ workspaces. Actually, there are 36 workspaces, one for each letter and digit (in the English alphabet). Navigating between all these workspaces is easy, though, just type Mod+g followed by the workspace you're trying to go to! (G stands for 'go' btw). ### Some things to note I type in Programmer Dvorak (because of course I do) so many of the key bindings make little to no sense on QWERTY layout and should probably be changed by the user. It's in my TODO list to make a QWERTY variant, but I haven't gotten to it. _Also_ my ModKey is the Hyper key (because of course it is!), which the astute among you might notice does not actually exist on the keyboard. Aha! [Rahm's XKb Layout](https://git.josher.dev/cgit/rkb.git) strikes again! I have remapped pretty much all my modifier keys and reanimated the long-dead Hyper key! "But, Rahm, you handsome, yet dark and mysterious \*nix landchad, why would you use such a key no one uses?", I hear you ask. Well, my delightful, yet young compatriot, it is precisely because no one uses it that I use it. See, it is a decent way of preventing conflicting bindings in other applications! Plus it opens the door for using the Super key is [Rahm's patched Alacritty](https://git.josher.dev/cgit/r-alacritty.git) and thus use it in [Rahm's patched Neovim](https://git.josher.dev/cgit/rneovim.git) to potentially program some of [Rahm's STM32 Christmas Lights](https://git.josher.dev/cgit/stm34l4.git). **Anyway**, the salient point is that I recommend you learn Programmer Dvorak and switch your keyboard layout to [Rahm's XKb Layout](https://git.josher.dev/cgit/rkb.git), but in the off chance you decide against that, you can change the mod key to Super in `Main.hs`. ## Bar The Bar Is XMobar, of course, but again, heavily modified. ### Features * OS Logo * For Debian, Arch, Ubuntu and BSD * Kernel version * Date * Shows workspace layout as icon (I'm quite proud of this! It took forever to get working!) * Workspaces * Red is current * Blue is not current, but visible * Gray is not visible * Window Name * Time * CPU and Mem Usage displayed as dashes. * Weather Info * Spotify Info * Bluetooth Info * Battery Info ## Battery XMobar's battery plugin is not quite good enough. I want to be able to display an icon as I'm charging, etc. So, I included a battery monitor C program designed to interface with XMobar. Namely the program is in `xmobar/extras/battery/battery.c`. ## Weather The Weather is controlled by a barely functional Perl script which Hard Codes the weather station to KLMO (Longmont, CO). Maybe you should change that? The TODO here is to use wttr.in, but I'm too lazy to fix it. ## Spotify If you don't use Spotify, then I'm sorry. It's one of the pieces of proprietary garbage (PG, for short) I allow on my system (along with the Nvidia Drivers and Intel Management Sytem, ick). Rde is admittedly coupled with Spotify, and contains a spotify-control script to work with it. Maybe you should make that script work with your media player? ## Bluetooth The `bluetooth-select` script allows the user to connect to bluetooth devices. If you haven't paired your bluetooth device yet, maybe you should use `bluetoothctl`? ## Compositor Picom/Compton is my compositor, and it mostly works, but sometimes doesn't.