termonad
termonad copied to clipboard
Dynamically Toggle Between Colour Schemes in Existing Tabs and Windows Without Recompiling
I've been wondering about how to load the Solarized themes and switch between light and dark with a key stroke toggle.
This should be possible, but will require changing a few things.
You'll have to send a PR to add a hook that gets called right as Termonad is about to launch. Probably around here:
https://github.com/cdepillabout/termonad/blob/db185e34a4b678183d8d1b1ce0be4c8bf3532fc8/src/Termonad/App.hs#L421-L422
In your own config, you'll have to override that hook to define a new key binding for each existing terminal.
Here's an example of defining a key binding (this code defines the Alt-1
, Alt-2
, etc bindings for switching tabs):
https://github.com/cdepillabout/termonad/blob/db185e34a4b678183d8d1b1ce0be4c8bf3532fc8/src/Termonad/Keys.hs
https://github.com/cdepillabout/termonad/blob/db185e34a4b678183d8d1b1ce0be4c8bf3532fc8/src/Termonad/Term.hs#L345-L346
Your key binding will have to call a function that loops through all the open tabs and sets the colors for the terminal.
Here's where that is currently being done:
https://github.com/cdepillabout/termonad/blob/db185e34a4b678183d8d1b1ce0be4c8bf3532fc8/src/Termonad/Config/Colour.hs#L453-L479
This is only setting colors for a single terminal, so you'll have to change it so it loops through all tabs.
Here's a function that loops through all tabs (although this is changing the font size):
https://github.com/cdepillabout/termonad/blob/db185e34a4b678183d8d1b1ce0be4c8bf3532fc8/src/Termonad/App.hs#L192-L199
Originally posted by @cdepillabout in https://github.com/cdepillabout/termonad/issues/94#issuecomment-450806022
For the record, I am happy to work on this (probably as soon as next week), I just felt a new issue was appropriate as I felt we'd strayed from the original issue's remit, @cdepillabout
@craigem Thanks for copying this issue over!
I'd definitely accept something like this if you wanted to take a shot at implementing it. Looking forward to the PR!