Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
de839f7faf
|
|||
|
12d3fdcaa5
|
@@ -3,6 +3,16 @@
|
||||
## How it looks like...
|
||||
|
||||
<details>
|
||||
<summary>Hyprland & Waybar & Eww</summary>
|
||||
|
||||
<figure>
|
||||
<img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/desktop.jpg?raw=true"/>
|
||||
</figure>
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Niri & Quickshell</summary>
|
||||
|
||||
https://github.com/user-attachments/assets/2550607a-48ea-4662-98ba-d26722b26b1b
|
||||
@@ -40,7 +50,7 @@ https://github.com/user-attachments/assets/2550607a-48ea-4662-98ba-d26722b26b1b
|
||||
- Terminal: **Kitty** & (WezTerm | **Ghostty**)
|
||||
- Power Menu: **Wlogout** & Quickshell
|
||||
- Colorscheme: **Catppuccin Mocha**
|
||||
- App Launcher: ~~Rofi~~ | ~~Fuzzel~~ | **vicinae**
|
||||
- App Launcher: **Rofi** | ~~Fuzzel~~
|
||||
- Desktop Widgets: ~~Eww~~ | **Quickshell**
|
||||
- Wallpaper Daemon: ~~Awww~~ | **Quickshell**
|
||||
- Notification Daemon: ~~Mako~~ | **Quickshell**
|
||||
@@ -56,12 +66,22 @@ Not based on, but heavily depends on many modules from (an old version of) [noct
|
||||
|
||||
This setup is currently only adapted for Niri.
|
||||
|
||||
## Eww
|
||||
|
||||
- `main`, main dashboard, modified from [syndrizzle/hotfiles](https://github.com/syndrizzle/hotfiles/tree/bspwm) but without notification center.
|
||||
- `lyrics`, scrolling lyrics player, depends on [a small utility](https://github.com/Uyanide/Spotify_Lyrics) from myself <small>(which also happens to be my frist Golang program :D)</small>.
|
||||
- `lyrics-single`, similar to `lyrics`, but only with a single line and can be easily embeded into the status bar.
|
||||
|
||||
## Wallpaper & Colortheme
|
||||
|
||||
- [WallReel](https://github.com/Uyanide/WallReel): an Image Carousel implemented with QtQuick to browse and set wallpapers from.
|
||||
- [change-colortheme](./config/scripts/.local/scripts/change-colortheme): script that extract colors from the current wallpaper and generate a catppuccin color scheme accordingly.
|
||||
- [backgrounds](https://github.com/Uyanide/backgrounds) collection for personal use (mostly waifus).
|
||||
|
||||
## Rofi
|
||||
|
||||
Based on [codeopshq/dotfiles](https://github.com/codeopshq/dotfiles), also serves as the clipboard history browser and emoji picker.
|
||||
|
||||
## Grub theme
|
||||
|
||||
Based on [vinceliuice/Elegant-grub2-themes](https://github.com/vinceliuice/Elegant-grub2-themes) with an [illustration from 紺屋](https://www.pixiv.net/artworks/119683453).
|
||||
@@ -69,43 +89,3 @@ Based on [vinceliuice/Elegant-grub2-themes](https://github.com/vinceliuice/Elega
|
||||
## Fonts
|
||||
|
||||
See [fontconfig.md](https://github.com/Uyanide/dotfiles/blob/main/memo/fontconfig.md).
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary>Previous setup</summary>
|
||||
|
||||
## How it looks like...
|
||||
|
||||
<figure>
|
||||
<img src="https://github.com/Uyanide/backgrounds/blob/master/screenshots/desktop.jpg?raw=true"/>
|
||||
</figure>
|
||||
|
||||
## Hyprland & friends
|
||||
|
||||
Based on an old version of [end-4/dots-hyprland](https://github.com/end-4/dots-hyprland) but without ags, quickshell, eww and tons of other stuff.
|
||||
|
||||
## Eww
|
||||
|
||||
- `main`, main dashboard, modified from [syndrizzle/hotfiles](https://github.com/syndrizzle/hotfiles/tree/bspwm) but without notification center.
|
||||
- `lyrics`, scrolling lyrics player, depends on [a small utility](https://github.com/Uyanide/Spotify_Lyrics) from myself <small>(which also happens to be my frist Golang program :D)</small>.
|
||||
- `lyrics-single`, similar to `lyrics`, but only with a single line and can be easily embeded into the status bar.
|
||||
|
||||
## Swww
|
||||
|
||||
The wallpaper will be automatically blurred when there is a window in focus, which is implemented in the [wallpaper-daemon](https://github.com/Uyanide/dotfiles/blob/main/.scripts/wallpaper-daemon) script.
|
||||
|
||||
This feature is only enabled in Niri. Swww also manages wallpapers of the Hyprland setup, yet only in the regular way.
|
||||
|
||||
## Wallpaper & Colortheme
|
||||
|
||||
The most suitable primary color (or so-called flavor) will be chosen from the [Catppuccin Mocha](https://catppuccin.com/palette/) palette and applied to various apps automatically after changing wallpaper. And also:
|
||||
|
||||
- [wallpaper-chooser](https://github.com/Uyanide/Wallpaper_Chooser) to select wallpaper, which implements an Image Carousel with Qt Widgets.
|
||||
- [backgrounds collection](https://github.com/Uyanide/backgrounds) for personal use.
|
||||
|
||||
## Rofi
|
||||
|
||||
Based on [codeopshq/dotfiles](https://github.com/codeopshq/dotfiles), also serves as the clipboard history browser and emoji picker.
|
||||
|
||||
</details>
|
||||
|
||||
@@ -66,12 +66,6 @@ PKGS = {
|
||||
"niri": NIRI_PKGS,
|
||||
}
|
||||
|
||||
SESSION_NAME = {
|
||||
"hyprland": "Hyprland",
|
||||
"niri": "niri",
|
||||
"default": "default",
|
||||
}
|
||||
|
||||
|
||||
PKGS_PATH = Path(__file__).resolve().parent.resolve() / "config"
|
||||
DEST_PATH = Path.home().expanduser()
|
||||
@@ -107,12 +101,6 @@ def unstow(pkg: str):
|
||||
)
|
||||
|
||||
|
||||
def switch(session: str):
|
||||
subprocess.run(
|
||||
[str(Path("~/.local/scripts/config-switch").expanduser()), session], check=True
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
if not check_deps():
|
||||
exit(1)
|
||||
@@ -147,17 +135,6 @@ def main():
|
||||
if is_unstow:
|
||||
return # No need to switch session if we're just unstowing
|
||||
|
||||
if args.package in SESSION_NAME:
|
||||
session = SESSION_NAME[args.package]
|
||||
else:
|
||||
session = SESSION_NAME["default"]
|
||||
|
||||
try:
|
||||
switch(session)
|
||||
_log("INFO", f"Switched to session profile '{session}'.")
|
||||
except subprocess.CalledProcessError as e:
|
||||
_log("ERROR", f"Failed to switch session profile '{session}': {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
theme = Catppuccin Mocha
|
||||
|
||||
background-opacity = 0.75
|
||||
background-blur = true
|
||||
|
||||
window-padding-x = 10
|
||||
window-padding-y = 10
|
||||
|
||||
keybind = ctrl+shift+r=reload_config
|
||||
|
||||
keybind = ctrl+shift+h=write_screen_file:copy
|
||||
keybind = ctrl+shift+j=text:ghostty-capture\n
|
||||
keybind = ctrl+enter=unbind
|
||||
|
||||
command = exec /bin/zsh
|
||||
|
||||
confirm-close-surface = false
|
||||
|
||||
font-family = monospace
|
||||
font-size = 12
|
||||
|
||||
cursor-style = bar
|
||||
adjust-cursor-thickness = 3
|
||||
|
||||
custom-shader = cursor-shaders/cursor-smear.glsl
|
||||
|
||||
quit-after-last-window-closed = false
|
||||
@@ -1 +0,0 @@
|
||||
shaders
|
||||
@@ -1,120 +0,0 @@
|
||||
// https://github.com/KroneCorylus/ghostty-shader-playground/blob/main/shaders/cursor_smear.glsl
|
||||
|
||||
float getSdfRectangle(in vec2 p, in vec2 xy, in vec2 b)
|
||||
{
|
||||
vec2 d = abs(p - xy) - b;
|
||||
return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);
|
||||
}
|
||||
|
||||
// Based on Inigo Quilez's 2D distance functions article: https://iquilezles.org/articles/distfunctions2d/
|
||||
// Potencially optimized by eliminating conditionals and loops to enhance performance and reduce branching
|
||||
|
||||
float seg(in vec2 p, in vec2 a, in vec2 b, inout float s, float d) {
|
||||
vec2 e = b - a;
|
||||
vec2 w = p - a;
|
||||
vec2 proj = a + e * clamp(dot(w, e) / dot(e, e), 0.0, 1.0);
|
||||
float segd = dot(p - proj, p - proj);
|
||||
d = min(d, segd);
|
||||
|
||||
float c0 = step(0.0, p.y - a.y);
|
||||
float c1 = 1.0 - step(0.0, p.y - b.y);
|
||||
float c2 = 1.0 - step(0.0, e.x * w.y - e.y * w.x);
|
||||
float allCond = c0 * c1 * c2;
|
||||
float noneCond = (1.0 - c0) * (1.0 - c1) * (1.0 - c2);
|
||||
float flip = mix(1.0, -1.0, step(0.5, allCond + noneCond));
|
||||
s *= flip;
|
||||
return d;
|
||||
}
|
||||
|
||||
float getSdfParallelogram(in vec2 p, in vec2 v0, in vec2 v1, in vec2 v2, in vec2 v3) {
|
||||
float s = 1.0;
|
||||
float d = dot(p - v0, p - v0);
|
||||
|
||||
d = seg(p, v0, v3, s, d);
|
||||
d = seg(p, v1, v0, s, d);
|
||||
d = seg(p, v2, v1, s, d);
|
||||
d = seg(p, v3, v2, s, d);
|
||||
|
||||
return s * sqrt(d);
|
||||
}
|
||||
|
||||
vec2 normalize(vec2 value, float isPosition) {
|
||||
return (value * 2.0 - (iResolution.xy * isPosition)) / iResolution.y;
|
||||
}
|
||||
|
||||
float antialising(float distance) {
|
||||
return 1. - smoothstep(0., normalize(vec2(2., 2.), 0.).x, distance);
|
||||
}
|
||||
|
||||
float determineStartVertexFactor(vec2 a, vec2 b) {
|
||||
// Conditions using step
|
||||
float condition1 = step(b.x, a.x) * step(a.y, b.y); // a.x < b.x && a.y > b.y
|
||||
float condition2 = step(a.x, b.x) * step(b.y, a.y); // a.x > b.x && a.y < b.y
|
||||
|
||||
// If neither condition is met, return 1 (else case)
|
||||
return 1.0 - max(condition1, condition2);
|
||||
}
|
||||
|
||||
vec2 getRectangleCenter(vec4 rectangle) {
|
||||
return vec2(rectangle.x + (rectangle.z / 2.), rectangle.y - (rectangle.w / 2.));
|
||||
}
|
||||
float ease(float x) {
|
||||
return pow(1.0 - x, 3.0);
|
||||
}
|
||||
vec4 saturate(vec4 color, float factor) {
|
||||
float gray = dot(color, vec4(0.299, 0.587, 0.114, 0.)); // luminance
|
||||
return mix(vec4(gray), color, factor);
|
||||
}
|
||||
|
||||
vec4 TRAIL_COLOR = iCurrentCursorColor;
|
||||
const float OPACITY = 0.6;
|
||||
const float DURATION = 0.3; //IN SECONDS
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord)
|
||||
{
|
||||
|
||||
#if !defined(WEB)
|
||||
fragColor = texture(iChannel0, fragCoord.xy / iResolution.xy);
|
||||
#endif
|
||||
// Normalization for fragCoord to a space of -1 to 1;
|
||||
vec2 vu = normalize(fragCoord, 1.);
|
||||
vec2 offsetFactor = vec2(-.5, 0.5);
|
||||
|
||||
// Normalization for cursor position and size;
|
||||
// cursor xy has the postion in a space of -1 to 1;
|
||||
// zw has the width and height
|
||||
vec4 currentCursor = vec4(normalize(iCurrentCursor.xy, 1.), normalize(iCurrentCursor.zw, 0.));
|
||||
vec4 previousCursor = vec4(normalize(iPreviousCursor.xy, 1.), normalize(iPreviousCursor.zw, 0.));
|
||||
|
||||
// When drawing a parellelogram between cursors for the trail i need to determine where to start at the top-left or top-right vertex of the cursor
|
||||
float vertexFactor = determineStartVertexFactor(currentCursor.xy, previousCursor.xy);
|
||||
float invertedVertexFactor = 1.0 - vertexFactor;
|
||||
|
||||
// Set every vertex of my parellogram
|
||||
vec2 v0 = vec2(currentCursor.x + currentCursor.z * vertexFactor, currentCursor.y - currentCursor.w);
|
||||
vec2 v1 = vec2(currentCursor.x + currentCursor.z * invertedVertexFactor, currentCursor.y);
|
||||
vec2 v2 = vec2(previousCursor.x + currentCursor.z * invertedVertexFactor, previousCursor.y);
|
||||
vec2 v3 = vec2(previousCursor.x + currentCursor.z * vertexFactor, previousCursor.y - previousCursor.w);
|
||||
|
||||
float sdfCurrentCursor = getSdfRectangle(vu, currentCursor.xy - (currentCursor.zw * offsetFactor), currentCursor.zw * 0.5);
|
||||
float sdfTrail = getSdfParallelogram(vu, v0, v1, v2, v3);
|
||||
|
||||
float progress = clamp((iTime - iTimeCursorChange) / DURATION, 0.0, 1.0);
|
||||
float easedProgress = ease(progress);
|
||||
// Distance between cursors determine the total length of the parallelogram;
|
||||
vec2 centerCC = getRectangleCenter(currentCursor);
|
||||
vec2 centerCP = getRectangleCenter(previousCursor);
|
||||
float lineLength = distance(centerCC, centerCP);
|
||||
|
||||
vec4 newColor = vec4(fragColor);
|
||||
|
||||
vec4 trail = TRAIL_COLOR;
|
||||
trail = saturate(trail, 2.5);
|
||||
// Draw trail
|
||||
newColor = mix(newColor, trail, antialising(sdfTrail));
|
||||
// Draw current cursor
|
||||
newColor = mix(newColor, trail, antialising(sdfCurrentCursor));
|
||||
newColor = mix(newColor, fragColor, step(sdfCurrentCursor, 0.));
|
||||
// newColor = mix(fragColor, newColor, OPACITY);
|
||||
fragColor = mix(fragColor, newColor, step(sdfCurrentCursor, easedProgress * lineLength));
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
theme = Catppuccin Mocha
|
||||
|
||||
background-opacity = 0.95
|
||||
background-opacity = 0.9
|
||||
background-blur = true
|
||||
|
||||
window-padding-x = 10
|
||||
@@ -1,48 +0,0 @@
|
||||
allow_remote_control yes
|
||||
listen_on unix:/tmp/kitty
|
||||
shell_integration enabled
|
||||
|
||||
# kitty-scrollback.nvim Kitten alias
|
||||
action_alias kitty_scrollback_nvim kitten $HOME/.local/share/nvim/lazy/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py
|
||||
# Browse scrollback buffer in nvim
|
||||
map kitty_mod+h kitty_scrollback_nvim
|
||||
# Browse output of the last shell command in nvim
|
||||
map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output
|
||||
# Show clicked command output in nvim
|
||||
mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output
|
||||
|
||||
# disable the stupid notification
|
||||
confirm_os_window_close 0
|
||||
|
||||
# set shell to zsh
|
||||
shell /bin/zsh
|
||||
|
||||
# hide_window_decorations yes
|
||||
window_padding_width 10
|
||||
|
||||
background_opacity 0.75
|
||||
background_blur 16
|
||||
|
||||
font_family monospace
|
||||
font_size 12
|
||||
|
||||
tab_bar_style powerline
|
||||
tab_powerline_style round
|
||||
tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}
|
||||
|
||||
map ctrl+up previous_window
|
||||
map ctrl+down next_window
|
||||
|
||||
cursor_trail 1
|
||||
cursor_shape beam
|
||||
|
||||
include Catppuccin-Mocha.conf
|
||||
|
||||
map ctrl+plus change_font_size all +1
|
||||
map ctrl+kp_add change_font_size all +1
|
||||
|
||||
map ctrl+minus change_font_size all -1
|
||||
map ctrl+kp_subtract change_font_size all -1
|
||||
|
||||
map ctrl+0 change_font_size all 0
|
||||
map ctrl+kp_0 change_font_size all 0
|
||||
@@ -1,80 +0,0 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
## name: Catppuccin-Mocha
|
||||
## author: Pocco81 (https://github.com/Pocco81)
|
||||
## license: MIT
|
||||
## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf
|
||||
## blurb: Soothing pastel theme for the high-spirited!
|
||||
|
||||
|
||||
|
||||
# The basic colors
|
||||
foreground #CDD6F4
|
||||
background #1E1E2E
|
||||
selection_foreground #1E1E2E
|
||||
selection_background #F5E0DC
|
||||
|
||||
# Cursor colors
|
||||
cursor #F5E0DC
|
||||
cursor_text_color #1E1E2E
|
||||
|
||||
# URL underline color when hovering with mouse
|
||||
url_color #F5E0DC
|
||||
|
||||
# Kitty window border colors
|
||||
active_border_color #B4BEFE
|
||||
inactive_border_color #6C7086
|
||||
bell_border_color #F9E2AF
|
||||
|
||||
# OS Window titlebar colors
|
||||
wayland_titlebar_color system
|
||||
macos_titlebar_color system
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground #11111B
|
||||
active_tab_background #CBA6F7
|
||||
inactive_tab_foreground #CDD6F4
|
||||
inactive_tab_background #181825
|
||||
tab_bar_background #11111B
|
||||
|
||||
# Colors for marks (marked text in the terminal)
|
||||
mark1_foreground #1E1E2E
|
||||
mark1_background #B4BEFE
|
||||
mark2_foreground #1E1E2E
|
||||
mark2_background #CBA6F7
|
||||
mark3_foreground #1E1E2E
|
||||
mark3_background #74C7EC
|
||||
|
||||
# The 16 terminal colors
|
||||
|
||||
# black
|
||||
color0 #45475A
|
||||
color8 #585B70
|
||||
|
||||
# red
|
||||
color1 #F38BA8
|
||||
color9 #F38BA8
|
||||
|
||||
# green
|
||||
color2 #A6E3A1
|
||||
color10 #A6E3A1
|
||||
|
||||
# yellow
|
||||
color3 #F9E2AF
|
||||
color11 #F9E2AF
|
||||
|
||||
# blue
|
||||
color4 #89B4FA
|
||||
color12 #89B4FA
|
||||
|
||||
# magenta
|
||||
color5 #F5C2E7
|
||||
color13 #F5C2E7
|
||||
|
||||
# cyan
|
||||
color6 #94E2D5
|
||||
color14 #94E2D5
|
||||
|
||||
# white
|
||||
color7 #BAC2DE
|
||||
color15 #A6ADC8
|
||||
@@ -20,7 +20,7 @@ shell /bin/zsh
|
||||
# hide_window_decorations yes
|
||||
window_padding_width 10
|
||||
|
||||
background_opacity 0.95
|
||||
background_opacity 0.9
|
||||
background_blur 16
|
||||
|
||||
font_family monospace
|
||||
@@ -45,9 +45,9 @@ binds {
|
||||
Mod+D repeat=false { spawn "vicinae" "vicinae://launch/system/run?toggle=true"; }
|
||||
|
||||
// Actions
|
||||
Print repeat=false { screenshot-screen; }
|
||||
Mod+Shift+S repeat=false { screenshot; }
|
||||
Mod+Ctrl+Shift+S repeat=false { screenshot-window; }
|
||||
Print repeat=false { screenshot-screen show-pointer=false; }
|
||||
Mod+Shift+S repeat=false { screenshot show-pointer=false; }
|
||||
Mod+Ctrl+Shift+S repeat=false { screenshot-window show-pointer=false; }
|
||||
Mod+Shift+C repeat=false { spawn "hyprpicker" "-a"; }
|
||||
|
||||
// Media
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// Switch configs
|
||||
spawn-at-startup "config-switch" "niri"
|
||||
|
||||
// Core
|
||||
spawn-at-startup "nm-applet"
|
||||
spawn-at-startup "gnome-keyring-daemon" "--start" "--components=secrets"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
screenshot-path "~/Pictures/Screenshots/niri_screenshot_%Y-%m-%d_%H-%M-%S.png"
|
||||
|
||||
debug {
|
||||
render-drm-device "/dev/dri/renderD128"
|
||||
render-drm-device "/dev/dri/renderD129"
|
||||
honor-xdg-activation-with-invalid-serial
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
|
||||
environment {
|
||||
__NV_PRIME_RENDER_OFFLOAD "1"
|
||||
__VK_LAYER_NV_optimus "NVIDIA_only"
|
||||
__GLX_VENDOR_LIBRARY_NAME "nvidia"
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ window-rule {
|
||||
|
||||
// Block from recording
|
||||
window-rule {
|
||||
match app-id="thunderbird"
|
||||
match app-id="org.mozilla.Thunderbird"
|
||||
|
||||
block-out-from "screen-capture"
|
||||
}
|
||||
|
||||
@@ -82,6 +82,15 @@ layer-rule {
|
||||
|
||||
}
|
||||
|
||||
layer-rule {
|
||||
match layer="top"
|
||||
match layer="overlay"
|
||||
|
||||
background-effect {
|
||||
xray false
|
||||
}
|
||||
}
|
||||
|
||||
cursor {
|
||||
xcursor-theme "Bibata-Modern-Ice"
|
||||
xcursor-size 24
|
||||
|
||||
@@ -1,25 +1,17 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-button-images=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-icon-theme-name=Papirus
|
||||
gtk-font-name=Sarasa UI SC 10
|
||||
gtk-cursor-theme-name=Bibata-Modern-Ice
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=0
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=0
|
||||
gtk-font-name=Sarasa UI SC, 10
|
||||
gtk-icon-theme-name=Papirus
|
||||
gtk-menu-images=true
|
||||
gtk-modules=colorreload-gtk-module
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-toolbar-style=3
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-dpi=122880
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintslight
|
||||
gtk-xft-rgba=rgb
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-icon-theme-name=Papirus
|
||||
gtk-font-name=Sarasa UI SC 10
|
||||
gtk-cursor-theme-name=Bibata-Modern-Ice
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Sarasa UI SC, 10
|
||||
gtk-icon-theme-name=Papirus
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
||||
gtk-xft-dpi=122880
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
||||
@@ -40,13 +40,9 @@ CONFIG_DIR = Path("~/.config").expanduser()
|
||||
|
||||
# An application may have multiple scripts (e.g. due to config-switch)
|
||||
SCRIPTS = {
|
||||
"eww": [CONFIG_DIR / "eww" / "apply-color"],
|
||||
"fastfetch": [CONFIG_DIR / "fastfetch" / "apply-color"],
|
||||
"fuzzel": [CONFIG_DIR / "fuzzel" / "apply-color"],
|
||||
"hypr": [CONFIG_DIR / "hypr" / "apply-color"],
|
||||
"kvantum": [CONFIG_DIR / "Kvantum" / "apply-color"],
|
||||
"nwg-look": [CONFIG_DIR / "nwg-look" / "apply-color"],
|
||||
"mako": [CONFIG_DIR / "mako" / "apply-color"],
|
||||
"niri": [CONFIG_DIR / "niri" / "apply-color"],
|
||||
"oh-my-posh": [
|
||||
CONFIG_DIR / "fish" / "apply-color-omp"
|
||||
@@ -55,12 +51,7 @@ SCRIPTS = {
|
||||
CONFIG_DIR / "fish" / "apply-color-starship"
|
||||
], # borrowing fish's directory
|
||||
"quickshell": [CONFIG_DIR / "quickshell" / "apply-color"],
|
||||
"rofi": [CONFIG_DIR / "rofi" / "apply-color"],
|
||||
"waybar": [CONFIG_DIR / "waybar" / "apply-color"],
|
||||
"wlogout": [
|
||||
CONFIG_DIR / ".alt" / "wlogout-default" / "apply-color",
|
||||
CONFIG_DIR / ".alt" / "wlogout-niri" / "apply-color",
|
||||
],
|
||||
"wlogout": [CONFIG_DIR / "wlogout" / "apply-color"],
|
||||
"yazi": [CONFIG_DIR / "yazi" / "apply-color"],
|
||||
}
|
||||
# or simply `find [-L] <CONFIG_DIR> -type f -name 'apply-color*'` to get all available scripts,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
# Constants
|
||||
niri_config_file="$HOME/.config/niri/config/misc.kdl"
|
||||
prefer_order=(intel nvidia)
|
||||
prefer_order=(nvidia intel)
|
||||
|
||||
# Get vendor and path of each GPU
|
||||
default_card_path="$(find /dev/dri/card* 2>/dev/null | head -n 1)"
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
[ -f "$HOME/.local/snippets/apply-color-helper" ] || {
|
||||
echo "Missing helper script: $HOME/.local/snippets/apply-color-helper"
|
||||
exit 1
|
||||
}
|
||||
. "$HOME/.local/snippets/apply-color-helper"
|
||||
|
||||
for file in "$path"/icons/*.svg; do
|
||||
[ -f "$file" ] || continue
|
||||
sed -i -E "s/(fill=\"#)([0-9A-Fa-f]{6})(\")/\1${colorHex}\3/" "$file" || {
|
||||
log_error "Failed to edit ${file}"
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
file="$path"/style.css
|
||||
|
||||
sed -i -E "s/(border-color:\s*#)([0-9A-Fa-f]{6})(;)/\1${colorHex}\3/" "$file" || {
|
||||
log_error "Failed to edit ${file}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
log_success "wlogout"
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"label": "lock",
|
||||
"action": "loginctl lock-session",
|
||||
"text": "Lock",
|
||||
"keybind": "l"
|
||||
}
|
||||
{
|
||||
"label": "hibernate",
|
||||
"action": "systemctl hibernate",
|
||||
"text": "Hibernate",
|
||||
"keybind": "h"
|
||||
}
|
||||
{
|
||||
"label": "logout",
|
||||
"action": "hyprctl dispatch exit",
|
||||
"text": "Logout",
|
||||
"keybind": "e"
|
||||
}
|
||||
{
|
||||
"label": "shutdown",
|
||||
"action": "systemctl poweroff",
|
||||
"text": "Shutdown",
|
||||
"keybind": "s"
|
||||
}
|
||||
{
|
||||
"label": "suspend",
|
||||
"action": "sleep 0.1 && systemctl suspend",
|
||||
"text": "Suspend",
|
||||
"keybind": "u"
|
||||
}
|
||||
{
|
||||
"label": "reboot",
|
||||
"action": "systemctl reboot",
|
||||
"text": "Reboot",
|
||||
"keybind": "r"
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
* {
|
||||
background-image: none;
|
||||
font-size: 24px;
|
||||
font-family: 'Sour Gummy Light';
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(30, 30, 46, 0.5);
|
||||
}
|
||||
|
||||
button {
|
||||
color: #cdd6f4;
|
||||
border-radius: 0;
|
||||
outline-style: none;
|
||||
background-color: alpha(#1e1e2e, 0.8);
|
||||
border: none;
|
||||
border-width: 0px;
|
||||
border-radius: 0px;
|
||||
border-color: #89b4fa;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
text-decoration-color: #cdd6f4;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20%;
|
||||
animation: gradient_f 20s ease-in infinite;
|
||||
}
|
||||
|
||||
button:focus,
|
||||
button:active,
|
||||
button:hover {
|
||||
background-size: 20%;
|
||||
background-color: alpha(#1e1e2e, 0.7);
|
||||
animation: gradient_f 20s ease-in infinite;
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.28, 1.682);
|
||||
}
|
||||
|
||||
#lock {
|
||||
background-image: image(url('./icons/lock.svg'));
|
||||
border-radius: 32px 0 0 0;
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url('./icons/logout.svg'));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url('./icons/suspend.svg'));
|
||||
border-radius: 0 32px 0 0;
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url('./icons/hibernate.svg'));
|
||||
border-radius: 0 0 0 32px;
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url('./icons/shutdown.svg'));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url('./icons/reboot.svg'));
|
||||
border-radius: 0 0 32px 0;
|
||||
}
|
||||
|
||||
#lock:hover {
|
||||
border-radius: 30px 0 0 0;
|
||||
margin: -30px 0 0 -30px;
|
||||
}
|
||||
|
||||
#logout:hover {
|
||||
margin: -30px 0 0 0;
|
||||
}
|
||||
|
||||
#suspend:hover {
|
||||
border-radius: 0 30px 0 0;
|
||||
margin: -30px -30px 0 0;
|
||||
}
|
||||
|
||||
#hibernate:hover {
|
||||
border-radius: 0 0 0 30px;
|
||||
margin: 0 0 -30 -30px;
|
||||
}
|
||||
|
||||
#shutdown:hover {
|
||||
margin: 0 0 -30px 0;
|
||||
}
|
||||
|
||||
#reboot:hover {
|
||||
border-radius: 0 0 30px 0;
|
||||
margin: 0 -30px -30px 0;
|
||||
}
|
||||
|
||||
#lock:focus {
|
||||
border-radius: 60px 0 0 0;
|
||||
margin: -60px 0 0 -60px;
|
||||
}
|
||||
|
||||
#logout:focus {
|
||||
margin: -60px 0 0 0;
|
||||
}
|
||||
|
||||
#suspend:focus {
|
||||
border-radius: 0 60px 0 0;
|
||||
margin: -60px -60px 0 0;
|
||||
}
|
||||
|
||||
#hibernate:focus {
|
||||
border-radius: 0 0 0 60px;
|
||||
margin: 0 0 -60 -60px;
|
||||
}
|
||||
|
||||
#shutdown:focus {
|
||||
margin: 0 0 -60px 0;
|
||||
}
|
||||
|
||||
#reboot:focus {
|
||||
border-radius: 0 0 60px 0;
|
||||
margin: 0 -60px -60px 0;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><g><path d="M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490s490-219.4,490-490S770.6,10,500,10z M500,885.1c-212.7,0-385.1-172.4-385.1-385.1S287.3,114.9,500,114.9S885.1,287.3,885.1,500S712.7,885.1,500,885.1z M576.5,308.7v382.4c0,42.2-34.2,76.5-76.5,76.5c-42.3,0-76.5-34.2-76.5-76.5V308.7c0-42.2,34.2-76.5,76.5-76.5C542.2,232.3,576.5,266.5,576.5,308.7z"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 969 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><g><path d="M321.8,455.5h356.4V321.8c0-49.2-17.4-91.2-52.2-126c-34.8-34.8-76.8-52.2-126-52.2c-49.2,0-91.2,17.4-126,52.2c-34.8,34.8-52.2,76.8-52.2,126L321.8,455.5L321.8,455.5z M900.9,522.3v400.9c0,18.6-6.5,34.3-19.5,47.3c-13,13-28.8,19.5-47.3,19.5H165.9c-18.6,0-34.3-6.5-47.3-19.5s-19.5-28.8-19.5-47.3V522.3c0-18.6,6.5-34.3,19.5-47.3c13-13,28.8-19.5,47.3-19.5h22.3V321.8c0-85.4,30.6-158.7,91.9-219.9C341.3,40.6,414.6,10,500,10c85.4,0,158.7,30.6,219.9,91.9c61.3,61.3,91.9,134.6,91.9,219.9v133.6h22.3c18.6,0,34.3,6.5,47.3,19.5C894.4,487.9,900.9,503.7,900.9,522.3L900.9,522.3z"/></g></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><path d="M622.5,990H50.8C26.3,990,10,973.7,10,949.2V50.8C10,26.3,26.3,10,50.8,10h571.7c24.5,0,40.8,16.3,40.8,40.8v285.8c0,24.5-16.3,40.8-40.8,40.8s-40.8-16.3-40.8-40.8v-245h-490v816.7h490v-245c0-24.5,16.3-40.8,40.8-40.8s40.8,16.3,40.8,40.8v285.8C663.3,973.7,647,990,622.5,990z"/><path d="M949.2,540.8H336.7c-24.5,0-40.8-16.3-40.8-40.8c0-24.5,16.3-40.8,40.8-40.8h612.5c24.5,0,40.8,16.3,40.8,40.8C990,524.5,973.7,540.8,949.2,540.8z"/><path d="M949.2,540.8c-12.3,0-20.4-4.1-28.6-12.3L757.3,365.3c-16.3-16.3-16.3-40.8,0-57.2c16.3-16.3,40.8-16.3,57.2,0l163.3,163.3c16.3,16.3,16.3,40.8,0,57.2C969.6,536.8,961.4,540.8,949.2,540.8z"/><path d="M785.8,704.2c-12.3,0-20.4-4.1-28.6-12.3c-16.3-16.3-16.3-40.8,0-57.2l163.3-163.3c16.3-16.3,40.8-16.3,57.2,0c16.3,16.3,16.3,40.8,0,57.2L814.4,691.9C806.3,700.1,798.1,704.2,785.8,704.2z"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><path d="M134.6,285.6C64.9,420.7,60.1,590,137.1,723.4L42,668.5l-32,55.4c93.1,52.1,133.6,75.9,184,106.2c28.5-51.5,52.8-94.4,107.4-186.1L246,612l-53.4,92.5C65.4,502.7,167.2,200.3,398.8,126.2C638,29.3,929,223.5,931.5,481.5c19.6,236.7-208.9,443.6-439.3,416.2l-29.5,51c277.7,54.4,556.5-201.7,524.7-483.1C976.1,170.8,637.1-41.2,367.1,77.5C262.8,114.2,183.1,191.5,134.6,285.6z"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 877 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><path d="M764,152.1c30.9,22,58.3,46.8,82.4,74.6c24,27.8,44.6,57.8,61.8,90.1c17.2,32.3,30.2,66.4,39.1,102.4c8.9,36,13.4,72.6,13.4,109.6c0,63.8-12.2,123.7-36.5,179.6c-24.4,55.9-57.3,104.7-98.8,146.2c-41.5,41.5-90.2,74.5-146.2,98.8C623.2,977.8,563.3,990,499.5,990c-63.1,0-122.7-12.2-178.6-36.5c-55.9-24.4-104.8-57.3-146.7-98.8c-41.9-41.5-74.8-90.2-98.8-146.2c-24-55.9-36-115.8-36-179.6c0-36.4,4.3-72.1,12.9-107.1c8.6-35,20.8-68.3,36.5-99.9c15.8-31.6,35.3-61.1,58.7-88.5c23.3-27.5,49.4-52.2,78.2-74.1c15.1-11,31.4-15.1,48.9-12.4c17.5,2.7,31.7,11.3,42.7,25.7c11,14.4,15.1,30.5,12.4,48.4c-2.7,17.8-11.3,32.3-25.7,43.2c-43.2,31.6-76.4,70.3-99.3,116.3c-23,46-34.5,95.4-34.5,148.2c0,45.3,8.6,88,25.7,128.2c17.2,40.1,40.7,75.1,70.5,105c29.9,29.9,64.9,53.5,105,71c40.1,17.5,82.9,26.3,128.2,26.3c45.3,0,88-8.7,128.2-26.3c40.1-17.5,75.1-41.2,105-71s53.5-64.9,71-105c17.5-40.1,26.3-82.9,26.3-128.2c0-53.5-12.4-104.1-37.1-151.8c-24.7-47.7-59.4-87-104-117.9c-15.1-10.3-24.2-24.4-27.3-42.2c-3.1-17.8,0.5-34.3,10.8-49.4c10.3-14.4,24.4-23.2,42.2-26.2C732.5,138.2,748.9,141.8,764,152.1L764,152.1z M499.5,531.9c-17.8,0-33.1-6.3-45.8-19c-12.7-12.7-19-28-19-45.8V75.9c0-17.8,6.3-33.3,19-46.3c12.7-13,28-19.6,45.8-19.6c18.5,0,34.1,6.5,46.8,19.6c12.7,13,19,28.5,19,46.3v391.2c0,17.8-6.3,33.1-19,45.8C533.6,525.6,518,531.9,499.5,531.9L499.5,531.9z"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg fill="#89b4fa" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><path d="M500,990c-66.1,0-130.3-13-190.7-38.5c-58.4-24.7-110.8-60-155.7-105s-80.3-97.4-105-155.7C23,630.3,10,566.1,10,500c0-66.1,13-130.3,38.5-190.7c24.7-58.4,60-110.8,105-155.7c45-45,97.4-80.3,155.7-105C369.7,23,433.9,10,500,10c66.1,0,130.3,13,190.7,38.5c58.4,24.7,110.8,60,155.7,105c45,45,80.3,97.4,105,155.7C977,369.7,990,433.9,990,500c0,66.1-13,130.3-38.5,190.7c-24.7,58.4-60,110.8-105,155.7s-97.4,80.3-155.7,105C630.3,977,566.1,990,500,990z M500,79.6c-112.3,0-217.9,43.7-297.3,123.1C123.3,282.1,79.6,387.7,79.6,500s43.7,217.9,123.1,297.3c79.4,79.4,185,123.1,297.3,123.1c112.3,0,217.9-43.7,297.3-123.1c79.4-79.4,123.1-185,123.1-297.3s-43.7-217.9-123.1-297.3C717.9,123.3,612.3,79.6,500,79.6z"/><path d="M322.5,290.6h108v412h-108V290.6z"/><path d="M561.6,290.6h107.9v412H561.6V290.6z"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 969 B After Width: | Height: | Size: 969 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 877 B After Width: | Height: | Size: 877 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |