Micron Document
sway color schemes

I recently heard of base-16 colors as a result of looking for color schemes for sway. I wrote a script that uses T383838bemenu to enable picking a color scheme for sway from a set of themes.

prereqs

• sway
• bemenu
• bash

get some themes

I did this in T383838~/.config/sway/ because that's where my sway configuration is and I made the script use this:

T282828
Tffa657cd ~/.config/sway
git clone https://github.com/rkubosz/base16-sway/


enable themes in sway via variables

I put this block in my T383838~/.config/sway/config

include colorscheme

client.focused $base05 $base0D $base00 $base0D $base0D
client.focused_inactive $base01 $base01 $base05 $base03 $base01
client.unfocused $base01 $base00 $base05 $base01 $base01
client.urgent $base08 $base08 $base00 $base08 $base08
client.placeholder $base00 $base00 $base05 $base00 $base00
client.background $base07

I also put this in there for swaybar colors:

bar {
# some elided content here for basic settings
colors {
statusline $base06
background $base01
inactive_workspace $base01 $base01 $base06
active_workspace $base05 $base0D $base01
focused_workspace $base05 $base0D $base00
urgent_workspace $base05 $base0D $base07
}
}

Note that there's a little more content in that bar section, the important bit above is just to show setting the colors to the variables from the color scheme.

use the script

Here's the script, T383838~/bin/theme-browser.sh:

T282828
T8b949e#! /usr/bin/env nix-shell
T8b949e#! nix-shell -i bash -p bemenu
Tffa657set -eu
T8b949e##
T8b949e# This script manages the sym link to the currently active sway color scheme.
T8b949e# I have .config/sway/colorscheme imported from .config/sway/config and all the themes are base-16 in ~/.config/sway/base16-sway/

Te6edf3BASE_DIRTff7b72=~/.config/sway/
Te6edf3THEME_DIRTff7b72=~/.config/sway/base16-sway/themes
Te6edf3THEMETff7b72=colorscheme

Te6edf3MY_BOPSTff7b72=Ta5d6ff"--binding vim"
Tffa657export Te6edf3BEMENU_OPTSTff7b72=Ta5d6ff"Tffd700${Te6edf3BEMENU_OPTSTff7b72:-Tb4b4b4-l 16 Tffd700${Te6edf3MY_BOPSTffd700}Tffd700}Ta5d6ff"
Tff7b72if Tff7b72[ -z Ta5d6ff"Tffd700${Te6edf3BEMENU_BACKENDTff7b72:-Tffd700}Ta5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72if Tff7b72[ -n Ta5d6ff"Tffd700${Te6edf3WAYLAND_DISPLAYTff7b72:-Tffd700}Ta5d6ff" Tff7b72] Tb4b4b4; Tff7b72then
Te6edf3BEMENU_BACKENDTff7b72=wayland
Tff7b72elif Tff7b72[ -n Ta5d6ff"Tffd700${Te6edf3DISPLAYTff7b72:-Tffd700}Ta5d6ff" Tff7b72] Tb4b4b4; Tff7b72then
Te6edf3BEMENU_BACKENDTff7b72=x11
Tff7b72fi
Tff7b72fi
Tffa657export Te6edf3BEMENU_BACKENDTff7b72=Ta5d6ff"Tffd700${Te6edf3BEMENU_BACKENDTff7b72:-Te6edf3cursesTffd700}Ta5d6ff"

not_lsTff7b72(Tff7b72) Tff7b72{
Tffa657local Te6edf3DIRTff7b72=Tffd700${Te6edf31Tb4b4b4%/Tffd700}
find Ta5d6ff"Tffd700${Te6edf3DIRTffd700}Ta5d6ff" -type f Tb4b4b4| sed -e Ta5d6ff"Ta5d6ffs,Tffd700${Te6edf3DIRTffd700}Ta5d6ff/,,Ta5d6ff"
Tff7b72}

be_msgTff7b72(Tff7b72) Tff7b72{
Tffa657echo Tb4b4b4| bemenu -p Ta5d6ff"Tffd700${Te6edf31Tffd700}Ta5d6ff" Tb4b4b4&> /dev/null
Tff7b72}

Te6edf3LINK_SRCTff7b72=Ta5d6ff"Tff7b72$(not_ls Ta5d6ff"Tffd700${Te6edf3THEME_DIRTffd700}Ta5d6ff" Tb4b4b4|bemenu -p Ta5d6ff"Theme:"Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[ -n Ta5d6ff"Tffd700${Te6edf3LINK_SRCTffd700}Ta5d6ff" Tff7b72] Tb4b4b4; Tff7b72then
mv Ta5d6ff"Tffd700${Te6edf3BASE_DIRTffd700}Ta5d6ff"/Ta5d6ff"Tffd700${Te6edf3THEMETffd700}Ta5d6ff" Ta5d6ff"Tffd700${Te6edf3BASE_DIRTffd700}Ta5d6ff"/Ta5d6ff"Tffd700${Te6edf3THEMETffd700}Ta5d6ff".old
Tff7b72if ! ln -s Ta5d6ff"Tffd700${Te6edf3THEME_DIRTffd700}Ta5d6ff/Tffd700${Te6edf3LINK_SRCTffd700}Ta5d6ff" Ta5d6ff"Tffd700${Te6edf3BASE_DIRTffd700}Ta5d6ff"/Ta5d6ff"Tffd700${Te6edf3THEMETffd700}Ta5d6ff" Tb4b4b4; Tff7b72then
mv Ta5d6ff"Tffd700${Te6edf3BASE_DIRTffd700}Ta5d6ff"/Ta5d6ff"Tffd700${Te6edf3THEMETffd700}Ta5d6ff".old Ta5d6ff"Tffd700${Te6edf3BASE_DIRTffd700}Ta5d6ff"/Ta5d6ff"Tffd700${Te6edf3THEMETffd700}Ta5d6ff"
be_msg Ta5d6ff"ERROR: Could not create sym link to new theme :-("
Tff7b72else
swaymsg reload
be_msg Ta5d6ff"Ta5d6ffINFO: new theme Te6edf3$LINK_SRCTa5d6ff applied :-)Ta5d6ff"
Tff7b72fi
Tff7b72fi


Run bash on the script and it will prompt what theme to use. Upon picking one it will create a sym link that my sway config edits above reference (T383838include colorscheme - colorscheme is the symbolic link), and then it will reload the sway config and pick up the new theme.

Tags: bemenu

Tags
Navigation



created: 2025-04-26

(re)generated: 2026-07-17