Sakura Line: retheme the whole desktop from the wallpaper

Palette sampled from bspwm/wallpaper/wallpaper.jpg and applied per-role
(not per-hex, so terminal green stays green and nvim's LineNr/Comment
stay recessive) across st, kitty, polybar, rofi, dunst, nvim, qt5ct/qt6ct
and GTK 2/3/4.

Also:
- rofi drun centred, icons enabled
- polybar translucent (true ARGB) and rounded; picom corner-radius, with
  the desktop layer and fullscreen windows excluded
- fix qt5ct color_scheme_path pointing at a nonexistent /home/carrie
- export QT_QPA_PLATFORMTHEME so qt6ct is actually consulted
- point GTK at an icon theme that exists on this system
- add .config/rice: one-shot install.sh (--dry-run supported), package
  list, vendored st config.h (gitignored upstream) and the particles
  wallpaper-layer source, so a clone reproduces the rice

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
This commit is contained in:
Sarthak 2026-09-04 00:19:36 +05:30
parent 45e5fe53d2
commit f341989335
35 changed files with 3300 additions and 124 deletions

View file

@ -1,5 +1,8 @@
#! /bin/bash
# Qt apps follow qt6ct, which reads ~/.config/qt6ct/colors/dc.conf
export QT_QPA_PLATFORMTHEME=qt6ct
# Start sxhkd if it's not already running
pgrep -x sxhkd >/dev/null || sxhkd -c ~/.config/bspwm/sxhkdrc &
@ -14,7 +17,7 @@ export XDG_CURRENT_DESKTOP="bspwm"
sh -c 'function shenv() { export "$1=$2"; }; source ~/.env;'
# Workspaces Configuration
bspc monitor DisplayPort-1 -d 1 2 3 4 5 6 7 8
bspc monitor DisplayPort-0 -d 1 2 3 4 5 6 7 8
# Enable window focus follow mouse pointer
bspc config focus_follows_pointer true
@ -29,7 +32,10 @@ if [[ -n $monitor && -n $resolution && -n $refresh_rate ]]; then
fi
# Set the border colors for focused and normal windows
bspc config focused_border_color "#727d53"
bspc config focused_border_color "#92b9ea"
bspc config normal_border_color "#201b30"
bspc config active_border_color "#3d3752"
bspc config presel_feedback_color "#b483c0"
bspc config border_width 2
bspc config borderless_monocle true
@ -65,7 +71,10 @@ bspc rule -a 'gamescope' desktop=11
bspc rule -a 'legcord' desktop=10
# Resources and Utilities
dbus-update-activation-environment --systemd XDG_CURRENT_DESKTOP
# DISPLAY/XAUTHORITY must reach systemd-user + D-Bus or graphical portal backends
# (xdg-desktop-portal-gtk, used by browser file pickers) fail with "cannot open display".
systemctl --user import-environment DISPLAY XAUTHORITY XDG_CURRENT_DESKTOP
dbus-update-activation-environment --systemd DISPLAY XAUTHORITY XDG_CURRENT_DESKTOP
xrdb merge $HOME/.Xresources
xsettingsd &
dunst &

View file

@ -46,3 +46,16 @@ shadow = false;
detect-client-opacity = true;
use-damage = true;
log-level = "warn";
# --- rounded corners ---
corner-radius = 12;
round-borders = 1;
rounded-corners-exclude = [
# the particles layer is a full-screen desktop window; clipping it would
# notch the corners of the field
"window_type = 'desktop'",
# polybar rounds its own background
"window_type = 'dock'",
# never round a fullscreen game
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_FULLSCREEN'",
];

View file

@ -1,3 +1,7 @@
# Toggle Scribe Recording
super + shift + space
pkill -USR1 -f /home/sarthak/projects/scribe/scribe.py
# System binding
super + {Return,v,w,x,b,period}
{st, \

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

15
.config/btop/btop.conf Normal file
View file

@ -0,0 +1,15 @@
color_theme = "sakura-line"
theme_background = False
truecolor = True
vim_keys = False
rounded_corners = True
graph_symbol = "braille"
shown_boxes = "cpu mem net proc"
update_ms = 1000
proc_sorting = "cpu lazy"
proc_gradient = True
cpu_graph_upper = "total"
show_uptime = True
temp_scale = "celsius"
clock_format = "%H:%M"
background_update = True

View file

@ -0,0 +1,53 @@
# btop - Sakura Line, sampled from bspwm/wallpaper/wallpaper.jpg
theme[main_bg]=""
theme[main_fg]="#e9eefb"
theme[title]="#e9eefb"
theme[hi_fg]="#92b9ea"
theme[selected_bg]="#2e2842"
theme[selected_fg]="#92b9ea"
theme[inactive_fg]="#7f7796"
theme[graph_text]="#c9d1e2"
theme[meter_bg]="#201b30"
theme[proc_misc]="#8ab6c4"
theme[cpu_box]="#3d3752"
theme[mem_box]="#3d3752"
theme[net_box]="#3d3752"
theme[proc_box]="#3d3752"
theme[div_line]="#3d3752"
theme[temp_start]="#8fae74"
theme[temp_mid]="#d8a87c"
theme[temp_end]="#cf6a80"
theme[cpu_start]="#7c9ede"
theme[cpu_mid]="#92b9ea"
theme[cpu_end]="#d0a4d8"
theme[free_start]="#4a5a6e"
theme[free_mid]="#7fa3ad"
theme[free_end]="#a3c0cb"
theme[cached_start]="#6f8fc4"
theme[cached_mid]="#92b9ea"
theme[cached_end]="#aecdf5"
theme[available_start]="#8a6a52"
theme[available_mid]="#d8a87c"
theme[available_end]="#e9c79b"
theme[used_start]="#7a4256"
theme[used_mid]="#cf6a80"
theme[used_end]="#e0798f"
theme[download_start]="#5f6f9e"
theme[download_mid]="#7c9ede"
theme[download_end]="#92b9ea"
theme[upload_start]="#7a4a7e"
theme[upload_mid]="#b483c0"
theme[upload_end]="#d0a4d8"
theme[process_start]="#8fae74"
theme[process_mid]="#a8c68d"
theme[process_end]="#e9c79b"

32
.config/cava/config Normal file
View file

@ -0,0 +1,32 @@
# cava - Sakura Line
# background = default keeps the terminal's transparency showing through.
[general]
framerate = 60
autosens = 1
overshoot = 20
bar_width = 2
bar_spacing = 1
[input]
method = pulse
source = auto
[output]
method = ncurses
channels = stereo
mono_option = average
[smoothing]
noise_reduction = 45
[color]
background = default
gradient = 1
gradient_count = 6
gradient_color_1 = '#7c9ede'
gradient_color_2 = '#92b9ea'
gradient_color_3 = '#a3c0cb'
gradient_color_4 = '#d0a4d8'
gradient_color_5 = '#e0798f'
gradient_color_6 = '#e9c79b'

View file

@ -12,7 +12,7 @@ origin = top-right
frame_width = 2
separator_height = 1
frame_color = "#8b9151"
frame_color = "#92b9ea"
separator_color = frame
sort = no
@ -33,7 +33,7 @@ sticky_history = no
history_length = 6
title = Dunst
class = Dunst
corner_radius = 0
corner_radius = 12
mouse_left_click = close_current
mouse_middle_click = do_action
@ -44,20 +44,20 @@ body = "grim's screenshot component is implemented based on wlroots, it may not
format = ""
[urgency_low]
background = "#141414"
foreground = "#8b9151"
frame_color = "#8b9151"
background = "#0f0d17"
foreground = "#7f7796"
frame_color = "#3d3752"
timeout = 5
[urgency_normal]
default_icon = dialog-information
background = "#141414"
foreground = "#feffd3"
frame_color = "#8b9151"
background = "#0f0d17"
foreground = "#e9eefb"
frame_color = "#92b9ea"
timeout = 5
[urgency_critical]
background = "#141414"
foreground = "#dd7c4c"
frame_color = "#dd7c4c"
background = "#0f0d17"
foreground = "#e0798f"
frame_color = "#cf6a80"
timeout = 0

View file

@ -1,10 +0,0 @@
file:///drives drives
file:///home/carrie/Documents Documents
file:///home/carrie/Music Music
file:///drives/rei/Library Library
file:///home/carrie/Downloads Downloads
file:///home/carrie/Pictures Pictures
file:///home/carrie/iphone iphone
file:///home/carrie/Videos Videos
file:///run/media/carrie/disk/vnds/novels novels
file:///drives/rei/Library/Toby%20Fox/DELTARUNE%20Chapter%203+4%20OST DELTARUNE Chapter 3+4 OST

144
.config/gtk-3.0/gtk.css Normal file
View file

@ -0,0 +1,144 @@
/* Sakura Line - sampled from bspwm/wallpaper/wallpaper.jpg */
@define-color sakura_bg #16121f;
@define-color sakura_base #100d18;
@define-color sakura_surface #221c33;
@define-color sakura_overlay #2a2440;
@define-color sakura_sel #2e2842;
@define-color sakura_fg #e9eefb;
@define-color sakura_dim #7f7796;
@define-color sakura_border #3d3752;
@define-color sakura_accent #92b9ea;
@define-color sakura_red #cf6a80;
@define-color sakura_green #8fae74;
@define-color sakura_yellow #d8a87c;
/* GTK3 / Adwaita named colours */
@define-color theme_bg_color @sakura_bg;
@define-color theme_fg_color @sakura_fg;
@define-color theme_base_color @sakura_base;
@define-color theme_text_color @sakura_fg;
@define-color theme_selected_bg_color @sakura_accent;
@define-color theme_selected_fg_color #0f0d17;
@define-color theme_unfocused_bg_color @sakura_bg;
@define-color theme_unfocused_fg_color @sakura_fg;
@define-color theme_unfocused_base_color @sakura_base;
@define-color theme_unfocused_text_color @sakura_fg;
@define-color theme_unfocused_selected_bg_color @sakura_sel;
@define-color theme_unfocused_selected_fg_color @sakura_fg;
@define-color insensitive_bg_color @sakura_bg;
@define-color insensitive_fg_color @sakura_dim;
@define-color insensitive_base_color @sakura_base;
@define-color borders @sakura_border;
@define-color unfocused_borders @sakura_border;
@define-color wm_bg @sakura_surface;
@define-color wm_border @sakura_border;
@define-color wm_title @sakura_fg;
@define-color wm_unfocused_title @sakura_dim;
@define-color success_color @sakura_green;
@define-color warning_color @sakura_yellow;
@define-color error_color @sakura_red;
@define-color link_color @sakura_accent;
@define-color visited_link_color #b483c0;
@define-color content_view_bg @sakura_base;
/* libadwaita / GTK4 named colours */
@define-color window_bg_color @sakura_bg;
@define-color window_fg_color @sakura_fg;
@define-color view_bg_color @sakura_base;
@define-color view_fg_color @sakura_fg;
@define-color headerbar_bg_color @sakura_surface;
@define-color headerbar_fg_color @sakura_fg;
@define-color headerbar_border_color @sakura_border;
@define-color headerbar_backdrop_color @sakura_bg;
@define-color headerbar_shade_color rgba(0, 0, 0, 0.36);
@define-color sidebar_bg_color @sakura_surface;
@define-color sidebar_fg_color @sakura_fg;
@define-color sidebar_backdrop_color @sakura_bg;
@define-color sidebar_border_color @sakura_border;
@define-color sidebar_shade_color rgba(0, 0, 0, 0.36);
@define-color secondary_sidebar_bg_color @sakura_bg;
@define-color secondary_sidebar_fg_color @sakura_fg;
@define-color card_bg_color @sakura_surface;
@define-color card_fg_color @sakura_fg;
@define-color card_shade_color rgba(0, 0, 0, 0.36);
@define-color dialog_bg_color @sakura_surface;
@define-color dialog_fg_color @sakura_fg;
@define-color popover_bg_color @sakura_overlay;
@define-color popover_fg_color @sakura_fg;
@define-color popover_shade_color rgba(0, 0, 0, 0.36);
@define-color thumbnail_bg_color @sakura_surface;
@define-color thumbnail_fg_color @sakura_fg;
@define-color shade_color rgba(0, 0, 0, 0.36);
@define-color scrollbar_outline_color @sakura_border;
@define-color accent_bg_color @sakura_accent;
@define-color accent_fg_color #0f0d17;
@define-color accent_color @sakura_accent;
@define-color destructive_bg_color @sakura_red;
@define-color destructive_fg_color #0f0d17;
@define-color destructive_color @sakura_red;
@define-color success_bg_color @sakura_green;
@define-color success_fg_color #0f0d17;
@define-color warning_bg_color @sakura_yellow;
@define-color warning_fg_color #0f0d17;
@define-color error_bg_color @sakura_red;
@define-color error_fg_color #0f0d17;
/* Adwaita hardcodes a fair amount, so pin the big surfaces directly. */
window, .background, dialog, popover, popover.background,
headerbar, .titlebar, .sidebar, placessidebar, notebook > header {
background-color: @sakura_bg;
color: @sakura_fg;
}
headerbar, .titlebar, .sidebar, placessidebar,
.sidebar-pane, notebook > header, toolbar, actionbar > revealer > box {
background-color: @sakura_surface;
border-color: @sakura_border;
}
popover > contents, popover > arrow, menu, .menu, .context-menu {
background-color: @sakura_overlay;
color: @sakura_fg;
}
treeview.view, textview, textview text, iconview, .view, list, list row, columnview {
background-color: @sakura_base;
color: @sakura_fg;
}
treeview.view:selected, .view:selected, list row:selected,
menuitem:hover, .menu menuitem:hover, row:selected {
background-color: @sakura_accent;
color: #0f0d17;
}
entry, spinbutton, searchbar entry, .entry {
background-color: @sakura_base;
color: @sakura_fg;
border-color: @sakura_border;
}
entry:focus, .entry:focus { border-color: @sakura_accent; }
button {
background-image: none;
background-color: @sakura_surface;
color: @sakura_fg;
border-color: @sakura_border;
}
button:hover { background-color: @sakura_overlay; }
button:active, button:checked {
background-color: @sakura_accent;
color: #0f0d17;
}
scrollbar, scrollbar slider { background-color: transparent; }
scrollbar slider { background-color: @sakura_border; }
scrollbar slider:hover { background-color: @sakura_dim; }
tooltip, tooltip.background {
background-color: @sakura_overlay;
color: @sakura_fg;
}
progressbar progress, levelbar block.filled { background-color: @sakura_accent; }
switch:checked, check:checked, radio:checked {
background-color: @sakura_accent;
color: #0f0d17;
}
selection, ::selection {
background-color: @sakura_accent;
color: #0f0d17;
}
separator { background-color: @sakura_border; }

View file

@ -1,6 +1,6 @@
[Settings]
gtk-theme-name=Adwaita
gtk-icon-theme-name=Gruvbox-Plus-Dark
gtk-icon-theme-name=Adwaita
gtk-font-name=Noto Sans Light 10
gtk-cursor-theme-name=Bibata-Modern-Classic
gtk-cursor-theme-size=20

144
.config/gtk-4.0/gtk.css Normal file
View file

@ -0,0 +1,144 @@
/* Sakura Line - sampled from bspwm/wallpaper/wallpaper.jpg */
@define-color sakura_bg #16121f;
@define-color sakura_base #100d18;
@define-color sakura_surface #221c33;
@define-color sakura_overlay #2a2440;
@define-color sakura_sel #2e2842;
@define-color sakura_fg #e9eefb;
@define-color sakura_dim #7f7796;
@define-color sakura_border #3d3752;
@define-color sakura_accent #92b9ea;
@define-color sakura_red #cf6a80;
@define-color sakura_green #8fae74;
@define-color sakura_yellow #d8a87c;
/* GTK3 / Adwaita named colours */
@define-color theme_bg_color @sakura_bg;
@define-color theme_fg_color @sakura_fg;
@define-color theme_base_color @sakura_base;
@define-color theme_text_color @sakura_fg;
@define-color theme_selected_bg_color @sakura_accent;
@define-color theme_selected_fg_color #0f0d17;
@define-color theme_unfocused_bg_color @sakura_bg;
@define-color theme_unfocused_fg_color @sakura_fg;
@define-color theme_unfocused_base_color @sakura_base;
@define-color theme_unfocused_text_color @sakura_fg;
@define-color theme_unfocused_selected_bg_color @sakura_sel;
@define-color theme_unfocused_selected_fg_color @sakura_fg;
@define-color insensitive_bg_color @sakura_bg;
@define-color insensitive_fg_color @sakura_dim;
@define-color insensitive_base_color @sakura_base;
@define-color borders @sakura_border;
@define-color unfocused_borders @sakura_border;
@define-color wm_bg @sakura_surface;
@define-color wm_border @sakura_border;
@define-color wm_title @sakura_fg;
@define-color wm_unfocused_title @sakura_dim;
@define-color success_color @sakura_green;
@define-color warning_color @sakura_yellow;
@define-color error_color @sakura_red;
@define-color link_color @sakura_accent;
@define-color visited_link_color #b483c0;
@define-color content_view_bg @sakura_base;
/* libadwaita / GTK4 named colours */
@define-color window_bg_color @sakura_bg;
@define-color window_fg_color @sakura_fg;
@define-color view_bg_color @sakura_base;
@define-color view_fg_color @sakura_fg;
@define-color headerbar_bg_color @sakura_surface;
@define-color headerbar_fg_color @sakura_fg;
@define-color headerbar_border_color @sakura_border;
@define-color headerbar_backdrop_color @sakura_bg;
@define-color headerbar_shade_color rgba(0, 0, 0, 0.36);
@define-color sidebar_bg_color @sakura_surface;
@define-color sidebar_fg_color @sakura_fg;
@define-color sidebar_backdrop_color @sakura_bg;
@define-color sidebar_border_color @sakura_border;
@define-color sidebar_shade_color rgba(0, 0, 0, 0.36);
@define-color secondary_sidebar_bg_color @sakura_bg;
@define-color secondary_sidebar_fg_color @sakura_fg;
@define-color card_bg_color @sakura_surface;
@define-color card_fg_color @sakura_fg;
@define-color card_shade_color rgba(0, 0, 0, 0.36);
@define-color dialog_bg_color @sakura_surface;
@define-color dialog_fg_color @sakura_fg;
@define-color popover_bg_color @sakura_overlay;
@define-color popover_fg_color @sakura_fg;
@define-color popover_shade_color rgba(0, 0, 0, 0.36);
@define-color thumbnail_bg_color @sakura_surface;
@define-color thumbnail_fg_color @sakura_fg;
@define-color shade_color rgba(0, 0, 0, 0.36);
@define-color scrollbar_outline_color @sakura_border;
@define-color accent_bg_color @sakura_accent;
@define-color accent_fg_color #0f0d17;
@define-color accent_color @sakura_accent;
@define-color destructive_bg_color @sakura_red;
@define-color destructive_fg_color #0f0d17;
@define-color destructive_color @sakura_red;
@define-color success_bg_color @sakura_green;
@define-color success_fg_color #0f0d17;
@define-color warning_bg_color @sakura_yellow;
@define-color warning_fg_color #0f0d17;
@define-color error_bg_color @sakura_red;
@define-color error_fg_color #0f0d17;
/* Adwaita hardcodes a fair amount, so pin the big surfaces directly. */
window, .background, dialog, popover, popover.background,
headerbar, .titlebar, .sidebar, placessidebar, notebook > header {
background-color: @sakura_bg;
color: @sakura_fg;
}
headerbar, .titlebar, .sidebar, placessidebar,
.sidebar-pane, notebook > header, toolbar, actionbar > revealer > box {
background-color: @sakura_surface;
border-color: @sakura_border;
}
popover > contents, popover > arrow, menu, .menu, .context-menu {
background-color: @sakura_overlay;
color: @sakura_fg;
}
treeview.view, textview, textview text, iconview, .view, list, list row, columnview {
background-color: @sakura_base;
color: @sakura_fg;
}
treeview.view:selected, .view:selected, list row:selected,
menuitem:hover, .menu menuitem:hover, row:selected {
background-color: @sakura_accent;
color: #0f0d17;
}
entry, spinbutton, searchbar entry, .entry {
background-color: @sakura_base;
color: @sakura_fg;
border-color: @sakura_border;
}
entry:focus, .entry:focus { border-color: @sakura_accent; }
button {
background-image: none;
background-color: @sakura_surface;
color: @sakura_fg;
border-color: @sakura_border;
}
button:hover { background-color: @sakura_overlay; }
button:active, button:checked {
background-color: @sakura_accent;
color: #0f0d17;
}
scrollbar, scrollbar slider { background-color: transparent; }
scrollbar slider { background-color: @sakura_border; }
scrollbar slider:hover { background-color: @sakura_dim; }
tooltip, tooltip.background {
background-color: @sakura_overlay;
color: @sakura_fg;
}
progressbar progress, levelbar block.filled { background-color: @sakura_accent; }
switch:checked, check:checked, radio:checked {
background-color: @sakura_accent;
color: #0f0d17;
}
selection, ::selection {
background-color: @sakura_accent;
color: #0f0d17;
}
separator { background-color: @sakura_border; }

View file

@ -1,32 +1,32 @@
local colors = {
bg = "#141414",
fg = "#feffd3",
cursor = "#ffffff",
selection_bg = "#303030",
selection_fg = "#141414",
bg = "#0f0d17",
fg = "#e9eefb",
cursor = "#92b9ea",
selection_bg = "#2e2842",
selection_fg = "#0f0d17",
black = "#141414",
black_bright = "#262626",
black = "#0f0d17",
black_bright = "#201b30",
red = "#c06c43",
red_bright = "#dd7c4c",
red = "#cf6a80",
red_bright = "#e0798f",
green = "#afb979",
green_bright = "#cbd88c",
green = "#8fae74",
green_bright = "#a8c68d",
yellow = "#c2a86c",
yellow_bright = "#e1c47d",
yellow = "#d8a87c",
yellow_bright = "#e9c79b",
blue = "#444649",
blue_bright = "#5a5d61",
blue = "#454063",
blue_bright = "#6b6486",
magenta = "#b4be7b",
magenta_bright = "#d0db8e",
magenta = "#b483c0",
magenta_bright = "#d0a4d8",
cyan = "#778284",
cyan_bright = "#8a989a",
cyan = "#8ab6c4",
cyan_bright = "#a3c0cb",
white = "#feffd3",
white = "#e9eefb",
}
vim.cmd("highlight clear")

View file

@ -1,8 +1,8 @@
-- Force LazyVim UI elements to use Carrie's green 🐾🌿
local green = "#afb979"
local green_bright = "#cbd88c"
local bg = "#141414"
local green = "#8fae74"
local green_bright = "#a8c68d"
local bg = "#0f0d17"
local function hi(group, opts)
vim.api.nvim_set_hl(0, group, opts)
@ -29,7 +29,7 @@ hi("CmpNormal", { bg = bg })
-- ✅ Telescope menus (if you use it)
hi("TelescopeBorder", { fg = green })
hi("TelescopePromptBorder", { fg = green })
hi("TelescopeSelection", { bg = "#303030" })
hi("TelescopeSelection", { bg = "#2e2842" })
hi("TelescopePromptPrefix", { fg = green_bright })
-- ✅ Floating menus in general

28
.config/particles.conf Normal file
View file

@ -0,0 +1,28 @@
# particles - wallpaper layer
# Tuned for bspwm/wallpaper/wallpaper.jpg: a bright, busy image, so the field
# is white and fairly opaque. Preview any change without touching the desktop:
# particles --snapshot /tmp/p.png --snapshot-bg ~/.config/bspwm/wallpaper/wallpaper.png
# Reload a running instance after editing: pkill -HUP particles
density = 55
radius = 2.4
glow = 4.0
opacity = 1.0
color = ffffff
link-distance = 140
link-width = 1.6
link-opacity = 0.85
link-color = ffffff
speed = 24
edges = bounce
cursor = grab,repel
cursor-distance = 180
cursor-strength = 1.0
cursor-response = 9
fps = 60
keep-below = true
pause-when-covered = true

View file

@ -1,31 +1,34 @@
[colors]
bg = #141414
border = #444649
text = #feffd3
dim = #778284
accent = #afb979
red = #c06c43
green = #afb979
yellow = #c2a86c
blue = #444649
magenta = #b4be7b
cyan = #778284
bg = #0f0d17
; true ARGB (AARRGGBB): 75% background, text stays fully opaque
bg-trans = #bf0f0d17
border = #3d3752
text = #e9eefb
dim = #7f7796
accent = #92b9ea
red = #cf6a80
green = #8fae74
yellow = #d8a87c
blue = #7c9ede
magenta = #b483c0
cyan = #8ab6c4
[bar/top]
wm-restack = bspwm
monitor = ${env:MONITOR:}
width = 99%
height = 28
radius = 10
bottom = false
offset-x = 0.5%
offset-y = 0.5%
fixed-center = true
background = ${colors.bg}
background = ${colors.bg-trans}
foreground = ${colors.text}
border-size = 2
border-color = ${colors.border}
border-color = #993d3752
padding = 1
module-margin = 0
@ -98,43 +101,43 @@ interval = 1
format = <label>
format-padding = 1
label = "%{F#afb979}%{F-}%time% %{F#778284}|%{F-} %date%"
label = "%{F#92b9ea}%{F-}%time% %{F#7f7796}|%{F-} %date%"
date = %a %d
time = %H:%M
; Resources
[module/cpu]
type = custom/script
exec = "$HOME/.config/scripts/system-info.sh --cpu --normal-color '#b4be7b' --critical-color '#c06c43'"
exec = "$HOME/.config/scripts/system-info.sh --cpu --normal-color '#92b9ea' --critical-color '#cf6a80'"
click-left = "$HOME/bin/system-info.sh --cpu --click"
format = "%{F#b4be7b}CPU%{F-} <label>"
format = "%{F#92b9ea}CPU%{F-} <label>"
format-padding = 1
interval = 2
[module/ram]
type = custom/script
exec = "$HOME/.config/scripts/system-info.sh --ram --normal-color '#c2a86c' --critical-color '#c06c43'"
format = "%{F#c2a86c}RAM%{F-} <label>"
exec = "$HOME/.config/scripts/system-info.sh --ram --normal-color '#d8a87c' --critical-color '#cf6a80'"
format = "%{F#d8a87c}RAM%{F-} <label>"
format-padding = 1
interval = 2
[module/gpu]
type = custom/script
exec = "$HOME/.config/scripts/system-info.sh --gpu --normal-color '#778284' --critical-color '#c06c43'"
exec = "$HOME/.config/scripts/system-info.sh --gpu --normal-color '#b483c0' --critical-color '#cf6a80'"
click-left = "$HOME/bin/system-info.sh --gpu --click"
format = "%{F#778284}GPU%{F-} <label>"
format = "%{F#b483c0}GPU%{F-} <label>"
format-padding = 1
interval = 2
; Audio
[module/volume]
type = custom/script
exec = "SESSION_TYPE=x11 sh $HOME/.config/scripts/volume.sh --device output --status --disabled-color '#c06c43' --enabled-color '#afb979'"
exec = "SESSION_TYPE=x11 sh $HOME/.config/scripts/volume.sh --device output --status --disabled-color '#cf6a80' --enabled-color '#8fae74'"
tail = true
click-left = "sh $HOME/bin/volume.sh --device output --action toggle"
scroll-up = "sh $HOME/bin/volume.sh --device output --action increase"
scroll-down = "sh $HOME/bin/volume.sh --device output --action decrease"
format = "%{F#afb979}VOL%{F-} <label>"
format = "%{F#8fae74}VOL%{F-} <label>"
format-padding = 1
; Media player
@ -147,7 +150,7 @@ click-right = playerctl next
click-middle = playerctl previous
scroll-up = playerctl volume 0.05+
scroll-down = playerctl volume 0.05-
format = "%{F#b4be7b}♫%{F-} <label>"
format = "%{F#e0919f}♫%{F-} <label>"
format-padding = 1
interval = 2
label-maxlen = 30

View file

@ -2,6 +2,6 @@
# Format: FG, BTN_BG, bright, less_bright, dark, less_dark, txt_fg, br_text, BTN_FG, txt_bg, bg, shadow, sel_bg, sel_fg, link, visited, alt_bg, default, tooltip_bg, tooltip_fg
[ColorScheme]
active_colors=#feffd3, #262626, #303030, #262626, #5a5d61, #444649, #feffd3, #feffd3, #feffd3, #1a1a1a, #141414, #000000, #e1c47d, #141414, #e1c47d, #c2a86c, #1a1a1a, #feffd3, #262626, #feffd3
disabled_colors=#778284, #262626, #303030, #262626, #5a5d61, #444649, #778284, #778284, #778284, #1a1a1a, #141414, #000000, #5a5d61, #141414, #778284, #778284, #1a1a1a, #778284, #262626, #778284
inactive_colors=#feffd3, #262626, #303030, #262626, #5a5d61, #444649, #feffd3, #feffd3, #feffd3, #1a1a1a, #141414, #000000, #c2a86c, #141414, #c2a86c, #c2a86c, #1a1a1a, #feffd3, #262626, #feffd3
active_colors=#e9eefb, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #e9eefb, #e9eefb, #e9eefb, #191527, #0f0d17, #000000, #92b9ea, #0f0d17, #92b9ea, #7c9ede, #191527, #e9eefb, #201b30, #e9eefb
disabled_colors=#7f7796, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #7f7796, #7f7796, #7f7796, #191527, #0f0d17, #000000, #5b5478, #0f0d17, #7f7796, #7f7796, #191527, #7f7796, #201b30, #7f7796
inactive_colors=#e9eefb, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #e9eefb, #e9eefb, #e9eefb, #191527, #0f0d17, #000000, #7c9ede, #0f0d17, #7c9ede, #7c9ede, #191527, #e9eefb, #201b30, #e9eefb

View file

@ -1,7 +1,7 @@
[Appearance]
color_scheme_path=/home/carrie/.config/qt5ct/colors/dc.conf
color_scheme_path=/home/sarthak/.config/qt5ct/colors/dc.conf
custom_palette=true
icon_theme=Gruvbox-Plus-Dark
icon_theme=Adwaita
standard_dialogs=default
style=Fusion

View file

@ -2,6 +2,6 @@
# Format: FG, BTN_BG, bright, less_br, dark, less_dark, txt_fg, br_text, btn_fg, txt_bg, bg, shadow, sel_bg, sel_fg, link, visited, alt_bg, default, tooltip_bg, tooltip_fg, placeholder_fg, accent
[ColorScheme]
active_colors=#feffd3, #262626, #303030, #262626, #5a5d61, #444649, #feffd3, #feffd3, #feffd3, #1a1a1a, #141414, #000000, #e1c47d, #141414, #e1c47d, #c2a86c, #1a1a1a, #feffd3, #262626, #feffd3, #778284, #e1c47d
disabled_colors=#778284, #262626, #303030, #262626, #5a5d61, #444649, #778284, #778284, #778284, #1a1a1a, #141414, #000000, #5a5d61, #141414, #778284, #778284, #1a1a1a, #778284, #262626, #778284, #778284, #5a5d61
inactive_colors=#feffd3, #262626, #303030, #262626, #5a5d61, #444649, #feffd3, #feffd3, #feffd3, #1a1a1a, #141414, #000000, #c2a86c, #141414, #c2a86c, #c2a86c, #1a1a1a, #feffd3, #262626, #feffd3, #778284, #c2a86c
active_colors=#e9eefb, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #e9eefb, #e9eefb, #e9eefb, #191527, #0f0d17, #000000, #92b9ea, #0f0d17, #92b9ea, #7c9ede, #191527, #e9eefb, #201b30, #e9eefb, #7f7796, #92b9ea
disabled_colors=#7f7796, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #7f7796, #7f7796, #7f7796, #191527, #0f0d17, #000000, #5b5478, #0f0d17, #7f7796, #7f7796, #191527, #7f7796, #201b30, #7f7796, #7f7796, #5b5478
inactive_colors=#e9eefb, #201b30, #2e2842, #201b30, #5b5478, #3d3752, #e9eefb, #e9eefb, #e9eefb, #191527, #0f0d17, #000000, #7c9ede, #0f0d17, #7c9ede, #7c9ede, #191527, #e9eefb, #201b30, #e9eefb, #7f7796, #7c9ede

View file

@ -1,7 +1,7 @@
[Appearance]
color_scheme_path=~/.config/qt6ct/colors/dc.conf
custom_palette=true
icon_theme=Gruvbox-Plus-Dark
icon_theme=Adwaita
standard_dialogs=default
style=Fusion

61
.config/rice/README.md Normal file
View file

@ -0,0 +1,61 @@
# Sakura Line
bspwm rice. Palette sampled from `~/.config/bspwm/wallpaper/wallpaper.jpg`.
## Replicate on a fresh machine
```sh
bash <(curl -fsSL https://git.srtk.in/sarthak/dotfiles/raw/branch/main/.config/rice/install.sh)
```
Or, if the dotfiles are already cloned:
```sh
~/.config/rice/install.sh # full run
~/.config/rice/install.sh --dry-run # show what it would do, change nothing
```
Arch is the first-class target. Debian/Ubuntu and Fedora are best-effort —
the desktop, build and theming steps work; the AUR extras are skipped.
The script is safe to re-run. Anything in `$HOME` that would be overwritten by
the dotfiles checkout is moved to `~/.rice-backup-<timestamp>/` first.
## What it sets up
| | |
|---|---|
| WM | bspwm + sxhkd |
| Bar | polybar (translucent, rounded) |
| Compositor | picom (rounded corners, vsync) |
| Launcher | rofi, centred, with icons |
| Notifications | dunst |
| Terminal | st, built from `st/config.h` here (upstream gitignores it) |
| Wallpaper layer | `particles`, built from `particles/` here |
| Toolkits | GTK2/3/4 via `gtk.css` overrides, Qt via qt6ct |
## Palette
| role | hex | from |
|---|---|---|
| bg | `#0f0d17` | twilight shadow |
| fg | `#e9eefb` | cool white |
| accent | `#92b9ea` | sky |
| red | `#cf6a80` | blossom |
| green | `#8fae74` | grass |
| yellow | `#d8a87c` | train stripe |
| magenta | `#b483c0` | plum blossom |
| cyan | `#8ab6c4` | station house |
Changing the wallpaper does not re-derive these — they are written into each
app's config.
## Layout
```
.config/rice/
├── install.sh one-shot bootstrap
├── packages.txt package list ("aur:" prefix = needs an AUR helper)
├── st/config.h st build config
└── particles/ wallpaper-layer particle field (source + Makefile)
```

238
.config/rice/install.sh Executable file
View file

@ -0,0 +1,238 @@
#!/usr/bin/env bash
#
# Sakura Line - one-shot rice bootstrap.
#
# bash <(curl -fsSL https://git.srtk.in/sarthak/dotfiles/raw/branch/main/.config/rice/install.sh)
#
# or, from a clone: ~/.config/rice/install.sh
#
# Arch is the first-class target. Debian/Ubuntu and Fedora are best-effort:
# the desktop and build steps work, the AUR extras are skipped.
#
# Safe to re-run. Nothing in $HOME is overwritten without a backup first.
set -uo pipefail
DOTS_REMOTE="${DOTS_REMOTE:-https://git.srtk.in/sarthak/dotfiles.git}"
ST_REMOTE="${ST_REMOTE:-https://github.com/siduck/st}"
DOTS_DIR="$HOME/.dotfiles"
RICE_DIR="$HOME/.config/rice"
SRC_DIR="${SRC_DIR:-$HOME/gitclone}"
BACKUP="$HOME/.rice-backup-$(date +%Y%m%d-%H%M%S)"
STEPS_FAILED=()
DRY=0
for a in "$@"; do
case "$a" in
-n|--dry-run) DRY=1 ;;
-h|--help)
sed -n '2,14p' "$0" | sed 's/^#\s\?//'
printf '\nOptions:\n -n, --dry-run show what would happen, change nothing\n -h, --help this text\n\n'
exit 0 ;;
*) printf 'unknown option: %s (try --help)\n' "$a"; exit 2 ;;
esac
done
c_hd=$'\e[1;38;5;111m'; c_ok=$'\e[38;5;108m'; c_wa=$'\e[38;5;179m'
c_er=$'\e[38;5;168m'; c_dim=$'\e[38;5;103m'; c_off=$'\e[0m'
say() { printf '%s==>%s %s\n' "$c_hd" "$c_off" "$*"; }
# every mutating command goes through this so --dry-run is honest
run() { if [ "$DRY" = 1 ]; then printf ' %s$ %s%s\n' "$c_dim" "$*" "$c_off"; else "$@"; fi; }
ok() { printf ' %s+%s %s\n' "$c_ok" "$c_off" "$*"; }
warn() { printf ' %s!%s %s\n' "$c_wa" "$c_off" "$*"; }
die() { printf ' %sx%s %s\n' "$c_er" "$c_off" "$*"; exit 1; }
note() { printf ' %s%s%s\n' "$c_dim" "$*" "$c_off"; }
fail_step() { STEPS_FAILED+=("$1"); printf ' %sx%s %s\n' "$c_er" "$c_off" "$1"; }
[ "$(id -u)" -eq 0 ] && die "run this as your normal user, not root (it uses sudo where needed)"
# ---------------------------------------------------------------- distro
PM=""; AUR=""
if command -v pacman >/dev/null 2>&1; then PM=pacman
elif command -v apt-get >/dev/null 2>&1; then PM=apt
elif command -v dnf >/dev/null 2>&1; then PM=dnf
else warn "no supported package manager found; skipping installs"; PM=none
fi
PM_LINE="package manager: ${PM}"
# Package names differ per distro; this maps the ones that actually differ.
map_pkg() {
local p="$1"
case "$PM" in
apt) case "$p" in
base-devel) echo "build-essential" ;;
pkgconf) echo "pkg-config" ;;
libx11) echo "libx11-dev" ;;
libxext) echo "libxext-dev" ;;
libxft) echo "libxft-dev" ;;
libxrandr) echo "libxrandr-dev" ;;
libxfixes) echo "libxfixes-dev" ;;
libxinerama) echo "libxinerama-dev" ;;
cairo) echo "libcairo2-dev" ;;
harfbuzz) echo "libharfbuzz-dev" ;;
fontconfig) echo "libfontconfig1-dev" ;;
freetype2) echo "libfreetype6-dev" ;;
gd) echo "libgd-dev" ;;
xorg-xrandr) echo "x11-xserver-utils" ;;
xorg-xprop) echo "x11-utils" ;;
ttf-jetbrains-mono-nerd) echo "fonts-jetbrains-mono" ;;
noto-fonts) echo "fonts-noto" ;;
noto-fonts-emoji) echo "fonts-noto-color-emoji" ;;
papirus-icon-theme) echo "papirus-icon-theme" ;;
qt6ct) echo "qt6ct" ;;
*) echo "$p" ;;
esac ;;
dnf) case "$p" in
base-devel) echo "@development-tools" ;;
pkgconf) echo "pkgconf-pkg-config" ;;
libx11) echo "libX11-devel" ;;
libxext) echo "libXext-devel" ;;
libxft) echo "libXft-devel" ;;
libxrandr) echo "libXrandr-devel" ;;
libxfixes) echo "libXfixes-devel" ;;
libxinerama) echo "libXinerama-devel" ;;
cairo) echo "cairo-devel" ;;
harfbuzz) echo "harfbuzz-devel" ;;
fontconfig) echo "fontconfig-devel" ;;
freetype2) echo "freetype-devel" ;;
gd) echo "gd-devel" ;;
xorg-xrandr) echo "xrandr" ;;
xorg-xprop) echo "xprop" ;;
ttf-jetbrains-mono-nerd) echo "jetbrains-mono-fonts" ;;
noto-fonts) echo "google-noto-sans-fonts" ;;
noto-fonts-emoji) echo "google-noto-emoji-fonts" ;;
*) echo "$p" ;;
esac ;;
*) echo "$p" ;;
esac
}
install_packages() {
[ "$PM" = none ] && { warn "skipping package install"; return 0; }
local list="$RICE_DIR/packages.txt" repo=() aur=() line pkg
[ -f "$list" ] || { warn "packages.txt not found, skipping"; return 0; }
while IFS= read -r line; do
line="${line%%#*}"; line="$(echo "$line" | tr -d '[:space:]')"
[ -z "$line" ] && continue
if [[ "$line" == aur:* ]]; then aur+=("${line#aur:}")
else repo+=("$(map_pkg "$line")"); fi
done < "$list"
say "installing ${#repo[@]} packages"
case "$PM" in
pacman) run sudo pacman -S --needed --noconfirm "${repo[@]}" || fail_step "some packages failed" ;;
apt) run sudo apt-get update -qq && run sudo apt-get install -y "${repo[@]}" || fail_step "some packages failed" ;;
dnf) run sudo dnf install -y "${repo[@]}" || fail_step "some packages failed" ;;
esac
if [ "$PM" = pacman ] && [ "${#aur[@]}" -gt 0 ]; then
local helper=""
for h in paru yay pikaur; do command -v "$h" >/dev/null 2>&1 && { helper="$h"; break; }; done
if [ -z "$helper" ]; then
warn "no AUR helper; skipping: ${aur[*]}"
note "install paru, then re-run to get them"
else
say "installing ${#aur[@]} AUR packages with $helper"
run "$helper" -S --needed --noconfirm "${aur[@]}" || fail_step "some AUR packages failed"
fi
elif [ "${#aur[@]}" -gt 0 ]; then
warn "not Arch; skipping AUR extras: ${aur[*]}"
fi
}
# ------------------------------------------------------------- dotfiles
dot() { git --git-dir="$DOTS_DIR" --work-tree="$HOME" "$@"; }
deploy_dotfiles() {
if [ -d "$DOTS_DIR" ]; then
ok "dotfiles repo already present"
else
say "cloning dotfiles"
run git clone --bare "$DOTS_REMOTE" "$DOTS_DIR" || { fail_step "dotfiles clone"; return 1; }
fi
run dot config status.showUntrackedFiles no
if [ "$DRY" = 1 ]; then note "would checkout main into \$HOME (backing up conflicts)"; return 0; fi
# Move anything that would be clobbered into a backup instead of losing it.
mkdir -p "$BACKUP"
local conflicts
conflicts="$(dot checkout main 2>&1 | grep -oP '^\s+\K\S+\.\S+$' || true)"
if [ -n "$conflicts" ]; then
say "backing up files that would be overwritten -> $BACKUP"
while IFS= read -r f; do
[ -z "$f" ] && continue
[ -e "$HOME/$f" ] || continue
mkdir -p "$BACKUP/$(dirname "$f")"
mv "$HOME/$f" "$BACKUP/$f" && note "$f"
done <<< "$conflicts"
dot checkout main || { fail_step "dotfiles checkout"; return 1; }
fi
rmdir "$BACKUP" 2>/dev/null
ok "dotfiles deployed"
}
# --------------------------------------------------------------- builds
build_st() {
command -v gcc >/dev/null 2>&1 || { warn "no compiler; skipping st"; return 0; }
mkdir -p "$SRC_DIR"
if [ ! -d "$SRC_DIR/st/.git" ]; then
say "cloning st"
run git clone --depth 1 "$ST_REMOTE" "$SRC_DIR/st" || { fail_step "st clone"; return 1; }
fi
# config.h is gitignored upstream, so the rice bundle carries ours
run cp "$RICE_DIR/st/config.h" "$SRC_DIR/st/config.h" || { fail_step "st config"; return 1; }
say "building st"
run bash -c 'cd "$1" && make clean >/dev/null 2>&1; make' _ "$SRC_DIR/st" || { fail_step "st build"; return 1; }
run bash -c 'cd "$1" && sudo make install' _ "$SRC_DIR/st" || { fail_step "st install"; return 1; }
ok "st installed"
}
build_particles() {
command -v gcc >/dev/null 2>&1 || { warn "no compiler; skipping particles"; return 0; }
pkg-config --exists cairo x11 xext xfixes xrandr 2>/dev/null || {
warn "cairo/X11 dev headers missing; skipping particles"; return 0; }
say "building particles"
run bash -c 'cd "$1" && make clean >/dev/null 2>&1; make' _ "$RICE_DIR/particles" || { fail_step "particles build"; return 1; }
run bash -c 'cd "$1" && sudo make install' _ "$RICE_DIR/particles" || { fail_step "particles install"; return 1; }
ok "particles installed (run 'particles' to toggle)"
}
# ---------------------------------------------------------------- setup
post_setup() {
say "post-setup"
chmod +x "$HOME"/.config/bspwm/bspwmrc 2>/dev/null
chmod +x "$HOME"/.config/polybar/launch.sh 2>/dev/null
chmod +x "$HOME"/.config/scripts/*.sh 2>/dev/null
chmod +x "$HOME"/.config/scripts/rofi-menus/*.sh 2>/dev/null
chmod +x "$HOME"/.config/rice/install.sh 2>/dev/null
[ "$DRY" = 1 ] && { note "would fix permissions, rebuild fonts, set wallpaper"; return 0; }
command -v fc-cache >/dev/null 2>&1 && fc-cache -f >/dev/null 2>&1 && ok "font cache rebuilt"
if command -v papirus-folders >/dev/null 2>&1; then
papirus-folders -C blue --theme Papirus-Dark >/dev/null 2>&1 && ok "papirus folders set to blue"
fi
if [ -f "$HOME/.config/bspwm/wallpaper/wallpaper.jpg" ] && command -v feh >/dev/null 2>&1; then
feh --bg-fill "$HOME/.config/bspwm/wallpaper/wallpaper.jpg" >/dev/null 2>&1 && ok "wallpaper set"
fi
ok "post-setup done"
}
# ----------------------------------------------------------------- main
printf '\n%s Sakura Line%s - bspwm rice bootstrap\n\n' "$c_hd" "$c_off"
say "$PM_LINE"
[ "$DRY" = 1 ] && say "dry run - nothing will be changed"
install_packages
deploy_dotfiles
build_st
build_particles
post_setup
printf '\n'
if [ "${#STEPS_FAILED[@]}" -eq 0 ]; then
say "done - log out and back into bspwm to pick everything up"
else
say "finished with ${#STEPS_FAILED[@]} problem(s):"
for s in "${STEPS_FAILED[@]}"; do printf ' %s- %s%s\n' "$c_er" "$s" "$c_off"; done
fi
printf '\n %sst%s must be reopened to show new colours; %sparticles%s toggles the wallpaper layer.\n\n' \
"$c_hd" "$c_off" "$c_hd" "$c_off"

54
.config/rice/packages.txt Normal file
View file

@ -0,0 +1,54 @@
# Sakura Line rice - Arch package list.
# Lines starting with # are ignored. "aur:" prefix needs an AUR helper.
# --- window manager / desktop ---
bspwm
sxhkd
polybar
picom
rofi
dunst
feh
xdotool
xorg-xrandr
xorg-xprop
# --- build toolchain (st + particles) ---
base-devel
git
pkgconf
libx11
libxext
libxft
libxrandr
libxfixes
libxinerama
cairo
harfbuzz
fontconfig
freetype2
gd
# --- fonts ---
ttf-jetbrains-mono-nerd
noto-fonts
noto-fonts-emoji
# --- theming ---
qt6ct
papirus-icon-theme
aur:bibata-cursor-theme
# --- apps ---
thunar
fastfetch
# --- showcase toys ---
cava
btop
cmatrix
asciiquarium
onefetch
aur:cbonsai
aur:pipes.sh
aur:tty-clock

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,23 @@
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
PKGS := cairo x11 xext xfixes xrender xrandr
CFLAGS ?= -O2 -Wall -Wextra
CFLAGS += $(shell pkg-config --cflags $(PKGS))
LDLIBS := $(shell pkg-config --libs $(PKGS)) -lm
all: particles
particles: particles_wall.c
$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)
install: particles
install -Dm755 particles $(DESTDIR)$(BINDIR)/particles
uninstall:
rm -f $(DESTDIR)$(BINDIR)/particles
clean:
rm -f particles
.PHONY: all install uninstall clean

File diff suppressed because it is too large Load diff

575
.config/rice/st/config.h Normal file
View file

@ -0,0 +1,575 @@
/* See LICENSE file for copyright and license details. */
/*
* appearance
*
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
*/
static char *font = "JetBrainsMono Nerd Font :pixelsize=14:antialias=true:autohint=true";
static char *font2[] = { "JetBrainsMono Nerd Font :pixelsize=14:antialias=true:autohint=true" };
static int borderpx = 15;
/*
* What program is execed by st depends of these precedence rules:
* 1: program passed with -e
* 2: utmp option
* 3: SHELL environment variable
* 4: value of shell in /etc/passwd
* 5: value of shell in config.h
*/
static char *shell = "/bin/sh";
char *utmp = NULL;
char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
/* identification sequence returned in DA and DECID */
char *vtiden = "\033[?6c";
/* Kerning / character bounding-box multipliers */
static float cwscale = 1.0;
static float chscale = 1.0;
/*
* word delimiter string
*
* More advanced example: L" `'\"()[]{}"
*/
wchar_t *worddelimiters = L" ";
/* selection timeouts (in milliseconds) */
static unsigned int doubleclicktimeout = 300;
static unsigned int tripleclicktimeout = 600;
/* alt screens */
int allowaltscreen = 1;
/*
* draw latency range in ms - from new content/keypress/etc until drawing.
* within this range, st draws when content stops arriving (idle). mostly it's
* near minlatency, but it waits longer for slow updates to avoid partial draw.
* low minlatency will tear/flicker more, as it can "detect" idle too early.
*/
static double minlatency = 8;
static double maxlatency = 33;
/*
* Synchronized-Update timeout in ms
* https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec
*/
static uint su_timeout = 200;
/*
* blinking timeout (set to 0 to disable blinking) for the terminal blinking
* attribute.
*/
static unsigned int blinktimeout = 800;
/*
* interval (in milliseconds) between each successive call to ximspot. This
* improves terminal performance while not reducing functionality to those
* whom need XIM support.
*/
int ximspot_update_interval = 1000;
/*
* thickness of underline and bar cursors
*/
static unsigned int cursorthickness = 2;
/*
* 1: render most of the lines/blocks characters without using the font for
* perfect alignment between cells (U2500 - U259F except dashes/diagonals).
* Bold affects lines thickness if boxdraw_bold is not 0. Italic is ignored.
* 0: disable (render all U25XX glyphs normally from the font).
*/
const int boxdraw = 1;
const int boxdraw_bold = 1;
/* braille (U28XX): 1: render as adjacent "pixels", 0: use font */
const int boxdraw_braille = 1;
/*
* bell volume. It must be a value between -100 and 100. Use 0 for disabling
* it
*/
static int bellvolume = 0;
/* default TERM value */
char *termname = "st-256color";
/*
* spaces per tab
*
* When you are changing this value, don't forget to adapt the »it« value in
* the st.info and appropriately install the st.info in the environment where
* you use this st version.
*
* it#$tabspaces,
*
* Secondly make sure your kernel is not expanding tabs. When running `stty
* -a` »tab0« should appear. You can tell the terminal to not expand tabs by
* running following command:
*
* stty tabs
*/
unsigned int tabspaces = 8;
/* bg opacity */
float alpha = 0.72;
/* Terminal colors (16 first used in escape sequence) */
static const char *colorname[] = {
/* Sakura Line - sampled from bspwm/wallpaper/wallpaper.jpg */
/* 8 normal colors */
"#0f0d17", /* black */
"#cf6a80", /* red */
"#8fae74", /* green */
"#d8a87c", /* yellow */
"#7c9ede", /* blue */
"#b483c0", /* magenta */
"#8ab6c4", /* cyan */
"#c9d1e2", /* white */
/* 8 bright colors */
"#3a3350", /* black */
"#e0798f", /* red */
"#a8c68d", /* green */
"#e9c79b", /* yellow */
"#92b9ea", /* blue */
"#d0a4d8", /* magenta */
"#a3c0cb", /* cyan */
"#e9eefb", /* white */
};
/*
* Default colors (colorname index)
* foreground, background, cursor, reverse cursor
*/
unsigned int defaultfg = 15; // #e9eefb
unsigned int defaultbg = 0; // #0f0d17
unsigned int defaultcs = 12; // cursor: #92b9ea (sky)
unsigned int defaultrcs = 0;
/*
* https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
* Default style of cursor
* 0: Blinking block
* 1: Blinking block (default)
* 2: Steady block ("")
* 3: Blinking underline
* 4: Steady underline ("_")
* 5: Blinking bar
* 6: Steady bar ("|")
* 7: Blinking st cursor
* 8: Steady st cursor
*/
static unsigned int cursorshape = 1;
/*
* Default columns and rows numbers
*/
static unsigned int cols = 80;
static unsigned int rows = 24;
/*
* Default colour and shape of the mouse cursor
*/
static unsigned int mouseshape = XC_xterm;
static unsigned int mousefg = 7;
static unsigned int mousebg = 0;
/*
* Color used to display font attributes when fontconfig selected a font which
* doesn't match the ones requested.
*/
static unsigned int defaultattr = 11;
/*
* Xresources preferences to load at startup
*/
ResourcePref resources[] = {
{ "font", STRING, &font },
{ "fontalt0", STRING, &font2[0] },
{ "color0", STRING, &colorname[0] },
{ "color1", STRING, &colorname[1] },
{ "color2", STRING, &colorname[2] },
{ "color3", STRING, &colorname[3] },
{ "color4", STRING, &colorname[4] },
{ "color5", STRING, &colorname[5] },
{ "color6", STRING, &colorname[6] },
{ "color7", STRING, &colorname[7] },
{ "color8", STRING, &colorname[8] },
{ "color9", STRING, &colorname[9] },
{ "color10", STRING, &colorname[10] },
{ "color11", STRING, &colorname[11] },
{ "color12", STRING, &colorname[12] },
{ "color13", STRING, &colorname[13] },
{ "color14", STRING, &colorname[14] },
{ "color15", STRING, &colorname[15] },
{ "background", STRING, &colorname[258] },
{ "foreground", STRING, &colorname[259] },
{ "cursorColor", STRING, &colorname[256] },
{ "termname", STRING, &termname },
{ "shell", STRING, &shell },
{ "blinktimeout", INTEGER, &blinktimeout },
{ "bellvolume", INTEGER, &bellvolume },
{ "tabspaces", INTEGER, &tabspaces },
{ "borderpx", INTEGER, &borderpx },
{ "cwscale", FLOAT, &cwscale },
{ "chscale", FLOAT, &chscale },
{ "alpha", FLOAT, &alpha },
{ "ximspot_update_interval", INTEGER, &ximspot_update_interval },
};
/*
* Internal mouse shortcuts.
* Beware that overloading Button1 will disable the selection.
*/
const unsigned int mousescrollincrement = 3;
static MouseShortcut mshortcuts[] = {
/* button mask string */
{ Button4, XK_NO_MOD, "\031" },
{ Button5, XK_NO_MOD, "\005" },
};
/* Internal keyboard shortcuts. */
#define MODKEY Mod1Mask
#define TERMMOD (Mod4Mask|ShiftMask)
MouseKey mkeys[] = {
/* button mask function argument */
{ Button4, XK_NO_MOD, kscrollup, {.i = mousescrollincrement} },
{ Button5, XK_NO_MOD, kscrolldown, {.i = mousescrollincrement} },
{ Button4, Mod4Mask, zoom, {.f = +1} },
{ Button5, Mod4Mask, zoom, {.f = -1} },
};
static char *openurlcmd[] = { "/bin/sh", "-c", "st-urlhandler", "externalpipe", NULL };
static char *copyurlcmd[] = { "/bin/sh", "-c",
"tmp=$(sed 's/.*│//g' | tr -d '\n' | grep -aEo '(((http|https|gopher|gemini|ftp|ftps|git)://|www\\.)[a-zA-Z0-9.]*[:]?[a-zA-Z0-9./@$&%?$#=_-~]*)|((magnet:\\?xt=urn:btih:)[a-zA-Z0-9]*)' | uniq | sed 's/^www./http:\\/\\/www\\./g' ); IFS=; [ ! -z $tmp ] && echo $tmp | dmenu -i -p 'Copy which url?' -l 10 | tr -d '\n' | xclip -selection clipboard",
"externalpipe", NULL };
static char *copyoutput[] = { "/bin/sh", "-c", "st-copyout", "externalpipe", NULL };
static Shortcut shortcuts[] = {
/* mask keysym function argument */
{ XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} },
{ ControlMask, XK_Print, toggleprinter, {.i = 0} },
{ ShiftMask, XK_Print, printscreen, {.i = 0} },
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
{ MODKEY, XK_comma, zoom, {.f = +1} },
{ MODKEY, XK_period, zoom, {.f = -1} },
{ MODKEY, XK_g, zoomreset, {.f = 0} },
{ ControlMask | ShiftMask, XK_C, clipcopy, {.i = 0} },
{ ShiftMask, XK_Insert, clippaste, {.i = 0} },
{ ControlMask | ShiftMask, XK_V, clippaste, {.i = 0} },
{ XK_ANY_MOD, Button2, selpaste, {.i = 0} },
{ MODKEY, XK_Num_Lock, numlock, {.i = 0} },
{ ControlMask | ShiftMask, XK_U, iso14755, {.i = 0} },
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
{ MODKEY, XK_Page_Up, kscrollup, {.i = -1} },
{ MODKEY, XK_Page_Down, kscrolldown, {.i = -1} },
{ MODKEY, XK_k, kscrollup, {.i = 1} },
{ MODKEY, XK_j, kscrolldown, {.i = 1} },
{ MODKEY, XK_Up, kscrollup, {.i = 1} },
{ MODKEY, XK_Down, kscrolldown, {.i = 1} },
{ MODKEY, XK_u, kscrollup, {.i = -1} },
{ MODKEY, XK_d, kscrolldown, {.i = -1} },
{ MODKEY, XK_s, changealpha, {.f = -0.05} },
{ MODKEY, XK_a, changealpha, {.f = +0.05} },
{ MODKEY, XK_m, changealpha, {.f = +2.00} },
{ TERMMOD, XK_Up, zoom, {.f = +1} },
{ TERMMOD, XK_Down, zoom, {.f = -1} },
{ TERMMOD, XK_K, zoom, {.f = +1} },
{ TERMMOD, XK_J, zoom, {.f = -1} },
{ TERMMOD, XK_U, zoom, {.f = +2} },
{ TERMMOD, XK_D, zoom, {.f = -2} },
{ MODKEY, XK_l, externalpipe, {.v = openurlcmd } },
{ MODKEY, XK_y, externalpipe, {.v = copyurlcmd } },
{ MODKEY, XK_o, externalpipe, {.v = copyoutput } },
{ TERMMOD, XK_Return, newterm, {.i = 0} },
};
/*
* Special keys (change & recompile st.info accordingly)
*
* Mask value:
* * Use XK_ANY_MOD to match the key no matter modifiers state
* * Use XK_NO_MOD to match the key alone (no modifiers)
* appkey value:
* * 0: no value
* * > 0: keypad application mode enabled
* * = 2: term.numlock = 1
* * < 0: keypad application mode disabled
* appcursor value:
* * 0: no value
* * > 0: cursor application mode enabled
* * < 0: cursor application mode disabled
* crlf value
* * 0: no value
* * > 0: crlf mode is enabled
* * < 0: crlf mode is disabled
*
* Be careful with the order of the definitions because st searches in
* this table sequentially, so any XK_ANY_MOD must be in the last
* position for a key.
*/
/*
* If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
* to be mapped below, add them to this array.
*/
static KeySym mappedkeys[] = { -1 };
/*
* State bits to ignore when matching key or button events. By default,
* numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
*/
static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
/*
* Override mouse-select while mask is active (when MODE_MOUSE is set).
* Note that if you want to use ShiftMask with selmasks, set this to an other
* modifier, set to 0 to not use it.
*/
static uint forceselmod = ShiftMask;
/*
* This is the huge key array which defines all compatibility to the Linux
* world. Please decide about changes wisely.
*/
static Key key[] = {
/* keysym mask string appkey appcursor */
{ XK_KP_Home, ShiftMask, "\033[2J", 0, -1},
{ XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1},
{ XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1},
{ XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1},
{ XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0},
{ XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1},
{ XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1},
{ XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0},
{ XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1},
{ XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1},
{ XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0},
{ XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1},
{ XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1},
{ XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0},
{ XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1},
{ XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1},
{ XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0},
{ XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
{ XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0},
{ XK_KP_End, ControlMask, "\033[J", -1, 0},
{ XK_KP_End, ControlMask, "\033[1;5F", +1, 0},
{ XK_KP_End, ShiftMask, "\033[K", -1, 0},
{ XK_KP_End, ShiftMask, "\033[1;2F", +1, 0},
{ XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0},
{ XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0},
{ XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0},
{ XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0},
{ XK_KP_Insert, ShiftMask, "\033[4l", -1, 0},
{ XK_KP_Insert, ControlMask, "\033[L", -1, 0},
{ XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0},
{ XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
{ XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
{ XK_KP_Delete, ControlMask, "\033[M", -1, 0},
{ XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0},
{ XK_KP_Delete, ShiftMask, "\033[2K", -1, 0},
{ XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0},
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", -1, 0},
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
{ XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0},
{ XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0},
{ XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0},
{ XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0},
{ XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0},
{ XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0},
{ XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0},
{ XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0},
{ XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0},
{ XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0},
{ XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0},
{ XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0},
{ XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0},
{ XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0},
{ XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0},
{ XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0},
{ XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0},
{ XK_Up, ShiftMask, "\033[1;2A", 0, 0},
{ XK_Up, Mod1Mask, "\033[1;3A", 0, 0},
{ XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0},
{ XK_Up, ControlMask, "\033[1;5A", 0, 0},
{ XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0},
{ XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0},
{ XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0},
{ XK_Up, XK_ANY_MOD, "\033[A", 0, -1},
{ XK_Up, XK_ANY_MOD, "\033OA", 0, +1},
{ XK_Down, ShiftMask, "\033[1;2B", 0, 0},
{ XK_Down, Mod1Mask, "\033[1;3B", 0, 0},
{ XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0},
{ XK_Down, ControlMask, "\033[1;5B", 0, 0},
{ XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0},
{ XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0},
{ XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0},
{ XK_Down, XK_ANY_MOD, "\033[B", 0, -1},
{ XK_Down, XK_ANY_MOD, "\033OB", 0, +1},
{ XK_Left, ShiftMask, "\033[1;2D", 0, 0},
{ XK_Left, Mod1Mask, "\033[1;3D", 0, 0},
{ XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0},
{ XK_Left, ControlMask, "\033[1;5D", 0, 0},
{ XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0},
{ XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0},
{ XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0},
{ XK_Left, XK_ANY_MOD, "\033[D", 0, -1},
{ XK_Left, XK_ANY_MOD, "\033OD", 0, +1},
{ XK_Right, ShiftMask, "\033[1;2C", 0, 0},
{ XK_Right, Mod1Mask, "\033[1;3C", 0, 0},
{ XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0},
{ XK_Right, ControlMask, "\033[1;5C", 0, 0},
{ XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0},
{ XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0},
{ XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0},
{ XK_Right, XK_ANY_MOD, "\033[C", 0, -1},
{ XK_Right, XK_ANY_MOD, "\033OC", 0, +1},
{ XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0},
{ XK_Return, Mod1Mask, "\033\r", 0, 0},
{ XK_Return, XK_ANY_MOD, "\r", 0, 0},
{ XK_Insert, ShiftMask, "\033[4l", -1, 0},
{ XK_Insert, ShiftMask, "\033[2;2~", +1, 0},
{ XK_Insert, ControlMask, "\033[L", -1, 0},
{ XK_Insert, ControlMask, "\033[2;5~", +1, 0},
{ XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
{ XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
{ XK_Delete, ControlMask, "\033[M", -1, 0},
{ XK_Delete, ControlMask, "\033[3;5~", +1, 0},
{ XK_Delete, ShiftMask, "\033[2K", -1, 0},
{ XK_Delete, ShiftMask, "\033[3;2~", +1, 0},
{ XK_Delete, XK_ANY_MOD, "\033[3~", -1, 0},
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
{ XK_BackSpace, XK_NO_MOD, "\177", 0, 0},
{ XK_BackSpace, Mod1Mask, "\033\177", 0, 0},
{ XK_Home, ShiftMask, "\033[2J", 0, -1},
{ XK_Home, ShiftMask, "\033[1;2H", 0, +1},
{ XK_Home, XK_ANY_MOD, "\033[H", 0, -1},
{ XK_Home, XK_ANY_MOD, "\033[1~", 0, +1},
{ XK_End, ControlMask, "\033[J", -1, 0},
{ XK_End, ControlMask, "\033[1;5F", +1, 0},
{ XK_End, ShiftMask, "\033[K", -1, 0},
{ XK_End, ShiftMask, "\033[1;2F", +1, 0},
{ XK_End, XK_ANY_MOD, "\033[4~", 0, 0},
{ XK_Prior, ControlMask, "\033[5;5~", 0, 0},
{ XK_Prior, ShiftMask, "\033[5;2~", 0, 0},
{ XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
{ XK_Next, ControlMask, "\033[6;5~", 0, 0},
{ XK_Next, ShiftMask, "\033[6;2~", 0, 0},
{ XK_Next, XK_ANY_MOD, "\033[6~", 0, 0},
{ XK_F1, XK_NO_MOD, "\033OP" , 0, 0},
{ XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0},
{ XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0},
{ XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0},
{ XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0},
{ XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0},
{ XK_F2, XK_NO_MOD, "\033OQ" , 0, 0},
{ XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0},
{ XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0},
{ XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0},
{ XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0},
{ XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0},
{ XK_F3, XK_NO_MOD, "\033OR" , 0, 0},
{ XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0},
{ XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0},
{ XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0},
{ XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0},
{ XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0},
{ XK_F4, XK_NO_MOD, "\033OS" , 0, 0},
{ XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0},
{ XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0},
{ XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0},
{ XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0},
{ XK_F5, XK_NO_MOD, "\033[15~", 0, 0},
{ XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0},
{ XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0},
{ XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0},
{ XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0},
{ XK_F6, XK_NO_MOD, "\033[17~", 0, 0},
{ XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0},
{ XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0},
{ XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0},
{ XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0},
{ XK_F7, XK_NO_MOD, "\033[18~", 0, 0},
{ XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0},
{ XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0},
{ XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0},
{ XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0},
{ XK_F8, XK_NO_MOD, "\033[19~", 0, 0},
{ XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0},
{ XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0},
{ XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0},
{ XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0},
{ XK_F9, XK_NO_MOD, "\033[20~", 0, 0},
{ XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0},
{ XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0},
{ XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0},
{ XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0},
{ XK_F10, XK_NO_MOD, "\033[21~", 0, 0},
{ XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0},
{ XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0},
{ XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0},
{ XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0},
{ XK_F11, XK_NO_MOD, "\033[23~", 0, 0},
{ XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0},
{ XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0},
{ XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0},
{ XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0},
{ XK_F12, XK_NO_MOD, "\033[24~", 0, 0},
{ XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0},
{ XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0},
{ XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0},
{ XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0},
{ XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0},
{ XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0},
{ XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0},
{ XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0},
{ XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0},
{ XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0},
{ XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0},
{ XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0},
{ XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0},
{ XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0},
{ XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0},
{ XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0},
{ XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0},
{ XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0},
{ XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0},
{ XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0},
{ XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0},
{ XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0},
{ XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0},
{ XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0},
{ XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0},
{ XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0},
{ XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0},
};
/*
* Selection types' masks.
* Use the same masks as usual.
* Button1Mask is always unset, to make masks match between ButtonPress.
* ButtonRelease and MotionNotify.
* If no match is found, regular selection is used.
*/
static uint selmasks[] = {
[SEL_RECTANGULAR] = Mod1Mask,
};
/*
* Printable characters in ASCII, used to estimate the advance width
* of single wide characters.
*/
static char ascii_printable[] =
" !\"#$%&'()*+,-./0123456789:;<=>?"
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
"`abcdefghijklmnopqrstuvwxyz{|}~";

View file

@ -1,12 +1,20 @@
configuration {
show-icons: true;
icon-theme: "Adwaita";
drun-display-format: "{name}";
display-drun: "";
modes: "drun,run,window";
}
* {
main-bg: #141414;
main-fg: #feffd3;
main-br: #8b9151;
main-ex: #dd7c4c;
select-bg: #1a1a1a;
select-fg: #afb979;
dim: #778284;
border-color: #444649;
main-bg: #0f0d17;
main-fg: #e9eefb;
main-br: #5d7fb0;
main-ex: #e0798f;
select-bg: #191527;
select-fg: #92b9ea;
dim: #7f7796;
border-color: #3d3752;
background-color: @main-bg;
text-color: @main-fg;
@ -14,12 +22,13 @@
window {
transparency: "real";
border-radius: 12px;
background-color: @main-bg;
width: 500px;
width: 620px;
padding: 0px;
location: north;
anchor: north;
y-offset: 33;
location: center;
anchor: center;
y-offset: 0;
x-offset: 0;
}
@ -77,7 +86,7 @@ listview {
spacing: 0px;
padding: 8px 12px;
scrollbar: false;
lines: 5;
lines: 9;
fixed-height: true;
columns: 1;
layout: vertical;
@ -87,8 +96,9 @@ listview {
element {
background-color: transparent;
text-color: @main-fg;
padding: 4px 4px;
padding: 6px 8px;
spacing: 0px;
border-radius: 8px;
}
element normal.normal {
@ -143,8 +153,8 @@ element selected.active {
/* Icon */
element-icon {
background-color: transparent;
size: 0.9em;
padding: 0px 6px 0px 0px;
size: 1.7em;
padding: 0px 10px 0px 0px;
}
/* Text - monospace for ls feel */

View file

@ -1,12 +1,12 @@
* {
main-bg: #141414;
main-fg: #feffd3;
main-br: #8b9151;
main-ex: #dd7c4c;
select-bg: #1a1a1a;
select-fg: #afb979;
dim: #778284;
border-color: #444649;
main-bg: #0f0d17;
main-fg: #e9eefb;
main-br: #5d7fb0;
main-ex: #e0798f;
select-bg: #191527;
select-fg: #92b9ea;
dim: #7f7796;
border-color: #3d3752;
background-color: @main-bg;
text-color: @main-fg;
@ -14,6 +14,7 @@
window {
transparency: "real";
border-radius: 12px;
background-color: @main-bg;
width: 500px;
padding: 0px;

View file

@ -1,12 +1,12 @@
* {
main-bg: #141414;
main-fg: #feffd3;
main-br: #8b9151;
main-ex: #dd7c4c;
select-bg: #1a1a1a;
select-fg: #afb979;
dim: #778284;
border-color: #444649;
main-bg: #0f0d17;
main-fg: #e9eefb;
main-br: #5d7fb0;
main-ex: #e0798f;
select-bg: #191527;
select-fg: #92b9ea;
dim: #7f7796;
border-color: #3d3752;
background-color: @main-bg;
text-color: @main-fg;
@ -14,6 +14,7 @@
window {
transparency: "real";
border-radius: 12px;
background-color: @main-bg;
width: 500px;
padding: 0px;

View file

@ -1,12 +1,12 @@
* {
main-bg: #141414;
main-fg: #feffd3;
main-br: #8b9151;
main-ex: #dd7c4c;
select-bg: #1a1a1a;
select-fg: #afb979;
dim: #778284;
border-color: #444649;
main-bg: #0f0d17;
main-fg: #e9eefb;
main-br: #5d7fb0;
main-ex: #e0798f;
select-bg: #191527;
select-fg: #92b9ea;
dim: #7f7796;
border-color: #3d3752;
background-color: @main-bg;
text-color: @main-fg;
@ -14,6 +14,7 @@
window {
transparency: "real";
border-radius: 12px;
background-color: @main-bg;
width: 500px;
padding: 0px;

View file

@ -1,8 +1,8 @@
#!/bin/bash
# Colors
GREEN="%{F#b4be7b}"
BLUE="%{F#afb979}"
DIM="%{F#778284}"
GREEN="%{F#8fae74}"
BLUE="%{F#92b9ea}"
DIM="%{F#7f7796}"
RESET="%{F-}"
STATE_FILE="/tmp/polybar-toggle-state"

0
.config/scripts/rofi-menus/audio-manager.sh Normal file → Executable file
View file

12
.gtkrc-2.0 Normal file
View file

@ -0,0 +1,12 @@
# Sakura Line
gtk-theme-name="Adwaita"
gtk-icon-theme-name="Adwaita"
gtk-font-name="Noto Sans Light 10"
gtk-cursor-theme-name="Bibata-Modern-Classic"
gtk-cursor-theme-size=20
gtk-color-scheme="fg_color:#e9eefb\nbg_color:#16121f\nbase_color:#100d18\ntext_color:#e9eefb\nselected_bg_color:#92b9ea\nselected_fg_color:#0f0d17\ntooltip_bg_color:#2a2440\ntooltip_fg_color:#e9eefb"
gtk-enable-animations=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintmedium"
gtk-xft-rgba="rgb"