Creating Your Own Theme
🛠 Theme Architecture
Section titled “🛠 Theme Architecture”File Structure
Section titled “File Structure”Directory~/.local/share/pawlette/themes/
Directorytheme-name/
Directoryconfigs/
Directorykitty/
- kitty.conf
- kitty.conf.prepaw (patch file)
Directorywaybar/
- config.json
- style.css
Directoryhypr/
- …
Directoryrofi/
- …
Directorybspwm/
- …
Directorydunst/
- …
Directorybtop/
- …
Directorycava/
- …
Directoryfish/
- …
Directoryzsh/
- …
Directorystarship/
- …
Directorytmux/
- …
Directorymicro/
- …
Directoryqt5ct/
- …
Directoryqt6ct/
- …
Directorypolybar/
- …
Directorymeowrch-code-theme/
- …
Directorygtk-theme/ (GTK theme)
- …
Directoryicons/ (icon pack)
Directorycursors/ (cursor themes)
- …
Directoryhyprcursors/ (cursor themes for Hyprland)
- …
Directorywallpapers/ (desktop wallpapers)
- …
🔧 Patch System
Section titled “🔧 Patch System”Pawlette supports two modes of configuration application:
Full Replacement
Section titled “Full Replacement”Regular configuration files will completely replace existing settings.
Partial Changes (Patches)
Section titled “Partial Changes (Patches)”JSON merge (.jsonpaw)
Section titled “JSON merge (.jsonpaw)”If the target file is JSON, you can place a file next to it with the .jsonpaw suffix (e.g. waybar/config.json.jsonpaw).
Its content must be a JSON object; it will be merged into the target file:
- existing keys are overridden by
.jsonpawvalues; - missing keys are created;
- nested objects are merged recursively.
Example:
Original ~/.config/waybar/config.json:
{ "layer": "bottom", "modules-left": ["menu"], "style": { "font": "Sans 10" }}Patch configs/waybar/config.json.jsonpaw:
{ "layer": "top", "style": { "font": "JetBrainsMono 11", "color": "#cba6f7" }, "custom-key": true}Result:
{ "layer": "top", "modules-left": ["menu"], "style": { "font": "JetBrainsMono 11", "color": "#cba6f7" }, "custom-key": true}Example: the file kitty/kitty.conf.prepaw will add its content to the beginning of the existing kitty.conf.
How to Create Your Own Theme?
Section titled “How to Create Your Own Theme?”-
Create Structure
Create a directory for your theme:
mkdir -p ~/.local/share/pawlette/themes/my-themecd ~/.local/share/pawlette/themes/my-thememkdir -p configs wallpapers gtk-theme icons -
Add Configurations
Create configurations for the required applications:
# Example for kittymkdir -p configs/kittycat > configs/kitty/kitty.conf << EOFforeground #ffffffbackground #1a1a1acursor #ffffffEOF# Example patch for waybarmkdir -p configs/waybarecho '* { border-radius: 10px; }' > configs/waybar/style.css.prepaw -
Add Resources
- Place GTK theme in
gtk-theme/folder - Add icons to
icons/folder - For custom cursors create
icons/cursors/andicons/hyprcursors/folders (for Hyprland) - Place wallpapers in
wallpapers/folder
- Place GTK theme in
-
Apply Theme
Apply your new theme:
pawlette set-theme my-theme