User Tools

Site Tools


sway:dark-mode

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
sway [2020/10/12 19:15] – created adminsway:dark-mode [2021/01/07 23:54] (current) admin
Line 1: Line 1:
-=== On themes, sway, emacs and kitty - the dark-mode script ======+==== On themes, sway, emacs and kitty - the dark-mode script ==== 
  
 Unlike Desktop Environments like Gnome and KDE, Window Managers like Unlike Desktop Environments like Gnome and KDE, Window Managers like
-sway do not come with all the tools you might need or want. It's up to+**sway** do not come with all the tools you might need or want. It's up to
 the user to perceive a need, do the research and then install, the user to perceive a need, do the research and then install,
 configure and use the appropriate tools for the job. Notwithstanding configure and use the appropriate tools for the job. Notwithstanding
Line 10: Line 11:
 satisfaction of knowing what's going on. satisfaction of knowing what's going on.
  
-In my own history through fvwm, fluxbox, i3wm and now sway I've never+In my own history through **fvwm****fluxbox****i3wm** and now **sway** I've never
 really wanted to bother with themes. I just made terminals and emacs really wanted to bother with themes. I just made terminals and emacs
 have a black background and other programs could do what ever they have a black background and other programs could do what ever they
 liked. Such a heathen! liked. Such a heathen!
  
-Recently I perceived that need and did some research into the+Recently I felt that need and did some research into the
 topic. It was rather more complex and harder to discover than I had topic. It was rather more complex and harder to discover than I had
 thought. thought.
  
-My own need was to have a simple switch I could flick, perhaps a+I wanted to have a simple switch I could flick, perhaps a
 script, that would turn night into day. Let's have black text on a script, that would turn night into day. Let's have black text on a
 bright, white background in the daytime and reverse it in the evening. bright, white background in the daytime and reverse it in the evening.
Line 28: Line 29:
 customising and a script that I use to do the flick. customising and a script that I use to do the flick.
  
-All of this is on Fedora-31.+All of this is on Fedora-31 but should be similar for other Linux distros. 
 + 
 +Apologies if this is all obvious and well documented elsewhere. It was a journey for me and non-trivial.
  
 ===GTK2 programs=== ===GTK2 programs===
Line 42: Line 45:
  
 The hard part was understanding how to get running programs to notice The hard part was understanding how to get running programs to notice
-the change. lxappearance is a program from the LXDE desktop +the change. ''**lxappearance**(1)'' is a program from the LXDE desktop 
-environment that does both jobs. Unfortunatley, it lacks a CLI+environment that does both jobs. Unfortunately, it lacks a CLI
 interface so it can only be used in the pointy-clicky mode and not in interface so it can only be used in the pointy-clicky mode and not in
 a script. a script.
  
