termonad icon indicating copy to clipboard operation
termonad copied to clipboard

Dynamically Toggle Between Colour Schemes in Existing Tabs and Windows Without Recompiling

Open craigem opened this issue 6 years ago • 5 comments

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

craigem avatar Jan 04 '19 10:01 craigem

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 avatar Jan 04 '19 10:01 craigem

@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!

cdepillabout avatar Jan 04 '19 14:01 cdepillabout