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:
parent
45e5fe53d2
commit
f341989335
35 changed files with 3300 additions and 124 deletions
|
|
@ -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 &
|
||||
|
|
|
|||
|
|
@ -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'",
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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 |
Binary file not shown.
|
Before Width: | Height: | Size: 274 KiB |
15
.config/btop/btop.conf
Normal file
15
.config/btop/btop.conf
Normal 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
|
||||
53
.config/btop/themes/sakura-line.theme
Normal file
53
.config/btop/themes/sakura-line.theme
Normal 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
32
.config/cava/config
Normal 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'
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
144
.config/gtk-3.0/gtk.css
Normal 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; }
|
||||
|
|
@ -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
144
.config/gtk-4.0/gtk.css
Normal 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; }
|
||||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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
28
.config/particles.conf
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
61
.config/rice/README.md
Normal 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
238
.config/rice/install.sh
Executable 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
54
.config/rice/packages.txt
Normal 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
|
||||
21
.config/rice/particles/LICENSE
Normal file
21
.config/rice/particles/LICENSE
Normal 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.
|
||||
23
.config/rice/particles/Makefile
Normal file
23
.config/rice/particles/Makefile
Normal 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
|
||||
1744
.config/rice/particles/particles_wall.c
Normal file
1744
.config/rice/particles/particles_wall.c
Normal file
File diff suppressed because it is too large
Load diff
575
.config/rice/st/config.h
Normal file
575
.config/rice/st/config.h
Normal 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{|}~";
|
||||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
0
.config/scripts/rofi-menus/audio-manager.sh
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue