many changed, added nixos-hardware
This commit is contained in:
parent
f4f1c5bba7
commit
2accd81424
149 changed files with 19124 additions and 238 deletions
3
modules/styling/config/scripts/README.md
Normal file
3
modules/styling/config/scripts/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# scripts folder
|
||||
- For ARM devices, you have to compile C++ files yourself. If there are none, yippee
|
||||
- It is advised to use services instead of listening/polling scripts, so everything here are just scripts for actions
|
178
modules/styling/config/scripts/color_generation/applycolor.sh
Executable file
178
modules/styling/config/scripts/color_generation/applycolor.sh
Executable file
|
@ -0,0 +1,178 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# sleep 0 # idk i wanted some delay or colors dont get applied properly
|
||||
if [ ! -d "$HOME"/.cache/ags/user/generated ]; then
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated
|
||||
fi
|
||||
cd "$HOME/.config/ags" || exit
|
||||
|
||||
colornames=''
|
||||
colorstrings=''
|
||||
colorlist=()
|
||||
colorvalues=()
|
||||
|
||||
if [[ "$1" = "--bad-apple" ]]; then
|
||||
cp scripts/color_generation/specials/_material_badapple.scss scss/_material.scss
|
||||
colornames=$(cat scripts/color_generation/specials/_material_badapple.scss | cut -d: -f1)
|
||||
colorstrings=$(cat scripts/color_generation/specials/_material_badapple.scss | cut -d: -f2 | cut -d ' ' -f2 | cut -d ";" -f1)
|
||||
IFS=$'\n'
|
||||
# filearr=( $filelist ) # Get colors
|
||||
colorlist=( $colornames ) # Array of color names
|
||||
colorvalues=( $colorstrings ) # Array of color values
|
||||
else
|
||||
colornames=$(cat scss/_material.scss | cut -d: -f1)
|
||||
colorstrings=$(cat scss/_material.scss | cut -d: -f2 | cut -d ' ' -f2 | cut -d ";" -f1)
|
||||
IFS=$'\n'
|
||||
# filearr=( $filelist ) # Get colors
|
||||
colorlist=( $colornames ) # Array of color names
|
||||
colorvalues=( $colorstrings ) # Array of color values
|
||||
fi
|
||||
|
||||
transparentize() {
|
||||
local hex="$1"
|
||||
local alpha="$2"
|
||||
local red green blue
|
||||
|
||||
red=$((16#${hex:1:2}))
|
||||
green=$((16#${hex:3:2}))
|
||||
blue=$((16#${hex:5:2}))
|
||||
|
||||
printf 'rgba(%d, %d, %d, %.2f)\n' "$red" "$green" "$blue" "$alpha"
|
||||
}
|
||||
|
||||
get_light_dark() {
|
||||
lightdark=""
|
||||
if [ ! -f "$HOME"/.cache/ags/user/colormode.txt ]; then
|
||||
echo "" > "$HOME"/.cache/ags/user/colormode.txt
|
||||
else
|
||||
lightdark=$(cat "$HOME"/.cache/ags/user/colormode.txt) # either "" or "-l"
|
||||
fi
|
||||
echo "$lightdark"
|
||||
}
|
||||
|
||||
apply_gtklock() {
|
||||
# Check if scripts/templates/gtklock/main.scss exists
|
||||
if [ ! -f "scripts/templates/gtklock/main.scss" ]; then
|
||||
echo "SCSS not found for Gtklock. Skipping that."
|
||||
return
|
||||
fi
|
||||
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/gtklock
|
||||
sassc "scripts/templates/gtklock/main.scss" "$HOME"/.cache/ags/user/generated/gtklock/style.css
|
||||
cp "$HOME"/.cache/ags/user/generated/gtklock/style.css "$HOME"/.config/gtklock/style.css
|
||||
}
|
||||
|
||||
apply_fuzzel() {
|
||||
# Check if scripts/templates/fuzzel/fuzzel.ini exists
|
||||
if [ ! -f "scripts/templates/fuzzel/fuzzel.ini" ]; then
|
||||
echo "Template file not found for Fuzzel. Skipping that."
|
||||
return
|
||||
fi
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/fuzzel
|
||||
cp "scripts/templates/fuzzel/fuzzel.ini" "$HOME"/.cache/ags/user/generated/fuzzel/fuzzel.ini
|
||||
# Apply colors
|
||||
for i in "${!colorlist[@]}"; do
|
||||
sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$HOME"/.cache/ags/user/generated/fuzzel/fuzzel.ini
|
||||
done
|
||||
|
||||
cp "$HOME"/.cache/ags/user/generated/fuzzel/fuzzel.ini "$HOME"/.config/fuzzel/fuzzel.ini
|
||||
}
|
||||
|
||||
apply_foot() {
|
||||
if [ ! -f "scripts/templates/foot/foot.ini" ]; then
|
||||
echo "Template file not found for Foot. Skipping that."
|
||||
return
|
||||
fi
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/foot
|
||||
cp "scripts/templates/foot/foot.ini" "$HOME"/.cache/ags/user/generated/foot/foot.ini
|
||||
# Apply colors
|
||||
for i in "${!colorlist[@]}"; do
|
||||
# sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$HOME"/.cache/ags/user/generated/foot/foot.ini
|
||||
sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$HOME"/.cache/ags/user/generated/foot/foot.ini
|
||||
done
|
||||
|
||||
cp "$HOME"/.cache/ags/user/generated/foot/foot.ini "$HOME/.config/foot/foot.ini"
|
||||
}
|
||||
|
||||
apply_term() {
|
||||
# Check if scripts/templates/foot/foot.ini exists
|
||||
if [ ! -f "scripts/templates/terminal/sequences.txt" ]; then
|
||||
echo "Template file not found for Terminal. Skipping that."
|
||||
return
|
||||
fi
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/terminal
|
||||
cp "scripts/templates/terminal/sequences.txt" "$HOME"/.cache/ags/user/generated/terminal/sequences.txt
|
||||
# Apply colors
|
||||
for i in "${!colorlist[@]}"; do
|
||||
sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$HOME"/.cache/ags/user/generated/terminal/sequences.txt
|
||||
done
|
||||
cp "$HOME"/.cache/ags/user/generated/terminal/sequences.txt "$HOME"/.config/fish/sequences.txt
|
||||
|
||||
for file in /dev/pts/*; do
|
||||
if [[ $file =~ ^/dev/pts/[0-9]+$ ]]; then
|
||||
cat "$HOME"/.config/fish/sequences.txt > "$file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
apply_hyprland() {
|
||||
# Check if scripts/templates/hypr/colors.conf exists
|
||||
if [ ! -f "scripts/templates/hypr/colors.conf" ]; then
|
||||
echo "Template file not found for Hyprland colors. Skipping that."
|
||||
return
|
||||
fi
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/hypr
|
||||
cp "scripts/templates/hypr/colors.conf" "$HOME"/.cache/ags/user/generated/hypr/colors.conf
|
||||
# Apply colors
|
||||
for i in "${!colorlist[@]}"; do
|
||||
sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$HOME"/.cache/ags/user/generated/hypr/colors.conf
|
||||
done
|
||||
|
||||
cp "$HOME"/.cache/ags/user/generated/hypr/colors.conf "$HOME"/.config/hypr/colors.conf
|
||||
}
|
||||
|
||||
apply_gtk() { # Using gradience-cli
|
||||
lightdark=$(get_light_dark)
|
||||
|
||||
# Copy template
|
||||
mkdir -p "$HOME"/.cache/ags/user/generated/gradience
|
||||
cp "scripts/templates/gradience/preset.json" "$HOME"/.cache/ags/user/generated/gradience/preset.json
|
||||
|
||||
# Apply colors
|
||||
for i in "${!colorlist[@]}"; do
|
||||
sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]}/g" "$HOME"/.cache/ags/user/generated/gradience/preset.json
|
||||
done
|
||||
|
||||
mkdir -p "$HOME/.config/presets" # create gradience presets folder
|
||||
gradience-cli apply -p "$HOME"/.cache/ags/user/generated/gradience/preset.json --gtk both
|
||||
|
||||
# Set light/dark preference
|
||||
# And set GTK theme manually as Gradience defaults to light adw-gtk3
|
||||
# (which is unreadable when broken when you use dark mode)
|
||||
if [ "$lightdark" = "-l" ]; then
|
||||
gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3'
|
||||
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark
|
||||
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||
fi
|
||||
}
|
||||
|
||||
apply_ags() {
|
||||
sassc "$HOME"/.config/ags/scss/main.scss "$HOME"/.config/ags/style.css
|
||||
ags run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);'
|
||||
ags run-js "App.resetCss(); App.applyCss('${HOME}/.config/ags/style.css');"
|
||||
}
|
||||
|
||||
apply_ags &
|
||||
apply_hyprland &
|
||||
apply_gtk &
|
||||
apply_foot &
|
||||
apply_gtklock &
|
||||
apply_fuzzel &
|
||||
apply_term &
|
59
modules/styling/config/scripts/color_generation/colorgen.sh
Executable file
59
modules/styling/config/scripts/color_generation/colorgen.sh
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# check if no arguments
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: colorgen.sh /path/to/image (--apply)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if the file ~/.cache/ags/user/colormode.txt exists. if not, create it. else, read it to $lightdark
|
||||
lightdark=""
|
||||
if [ ! -f "$HOME/.cache/ags/user/colormode.txt" ]; then
|
||||
echo "" > "$HOME/.cache/ags/user/colormode.txt"
|
||||
else
|
||||
lightdark=$(cat "$HOME/.cache/ags/user/colormode.txt") # either "" or "-l"
|
||||
fi
|
||||
backend="material" # color generator backend
|
||||
if [ ! -f "$HOME/.cache/ags/user/colorbackend.txt" ]; then
|
||||
echo "material" > "$HOME/.cache/ags/user/colorbackend.txt"
|
||||
else
|
||||
backend=$(cat "$HOME/.cache/ags/user/colorbackend.txt") # either "" or "-l"
|
||||
fi
|
||||
|
||||
cd "$HOME/.config/ags/scripts/" || exit
|
||||
if [[ "$1" = "#"* ]]; then # this is a color
|
||||
color_generation/generate_colors_material.py --color "$1" "$lightdark" > "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||
if [ "$2" = "--apply" ]; then
|
||||
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
||||
color_generation/applycolor.sh
|
||||
fi
|
||||
elif [ "$backend" = "material" ]; then
|
||||
color_generation/generate_colors_material.py --path "$1" "$lightdark" > "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||
if [ "$2" = "--apply" ]; then
|
||||
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
||||
color_generation/applycolor.sh
|
||||
fi
|
||||
elif [ "$backend" = "pywal" ]; then
|
||||
# clear and generate
|
||||
wal -c
|
||||
wal -i "$1" -n $lightdark -q
|
||||
# copy scss
|
||||
cp "$HOME/.cache/wal/colors.scss" "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||
|
||||
cat color_generation/pywal_to_material.scss >> "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||
if [ "$2" = "--apply" ]; then
|
||||
sassc "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME"/.cache/ags/user/generated/colors_classes.scss --style compact
|
||||
sed -i "s/ { color//g" "$HOME"/.cache/ags/user/generated/colors_classes.scss
|
||||
sed -i "s/\./$/g" "$HOME"/.cache/ags/user/generated/colors_classes.scss
|
||||
sed -i "s/}//g" "$HOME"/.cache/ags/user/generated/colors_classes.scss
|
||||
if [ "$lightdark" = "-l" ]; then
|
||||
printf "\n""\$darkmode: false;""\n" >> "$HOME"/.cache/ags/user/generated/colors_classes.scss
|
||||
else
|
||||
printf "\n""\$darkmode: true;""\n" >> "$HOME"/.cache/ags/user/generated/colors_classes.scss
|
||||
fi
|
||||
|
||||
cp "$HOME"/.cache/ags/user/generated/colors_classes.scss "$HOME/.config/ags/scss/_material.scss"
|
||||
|
||||
color_generation/applycolor.sh
|
||||
fi
|
||||
fi
|
122
modules/styling/config/scripts/color_generation/generate_colors_material.py
Executable file
122
modules/styling/config/scripts/color_generation/generate_colors_material.py
Executable file
|
@ -0,0 +1,122 @@
|
|||
#!/usr/bin/env python3
|
||||
from material_color_utilities_python import *
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
def darken(hex_color, factor=0.7):
|
||||
if not (hex_color.startswith('#') and len(hex_color) in (4, 7)):
|
||||
raise ValueError("Invalid hex color format")
|
||||
hex_color = hex_color.lstrip('#')
|
||||
rgb = tuple(int(hex_color[i:i + 2], 16) for i in (0, 2, 4))
|
||||
darkened_rgb = tuple(int(max(0, val * factor)) for val in rgb)
|
||||
darkened_hex = "#{:02X}{:02X}{:02X}".format(*darkened_rgb)
|
||||
return darkened_hex
|
||||
|
||||
img = 0
|
||||
newtheme=0
|
||||
if len(sys.argv) > 1 and sys.argv[1] == '--path':
|
||||
# try:
|
||||
img = Image.open(sys.argv[2])
|
||||
basewidth = 64
|
||||
wpercent = (basewidth/float(img.size[0]))
|
||||
hsize = int((float(img.size[1])*float(wpercent)))
|
||||
img = img.resize((basewidth,hsize),Image.Resampling.LANCZOS)
|
||||
newtheme = themeFromImage(img)
|
||||
# except FileNotFoundError:
|
||||
# print('[generate_colors_material.py] File not found', file=sys.stderr);
|
||||
# exit()
|
||||
# except:
|
||||
# print('[generate_colors_material.py] Something went wrong', file=sys.stderr);
|
||||
# exit()
|
||||
elif len(sys.argv) > 1 and sys.argv[1] == '--color':
|
||||
colorstr = sys.argv[2]
|
||||
newtheme = themeFromSourceColor(argbFromHex(colorstr))
|
||||
else:
|
||||
# try:
|
||||
# imagePath = subprocess.check_output("ags run-js 'wallpaper.get(0)'", shell=True)
|
||||
imagePath = subprocess.check_output("swww query | awk -F 'image: ' '{print $2}'", shell=True)
|
||||
imagePath = imagePath[:-1].decode("utf-8")
|
||||
img = Image.open(imagePath)
|
||||
basewidth = 64
|
||||
wpercent = (basewidth/float(img.size[0]))
|
||||
hsize = int((float(img.size[1])*float(wpercent)))
|
||||
img = img.resize((basewidth,hsize),Image.Resampling.LANCZOS)
|
||||
newtheme = themeFromImage(img)
|
||||
# except FileNotFoundError:
|
||||
# print('[generate_colors_material.py] File not found', file=sys.stderr)
|
||||
# exit()
|
||||
# except:
|
||||
# print('[generate_colors_material.py] Something went wrong', file=sys.stderr);
|
||||
# exit()
|
||||
|
||||
colorscheme=0
|
||||
darkmode = True
|
||||
if("-l" in sys.argv):
|
||||
darkmode = False
|
||||
colorscheme = newtheme.get('schemes').get('light')
|
||||
print('$darkmode: false;')
|
||||
else:
|
||||
colorscheme = newtheme.get('schemes').get('dark')
|
||||
print('$darkmode: true;')
|
||||
|
||||
primary = hexFromArgb(colorscheme.get_primary())
|
||||
onPrimary = hexFromArgb(colorscheme.get_onPrimary())
|
||||
primaryContainer = hexFromArgb(colorscheme.get_primaryContainer())
|
||||
onPrimaryContainer = hexFromArgb(colorscheme.get_onPrimaryContainer())
|
||||
secondary = hexFromArgb(colorscheme.get_secondary())
|
||||
onSecondary = hexFromArgb(colorscheme.get_onSecondary())
|
||||
secondaryContainer = hexFromArgb(colorscheme.get_secondaryContainer())
|
||||
onSecondaryContainer = hexFromArgb(colorscheme.get_onSecondaryContainer())
|
||||
tertiary = hexFromArgb(colorscheme.get_tertiary())
|
||||
onTertiary = hexFromArgb(colorscheme.get_onTertiary())
|
||||
tertiaryContainer = hexFromArgb(colorscheme.get_tertiaryContainer())
|
||||
onTertiaryContainer = hexFromArgb(colorscheme.get_onTertiaryContainer())
|
||||
error = hexFromArgb(colorscheme.get_error())
|
||||
onError = hexFromArgb(colorscheme.get_onError())
|
||||
errorContainer = hexFromArgb(colorscheme.get_errorContainer())
|
||||
onErrorContainer = hexFromArgb(colorscheme.get_onErrorContainer())
|
||||
background = hexFromArgb(colorscheme.get_background())
|
||||
onBackground = hexFromArgb(colorscheme.get_onBackground())
|
||||
surface = hexFromArgb(colorscheme.get_surface())
|
||||
onSurface = hexFromArgb(colorscheme.get_onSurface())
|
||||
surfaceVariant = hexFromArgb(colorscheme.get_surfaceVariant())
|
||||
onSurfaceVariant = hexFromArgb(colorscheme.get_onSurfaceVariant())
|
||||
outline = hexFromArgb(colorscheme.get_outline())
|
||||
shadow = hexFromArgb(colorscheme.get_shadow())
|
||||
inverseSurface = hexFromArgb(colorscheme.get_inverseSurface())
|
||||
inverseOnSurface = hexFromArgb(colorscheme.get_inverseOnSurface())
|
||||
inversePrimary = hexFromArgb(colorscheme.get_inversePrimary())
|
||||
|
||||
# make material less boring
|
||||
if darkmode:
|
||||
background = darken(background, 0.6)
|
||||
|
||||
print('$primary: ' + primary + ';')
|
||||
print('$onPrimary: ' + onPrimary + ';')
|
||||
print('$primaryContainer: ' + primaryContainer + ';')
|
||||
print('$onPrimaryContainer: ' + onPrimaryContainer + ';')
|
||||
print('$secondary: ' + secondary + ';')
|
||||
print('$onSecondary: ' + onSecondary + ';')
|
||||
print('$secondaryContainer: ' + secondaryContainer + ';')
|
||||
print('$onSecondaryContainer: ' + onSecondaryContainer + ';')
|
||||
print('$tertiary: ' + tertiary + ';')
|
||||
print('$onTertiary: ' + onTertiary + ';')
|
||||
print('$tertiaryContainer: ' + tertiaryContainer + ';')
|
||||
print('$onTertiaryContainer: ' + onTertiaryContainer + ';')
|
||||
print('$error: ' + error + ';')
|
||||
print('$onError: ' + onError + ';')
|
||||
print('$errorContainer: ' + errorContainer + ';')
|
||||
print('$onErrorContainer: ' + onErrorContainer + ';')
|
||||
print('$colorbarbg: ' + background + ';')
|
||||
print('$background: ' + background + ';')
|
||||
print('$onBackground: ' + onBackground + ';')
|
||||
print('$surface: ' + surface + ';')
|
||||
print('$onSurface: ' + onSurface + ';')
|
||||
print('$surfaceVariant: ' + surfaceVariant + ';')
|
||||
print('$onSurfaceVariant: ' + onSurfaceVariant + ';')
|
||||
print('$outline: ' + outline + ';')
|
||||
print('$shadow: ' + shadow + ';')
|
||||
print('$inverseSurface: ' + inverseSurface + ';')
|
||||
print('$inverseOnSurface: ' + inverseOnSurface + ';')
|
||||
print('$inversePrimary: ' + inversePrimary + ';')
|
|
@ -0,0 +1,57 @@
|
|||
$primary: lighten($color4, 20%);
|
||||
$onPrimary: darken($color2, 20%);
|
||||
$primaryContainer: darken($color2, 10%);
|
||||
$onPrimaryContainer: lighten($color4, 10%);
|
||||
$secondary: desaturate(lighten($color5, 20%), 20%);
|
||||
$onSecondary: desaturate(darken($color3, 20%), 20%);
|
||||
$secondaryContainer: desaturate(darken($color3, 20%), 20%);
|
||||
$onSecondaryContainer: desaturate(lighten($color5, 20%), 20%);
|
||||
$tertiary: adjust-hue(lighten($color4, 20%), 30deg);
|
||||
$onTertiary: adjust-hue(darken($color2, 20%), 30deg);
|
||||
$tertiaryContainer: adjust-hue(darken($color2, 10%), 30deg);
|
||||
$tertiaryContainer: adjust-hue(lighten($color4, 10%), 30deg);
|
||||
$error: #ffb4a9;
|
||||
$onError: #680003;
|
||||
$errorContainer: #930006;
|
||||
$onErrorContainer: #ffb4a9;
|
||||
$colorbarbg: $color0;
|
||||
$background: $color0;
|
||||
$onBackground: $color7;
|
||||
$surface: $color0;
|
||||
$onSurface: $color7;
|
||||
$surfaceVariant: $color1;
|
||||
$onSurfaceVariant: $color7;
|
||||
$outline: $color7;
|
||||
$shadow: #000000;
|
||||
$inverseSurface: invert($surface);
|
||||
$inverseOnSurface: invert($onSurface);
|
||||
$inversePrimary: invert($primary);
|
||||
|
||||
.primary { color: $primary; }
|
||||
.onPrimary { color: $onPrimary; }
|
||||
.primaryContainer { color: $primaryContainer; }
|
||||
.onPrimaryContainer { color: $onPrimaryContainer; }
|
||||
.secondary { color: $secondary; }
|
||||
.onSecondary { color: $onSecondary; }
|
||||
.secondaryContainer { color: $secondaryContainer; }
|
||||
.onSecondaryContainer { color: $onSecondaryContainer; }
|
||||
.tertiary { color: $tertiary; }
|
||||
.onTertiary { color: $onTertiary; }
|
||||
.tertiaryContainer { color: $tertiaryContainer; }
|
||||
.onTertiaryContainer { color: $tertiaryContainer; }
|
||||
.error { color: $error; }
|
||||
.onError { color: $onError; }
|
||||
.errorContainer { color: $errorContainer; }
|
||||
.onErrorContainer { color: $onErrorContainer; }
|
||||
.colorbarbg { color: $colorbarbg; }
|
||||
.background { color: $background; }
|
||||
.onBackground { color: $onBackground; }
|
||||
.surface { color: $surface; }
|
||||
.onSurface { color: $onSurface; }
|
||||
.surfaceVariant { color: $surfaceVariant; }
|
||||
.onSurfaceVariant { color: $onSurfaceVariant; }
|
||||
.outline { color: $outline; }
|
||||
.shadow { color: $shadow; }
|
||||
.inverseSurface { color: $inverseSurface; }
|
||||
.inverseOnSurface { color: $inverseOnSurface; }
|
||||
.inversePrimary { color: $inversePrimary; }
|
|
@ -0,0 +1,30 @@
|
|||
$darkmode: true;
|
||||
$primary: #e2e2e2;
|
||||
$onPrimary: #000000;
|
||||
$primaryContainer: #6b6b6b;
|
||||
$onPrimaryContainer: #e2e2e2;
|
||||
$secondary: #e2e2e2;
|
||||
$onSecondary: #000000;
|
||||
$secondaryContainer: #313131;
|
||||
$onSecondaryContainer: #e2e2e2;
|
||||
$tertiary: #e2e2e2;
|
||||
$onTertiary: #000000;
|
||||
$tertiaryContainer: #000000;
|
||||
$onTertiaryContainer: #e2e2e2;
|
||||
$error: #e2e2e2;
|
||||
$onError: #000000;
|
||||
$errorContainer: #000000;
|
||||
$onErrorContainer: #e2e2e2;
|
||||
$colorbarbg: #000000;
|
||||
$background: #000000;
|
||||
$onBackground: #e2e2e2;
|
||||
$surface: #161616;
|
||||
$onSurface: #e2e2e2;
|
||||
$surfaceVariant: #242424;
|
||||
$onSurfaceVariant: #e2e2e2;
|
||||
$outline: #a1a1a1;
|
||||
$shadow: #000000;
|
||||
$inverseSurface: #e2e2e2;
|
||||
$inverseOnSurface: #000000;
|
||||
$inversePrimary: #e2e2e2;
|
||||
|
6
modules/styling/config/scripts/color_generation/switchcolor.sh
Executable file
6
modules/styling/config/scripts/color_generation/switchcolor.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
color=$(hyprpicker --no-fancy)
|
||||
|
||||
# Generate colors for ags n stuff
|
||||
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${color}" --apply
|
29
modules/styling/config/scripts/color_generation/switchwall.sh
Executable file
29
modules/styling/config/scripts/color_generation/switchwall.sh
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if [ "$1" == "--noswitch" ]; then
|
||||
imgpath=$(swww query | awk -F 'image: ' '{print $2}')
|
||||
# imgpath=$(ags run-js 'wallpaper.get(0)')
|
||||
else
|
||||
# Select and set image (hyprland)
|
||||
cd "$HOME/Pictures"
|
||||
imgpath=$(yad --width 1200 --height 800 --file --title='Choose wallpaper')
|
||||
screensizey=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2 | head -1)
|
||||
cursorposx=$(hyprctl cursorpos -j | gojq '.x' 2>/dev/null) || cursorposx=960
|
||||
cursorposy=$(hyprctl cursorpos -j | gojq '.y' 2>/dev/null) || cursorposy=540
|
||||
cursorposy_inverted=$(( screensizey - cursorposy ))
|
||||
|
||||
if [ "$imgpath" == '' ]; then
|
||||
echo 'Aborted'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
# ags run-js "wallpaper.set('')"
|
||||
# sleep 0.1 && ags run-js "wallpaper.set('${imgpath}')" &
|
||||
swww img "$imgpath" --transition-step 100 --transition-fps 60 \
|
||||
--transition-type grow --transition-angle 30 --transition-duration 1 \
|
||||
--transition-pos "$cursorposx, $cursorposy_inverted"
|
||||
fi
|
||||
|
||||
# Generate colors for ags n stuff
|
||||
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${imgpath}" --apply
|
2
modules/styling/config/scripts/hyprland/workspace_action.sh
Executable file
2
modules/styling/config/scripts/hyprland/workspace_action.sh
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env bash
|
||||
hyprctl dispatch "$1" $(((($(hyprctl activeworkspace -j | gojq -r .id) - 1) / 10) * 10 + $2))
|
243
modules/styling/config/scripts/quickscripts/nixos-trim-generations.sh
Executable file
243
modules/styling/config/scripts/quickscripts/nixos-trim-generations.sh
Executable file
|
@ -0,0 +1,243 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
## Defaults
|
||||
keepGensDef=30; keepDaysDef=30
|
||||
keepGens=$keepGensDef; keepDays=$keepDaysDef
|
||||
|
||||
## Usage
|
||||
usage () {
|
||||
printf "Usage:\n\t ./trim-generations.sh <keep-gernerations> <keep-days> <profile> \n\n
|
||||
(defaults are: Keep-Gens=$keepGensDef Keep-Days=$keepDaysDef Profile=user)\n\n"
|
||||
printf "If you enter any parameters, you must enter all three, or none to use defaults.\n"
|
||||
printf "Example:\n\t trim-generations.sh 15 10 home-manager\n"
|
||||
printf " this will work on the home-manager profile and keep all generations from the\n"
|
||||
printf "last 10 days, and keep at least 15 generations no matter how old.\n"
|
||||
printf "\nProfiles available are:\tuser, home-manager, channels, system (root)\n"
|
||||
printf "\n-h or --help prints this help text."
|
||||
}
|
||||
|
||||
if [ $# -eq 1 ]; then # if help requested
|
||||
if [ $1 = "-h" ]; then
|
||||
usage
|
||||
exit 1;
|
||||
fi
|
||||
if [ $1 = "--help" ]; then
|
||||
usage
|
||||
exit 2;
|
||||
fi
|
||||
printf "Dont recognise your option exiting..\n\n"
|
||||
usage
|
||||
exit 3;
|
||||
|
||||
elif [ $# -eq 0 ]; then # print the defaults
|
||||
printf "The current defaults are:\n Keep-Gens=$keepGensDef Keep-Days=$keepDaysDef \n\n"
|
||||
read -p "Keep these defaults? (y/n):" answer
|
||||
|
||||
case "$answer" in
|
||||
[yY1] )
|
||||
printf "Using defaults..\n"
|
||||
;;
|
||||
[nN0] ) printf "ok, doing nothing, exiting..\n"
|
||||
exit 6;
|
||||
;;
|
||||
* ) printf "%b" "Doing nothing, exiting.."
|
||||
exit 7;
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
## Handle parameters (and change if root)
|
||||
if [[ $EUID -ne 0 ]]; then # if not root
|
||||
profile=$(readlink /home/$USER/.nix-profile)
|
||||
else
|
||||
if [ -d /nix/var/nix/profiles/system ]; then # maybe this or the other
|
||||
profile="/nix/var/nix/profiles/system"
|
||||
elif [ -d /nix/var/nix/profiles/default ]; then
|
||||
profile="/nix/var/nix/profiles/default"
|
||||
else
|
||||
echo "Cant find profile for root. Exiting"
|
||||
exit 8
|
||||
fi
|
||||
fi
|
||||
if (( $# < 1 )); then
|
||||
printf "Keeping default: $keepGensDef generations OR $keepDaysDef days, whichever is more\n"
|
||||
elif [[ $# -le 2 ]]; then
|
||||
printf "\nError: Not enough arguments.\n\n" >&2
|
||||
usage
|
||||
exit 1
|
||||
elif (( $# > 4)); then
|
||||
printf "\nError: Too many arguments.\n\n" >&2
|
||||
usage
|
||||
exit 2
|
||||
else
|
||||
if [ $1 -lt 1 ]; then
|
||||
printf "using Gen numbers less than 1 not recommended. Setting to min=1\n"
|
||||
read -p "is that ok? (y/n): " asnwer
|
||||
#printf "$asnwer"
|
||||
case "$asnwer" in
|
||||
[yY1] )
|
||||
printf "ok, continuing..\n"
|
||||
;;
|
||||
[nN0] )
|
||||
printf "ok, doing nothing, exiting..\n"
|
||||
exit 6;
|
||||
;;
|
||||
* )
|
||||
printf "%b" "Doing nothing, exiting.."
|
||||
exit 7;
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ $2 -lt 0 ]; then
|
||||
printf "using negative days number not recommended. Setting to min=0\n"
|
||||
read -p "is that ok? (y/n): " asnwer
|
||||
|
||||
case "$asnwer" in
|
||||
[yY1] )
|
||||
printf "ok, continuing..\n"
|
||||
;;
|
||||
[nN0] )
|
||||
printf "ok, doing nothing, exiting..\n"
|
||||
exit 6;
|
||||
;;
|
||||
* )
|
||||
printf "%b" "Doing nothing, exiting.."
|
||||
exit 7;
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
keepGens=$1; keepDays=$2;
|
||||
(( keepGens < 1 )) && keepGens=1
|
||||
(( keepDays < 0 )) && keepDays=0
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
if [[ $3 == "user" ]] || [[ $3 == "default" ]]; then
|
||||
profile=$(readlink /home/$USER/.nix-profile)
|
||||
elif [[ $3 == "home-manager" ]]; then
|
||||
# home-manager defaults to $XDG_STATE_HOME; otherwise, use
|
||||
# `home-manager generations` and `nix-store --query --roots
|
||||
# /nix/store/...` to figure out what reference is keeping the old
|
||||
# generations alive.
|
||||
profile="${XDG_STATE_HOME:-$HOME/.local/state}/nix/profiles/home-manager"
|
||||
elif [[ $3 == "channels" ]]; then
|
||||
profile="/nix/var/nix/profiles/per-user/$USER/channels"
|
||||
else
|
||||
printf "\nError: Do not understand your third argument. Should be one of: (user / home-manager/ channels)\n\n"
|
||||
usage
|
||||
exit 3
|
||||
fi
|
||||
else
|
||||
if [[ $3 == "system" ]]; then
|
||||
profile="/nix/var/nix/profiles/system"
|
||||
elif [[ $3 == "user" ]] || [[ $3 == "default" ]]; then
|
||||
profile="/nix/var/nix/profiles/default"
|
||||
else
|
||||
printf "\nError: Do not understand your third argument. Should be one of: (user / system)\n\n"
|
||||
usage
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
printf "OK! \t Keep Gens = $keepGens \t Keep Days = $keepDays\n\n"
|
||||
fi
|
||||
|
||||
printf "Operating on profile: \t $profile\n\n"
|
||||
|
||||
## Runs at the end, to decide whether to delete profiles that match chosen parameters.
|
||||
choose () {
|
||||
local default="$1"
|
||||
local prompt="$2"
|
||||
local answer
|
||||
|
||||
read -p "$prompt" answer
|
||||
[ -z "$answer" ] && answer="$default"
|
||||
|
||||
case "$answer" in
|
||||
[yY1] ) #printf "answered yes!\n"
|
||||
nix-env --delete-generations -p $profile ${!gens[@]}
|
||||
exit 0
|
||||
;;
|
||||
[nN0] ) printf "Ok doing nothing exiting..\n"
|
||||
exit 6;
|
||||
;;
|
||||
* ) printf "%b" "Unexpected answer '$answer'!" >&2
|
||||
exit 7;
|
||||
;;
|
||||
esac
|
||||
} # end of function choose
|
||||
|
||||
# printf "profile = $profile\n\n"
|
||||
## Query nix-env for generations list
|
||||
IFS=$'\n' nixGens=( $(nix-env --list-generations -p $profile | sed 's:^\s*::; s:\s*$::' | tr '\t' ' ' | tr -s ' ') )
|
||||
timeNow=$(date +%s)
|
||||
|
||||
## Get info on oldest generation
|
||||
IFS=' ' read -r -a oldestGenArr <<< "${nixGens[0]}"
|
||||
oldestGen=${oldestGenArr[0]}
|
||||
oldestDate=${oldestGenArr[1]}
|
||||
printf "%-30s %s\n" "oldest generation:" $oldestGen
|
||||
#oldestDate=${nixGens[0]:3:19}
|
||||
printf "%-30s %s\n" "oldest generation created:" $oldestDate
|
||||
oldestTime=$(date -d "$oldestDate" +%s)
|
||||
oldestElapsedSecs=$((timeNow-oldestTime))
|
||||
oldestElapsedMins=$((oldestElapsedSecs/60))
|
||||
oldestElapsedHours=$((oldestElapsedMins/60))
|
||||
oldestElapsedDays=$((oldestElapsedHours/24))
|
||||
printf "%-30s %s\n" "minutes before now:" $oldestElapsedMins
|
||||
printf "%-30s %s\n" "hours before now:" $oldestElapsedHours
|
||||
printf "%-30s %s\n\n" "days before now:" $oldestElapsedDays
|
||||
|
||||
## Get info on current generation
|
||||
for i in "${nixGens[@]}"; do
|
||||
IFS=' ' read -r -a iGenArr <<< "$i"
|
||||
genNumber=${iGenArr[0]}
|
||||
genDate=${iGenArr[1]}
|
||||
if [[ "$i" =~ current ]]; then
|
||||
currentGen=$genNumber
|
||||
printf "%-30s %s\n" "current generation:" $currentGen
|
||||
currentDate=$genDate
|
||||
printf "%-30s %s\n" "current generation created:" $currentDate
|
||||
currentTime=$(date -d "$currentDate" +%s)
|
||||
currentElapsedSecs=$((timeNow-currentTime))
|
||||
currentElapsedMins=$((currentElapsedSecs/60))
|
||||
currentElapsedHours=$((currentElapsedMins/60))
|
||||
currentElapsedDays=$((currentElapsedHours/24))
|
||||
printf "%-30s %s\n" "minutes before now:" $currentElapsedMins
|
||||
printf "%-30s %s\n" "hours before now:" $currentElapsedHours
|
||||
printf "%-30s %s\n\n" "days before now:" $currentElapsedDays
|
||||
fi
|
||||
done
|
||||
|
||||
## Compare oldest and current generations
|
||||
timeBetweenOldestAndCurrent=$((currentTime-oldestTime))
|
||||
elapsedDays=$((timeBetweenOldestAndCurrent/60/60/24))
|
||||
generationsDiff=$((currentGen-oldestGen))
|
||||
|
||||
## Figure out what we should do, based on generations and options
|
||||
if [[ elapsedDays -le keepDays ]]; then
|
||||
printf "All generations are no more than $keepDays days older than current generation. \nOldest gen days difference from current gen: $elapsedDays \n\n\tNothing to do!\n"
|
||||
exit 4;
|
||||
elif [[ generationsDiff -lt keepGens ]]; then
|
||||
printf "Oldest generation ($oldestGen) is only $generationsDiff generations behind current ($currentGen). \n\n\t Nothing to do!\n"
|
||||
exit 5;
|
||||
else
|
||||
printf "\tSomething to do...\n"
|
||||
declare -a gens
|
||||
for i in "${nixGens[@]}"; do
|
||||
IFS=' ' read -r -a iGenArr <<< "$i"
|
||||
genNumber=${iGenArr[0]}
|
||||
genDiff=$((currentGen-genNumber))
|
||||
genDate=${iGenArr[1]}
|
||||
genTime=$(date -d "$genDate" +%s)
|
||||
elapsedSecs=$((timeNow-genTime))
|
||||
genDaysOld=$((elapsedSecs/60/60/24))
|
||||
if [[ genDaysOld -gt keepDays ]] && [[ genDiff -ge keepGens ]]; then
|
||||
gens["$genNumber"]="$genDate, $genDaysOld day(s) old"
|
||||
fi
|
||||
done
|
||||
printf "\nFound the following generation(s) to delete:\n"
|
||||
for K in "${!gens[@]}"; do
|
||||
printf "generation $K \t ${gens[$K]}\n"
|
||||
done
|
||||
printf "\n"
|
||||
choose "y" "Do you want to delete these? [Y/n]: "
|
||||
fi
|
22
modules/styling/config/scripts/record-script.sh
Executable file
22
modules/styling/config/scripts/record-script.sh
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
getdate() {
|
||||
date '+%Y%m%d_%H-%M-%S'
|
||||
}
|
||||
|
||||
cd ~/Videos || exit
|
||||
if pgrep wf-recorder > /dev/null; then
|
||||
notify-send "Recording Stopped" "Stopped" -a 'record-script.sh' &
|
||||
pkill wf-recorder &
|
||||
else
|
||||
notify-send "Starting recording" 'recording_'"$(getdate)"'.mp4' -a 'record-script.sh'
|
||||
if [[ "$1" == "--sound" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" --audio=alsa_output.pci-0000_08_00.6.analog-stereo.monitor & disown
|
||||
elif [[ "$1" == "--fullscreen-sound" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --audio=alsa_output.pci-0000_08_00.6.analog-stereo.monitor & disown
|
||||
elif [[ "$1" == "--fullscreen" ]]; then
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t & disown
|
||||
else
|
||||
wf-recorder --pixel-format yuv420p -f './recording_'"$(getdate)"'.mp4' -t --geometry "$(slurp)" & disown
|
||||
fi
|
||||
fi
|
30
modules/styling/config/scripts/sway/swayToRelativeWs.sh
Executable file
30
modules/styling/config/scripts/sway/swayToRelativeWs.sh
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Check if sway is running
|
||||
if ! pgrep -x sway > /dev/null; then
|
||||
echo "Sway is not running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# Get the current workspace number
|
||||
current=$(swaymsg -t get_workspaces | gojq '.[] | select(.focused==true) | .num')
|
||||
|
||||
# Check if a number was passed as an argument
|
||||
if [[ "$1" =~ ^[+-]?[0-9]+$ ]]; then
|
||||
new_workspace=$((current + $1))
|
||||
else
|
||||
new_workspace=$((current + 1))
|
||||
fi
|
||||
|
||||
# Check if the new workspace number is out of bounds
|
||||
if [[ $new_workspace -lt 1 ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Switch to the new workspace
|
||||
if [[ $2 == 'move' ]]; then
|
||||
swaymsg move container to workspace $new_workspace
|
||||
else
|
||||
swaymsg workspace $new_workspace
|
||||
fi
|
133
modules/styling/config/scripts/templates/foot/foot.ini
Normal file
133
modules/styling/config/scripts/templates/foot/foot.ini
Normal file
|
@ -0,0 +1,133 @@
|
|||
shell=fish
|
||||
term=xterm-256color
|
||||
|
||||
title=foot
|
||||
|
||||
font=SpaceMono Nerd Font:size=11
|
||||
letter-spacing=0
|
||||
# horizontal-letter-offset=0
|
||||
# vertical-letter-offset=0
|
||||
# underline-offset=<font metrics>
|
||||
# box-drawings-uses-font-glyphs=no
|
||||
dpi-aware=no
|
||||
|
||||
# initial-window-size-pixels=700x500 # Or,
|
||||
# initial-window-size-chars=<COLSxROWS>
|
||||
# initial-window-mode=windowed
|
||||
pad=25x25 # optionally append 'center'
|
||||
# resize-delay-ms=100
|
||||
|
||||
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
|
||||
|
||||
bold-text-in-bright=no
|
||||
# word-delimiters=,│`|:"'()[]{}<>
|
||||
# selection-target=primary
|
||||
# workers=<number of logical CPUs>
|
||||
|
||||
[scrollback]
|
||||
lines=10000
|
||||
|
||||
[url]
|
||||
# launch=xdg-open ${url}
|
||||
# label-letters=sadfjklewcmpgh
|
||||
# osc8-underline=url-mode
|
||||
# protocols=http, https, ftp, ftps, file, gemini, gopher
|
||||
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'
|
||||
|
||||
[cursor]
|
||||
style=beam
|
||||
color={{ $background }} {{ $onBackground }}
|
||||
# blink=no
|
||||
beam-thickness=1.5
|
||||
# underline-thickness=<font underline thickness>
|
||||
|
||||
|
||||
[colors]
|
||||
alpha=1
|
||||
background={{ $background }}
|
||||
foreground={{ $onBackground }}
|
||||
regular0={{ $background }}
|
||||
regular1={{ $error }}
|
||||
regular2={{ $inversePrimary }}
|
||||
regular3={{ $onPrimaryContainer }}
|
||||
regular4={{ $onPrimaryContainer }}
|
||||
regular5={{ $onSecondaryContainer }}
|
||||
regular6={{ $primary }}
|
||||
regular7={{ $onSurfaceVariant }}
|
||||
bright0={{ $background }}
|
||||
bright1={{ $error }}
|
||||
bright2={{ $inversePrimary }}
|
||||
bright3={{ $onPrimaryContainer }}
|
||||
bright4={{ $onPrimaryContainer }}
|
||||
bright5={{ $onSecondaryContainer }}
|
||||
bright6={{ $primary }}
|
||||
bright7={{ $onSurfaceVariant }}
|
||||
|
||||
[csd]
|
||||
# preferred=server
|
||||
# size=26
|
||||
# font=<primary font>
|
||||
# color=<foreground color>
|
||||
# button-width=26
|
||||
# button-color=<background color>
|
||||
# button-minimize-color=<regular4>
|
||||
# button-maximize-color=<regular2>
|
||||
# button-close-color=<regular1>
|
||||
|
||||
[key-bindings]
|
||||
scrollback-up-page=Page_Up
|
||||
# scrollback-up-half-page=none
|
||||
# scrollback-up-line=none
|
||||
scrollback-down-page=Page_Down
|
||||
# scrollback-down-half-page=none
|
||||
# scrollback-down-line=none
|
||||
clipboard-copy=Control+c
|
||||
clipboard-paste=Control+v
|
||||
# primary-paste=Shift+Insert
|
||||
search-start=Control+f
|
||||
# font-increase=Control+plus Control+equal Control+KP_Add
|
||||
# font-decrease=Control+minus Control+KP_Subtract
|
||||
# font-reset=Control+0 Control+KP_0
|
||||
# spawn-terminal=Control+Shift+n
|
||||
# minimize=none
|
||||
# maximize=none
|
||||
# fullscreen=none
|
||||
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||
# pipe-selected=[xargs -r firefox] none
|
||||
# show-urls-launch=Control+Shift+u
|
||||
# show-urls-copy=none
|
||||
|
||||
[search-bindings]
|
||||
cancel=Escape
|
||||
find-prev=Shift+F3
|
||||
find-next=F3 Control+G
|
||||
# commit=Return
|
||||
# cursor-left=Left Control+b
|
||||
# cursor-left-word=Control+Left Mod1+b
|
||||
# cursor-right=Right Control+f
|
||||
# cursor-right-word=Control+Right Mod1+f
|
||||
# cursor-home=Home Control+a
|
||||
# cursor-end=End Control+e
|
||||
# delete-prev=BackSpace
|
||||
# delete-prev-word=Control+BackSpace
|
||||
# delete-next=Delete
|
||||
# delete-next-word=Mod1+d Control+Delete
|
||||
# extend-to-word-boundary=Control+w
|
||||
# extend-to-next-whitespace=Control+Shift+w
|
||||
# clipboard-paste=Control+v Control+y
|
||||
# primary-paste=Shift+Insert
|
||||
|
||||
[url-bindings]
|
||||
# cancel=Control+g Control+c Control+d Escape
|
||||
# toggle-url-visible=t
|
||||
|
||||
[mouse-bindings]
|
||||
# primary-paste=BTN_MIDDLE
|
||||
# select-begin=BTN_LEFT
|
||||
# select-begin-block=Control+BTN_LEFT
|
||||
# select-extend=BTN_RIGHT
|
||||
# select-extend-character-wise=Control+BTN_RIGHT
|
||||
# select-word=BTN_LEFT-2
|
||||
# select-word-whitespace=Control+BTN_LEFT-2
|
||||
# select-row=BTN_LEFT-3
|
21
modules/styling/config/scripts/templates/fuzzel/fuzzel.ini
Normal file
21
modules/styling/config/scripts/templates/fuzzel/fuzzel.ini
Normal file
|
@ -0,0 +1,21 @@
|
|||
font=Gabarito
|
||||
terminal=foot -e
|
||||
prompt=">> "
|
||||
layer=overlay
|
||||
|
||||
[colors]
|
||||
background={{ $background }}ff
|
||||
text={{ $onBackground }}ff
|
||||
selection={{ $surfaceVariant }}ff
|
||||
selection-text={{ $onSurfaceVariant }}ff
|
||||
border={{ $surfaceVariant }}ff
|
||||
match={{ $primary }}ff
|
||||
selection-match={{ $primary }}ff
|
||||
|
||||
|
||||
[border]
|
||||
radius=17
|
||||
width=2
|
||||
|
||||
[dmenu]
|
||||
exit-immediately-if-empty=yes
|
144
modules/styling/config/scripts/templates/gradience/preset.json
Normal file
144
modules/styling/config/scripts/templates/gradience/preset.json
Normal file
|
@ -0,0 +1,144 @@
|
|||
{
|
||||
"name": "Material3_Generated",
|
||||
"variables": {
|
||||
"theme_fg_color": "#AEE5FA",
|
||||
"theme_text_color": "#AEE5FA",
|
||||
"theme_bg_color": "#1a1b26",
|
||||
"theme_base_color": "#1a1b26",
|
||||
"theme_selected_bg_color": "#AEE5FA",
|
||||
"theme_selected_fg_color": "rgba(0, 0, 0, 0.87)",
|
||||
"insensitive_bg_color": "#1a1b26",
|
||||
"insensitive_fg_color": "rgba(192, 202, 245, 0.5)",
|
||||
"insensitive_base_color": "#24283b",
|
||||
"theme_unfocused_fg_color": "#AEE5FA",
|
||||
"theme_unfocused_text_color": "#c0caf5",
|
||||
"theme_unfocused_bg_color": "#1a1b26",
|
||||
"theme_unfocused_base_color": "#1a1b26",
|
||||
"theme_unfocused_selected_bg_color": "#a9b1d6",
|
||||
"theme_unfocused_selected_fg_color": "rgba(0, 0, 0, 0.87)",
|
||||
"unfocused_insensitive_color": "rgba(192, 202, 245, 0.5)",
|
||||
"borders": "rgba(192, 202, 245, 0.12)",
|
||||
"unfocused_borders": "rgba(192, 202, 245, 0.12)",
|
||||
"warning_color": "#FDD633",
|
||||
"error_color": "#BA1B1B",
|
||||
"success_color": "#81C995",
|
||||
"wm_title": "#AEE5FA",
|
||||
"wm_unfocused_title": "rgba(192, 202, 245, 0.7)",
|
||||
"wm_highlight": "rgba(192, 202, 245, 0.1)",
|
||||
"wm_bg": "#1a1b26",
|
||||
"wm_unfocused_bg": "#1a1b26",
|
||||
"wm_button_close_icon": "#1a1b26",
|
||||
"wm_button_close_hover_bg": "#a9b1d6",
|
||||
"wm_button_close_active_bg": "#c7c7c7",
|
||||
"content_view_bg": "#1a1b26",
|
||||
"placeholder_text_color": "silver",
|
||||
"text_view_bg": "#1d1d1d",
|
||||
"budgie_tasklist_indicator_color": "#90D1F6",
|
||||
"budgie_tasklist_indicator_color_active": "#90D1F6",
|
||||
"budgie_tasklist_indicator_color_active_window": "#999999",
|
||||
"budgie_tasklist_indicator_color_attention": "#FDD633",
|
||||
"STRAWBERRY_100": "#FF9262",
|
||||
"STRAWBERRY_300": "#FF793E",
|
||||
"STRAWBERRY_500": "#F15D22",
|
||||
"STRAWBERRY_700": "#CF3B00",
|
||||
"STRAWBERRY_900": "#AC1800",
|
||||
"ORANGE_100": "#FFDB91",
|
||||
"ORANGE_300": "#FFCA40",
|
||||
"ORANGE_500": "#FAA41A",
|
||||
"ORANGE_700": "#DE8800",
|
||||
"ORANGE_900": "#C26C00",
|
||||
"BANANA_100": "#FFFFA8",
|
||||
"BANANA_300": "#FFFA7D",
|
||||
"BANANA_500": "#FFCE51",
|
||||
"BANANA_700": "#D1A023",
|
||||
"BANANA_900": "#A27100",
|
||||
"LIME_100": "#A2F3BE",
|
||||
"LIME_300": "#8ADBA6",
|
||||
"LIME_500": "#73C48F",
|
||||
"LIME_700": "#479863",
|
||||
"LIME_900": "#1C6D38",
|
||||
"BLUEBERRY_100": "#94A6FF",
|
||||
"BLUEBERRY_300": "#6A7CE0",
|
||||
"BLUEBERRY_500": "#3F51B5",
|
||||
"BLUEBERRY_700": "#213397",
|
||||
"BLUEBERRY_900": "#031579",
|
||||
"GRAPE_100": "#D25DE6",
|
||||
"GRAPE_300": "#B84ACB",
|
||||
"GRAPE_500": "#9C27B0",
|
||||
"GRAPE_700": "#830E97",
|
||||
"GRAPE_900": "#6A007E",
|
||||
"COCOA_100": "#9F9792",
|
||||
"COCOA_300": "#7B736E",
|
||||
"COCOA_500": "#574F4A",
|
||||
"COCOA_700": "#463E39",
|
||||
"COCOA_900": "#342C27",
|
||||
"SILVER_100": "#EEE",
|
||||
"SILVER_300": "#CCC",
|
||||
"SILVER_500": "#AAA",
|
||||
"SILVER_700": "#888",
|
||||
"SILVER_900": "#666",
|
||||
"SLATE_100": "#888",
|
||||
"SLATE_300": "#666",
|
||||
"SLATE_500": "#444",
|
||||
"SLATE_700": "#222",
|
||||
"SLATE_900": "#111",
|
||||
"BLACK_100": "#474341",
|
||||
"BLACK_300": "#403C3A",
|
||||
"BLACK_500": "#393634",
|
||||
"BLACK_700": "#33302F",
|
||||
"BLACK_900": "#2B2928",
|
||||
"accent_bg_color": "{{ $primary }}",
|
||||
"accent_fg_color": "{{ $onPrimary }}",
|
||||
"accent_color": "{{ $primary }}",
|
||||
"destructive_bg_color": "{{ $error }}",
|
||||
"destructive_fg_color": "{{ $onError }}",
|
||||
"destructive_color": "{{ $error }}",
|
||||
"success_bg_color": "#81C995",
|
||||
"success_fg_color": "rgba(0, 0, 0, 0.87)",
|
||||
"warning_bg_color": "#FDD633",
|
||||
"warning_fg_color": "rgba(0, 0, 0, 0.87)",
|
||||
"error_bg_color": "{{ $error }}",
|
||||
"error_fg_color": "{{ $onError }}",
|
||||
"window_bg_color": "{{ $background }}",
|
||||
"window_fg_color": "{{ $onBackground }}",
|
||||
"view_bg_color": "{{ $surface }}",
|
||||
"view_fg_color": "{{ $onSurface }}",
|
||||
"headerbar_bg_color": "mix(@dialog_bg_color, @window_bg_color, 0.5)",
|
||||
"headerbar_fg_color": "{{ $onSecondaryContainer }}",
|
||||
"headerbar_border_color": "{{ $secondaryContainer }}",
|
||||
"headerbar_backdrop_color": "@headerbar_bg_color",
|
||||
"headerbar_shade_color": "rgba(0, 0, 0, 0.09)",
|
||||
"card_bg_color": "{{ $background }}",
|
||||
"card_fg_color": "{{ $onSecondaryContainer }}",
|
||||
"card_shade_color": "rgba(0, 0, 0, 0.09)",
|
||||
"dialog_bg_color": "{{ $secondaryContainer }}",
|
||||
"dialog_fg_color": "{{ $onSecondaryContainer }}",
|
||||
"popover_bg_color": "{{ $secondaryContainer }}",
|
||||
"popover_fg_color": "{{ $onSecondaryContainer }}",
|
||||
"thumbnail_bg_color": "#1a1b26",
|
||||
"thumbnail_fg_color": "#AEE5FA",
|
||||
"shade_color": "rgba(0, 0, 0, 0.36)",
|
||||
"scrollbar_outline_color": "rgba(0, 0, 0, 0.5)",
|
||||
|
||||
"sidebar_bg_color": "@window_bg_color",
|
||||
"sidebar_fg_color":"@window_fg_color",
|
||||
"sidebar_border_color": "@sidebar_bg_color",
|
||||
"sidebar_backdrop_color": "@sidebar_bg_color"
|
||||
},
|
||||
"palette": {
|
||||
"blue_": {},
|
||||
"green_": {},
|
||||
"yellow_": {},
|
||||
"orange_": {},
|
||||
"red_": {},
|
||||
"purple_": {},
|
||||
"brown_": {},
|
||||
"light_": {},
|
||||
"dark_": {}
|
||||
},
|
||||
"custom_css": {
|
||||
"gtk4": "",
|
||||
"gtk3": ""
|
||||
},
|
||||
"plugins": {}
|
||||
}
|
89
modules/styling/config/scripts/templates/gtklock/main.scss
Normal file
89
modules/styling/config/scripts/templates/gtklock/main.scss
Normal file
|
@ -0,0 +1,89 @@
|
|||
// Could just sed but scss is better
|
||||
@import '../../../scss/_material.scss'; // Which is ~/.config/ags/scss/_material.scss
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
border: 0rem;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: transparentize($background, 0.6);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
#window-box {
|
||||
border-radius: 1.5rem;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
#input-label {
|
||||
font-size: 1.5rem;
|
||||
color: transparent;
|
||||
background-color: transparent;
|
||||
margin: -20rem; // bye bye
|
||||
}
|
||||
|
||||
#input-field {
|
||||
background-color: $secondaryContainer;
|
||||
color: $onSecondaryContainer;
|
||||
caret-color: $onSecondaryContainer;
|
||||
border-radius: 999px;
|
||||
font-size: 1.3rem;
|
||||
padding: 0.341rem 1.364rem;
|
||||
margin: 0.477rem;
|
||||
box-shadow: 2px 2px 4px rgba(22, 22, 22, 0.5);
|
||||
min-height: 2.727rem;
|
||||
}
|
||||
|
||||
#unlock-button {
|
||||
margin: -20rem; // bye bye
|
||||
color: transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#error-label {
|
||||
color: $error;
|
||||
}
|
||||
|
||||
#clock-label {
|
||||
font-family: 'Lexend';
|
||||
font-size: 6rem;
|
||||
border-radius: 1.2rem;
|
||||
padding: 0.5rem;
|
||||
margin: 0.6rem;
|
||||
margin-top: -35rem; // higher clock position
|
||||
color: $onSecondaryContainer;
|
||||
text-shadow: 1px 1px 2px rgba(22, 22, 30, 0.5);
|
||||
}
|
||||
|
||||
// #user-image {}
|
||||
|
||||
// #powerbar-box {}
|
||||
|
||||
#poweroff-button,
|
||||
#reboot-button,
|
||||
#suspend-button {
|
||||
background-color: $secondaryContainer;
|
||||
color: $onSecondaryContainer;
|
||||
min-width: 3rem;
|
||||
min-height: 3rem;
|
||||
margin: 0.341rem;
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
#poweroff-button:hover,
|
||||
#reboot-button:hover,
|
||||
#suspend-button:hover,
|
||||
#poweroff-button:focus,
|
||||
#reboot-button:focus,
|
||||
#suspend-button:focus {
|
||||
background-color: mix($secondaryContainer, white, 80%);
|
||||
}
|
||||
|
||||
#poweroff-button:active,
|
||||
#reboot-button:active,
|
||||
#suspend-button:active {
|
||||
background-color: mix($secondaryContainer, white, 70%);
|
||||
}
|
32
modules/styling/config/scripts/templates/hypr/colors.conf
Normal file
32
modules/styling/config/scripts/templates/hypr/colors.conf
Normal file
|
@ -0,0 +1,32 @@
|
|||
$SLURP_COMMAND="$(slurp -d -c {{ $onSecondaryContainer }}BB -b {{ $secondaryContainer }}44 -s 00000000)"
|
||||
|
||||
general {
|
||||
col.active_border = rgba({{ $onPrimary }}FF)
|
||||
col.inactive_border = rgba({{ $secondaryContainer }}CC)
|
||||
}
|
||||
|
||||
misc {
|
||||
background_color = rgba({{ $surface }}FF)
|
||||
}
|
||||
|
||||
plugin {
|
||||
hyprbars {
|
||||
# Honestly idk if it works like css, but well, why not
|
||||
bar_text_font = Rubik, Geist, AR One Sans, Reddit Sans, Inter, Roboto, Ubuntu, Noto Sans, sans-serif
|
||||
bar_height = 30
|
||||
bar_padding = 10
|
||||
bar_button_padding = 5
|
||||
bar_precedence_over_border = true
|
||||
bar_part_of_window = true
|
||||
|
||||
bar_color = rgb({{ $background }})
|
||||
col.text = rgb({{ $onBackground }})
|
||||
|
||||
|
||||
# example buttons (R -> L)
|
||||
# hyprbars-button = color, size, on-click
|
||||
hyprbars-button = rgb({{ $onBackground }}), 13, , hyprctl dispatch killactive
|
||||
hyprbars-button = rgb({{ $onBackground }}), 13, , hyprctl dispatch fullscreen 1
|
||||
hyprbars-button = rgb({{ $onBackground }}), 13, , hyprctl dispatch movetoworkspacesilent special
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
]4;0;#$background #\]4;1;#$error #\]4;2;#$inversePrimary #\]4;3;#$onPrimaryContainer #\]4;4;#$onPrimaryContainer #\]4;5;#$onSecondaryContainer #\]4;6;#$primary #\]4;7;#$onSurfaceVariant #\]4;8;#$background #\]4;9;#$error #\]4;10;#$inversePrimary #\]4;11;#$onPrimaryContainer #\]4;12;#$onPrimaryContainer #\]4;13;#$onSecondaryContainer #\]4;14;#$primary #\]4;15;#$onSurfaceVariant #\]10;#$onSurfaceVariant #\]11;#$background #\]12;#$onSurfaceVariant #\]13;#$onSurfaceVariant #\]17;#$onSurfaceVariant #\]19;#$background #\]4;232;#$background #\]4;256;#$onSurfaceVariant #\]708;#$background #\
|
81
modules/styling/config/scripts/wayland-idle-inhibitor.py
Executable file
81
modules/styling/config/scripts/wayland-idle-inhibitor.py
Executable file
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
from signal import SIGINT, SIGTERM, signal
|
||||
from threading import Event
|
||||
|
||||
from pywayland.client.display import Display
|
||||
from pywayland.protocol.idle_inhibit_unstable_v1.zwp_idle_inhibit_manager_v1 import (
|
||||
ZwpIdleInhibitManagerV1,
|
||||
)
|
||||
from pywayland.protocol.wayland.wl_compositor import WlCompositor
|
||||
from pywayland.protocol.wayland.wl_registry import WlRegistryProxy
|
||||
from pywayland.protocol.wayland.wl_surface import WlSurface
|
||||
|
||||
|
||||
@dataclass
|
||||
class GlobalRegistry:
|
||||
surface: WlSurface | None = None
|
||||
inhibit_manager: ZwpIdleInhibitManagerV1 | None = None
|
||||
|
||||
|
||||
def handle_registry_global(
|
||||
wl_registry: WlRegistryProxy, id_num: int, iface_name: str, version: int
|
||||
) -> None:
|
||||
global_registry: GlobalRegistry = wl_registry.user_data or GlobalRegistry()
|
||||
|
||||
if iface_name == "wl_compositor":
|
||||
compositor = wl_registry.bind(id_num, WlCompositor, version)
|
||||
global_registry.surface = compositor.create_surface() # type: ignore
|
||||
elif iface_name == "zwp_idle_inhibit_manager_v1":
|
||||
global_registry.inhibit_manager = wl_registry.bind(
|
||||
id_num, ZwpIdleInhibitManagerV1, version
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
done = Event()
|
||||
signal(SIGINT, lambda _, __: done.set())
|
||||
signal(SIGTERM, lambda _, __: done.set())
|
||||
|
||||
global_registry = GlobalRegistry()
|
||||
|
||||
display = Display()
|
||||
display.connect()
|
||||
|
||||
registry = display.get_registry() # type: ignore
|
||||
registry.user_data = global_registry
|
||||
registry.dispatcher["global"] = handle_registry_global
|
||||
|
||||
def shutdown() -> None:
|
||||
display.dispatch()
|
||||
display.roundtrip()
|
||||
display.disconnect()
|
||||
|
||||
display.dispatch()
|
||||
display.roundtrip()
|
||||
|
||||
if global_registry.surface is None or global_registry.inhibit_manager is None:
|
||||
print("Wayland seems not to support idle_inhibit_unstable_v1 protocol.")
|
||||
shutdown()
|
||||
sys.exit(1)
|
||||
|
||||
inhibitor = global_registry.inhibit_manager.create_inhibitor( # type: ignore
|
||||
global_registry.surface
|
||||
)
|
||||
|
||||
display.dispatch()
|
||||
display.roundtrip()
|
||||
|
||||
print("Inhibiting idle...")
|
||||
done.wait()
|
||||
print("Shutting down...")
|
||||
|
||||
inhibitor.destroy()
|
||||
|
||||
shutdown()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue