diff --git a/dot-config b/dot-config deleted file mode 160000 index e3572e1..0000000 --- a/dot-config +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e3572e1f5e1c297212c3deeb17b7863139ce663e diff --git a/home-files/dot-config/Scripts/battery_anime.sh b/home-files/dot-config/Scripts/battery_anime.sh new file mode 100755 index 0000000..b727e03 --- /dev/null +++ b/home-files/dot-config/Scripts/battery_anime.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +icons=("󰂎" "󱊡" "󱊢" "󱊣") +state_file="/tmp/battery_anim_index" + +# init +[ ! -f "$state_file" ] && echo 0 > "$state_file" +i=$(cat "$state_file") + +capacity=$(cat /sys/class/power_supply/BAT0/capacity) +status=$(cat /sys/class/power_supply/BAT0/status) + +if [ "$capacity" -le 15 ]; then + echo "{\"text\": \"󰂃 Connect charger $capacity%\", \"class\": \"critical\"}" + +elif [ "$capacity" -le 25 ]; then + echo "{\"text\": \"󰂃 Battery low $capacity%\", \"class\": \"warning\"}" + +elif [[ "$status" == "Full" ]]; then + echo "{\"text\": \"󰁹 Battery full $capacity%\", \"class\": \"full\"}" + +elif [[ "$status" == "Charging" ]]; then + echo "{\"text\": \"${icons[$i]} Charging $capacity%\", \"class\": \"charging\"}" + i=$(( (i+1) % ${#icons[@]} )) + echo $i > "$state_file" + +else + echo "{\"text\": \"󰁹 $capacity%\", \"class\": \"normal\"}" +fi diff --git a/home-files/dot-config/Scripts/full_screenshot.sh b/home-files/dot-config/Scripts/full_screenshot.sh new file mode 100644 index 0000000..9b03f8e --- /dev/null +++ b/home-files/dot-config/Scripts/full_screenshot.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# ========================= +# CONFIG +# ========================= + +DIR="$HOME/Pictures/Screenshots" +DEVICE_NAME="" # Optional + +SOUND="/usr/share/sounds/freedesktop/stereo/screen-capture.oga" + +# ========================= +# SETUP +# ========================= + +mkdir -p "$DIR" +TIME=$(date +"%d-%m-%Y_%H-%M-%S") +FILE="$DIR/Screenshot_${TIME}.png" + +# ========================= +# SCREENSHOT +# ========================= + +if ! grim - | tee "$FILE" | wl-copy; then + notify-send "❌ Screenshot failed" + exit 1 +fi + +# ========================= +# PLAY SOUND +# ========================= + +if [ -f "$SOUND" ]; then + paplay "$SOUND" & +fi + +# ========================= +# FILE READY CHECK +# ========================= + +for i in {1..10}; do + [ -f "$FILE" ] && break + sleep 0.2 +done + +# ========================= +# KDE CONNECT READY +# ========================= + +if ! pgrep -x kdeconnectd >/dev/null; then + kdeconnectd & + sleep 2 +fi + +# ========================= +# DEVICE DETECTION +# ========================= + +if [ -n "$DEVICE_NAME" ]; then + DEVICE_ID=$(kdeconnect-cli -a | grep "$DEVICE_NAME" | cut -d':' -f1) +else + DEVICE_ID=$(kdeconnect-cli -a --id-only | head -n 1) +fi + +# ========================= +# SEND FILE +# ========================= + +if [ -n "$DEVICE_ID" ]; then + if kdeconnect-cli -d "$DEVICE_ID" --share "$FILE"; then + notify-send "Sent to your phone" "$(basename "$FILE")" + else + notify-send "⚠️ Send failed" "Saved locally" + fi +else + notify-send "⚠️ No device found" "Saved locally" +fi diff --git a/home-files/dot-config/Scripts/lockscr_greet.sh b/home-files/dot-config/Scripts/lockscr_greet.sh new file mode 100755 index 0000000..c3321a3 --- /dev/null +++ b/home-files/dot-config/Scripts/lockscr_greet.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +hour=$(date +%H) + +if [ "$hour" -ge 5 ] && [ "$hour" -lt 12 ]; then + echo "Good Morning" +elif [ "$hour" -ge 12 ] && [ "$hour" -lt 17 ]; then + echo "Good Afternoon" +elif [ "$hour" -ge 17 ] && [ "$hour" -lt 21 ]; then + echo "Good Evening" +else + echo "Good Night" +fi diff --git a/home-files/dot-config/Scripts/mpris.sh b/home-files/dot-config/Scripts/mpris.sh new file mode 100755 index 0000000..0ad7a58 --- /dev/null +++ b/home-files/dot-config/Scripts/mpris.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -u + +fallback_text="Nothing is playing" + +json_escape() { + printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' +} + +player_icon() { + case "$1" in + *spotify*) printf '%s' " " ;; + *firefox* | *zen*) printf '%s' " " ;; + *chromium*) printf '%s' " " ;; + *vlc*) printf '%s' "󰕼 " ;; + *) printf '%s' " " ;; + esac +} + +playing_player="" +paused_player="" +while IFS= read -r p; do + [ -n "$p" ] || continue + status="$(playerctl -p "$p" status 2>/dev/null || true)" + if [ "$status" = "Playing" ]; then + playing_player="$p" + break + fi + if [ "$status" = "Paused" ] && [ -z "$paused_player" ]; then + paused_player="$p" + fi +done < <(playerctl -l 2>/dev/null || true) + +target_player="$playing_player" +[ -n "$target_player" ] || target_player="$paused_player" + +if [ -z "$target_player" ]; then + printf '{"text":"%s","tooltip":"%s"}\n' "$(json_escape "$fallback_text")" "$(json_escape "$fallback_text")" + exit 0 +fi + +status="$(playerctl -p "$target_player" status 2>/dev/null || true)" +title="$(playerctl -p "$target_player" metadata xesam:title 2>/dev/null || true)" +artist="$(playerctl -p "$target_player" metadata xesam:artist 2>/dev/null | paste -sd ', ' - || true)" +icon="$(player_icon "$target_player")" + +[ -n "$title" ] || { + printf '{"text":"%s","tooltip":"%s"}\n' "$(json_escape "$fallback_text")" "$(json_escape "$fallback_text")" + exit 0 +} + +if [ "$status" = "Paused" ]; then + text="⏸ $icon $title" +else + text="$icon $title" +fi +tooltip="$title" +[ -n "$artist" ] && tooltip="$title - $artist" + +printf '{"text":"%s","tooltip":"%s"}\n' "$(json_escape "$text")" "$(json_escape "$tooltip")" diff --git a/home-files/dot-config/Scripts/partial_screenshot.sh b/home-files/dot-config/Scripts/partial_screenshot.sh new file mode 100644 index 0000000..d08c233 --- /dev/null +++ b/home-files/dot-config/Scripts/partial_screenshot.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# ========================= +# CONFIG +# ========================= + +DIR="$HOME/Pictures/Screenshots" +DEVICE_NAME="" +SOUND="/usr/share/sounds/freedesktop/stereo/screen-capture.oga" + +mkdir -p "$DIR" +TIME=$(date +"%d-%m-%Y_%H-%M-%S") +FILE="$DIR/Screenshot_${TIME}.png" + +# ========================= +# WAYLAND CHECK +# ========================= + +if [ -z "$WAYLAND_DISPLAY" ]; then + notify-send "❌ Not running in Wayland" + exit 1 +fi + +# ========================= +# AREA SELECT +# ========================= + +GEOM=$(slurp 2>/dev/null) + +# cancel case +if [ -z "$GEOM" ]; then + notify-send "❌ Screenshot cancelled" + exit 0 +fi + +# ========================= +# SCREENSHOT +# ========================= + +if ! grim -g "$GEOM" "$FILE"; then + notify-send "❌ Screenshot failed (grim error)" + exit 1 +fi + +# copy to clipboard +wl-copy < "$FILE" + +# ========================= +# SOUND +# ========================= + +[ -f "$SOUND" ] && paplay "$SOUND" & + +# ========================= +# KDE CONNECT +# ========================= + +if ! pgrep -x kdeconnectd >/dev/null; then + kdeconnectd & + sleep 2 +fi + +if [ -n "$DEVICE_NAME" ]; then + DEVICE_ID=$(kdeconnect-cli -a | grep "$DEVICE_NAME" | cut -d':' -f1) +else + DEVICE_ID=$(kdeconnect-cli -a --id-only | head -n 1) +fi + +if [ -n "$DEVICE_ID" ]; then + kdeconnect-cli -d "$DEVICE_ID" --share "$FILE" && \ + notify-send "Sent to your phone" "$(basename "$FILE")" +else + notify-send "⚠️ No device found" "Saved locally" +fi diff --git a/home-files/dot-config/Scripts/random_wall_on_home.sh b/home-files/dot-config/Scripts/random_wall_on_home.sh new file mode 100644 index 0000000..44b567f --- /dev/null +++ b/home-files/dot-config/Scripts/random_wall_on_home.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +WALL_DIR="$HOME/Wallpapers" + +WALL=$(find "$WALL_DIR" -type f | shuf -n 1) + +pkill swaybg + +swaybg -i "$WALL" -m fill & + +notify-send "Wallpaper changed" "$(basename "$WALL")" -i "$WALL" diff --git a/home-files/dot-config/Scripts/random_wall_on_lockscr.sh b/home-files/dot-config/Scripts/random_wall_on_lockscr.sh new file mode 100755 index 0000000..09128dd --- /dev/null +++ b/home-files/dot-config/Scripts/random_wall_on_lockscr.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +DIR="$HOME/Wallpapers" + +IMG=$(find "$DIR" -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.jpeg" -o -iname "*.webp" \) | shuf -n 1) + +cp "$IMG" ~/.cache/hyprlock_wall.png + +hyprlock diff --git a/home-files/dot-config/driftwm/config.toml b/home-files/dot-config/driftwm/config.toml new file mode 100644 index 0000000..1d42327 --- /dev/null +++ b/home-files/dot-config/driftwm/config.toml @@ -0,0 +1,370 @@ +# driftwm configuration +# Copy to ~/.config/driftwm/config.toml and uncomment what you want to change. +# Missing fields use built-in defaults. Invalid entries are logged and skipped. +# Run `driftwm --check-config` to validate without starting the compositor. + +# Window manager modifier key: "super" (default) or "alt" +# mod_key = "super" + +# Sloppy focus: keyboard focus follows the pointer to windows. +# Moving to empty canvas keeps focus; click empty canvas to unfocus. +focus_follows_mouse = true + +# Commands to run at startup (after WAYLAND_DISPLAY is set). +# Each entry is passed to sh -c, so full shell syntax works (pipes, &&, env vars). +autostart = [ "vicinae server", "waybar -c ~/.config/waybar/driftwm/config.jsonc", "hiddify", "gnome-keyring-daemon --start --components=secrets"] + +# Environment variables set before any clients launch. +# Child processes (autostart, exec bindings) inherit these. +# These override the compositor's built-in toolkit defaults +# (MOZ_ENABLE_WAYLAND, QT_QPA_PLATFORM, SDL_VIDEODRIVER, GDK_BACKEND, ELECTRON_OZONE_PLATFORM_HINT). +[env] +# Examples: +# # QT_WAYLAND_DISABLE_WINDOWDECORATION = "1" +# # MOZ_ENABLE_WAYLAND = "1" + +[input.keyboard] +layout = "us,ru" # XKB layout (e.g., "us,ru" for multi-layout) +# variant = "" # XKB variant (e.g., "dvorak", or "," for two defaults) +options = "grp:win_space_toggle,ctrl:swap_lalt_lctl" # XKB options (e.g., "grp:win_space_toggle" for Super+Space layout switch) +# model = "" # XKB model (e.g., "pc105") +# repeat_rate = 25 # keys/sec +# repeat_delay = 200 # ms before repeat starts +# layout_independent = true # match bindings by physical key position across layouts +# num_lock = true # num lock state on startup +# caps_lock = false # caps lock state on startup + +[input.trackpad] +# tap_to_click = true # enable tap-to-click +natural_scroll = true # reverse scroll direction (content follows fingers) +# tap_and_drag = true # double-tap-hold to drag +# accel_speed = 0.0 # pointer acceleration (-1.0 to 1.0) +# accel_profile = "adaptive" # "flat" or "adaptive" +# click_method = "none" # none = device default; clickfinger = finger count (1=left, 2=right, 3=middle); button_areas = position on trackpad + +[input.mouse] +accel_speed = 0.0 # pointer acceleration (-1.0 to 1.0) +# accel_profile = "flat" # "flat" or "adaptive" +natural_scroll = true # reverse scroll direction + +[cursor] + theme = "Adwaita" # sets XCURSOR_THEME + #theme = "Catppuccin-Mocha-Dark" # sets XCURSOR_THEME + size = 24 # sets XCURSOR_SIZE + inactive_opacity = 0.5 # cursor opacity on non-active outputs (0.0–1.0) + +[navigation] +# trackpad_speed = 1.5 # trackpad (scroll/gestures) pan multiplier +mouse_speed = 1.0 # mouse (drag) pan multiplier (1.0 = direct) +# friction = 0.94 # momentum decay (0.90=snappy, 0.98=floaty) +# animation_speed = 0.3 # camera lerp factor (higher = faster) +# nudge_step = 20 # px per nudge-window action (mod-shift-arrow by default) +# pan_step = 100.0 # px per pan-viewport action (mod-ctrl-arrow by default) +# Anchors: canvas points discoverable by center-nearest (4-finger swipe / Mod+Arrow) +# even when no window is there. Uses Y-up coordinate system. +# anchors = [[0, 0]] +# Example with 4 corners: +# # anchors = [[0, 0], [-1750, 1750], [1750, 1750], [1750, -1750], [-1750, -1750]] + +[navigation.edge_pan] +zone = 100.0 # activation zone width (px from viewport edge) +# speed_min = 4.0 # px/frame at zone boundary +# speed_max = 10.0 # px/frame at viewport edge + +[zoom] +# step = 1.1 # multiplier per keypress (1.1 = 10% per press) +# fit_padding = 100.0 # canvas px padding for zoom-to-fit +# reset_on_new_window = true # animate zoom to 1.0 when a new window is mapped +# # (false = keep current zoom, pan only) +# reset_on_activation = true # animate zoom to 1.0 when an off-screen window +# # requests focus +# # (false = keep current zoom, pan only) + +[snap] +enabled = true # magnetic edge snapping during window drag +# gap = 12.0 # gap between snapped windows (canvas px) +# distance = 24.0 # activation threshold (screen px from edge) +# break_force = 32.0 # screen px past snap to break free +# same_edge = false # also snap same edges (left-to-left, top-to-top) + +[decorations] +# bg_color = "#303030" # title bar background (default: dark gray) +# fg_color = "#FFFFFF" # close button × color (default: white) +# corner_radius = 8 # clip window corners to this radius (no effect if client rounds more) + +[effects] +# blur_radius = 2 # number of Kawase down+up passes (default: 2) +# blur_strength = 1.1 # per-pass texel spread (default: 1.1) + +[backend] +# Hardware stability quirks. All default to false (opt-in). +# Enable these if you experience flickering, crashes, or rendering issues. +# Particularly useful on NVIDIA GPUs with proprietary drivers. +# Note: These flags must be set before launching driftwm. Changing them requires a restart. +# For additional NVIDIA-specific settings, set these environment variables in your +# session wrapper script or shell profile before starting driftwm: +# export SMITHAY_USE_LEGACY=1 # Use legacy DRM API instead of atomic modesetting +# export __GL_GSYNC_ALLOWED=0 +# export __GL_VRR_ALLOWED=0 +# export __GL_MaxFramesAllowed=1 +# export NVD_BACKEND=direct +# wait_for_frame_completion = false # Wait for GPU fences before page flip +# disable_direct_scanout = false # Force EGL composition (disable direct scanout) + +[output] +# Global output settings. Per-output scale/transform/mode/position +# are configured in [[outputs]] sections below. + +[output.outline] +# color = "#ffffff" # outline color for other monitors' viewports +# thickness = 1 # pixels (0 to disable) +# opacity = 0.5 # 0.0–1.0 + +[background] +tile_path = "/home/krosh/Downloads/loop-pile-carpet-hexagonal-2400-mm-architextures.jpg" +#tile_path = "/home/krosh/Downloads/calacatta-vena-2200-mm-architextures-photoaidcom-invert.jpg" +#tile_path = "/home/krosh/Pictures/Wallpapers/wallhaven-7pmkj3.png" +#tile_path = "~/Pictures/Wallpapers/wallhaven-yx1zdk.png" # tiled image (mutually exclusive with shader) +#tile_path = "~/.config/driftwm/tile.png" # tiled image (mutually exclusive with shader) +# Examples: +# # shader_path = "~/.config/driftwm/bg.glsl" # custom GLSL fragment shader +#tile_path = "~/.config/driftwm/tile.png" # tiled image (mutually exclusive with shader) +# +# Custom shaders receive these uniforms: +# - u_camera: vec2 - camera position in canvas coordinates +# - u_time: float - time in seconds since compositor start (for animations) +# - size: vec2 - viewport size in pixels +# +# Example animated shader: extras/wallpapers/animated_squares.glsl + +# Keyboard bindings: "Modifier+...+Keysym" = "action [arg]" +# Merges with defaults. Use "none" to unbind a default binding. +# "mod" expands to mod_key. Literal modifiers: alt, super, ctrl, shift. +# Keysyms are XKB names (case-insensitive): return, tab, up, a, equal, etc. +# +# Actions: +# exec — launch an app (shows loading cursor until window appears, exits fullscreen) +# spawn — run a command without loading cursor and exiting fullscreen (toggles, OSD, screenshots) +# close-window — close the focused window +# nudge-window — move focused window by nudge_step px +# pan-viewport — pan camera by pan_step px +# center-window — center viewport on focused window + reset zoom +# focus-center — focus + center on the window under the pointer + reset zoom +# center-nearest — navigate to nearest window in direction +# cycle-windows forward — Alt-Tab style window cycling +# cycle-windows backward — reverse cycle +# home-toggle — toggle between current position and origin +# zoom-in / zoom-out — step zoom +# zoom-reset — zoom to 1.0 +# go-to — jump camera to canvas position (bookmarks, Y-up) +# zoom-to-fit — fit all windows in viewport +# toggle-fullscreen — toggle focused window fullscreen +# fit-window — toggle maximize: centers + resets zoom + fills viewport; restore only resizes back +# reload-config — hot-reload config file +# quit — exit the compositor +# send-to-output — move focused window to adjacent output +# none — unbind this key combo +# +# Directions: up, down, left, right, up-left, up-right, down-left, down-right + +[keybindings] +"mod+shift+s" = "exec grim -g \"$(slurp)\" - | wl-copy" +"mod+shift+r" = "reload-config" +"mod+return" = "exec kitty" +"ctrl+return" = "exec kitty" +"mod+w" = "exec zen-browser" +"ctrl+space" = "exec vicinae toggle" +#"mod+d" = "exec vicinae toggle" +"mod+e" = "exec nemo" +"ctrl+5" = "exec Telegram" +# "mod+d" = "exec " +# "mod+q" = "close-window" +# "mod+f" = "toggle-fullscreen" +# "mod+m" = "fit-window" +# "mod+c" = "center-window" +# "mod+x" = "focus-center" +# "mod+a" = "home-toggle" +# "mod+up" = "center-nearest up" +# "mod+down" = "center-nearest down" +# "mod+left" = "center-nearest left" +# "mod+right" = "center-nearest right" +# "mod+shift+up" = "nudge-window up" +# "mod+shift+down" = "nudge-window down" +# "mod+shift+left" = "nudge-window left" +# "mod+shift+right" = "nudge-window right" +# "mod+ctrl+up" = "pan-viewport up" +# "mod+ctrl+down" = "pan-viewport down" +# "mod+ctrl+left" = "pan-viewport left" +# "mod+ctrl+right" = "pan-viewport right" +# "alt+tab" = "cycle-windows forward" +# "alt+shift+tab" = "cycle-windows backward" +# "mod+equal" = "zoom-in" +# "mod+minus" = "zoom-out" +# "mod+0" = "zoom-reset" +# "mod+z" = "zoom-reset" +# "mod+w" = "zoom-to-fit" +"mod+1" = "go-to -2000 2000" # top-left bookmark +"mod+2" = "go-to 2000 2000" # top-right bookmark +"mod+3" = "go-to 2000 -2000" # bottom-right bookmark +"mod+4" = "go-to -2000 -2000" # bottom-left bookmark +#"mod+1" = "go-to -1750 1750" # top-left bookmark +#"mod+2" = "go-to 1750 1750" # top-right bookmark +#"mod+3" = "go-to 1750 -1750" # bottom-right bookmark +#"mod+4" = "go-to -1750 -1750" # bottom-left bookmark +# "mod+alt+up" = "send-to-output up" # move window to output above +# "mod+alt+down" = "send-to-output down" +# "mod+alt+left" = "send-to-output left" +# "mod+alt+right" = "send-to-output right" +# "mod+l" = "spawn swaylock -f -c 000000 -kl" +"mod+ctrl+shift+q" = "quit" +# "XF86AudioRaiseVolume" = "spawn wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" +# "XF86AudioLowerVolume" = "spawn wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" +# "XF86AudioMute" = "spawn wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" +# "XF86MonBrightnessUp" = "spawn brightnessctl set +5%" +# "XF86MonBrightnessDown" = "spawn brightnessctl set 5%-" +"Print" = "exec mkdir -p ~/Pictures/Screenshots && grim ~/Pictures/Screenshots/ss-$(date +%Y-%m-%d_%H-%M-%S).png" +# "shift+Print" = "spawn grim -g \"$(slurp -d)\" - | wl-copy" + +# Mouse bindings: "Modifier+...+Trigger" = "action" +# Context-aware: on-window, on-canvas, anywhere. +# Specific context checked first, then "anywhere" as fallback. +# Click-to-focus and SSD decoration clicks are always hardcoded. +# Triggers: left, right, middle (buttons), trackpad-scroll, wheel-scroll +# Merges with defaults. Use "none" to unbind. +# +# Mouse actions: move-window, resize-window, pan-viewport, zoom, center-nearest +# Any keyboard action also works for button triggers: exec, close-window, toggle-fullscreen, etc. + +[mouse.on-window] +# "alt+left" = "move-window" +# "alt+right" = "resize-window" +# "alt+middle" = "fit-window" +# "mod+middle" = "toggle-fullscreen" + +[mouse.on-canvas] +# "left" = "pan-viewport" # unmodified left-click on empty canvas → pan +# "trackpad-scroll" = "pan-viewport" # trackpad scroll on empty canvas → pan +# "wheel-scroll" = "zoom" # mouse wheel on empty canvas → zoom + +[mouse.anywhere] +# "mod+left" = "pan-viewport" +# "mod+ctrl+left" = "center-nearest" # direction from drag delta +# "mod+trackpad-scroll" = "pan-viewport" +# "mod+wheel-scroll" = "zoom" + +# Gesture bindings: "Modifier+N-finger-" = "action" +# Context-aware: on-window, on-canvas, anywhere. +# Unbound gestures are forwarded to the focused app. +# "none" unbinds (prevents anywhere fallback, still forwards). +# +# Gesture types: +# N-finger-swipe — continuous OR threshold (action determines behavior) +# N-finger-swipe-up/down/left/right — threshold only, checked before swipe fallback +# 3-finger-doubletap-swipe — continuous OR threshold (3-finger tap then swipe) +# N-finger-pinch — continuous only (use pinch-in/out for discrete) +# N-finger-pinch-in/out — threshold only +# N-finger-hold — threshold only (fires on release) +# +# Continuous actions: pan-viewport, zoom, move-window, resize-window +# Threshold actions: center-nearest, center-window, home-toggle, zoom-to-fit, fit-window, exec , etc. + +# Gesture thresholds — tune for your touchpad size. +[gestures] +# swipe_threshold = 12.0 # px cumulative distance before directional swipe fires +# pinch_in_threshold = 0.85 # scale below which pinch-in fires (1.0 = no pinch) +# pinch_out_threshold = 1.15 # scale above which pinch-out fires (1.0 = no pinch) + +[gestures.on-window] +# "alt+3-finger-swipe" = "resize-window" +# "3-finger-doubletap-swipe" = "move-window" +# "alt+2-finger-pinch-in" = "fit-window" +# "alt+2-finger-pinch-out" = "fit-window" +# "alt+3-finger-pinch-in" = "toggle-fullscreen" +# "alt+3-finger-pinch-out" = "toggle-fullscreen" + +[gestures.on-canvas] +# "2-finger-pinch" = "zoom" + +[gestures.anywhere] +# "3-finger-swipe" = "pan-viewport" # continuous (per-frame dx/dy) +# "4-finger-swipe" = "center-nearest" # threshold (accumulate, detect direction, fire once) +# "mod+3-finger-swipe" = "center-nearest" # mod makes 3-finger swipe navigate too +# Per-direction overrides examples (threshold only, checked before swipe fallback): +# # "4-finger-swipe-up" = "exec brightnessctl set +5%" +# # "4-finger-swipe-down" = "exec brightnessctl set 5%-" +# "mod+2-finger-pinch" = "zoom" # mod overrides app forwarding +# "3-finger-pinch" = "zoom" # continuous +# "4-finger-pinch-in" = "zoom-to-fit" # threshold +# "4-finger-pinch-out" = "home-toggle" # threshold +# "mod+3-finger-pinch-in" = "zoom-to-fit" +# "mod+3-finger-pinch-out" = "home-toggle" +# "4-finger-hold" = "center-window" # fires on release +# "mod+3-finger-hold" = "center-window" + +# Per-output configuration. Each [[outputs]] entry matches by connector name. +# Find connector names with wlr-randr or check driftwm logs at startup. +# Outputs without a matching entry default to scale 1.0. +# Winit backend ignores [[outputs]] entries. +# +# Examples: +# # [[outputs]] +# # name = "eDP-1" # connector name (required) +# # scale = 1.5 # fractional scale (default: 1.0) +# # transform = "normal" # normal, 90, 180, 270, flipped, flipped-90, flipped-180, flipped-270 +# # position = "auto" # "auto" (left-to-right) or [x, y] in layout coords +# # mode = "preferred" # "preferred", "1920x1080", or "2560x1440@144" +# # +# # [[outputs]] +# # name = "HDMI-A-1" +# # scale = 1.0 +# # mode = "1920x1080@60" + +[[outputs]] +name = "HDMI-A-2" +#scale = 1.0 +#mode = "1920x1080@60" +position = [0, 0] + +[[outputs]] +name = "eDP-1" # connector name (required) +position = [1920, 0] + +# Window rules: match windows by app_id and/or title and apply overrides. +# At least one of app_id or title is required. Both support * glob. +# To find an app's app_id: cat $XDG_RUNTIME_DIR/driftwm/state (see "windows=" line) +# +# Fields: +# app_id — app_id to match (optional, supports * glob) +# title — window title to match (optional, supports * glob) +# position — [x, y] canvas coordinates to place the window +# size — [width, height] to force window dimensions +# widget — true: pinned (immovable), below normal windows, excluded from navigation (default: false) +# decoration — "client" (default), "server", or "none" (borderless) +# blur — true: blur background behind this window (default: false) +# opacity — 0.0–1.0: window transparency (default: 1.0, fully opaque) +# +# Examples: +# # [[window_rules]] +# # app_id = "my-widget" +# # position = [0, 0] +# # widget = true +# # decoration = "none" +# +# # Blurred terminal +# # [[window_rules]] +# # app_id = "Alacritty" +# # opacity = 0.85 +# # blur = true +# +# # Hide iced/libcosmic utility windows (same app_id as main window) +# # [[window_rules]] +# # title = "winit window" +# # widget = true +[[window_rules]] +app_id = "kitty" +opacity = 0.85 +# blur = true + +[[window_rules]] +app_id = "Firefox" +position = [0, 0] diff --git a/home-files/dot-config/fish/config.fish b/home-files/dot-config/fish/config.fish new file mode 100644 index 0000000..d4e0e2d --- /dev/null +++ b/home-files/dot-config/fish/config.fish @@ -0,0 +1,21 @@ +export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" + +if test (tty) = "/dev/tty1" + set LOG_FOLDER .log/$(date +%Y%m%d) + mkdir -p $LOG_FOLDER + syncthing 2>&1 > $LOG_FOLDER/syncthing.log & disown + exec driftwm +end + + +if status is-interactive + alias ls="eza --icons --group-directories-first" + + function __ls_after_cd --on-variable PWD + ls + end + + # Commands to run in interactive sessions can go here +end + +zoxide init fish --cmd cd | source diff --git a/home-files/dot-config/fish/fish_variables b/home-files/dot-config/fish/fish_variables new file mode 100644 index 0000000..ad10b9b --- /dev/null +++ b/home-files/dot-config/fish/fish_variables @@ -0,0 +1,3 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:4300 diff --git a/home-files/dot-config/kitty/dank-tabs.conf b/home-files/dot-config/kitty/dank-tabs.conf new file mode 100755 index 0000000..bb5460e --- /dev/null +++ b/home-files/dot-config/kitty/dank-tabs.conf @@ -0,0 +1,23 @@ +tab_bar_edge top +tab_bar_style powerline +tab_powerline_style slanted +tab_bar_align left +tab_bar_min_tabs 2 +tab_bar_margin_width 0.0 +tab_bar_margin_height 2.5 1.5 +tab_bar_margin_color #131314 + +tab_bar_background #131314 + +active_tab_foreground #23323b +active_tab_background #deeffb +active_tab_font_style bold + +inactive_tab_foreground #c3c7cb +inactive_tab_background #131314 +inactive_tab_font_style normal + +tab_activity_symbol " ● " + +tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" +active_tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" diff --git a/home-files/dot-config/kitty/dank-theme.conf b/home-files/dot-config/kitty/dank-theme.conf new file mode 100755 index 0000000..eaf971c --- /dev/null +++ b/home-files/dot-config/kitty/dank-theme.conf @@ -0,0 +1,25 @@ +cursor #e4e2e2 +cursor_text_color #c3c7cb + +foreground #e4e2e2 +background #131314 +selection_foreground #2b3135 +selection_background #c2c7cc +url_color #deeffb + +color0 #131314 +color1 #ff729e +color2 #7dfb8c +color3 #fff672 +color4 #cde0ee +color5 #5b6a74 +color6 #deeffb +color7 #eff8ff +color8 #969ea3 +color9 #ff9fbd +color10 #a5ffb0 +color11 #fff9a5 +color12 #e5f4ff +color13 #eaf6ff +color14 #f1f9ff +color15 #f8fcff diff --git a/home-files/dot-config/kitty/kitty.conf b/home-files/dot-config/kitty/kitty.conf new file mode 100755 index 0000000..2589f94 --- /dev/null +++ b/home-files/dot-config/kitty/kitty.conf @@ -0,0 +1,40 @@ +# Font Configuration +font_size 12.0 + +# Window Configuration +window_padding_width 12 +background_opacity 1.0 +background_blur 32 +hide_window_decorations yes + +# Cursor Configuration +cursor_shape block +cursor_blink_interval 1 + +# Scrollback +scrollback_lines 3000 + +# Terminal features +copy_on_select yes +strip_trailing_spaces smart + +# Key bindings for common actions +map ctrl+shift+n new_window +map ctrl+t new_tab +map ctrl+plus change_font_size all +1.0 +map ctrl+minus change_font_size all -1.0 +map ctrl+0 change_font_size all 0 + +map ctrl+c copy_and_clear_or_interrupt +map ctrl+v paste_from_clipboard + +# Tab configuration +tab_bar_style powerline +tab_bar_align left + +# Shell integration +shell_integration enabled + +# Dank color generation +include dank-tabs.conf +include dank-theme.conf diff --git a/home-files/dot-config/mimeapps.list b/home-files/dot-config/mimeapps.list new file mode 100644 index 0000000..2c8abfc --- /dev/null +++ b/home-files/dot-config/mimeapps.list @@ -0,0 +1,25 @@ +[Default Applications] +x-scheme-handler/http=zen.desktop +x-scheme-handler/https=zen.desktop +x-scheme-handler/chrome=zen.desktop +text/html=zen.desktop +application/x-extension-htm=zen.desktop +application/x-extension-html=zen.desktop +application/x-extension-shtml=zen.desktop +application/xhtml+xml=zen.desktop +application/x-extension-xhtml=zen.desktop +application/x-extension-xht=zen.desktop +inode/directory=nemo.desktop +application/x-gnome-saved-search=nemo.desktop + +[Added Associations] +x-scheme-handler/http=zen.desktop; +x-scheme-handler/https=zen.desktop; +x-scheme-handler/chrome=zen.desktop; +text/html=zen.desktop; +application/x-extension-htm=zen.desktop; +application/x-extension-html=zen.desktop; +application/x-extension-shtml=zen.desktop; +application/xhtml+xml=zen.desktop; +application/x-extension-xhtml=zen.desktop; +application/x-extension-xht=zen.desktop; diff --git a/home-files/dot-config/systemd/user/ssh-agent.service b/home-files/dot-config/systemd/user/ssh-agent.service new file mode 100644 index 0000000..9428410 --- /dev/null +++ b/home-files/dot-config/systemd/user/ssh-agent.service @@ -0,0 +1,10 @@ +[Unit] +Description=SSH key agent + +[Service] +Type=simple +Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket +ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK + +[Install] +WantedBy=default.target diff --git a/home-files/dot-config/vicinae/settings.json b/home-files/dot-config/vicinae/settings.json new file mode 100644 index 0000000..b6f0acd --- /dev/null +++ b/home-files/dot-config/vicinae/settings.json @@ -0,0 +1,18 @@ +// This configuration is merged with the default vicinae configuration file, which you can obtain by running the `vicinae config default` command. +// Every item defined in this file takes precedence over the values defined in the default config or any other imported file. +// +// You can make manual edits to this file, however you should keep in mind that this file may be written to by vicinae when a configuration change is made through the GUI. +// When that happens, any custom comments or formatting will be lost. +// +// If you want to maintain a configuration file with your own comments and formatting, you should create a separate file and add it to the 'imports' array. +// +// Learn more about configuration at https://docs.vicinae.com/config + +{ + "$schema": "https://vicinae.com/schemas/config.json", + "theme": { + "dark": { + "name": "rose-pine" + } + } +} \ No newline at end of file diff --git a/home-files/dot-config/waybar/Hyprland/config.jsonc b/home-files/dot-config/waybar/Hyprland/config.jsonc new file mode 100644 index 0000000..ba42391 --- /dev/null +++ b/home-files/dot-config/waybar/Hyprland/config.jsonc @@ -0,0 +1,36 @@ +{ + //"margin-top": 5, + //"margin-left": 10, + //"margin-right": 10, + "layer": "top", + "position": "top", + "spacing": 6, + "reload_style_on_change": true, + +"modules-left":[ + "custom/logo", + "custom/mpris", + "hyprland/workspaces" +], + +"custom/logo": { + "format" : "󰣇 Hyprland", + "tooltip": false, + "tooltip-format": "App launcher", + "on-click": "pkill rofi || rofi -show drun -theme ~/.config/rofi/launchpad.rasi", + "on-click-right": "kitty" +}, + +"hyprland/workspaces": { + "format": "{icon}", + "format-icons": { + "active": "", + "default": "" + } +}, + +"include": [ + "~/.config/waybar/Modules/*.jsonc" +] + +} diff --git a/home-files/dot-config/waybar/MangoWC/config.jsonc b/home-files/dot-config/waybar/MangoWC/config.jsonc new file mode 100644 index 0000000..0a466af --- /dev/null +++ b/home-files/dot-config/waybar/MangoWC/config.jsonc @@ -0,0 +1,40 @@ +{ + //"margin-top": 5, + //"margin-left": 10, + //"margin-right": 10, + "layer": "top", + "position": "top", + "spacing": 6, + "reload_style_on_change": true, + +"modules-left":[ + "custom/logo", + "custom/mpris", + "ext/workspaces" +], + +"custom/logo": { + "format" : "󰣇 MangoWM", + "tooltip": false, + "tooltip-format": "App launcher", + "on-click": "pkill rofi || rofi -show drun", + "on-click-right": "kitty" +}, + +"ext/workspaces": { + "format": "{icon}", + "format-icons": { + "active": "", + "default": "" + }, + "ignore-hidden": true, + "on-click": "activate", + "on-click-right": "deactivate", + "sort-by-id": true +}, + +"include": [ + "~/.config/waybar/Modules/*.jsonc" +] + +} diff --git a/home-files/dot-config/waybar/Modules/Animated_battery.jsonc b/home-files/dot-config/waybar/Modules/Animated_battery.jsonc new file mode 100644 index 0000000..4389c8e --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Animated_battery.jsonc @@ -0,0 +1,10 @@ +{ + /*"custom/battery": { + "exec": "~/.config/waybar/battery-anime.sh", + "interval": 1.0, + "return-type": "json", + "format": "{}", + "on-click-right": "kitty sh -c 'upower -i /org/freedesktop/UPower/devices/battery_BAT0; read'" +},*/ + +} diff --git a/home-files/dot-config/waybar/Modules/Backlight.jsonc b/home-files/dot-config/waybar/Modules/Backlight.jsonc new file mode 100644 index 0000000..606b4e6 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Backlight.jsonc @@ -0,0 +1,16 @@ +{ + "backlight": { + "reverse-scrolling": true, + "smooth-scrolling-threshold": 2.0, + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "tooltip": true, + "tooltip-format": "Current brightness is {percent} percent", + "format": "{icon} {percent}%", + "format-icons": ["󰃞", "󰃟", "󰃠"], + "on-click": "brightnessctl set 10%-", + "on-click-right": "brightnessctl set 10%+", + "on-click-middle": "bash $HOME/.config/Scripts/random_wall_on_home.sh" + } + +} diff --git a/home-files/dot-config/waybar/Modules/Battery.jsonc b/home-files/dot-config/waybar/Modules/Battery.jsonc new file mode 100644 index 0000000..b99d06c --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Battery.jsonc @@ -0,0 +1,26 @@ +{ + "battery": { "states": {"warning": 25,"critical": 15 }, + "interval": 1, + "format": "{icon} {capacity}%", + "format-time": "{H} hours {M} minutes", + "on-click-right": "kitty sh -c 'upower -i /org/freedesktop/UPower/devices/battery_BAT0; read'", + "format-full": "{icon} Battery full {capacity}%", + "format-warning": "{icon} Battery low {capacity}%", + "format-critical": "󰂃 Connect charger {capacity}%", + "format-charging": " Charging {capacity}%", + "format-alt": "{icon} Health ({health}%) Charge cycles ({cycles})", + "format-icons": { "default": [ "󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" ] }, + "tooltip": true, + "tooltip-format": "Battery level: {capacity}%\nPower usage: {power} watts\nDischarge in: {time}\nBattery health: {health}%\nCharge cycles: {cycles}", + "tooltip-format-charging": "Charging at {capacity}%\nPower usage: {power} watts\nFull charge in: {time}\nBattery health: {health}%\nCharge cycles: {cycles}", + "tooltip-format-critical": "Battery low: {capacity}%\nPower usage: {power} watts\nShutdown in: {time}\nConnect the charger immediately.", + "tooltip-format-warning": "Battery low: {capacity}%\nPower usage: {power} watts\nDischarge in: {time}\nConnect the charger soon.", + + "events": { + "on-discharging-warning": "notify-send 'Battery Low (25%)' 'Connect the charger soon'", + "on-discharging-critical": "notify-send 'Battery Critical (15%)' 'Connect the charger immediately'", + "on-charging-100": "notify-send 'Battery Full' 'Please unplug the charger'" + } + } + +} diff --git a/home-files/dot-config/waybar/Modules/Center.jsonc b/home-files/dot-config/waybar/Modules/Center.jsonc new file mode 100644 index 0000000..d59e96a --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Center.jsonc @@ -0,0 +1,5 @@ +{ + "modules-center":[ + "clock" + ] +} diff --git a/home-files/dot-config/waybar/Modules/Clock.jsonc b/home-files/dot-config/waybar/Modules/Clock.jsonc new file mode 100644 index 0000000..0b53707 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Clock.jsonc @@ -0,0 +1,11 @@ +{ + "clock": { + "interval": 1, + "tooltip": true, + "format": "It's {:%H:%M:%S}", + "format-alt": "It’s {:%H:%M:%S on %A, %d %B %Y}", + "tooltip-format": "{calendar}", + "on-click-right": "kitty -e bluetui" + } + +} diff --git a/home-files/dot-config/waybar/Modules/Cpu.jsonc b/home-files/dot-config/waybar/Modules/Cpu.jsonc new file mode 100644 index 0000000..45c90f5 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Cpu.jsonc @@ -0,0 +1,10 @@ +{ + "cpu": { + "interval": 1, + "format": " {}%", + "format-alt": " {avg_frequency} GHz", + "on-click-right": "kitty -e btop", + "tooltip": true + } + +} diff --git a/home-files/dot-config/waybar/Modules/Disk.jsonc b/home-files/dot-config/waybar/Modules/Disk.jsonc new file mode 100644 index 0000000..c14deea --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Disk.jsonc @@ -0,0 +1,12 @@ +{ + "disk": { + "interval": 30, + "format": "󰋊 {percentage_used}%", + "format-alt": "󰋊 {used} / {total}", + "path": "/", + "tooltip": true, + "tooltip-format": "{used} is used out of {total}\nCurrently free storage is {free} ({percentage_free}%)", + "on-click-right": "kitty -e ncdu /" + } + +} diff --git a/home-files/dot-config/waybar/Modules/Memory.jsonc b/home-files/dot-config/waybar/Modules/Memory.jsonc new file mode 100644 index 0000000..f2a2769 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Memory.jsonc @@ -0,0 +1,11 @@ +{ + "memory": { + "interval": 2, + "format": " {percentage}%", + "format-alt": " {used:0.1f}GiB / {total:0.1f}GiB", + "tooltip": true, + "tooltip-format": "{used} GiB RAM is used out of {total} GiB\n{swapUsed} GiB SWAP is used out of {swapTotal} GiB", + "on-click-right": "kitty -e btop" + } + +} diff --git a/home-files/dot-config/waybar/Modules/Mpris.jsonc b/home-files/dot-config/waybar/Modules/Mpris.jsonc new file mode 100644 index 0000000..22d3588 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Mpris.jsonc @@ -0,0 +1,11 @@ +{ + "custom/mpris": { + "exec": "~/.config/Scripts/mpris.sh", + "interval": 2, + "return-type": "json", + "max-length": 15, + "on-click": "playerctl play-pause", + "tooltip": false +} + +} diff --git a/home-files/dot-config/waybar/Modules/Network.jsonc b/home-files/dot-config/waybar/Modules/Network.jsonc new file mode 100644 index 0000000..82cf6d6 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Network.jsonc @@ -0,0 +1,11 @@ +{ + "network": { + "interval": 1, + "format-wifi": " {essid}", + "format-alt": " {bandwidthUpBytes}  {bandwidthDownBytes}", + "tooltip-format-wifi": "You are connected to {essid} ({signalStrength}%)", + "format-disconnected": " No internet", + "on-click-right": "kitty -e nmtui" + } + +} diff --git a/home-files/dot-config/waybar/Modules/Power.jsonc b/home-files/dot-config/waybar/Modules/Power.jsonc new file mode 100644 index 0000000..8d846bf --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Power.jsonc @@ -0,0 +1,19 @@ +{ + "custom/power": { + "format" : "", + "tooltip": true, + "tooltip-format": "Power menu", + //"menu": "on-click", + "on-click-right": "pkill wlogout || wlogout", + "on-click": "pkill wlogout || wlogout", + "on-click-middle": "systemctl poweroff" + //"menu-file": "~/.config/waybar/power_menu.xml", + //"menu-actions": { + // "shutdown": "systemctl poweroff", + // "reboot": "systemctl reboot", + // "suspend": "systemctl suspend", + // "logout": "loginctl terminate-user $USER", + //}, + } + +} diff --git a/home-files/dot-config/waybar/Modules/Pulseaudio.jsonc b/home-files/dot-config/waybar/Modules/Pulseaudio.jsonc new file mode 100644 index 0000000..906d4e9 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Pulseaudio.jsonc @@ -0,0 +1,15 @@ +{ + "pulseaudio": { + "scroll-step": 1, + "reverse-scrolling": true, + "smooth-scrolling-threshold": 1.0, + "format": "{icon} {volume}%", + "format-bluetooth":" {icon} {volume}%", + "format-muted": " Muted", + "format-icons": { "default": [" ", " ", " "]}, + "on-click": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-", + "on-click-middle": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "on-click-right": "wpctl set-volume @DEFAULT_AUDIO_SINK@ -l 1.0 10%+", + "on-double-click-middle": "kitty -e pulsemixer" + } +} diff --git a/home-files/dot-config/waybar/Modules/Right.jsonc b/home-files/dot-config/waybar/Modules/Right.jsonc new file mode 100644 index 0000000..7ff6f70 --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Right.jsonc @@ -0,0 +1,15 @@ +{ + "modules-right": [ + "custom/power", + "temperature", + "cpu", + "memory", + "disk", + "network", + "pulseaudio", + "backlight", + /*"custom/battery"*/ + "battery" + ] + +} diff --git a/home-files/dot-config/waybar/Modules/Temperature.jsonc b/home-files/dot-config/waybar/Modules/Temperature.jsonc new file mode 100644 index 0000000..e597a0e --- /dev/null +++ b/home-files/dot-config/waybar/Modules/Temperature.jsonc @@ -0,0 +1,11 @@ +{ + "temperature": { + "hwmon-path": "/sys/class/hwmon/hwmon4/temp1_input", + "critical-threshold": 80, + "warning-threshold": 60, + "format": " {temperatureC}°C", + "tooltip": true, + "tooltip-format": "CPU temperature: {temperatureC}°C", + "on-click-right": "kitty sh -c 'sensors; read'" + } +} diff --git a/home-files/dot-config/waybar/Niri/config.jsonc b/home-files/dot-config/waybar/Niri/config.jsonc new file mode 100644 index 0000000..044cdd0 --- /dev/null +++ b/home-files/dot-config/waybar/Niri/config.jsonc @@ -0,0 +1,33 @@ +{ + //"margin-top": 5, + //"margin-left": 10, + //"margin-right": 10, + "layer": "top", + "position": "top", + "spacing": 6, + "reload_style_on_change": true, + +"modules-left":[ + "custom/logo", + "custom/mpris", + "niri/workspaces" +], + +"custom/logo": { + "format" : "󰣇 Niri", + "tooltip": false, + "tooltip-format": "App launcher", + "on-click": "pkill rofi || rofi -show drun", + "on-click-right": "kitty" +}, + +"niri/workspaces": { + "format": "{icon}", + "format-icons": { "active": "", "default": "" } +}, + +"include": [ + "~/.config/waybar/Modules/*.jsonc" +] + +} diff --git a/home-files/dot-config/waybar/driftwm/config.jsonc b/home-files/dot-config/waybar/driftwm/config.jsonc new file mode 100644 index 0000000..ce4d98d --- /dev/null +++ b/home-files/dot-config/waybar/driftwm/config.jsonc @@ -0,0 +1,144 @@ +{ + //"margin-top": 5, + //"margin-left": 5, + //"margin-right": 5, + "layer": "top", + "position": "top", + "spacing": 6, + "reload_style_on_change": true, + + "modules-left": [ "custom/logo","custom/mpris" ], + + "modules-center": [ "clock" ], + + "modules-right": [ + "custom/power", + "cpu", + "memory", + "disk", + "network#wifi", + "pulseaudio", + "backlight", + "battery" + ], + +"custom/logo": { + "format" : "󰣇 DriftWM", + "tooltip": false, + "tooltip-format": "App launcher", + "on-click": "vicinae toggle", + "on-click-right": "kitty" + }, + +"custom/mpris": { + "exec": "~/.config/Scripts/mpris.sh", + "interval": 2, + "return-type": "json", + "max-length": 15, + "on-click": "playerctl play-pause", + "tooltip": false +}, + +"clock": { + "interval": 1, + "tooltip": false, + "format": "It’s {:%H:%M:%S on %A, %d %B %Y}", + "on-click-right": "kitty -e bluetui" + }, + +"cpu": { + "interval": 1, + "format": " {}%", + "format-alt": " {avg_frequency} GHz", + "on-click-right": "kitty -e btop", + "tooltip": true + }, + +"disk": { + "interval": 30, + "format": "󰋊 {percentage_used}%", + "format-alt": "󰋊 {used} / {total}", + "path": "/", + "tooltip": true, + "tooltip-format": "{used} is used out of {total}\nCurrently free storage is {free} ({percentage_free}%)", + "on-click-right": "kitty -e ncdu" + }, + +"memory": { + "interval": 2, + "format": " {percentage}%", + "format-alt": " {used:0.1f}GiB / {total:0.1f}GiB", + "tooltip": true, + "tooltip-format": "{used} GiB RAM is used out of {total} GiB\n{swapUsed} GiB SWAP is used out of {swapTotal} GiB", + "on-click-right": "ncdu -e btop" + }, + +"backlight": { + "reverse-scrolling": true, + "smooth-scrolling-threshold": 5.0, + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "tooltip": true, + "tooltip-format": "Current brightness: {percent}%", + "format": "{icon} {percent}%", + "format-icons": ["󰃞", "󰃟", "󰃠"] + }, + +"battery": { "states": {"warning": 25,"critical": 15 }, + "interval": 1, + "format": "{icon} {capacity}%", + "format-time": "{H} hours {M} minutes", + "on-click-right": "kitty -e sh -c 'upower -i /org/freedesktop/UPower/devices/battery_BAT0; read'", + "format-full": "{icon} Battery full {capacity}%", + "format-warning": "{icon} Battery low {capacity}%", + "format-critical": "󰂃 Connect charger {capacity}%", + "format-charging": " Charging {capacity}%", + "format-plugged": " Plugged in {capacity}%", + "format-alt": "{icon} Health ({health}%) Charge cycles ({cycles})", + "format-icons": { "default": ["", "", "", "", ""]}, + "tooltip": true, + "tooltip-format": "Battery level: {capacity}%\nPower usage: {power} watts\nDischarge in: {time}\nBattery health: {health}%\nCharge cycles: {cycles}", + "tooltip-format-charging": "Charging at {capacity}%\nPower usage: {power} watts\nFull charge in: {time}\nBattery health: {health}%\nCharge cycles: {cycles}", + "tooltip-format-critical": "Low battery: {capacity}%\nPower usage: {power} watts\nShutdown in: {time}\nConnect the charger immediately.", + "tooltip-format-warning": "Low battery: {capacity}%\nPower usage: {power} watts\nDischarge in: {time}\nConnect the charger soon." + }, + + "network#wifi": { + "interval": 1, + "format-wifi": " {essid}", + "format-alt": " {bandwidthUpBytes}  {bandwidthDownBytes}", + "tooltip-format-wifi": "You are connected to {essid} ({signalStrength}%)", + "format-disconnected": " No internet", + "on-click-right": "kitty -e nmtui" + }, + + + "pulseaudio": { + "scroll-step": 1, + "reverse-scrolling": true, + "smooth-scrolling-threshold": 2.0, + "format": "{icon} {volume}%", + "format-bluetooth":" {icon} {volume}%", + "format-muted": " Muted", + "format-icons": { "default": [" ", " ", " "]}, + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "on-click-right": "kitty -e pulsemixer" + }, + +"custom/power": { + "format" : "", + "tooltip": true, + "tooltip-format": "Power menu", + //"menu": "on-click", + "on-click": "pkill wlogout || wlogout", + "on-click-right": "pkill wlogout || wlogout", + //"menu-file": "~/.config/waybar/power_menu.xml", + //"menu-actions": { + //"shutdown": "systemctl poweroff", + //"reboot": "systemctl reboot", + //"suspend": "systemctl suspend", + //"logout": "loginctl terminate-user $USER", + //}, + } + +} diff --git a/home-files/dot-config/waybar/driftwm/style.css b/home-files/dot-config/waybar/driftwm/style.css new file mode 100644 index 0000000..3740e05 --- /dev/null +++ b/home-files/dot-config/waybar/driftwm/style.css @@ -0,0 +1,98 @@ +* { + font-family: Google Sans Flex; + font-size: 16px; + padding: 0px 2px 0px 2px; + transition: all 0.2s ease-in-out; +} + +window#waybar { + background-color: rgba(00, 00, 00, 0.99); + transition: all 0.2s ease-in-out; + color: white; + border-radius: 0px; +} + +#backlight:hover, +#pulseaudio:hover { + background-color: #5962ff; + transition: all 0.2s ease-in-out; +} + +tooltip { + border-radius: 32px; +} + +tooltip label { + color: white; + padding: 12px 20px 12px 20px; +} + +#workspaces, +#battery.critical:not(.charging), +#custom-notification, +#battery.warning:not(.charging), +#battery.charging, +#battery.plugged, +#battery.full, +#custom-logo, +#custom-power, +#custom-mpris, +#pulseaudio.muted, +#pulseaudio, +#network, +#backlight, +#battery, +#network.disconnected, +#cpu, +#memory, +#disk, +#clock { +background-color: #303030; +transition: all 0.2s ease-in-out; +color: white; +border-radius: 24px; +padding: 4px 12px 3px 12px; +margin: 4px 0px 4px 0px; +} + +#workspaces { +padding: 0px 4px 0px 4px; +} + +#battery.charging, #battery.plugged { +background-color: #00aa01; +} + +@keyframes blink { + to { + background-color: rgba(255, 255, 255, 0.1); + color: white; + } +} + +#battery.critical:not(.charging) { +background-color: #f2000e; +animation-name: blink; +animation-duration: 1.0s; +animation-timing-function: steps(20); +animation-iteration-count: infinite; +animation-direction: alternate; +} + +#battery.warning:not(.charging) { +background-color: #f74f08; +} + +#battery.full { +background-color: #5962ff; +} + +#custom-power { +padding: 1px 16px 0px 12px; +} + +#pulseaudio.muted { +background-color: #f2000e; +} + +#custom-notification {} diff --git a/home-files/dot-config/waybar/power_menu.xml b/home-files/dot-config/waybar/power_menu.xml new file mode 100644 index 0000000..312931e --- /dev/null +++ b/home-files/dot-config/waybar/power_menu.xml @@ -0,0 +1,28 @@ + + + + + + 󰤄 Suspend + + + + + 󰍃 Logout + + + + +  Reboot + + + + + + + +  Shutdown + + + + diff --git a/home-files/dot-config/waybar/style.css b/home-files/dot-config/waybar/style.css new file mode 100644 index 0000000..2626b27 --- /dev/null +++ b/home-files/dot-config/waybar/style.css @@ -0,0 +1,124 @@ +* { + font-family: Google Sans Flex; + font-size: 16px; + padding: 0px 2px 0px 2px; +} + +window#waybar { + background-color: rgba(00, 00, 00, 0.4); + color: white; + border-radius: 0px; + margin: 0px; + padding: 0px; +} + +#workspaces button { + color: white; + border-radius: 24px; +} + +#workspaces button.active { + transition: all 0.2s ease-in-out; + color: white; + border-radius: 24px; +} + +#workspaces button:hover { + color: black; +} + +#backlight:hover, +#pulseaudio:hover { + background-color: #5962ff; + transition: all 0.2s ease-in-out; +} + +tooltip { + border-radius: 32px; + transition: all 0.2s ease-in-out; +} + +tooltip label { + color: white; + transition: all 0.2s ease-in-out; + padding: 12px 20px 12px 20px; +} + +#workspaces, +#temperature, +#temperature.warning, +#temperature.critical, +#battery.critical:not(.charging), +#battery.warning:not(.charging), +#battery.charging, +/*#custom-battery,*/ +#battery.plugged, +#battery.full, +#custom-logo, +#custom-power, +#custom-mpris, +#pulseaudio.muted, +#pulseaudio, +#network, +#network.disconnected, +#backlight, +#battery, +#network.disconnected, +#cpu, +#memory, +#disk, +#clock { +background-color: rgba(255, 255, 255, 0.1); +transition: all 0.2s ease-in-out; +color: white; +border-radius: 32px; +padding: 1px 12px 0px 12px; +margin: 4px 0px 4px 0px; +} + +#workspaces { +padding: 0px 4px 0px 4px; +} + +#battery.charging, +#battery.plugged +/*#custom-battery.charging*/ { +background-color: /*#27D301*/#00aa01; +} + +@keyframes blink { + to { + background-color: rgba(255, 255, 255, 0.1); + color: white; + } +} + +#battery.critical:not(.charging), +#temperature.critical +/*#custom-battery.critical*/ { +background-color: #FF0000; +animation-name: blink; +animation-duration: 1.0s; +animation-timing-function: steps(20); +animation-iteration-count: infinite; +animation-direction: alternate; +} + +#battery.warning:not(.charging), +#temperature.warning +/*#custom-battery.warning*/ { +background-color: #FF7300; +} + +#battery.full { +background-color: #5962ff; +} + +#custom-power { +padding: 1px 16px 0px 12px; +} + +#network.disconnected, +#pulseaudio.muted { +background-color: #f2000e; +}