-By using strace on the different components, I was able to track this +By using ''**strace**(1)'' on the different components, I was able to track this 
-down to a new (for me) system call **eventfd**(1) which GTK2 uses as a+down to a new (for me) system call ''**eventfd**(2)'' which GTK2 uses as a
 signalling mechanism. With a bit more research I found this script signalling mechanism. With a bit more research I found this script
 fragment at [[https://crunchbang.org/forums/viewtopic.php?id=39646]] which fragment at [[https://crunchbang.org/forums/viewtopic.php?id=39646]] which
Line 83: Line 86:
  
 I just wonder if this could be replaced by a simple script like the I just wonder if this could be replaced by a simple script like the
-GK2 one?+GTK2 one?
  
 But that appears to be not the entire story. But that appears to be not the entire story.
  
-3. Some programs do not respond to gsd-xsettings and dconf is needed:+===dconf=== 
 + 
 +Some programs do not respond to gsd-xsettings and dconf is needed:
  
 <code> <code>
Line 98: Line 103:
 ''~/.config/gtk-3.0/settings.ini'' ''~/.config/gtk-3.0/settings.ini''
  
-4. More comedy arises from yet another path to the same outcome. This+===gsettings=== 
 + 
 +More comedy arises from yet another path to the same outcome. This
 invocation appears to be completely equivalent with it's own invocation appears to be completely equivalent with it's own
 permutation on the quotation merry-go-around: permutation on the quotation merry-go-around:
Line 106: Line 113:
 </code> </code>
  
-5. emacs. Hmmm. I've grown up with that program and am unlikely to+===emacs=== 
 + 
 +''**emacs**(1)''. Hmmm. I've grown up with that program and am unlikely to
 wean myself off it. There are 'PureGTK' versions floating around as wean myself off it. There are 'PureGTK' versions floating around as
 experiments but they are yet to hit the Fedora repositories outside experiments but they are yet to hit the Fedora repositories outside
Line 112: Line 121:
 GTK signals. GTK signals.
  
-In any case, for emacs I need to also modify the internal text areas +In any case, for ''**emacs**(1)'' I need to also modify the internal text areas 
-and emacs has its own themes spelled out in elisp. I decided on a+and ''**emacs**(1)'' has its own themes spelled out in elisp. I decided on a
 couple of good themes and added some code to my script to flip from couple of good themes and added some code to my script to flip from
 one theme to another. The script should be self explanatory. The one theme to another. The script should be self explanatory. The
Line 120: Line 129:
 using a script at [[https://explog.in/notes/poet.html#monochrome]] using a script at [[https://explog.in/notes/poet.html#monochrome]]
  
-6. Now for my favorite wayland terminal emulator, Kitty. It has it's+===kitty=== 
 + 
 +Now for my favorite wayland terminal emulator, ''**kitty**(1)''. It has it's
 own unique configuration language and can have its colour changed on own unique configuration language and can have its colour changed on
 the fly like this: the fly like this:
Line 128: Line 139:
 </code> </code>
  
-7. My bash prompt contains colours and I have a separate script+===bash=== 
 + 
 +My ''**bash**(1)'' prompt contains colours and I have a separate script
 (actually a function in ''~/.bashrc'') that responds appropriately to the (actually a function in ''~/.bashrc'') that responds appropriately to the
 setting of ''TERM_BACKGROUND'' in {dark,light} so my script outputs that setting of ''TERM_BACKGROUND'' in {dark,light} so my script outputs that
Line 138: Line 151:
  
  
-... 'dark-mode on' outputs ''TERM_BACKGROUND=dark; setup-prompt'' and+... 'dark-mode on' outputs ''TERM_BACKGROUND=dark; setup_prompt'' and
 that's what gets eval'd. that's what gets eval'd.
  
-These final 2 steps are the reason I don't put dark-mode into a cron +These final 2 steps are the reason I don't put ''**dark-mode**(1)'' into a cron 
-job - it needs to run in my stack of kitty terminal tabs.+job - it needs to run in my stack of ''**kitty**(1)'' terminal tabs
 + 
 +===KDE=== 
 + 
 +KDE/Qt5/Plasma/whatcha-ma-call-it 
 + 
 +Thanks to redditor r/progandy for this: 
 + 
 +''**qt5ct**(1)'' is the key - install it (Fedora) with: 
 + 
 +<code> 
 +sudo dnf install qt5ct 
 +</code> 
 + 
 +This needs to be in the session environment: 
 + 
 +<code> 
 +export QT_QPA_PLATFORMTHEME=qt5ct 
 +</code> 
 + 
 +After running ''**qt5ct**(1)'' I now have a ''~/.config/qt5ct/qt5ct.conf'' file that contains a line: 
 + 
 +<code> 
 +style=Adwaita 
 +</code> 
 + 
 +... I can hit that with my script and the qt5 programs automatically change their appearance! 
 + 
 +Oddly, there's a 4s delay after changing the style in the file before the new style takes effect. But that's OK.
  
-8. KDE/Qt5/Plasma/whatcha-ma-call-it+I also built [[https://gitlab.com/zetaPRIME/qt5ct-refresh|qt5ct-refresh]] but it doesn't seem to speed up the 4s delay - or do anything AFAICT.
  
-Here be dragons. I have NO IDEA how to script this. If you know how to +===dark-mode===
-script a theme change, please let me know!+
  
 +Here is the result of all this rambling: https://gitlab.com/wef/dotfiles/-/blob/master/bin/dark-mode
  
sway/dark-mode.1602551737.txt.gz · Last modified: 2020/10/12 19:15 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki