wm: doc

ref: 453b9bd07592f8d40329b43971ab0ea3d419c6c4
dir: /theming.ms/

View raw version
.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