KISS
There’s a strange display bug which causes a few programs, including st
and conkeror
, to show garbled text after resuming from suspend. This persists until the application is restarted.
Since my shell session is persistent (using dtach
) this isn’t too bad; a simple killall st; st -e shell
will get me back to where I was.
I can’t do this with Conkeror (or, at least, I don’t know how), and restarting causes me to lose any open buffers. To work around this, today I thought I’d bite the bullet and write a simple script to save all of the open buffer URLs, restart Conkeror, and re-open the URLs.
This turned out to be a bit more complicated than I thought, so here are some things I’ve learned:
Racket Modules
The prospect of writing another Bash script made me feel dirty, so instead I thought I’d opt for using Racket. I’ve dabbled with Scheme and Racket before, but hadn’t really looked into its module and package system.
Racket (formerly “PLT Scheme”) has two packaging systems, the deprecated “PLaneT” system and its newer replacement. PLaneT looks pretty nice: you use (require (planet foo))
and the foo
module will be fetched and made available. Unfortunately, since it’s deprecated, new packages aren’t available via PLaneT, requiring use of the new replacement via the raco
command. This is pretty annoying, since raco
seems to be much like a Racket equivalent of Cabal: external to the language, requiring some kind of elaborate workaround to use in a similar way to PLaneT; it also doesn’t seem to have a sandbox equivalent, relying either on the home directory (a bad idea), or the Racket installation directory which requires Nix infrastructure similar to haskellPackages.ghcWithPackages
, which doesn’t exist yet.
xdotool
Unfortunately, doesn’t actually work for some applications. http://unix.stackexchange.com/questions/214909/xdotool-does-not-send-keys
XMonad
https://github.com/JamshedVesuna/vim-markdown-preview/issues/37
http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-EwmhDesktops.html