ref: b1ae27bb29f37bb34463cd7be9ec314dff286a94
dir: /theming.ms/
.TL Theming Rio and acme .SH rio .PP Install Sigrid's Rio theming patch: .P1 ; bind -ac /dist/plan9front / ; cd /sys/src/cmd/rio ; hget https://ftrv.se/_/9/patches/rio-themes.patch | patch -p5 ; mk install .P2 Themes can be installed by writing to the /mnt/wsys/theme file while a patched rio install is running. An example theme file: .P1 back 1e1e2e high f38ba8 border 313234 text cdd6f4 htext 1e1e2e title f38ba8 ltitle 6c7086 hold ffffff lhold 3399ff palehold 4d9bff paletext a5adce size f38ba8 menubar 1e1e2e menuback 1e1e2e menuhigh f38ba8 menuboard f38ba8 menutext cdd6f4 menuhtext 1e1e2e .P2 The https://git.sr.ht/~ft/picker color picker utility can be used for live editing of the Rio theme with a GUI. .P1 picker </mnt/wsys/theme >/mnt/wsys/theme .P2 To persist the theme, you can write it to a file and add a line like this into your bin/rc/riostart: .P1 cat lib/theme/rio.theme >/mnt/wsys/theme .P2 .SH acme .PP Acme does not include built in theming support so you will need to edit the C source code. Don't worry as its as you will mostly just be changing the colors around. .PP To start, run the following commands. .P1 bind -ac /dist/plan9front / cd /sys/src/cmd/acme acme acme.c .P2 .PP You will want to edit the iconinit function to contain different definitions for the colors. Put the following CLR macro outside of the iconinit function to simplify the code: .P1 #define CLR(c) (allocimage(display, Rect(0,0,1,1), screen->chan, 1, (c))) .P2 .PP Now, edit the beginning of the iconinit function to define your own colors. .P1 void iconinit(void) { Rectangle r; Image *tmp; /* Blue */ tagcols[BACK] = CLR(0xYOURHEXCOLOR); tagcols[HIGH] = CLR(0xYOURHEXCOLOR); tagcols[BORD] = CLR(0xYOURHEXCOLOR); tagcols[TEXT] = CLR(0xYOURHEXCOLOR); tagcols[HTEXT] = CLR(0xYOURHEXCOLOR); /* Yellow */ textcols[BACK] = CLR(0xYOURHEXCOLOR); textcols[HIGH] = CLR(0xYOURHEXCOLOR); textcols[BORD] = CLR(0xYOURHEXCOLOR); textcols[TEXT] = CLR(0xYOURHEXCOLOR); textcols[HTEXT] = CLR(0xYOURHEXCOLOR); .P2