Compare commits

..

No commits in common. "ee9469230fd33b73a5689c82527131ea0967899f" and "510d01ef47fd14ab2ad422e5a05e1840279abdbd" have entirely different histories.

48 changed files with 139 additions and 118 deletions

View file

@ -47,7 +47,7 @@ listener {
# On low battery, or after HibernateDelaySec (/etc/systemd/sleep.conf), the system # On low battery, or after HibernateDelaySec (/etc/systemd/sleep.conf), the system
# will enter full hibernation # will enter full hibernation
listener { listener {
timeout = 600 timeout = 600,
on-timeout = systemctl suspend-then-hibernate on-timeout = systemctl suspend-then-hibernate
} }

View file

@ -1,4 +1,11 @@
exec-once = uwsm finalize exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE GTK_THEME QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE
exec-once = uwsm app vesktop exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP GTK_THEME QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE
# Hyprland socket sometimes isn't yet loaded, sleep for sec
exec-once = sleep 1 && systemctl --user start wayland-session.target
exec-once = sleep 3 && vesktop
# exec-once = sleep 3 && discord
# exec-once = sleep 3 && webcord --start-minimized
# vi: ft=hyprlang # vi: ft=hyprlang

View file

@ -23,22 +23,23 @@ bind = SUPER_SHIFT, S, layoutmsg, togglesplit
# ### PROGRAMS ### # ### PROGRAMS ###
# ################ # ################
bind = SUPER, R, exec, uwsm app -- $(uwsm app -- wofi --show drun --define=drun-print_desktop_file=true) bind = SUPER, R, exec, wofi --show drun
bind = SUPER_SHIFT, V, exec, uwsm app -- clipman pick -t wofi bind = SUPER_SHIFT, Return, exec, wofi --show run
bind = SUPER_SHIFT, V, exec, clipman pick -t wofi
bind = SUPER, Return, exec, uwsm app -- kitty bind = SUPER, Return, exec, kitty
bind = SUPER, X, exec, uwsm app -- pcmanfm-qt bind = SUPER, X, exec, pcmanfm-qt
bind = SUPER, B, exec, uwsm app -- firefox bind = SUPER, B, exec, firefox
bind = SUPER, C, exec, uwsm app -- qalculate-gtk bind = SUPER, C, exec, qalculate-gtk
bind = , XF86Calculator, exec, uwsm app -- qalculate-gtk bind = , XF86Calculator, exec, qalculate-gtk
# ##################### # #####################
# ### DE/WM CONTROL ### # ### DE/WM CONTROL ###
# ##################### # #####################
bind = SUPER_SHIFT, Q, exec, uwsm app -- menuquit bind = SUPER_SHIFT, Q, exec, menuquit
bind = SUPER_CTRL, L, exec, loginctl lock-session bind = SUPER_CTRL, L, exec, loginctl lock-session
bind = SUPER_SHIFT, L, exec, uwsm app -- wlogout -p layer-shell bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell
bind = SUPER_SHIFT, T, exec, toggle-idle bind = SUPER_SHIFT, T, exec, toggle-idle
# ################### # ###################
@ -62,8 +63,8 @@ bind = SUPER_ALT, Print, exec, ocr && notify-send "OCR" "Text copied to clipboar
# XF86Favorites key for recording # XF86Favorites key for recording
# (don't question me, I had it free) # (don't question me, I had it free)
bind = , 164, exec, uwsm app -- quick-record --notify toggle bind = , 164, exec, quick-record --notify toggle
bind = SUPER, 164, exec, uwsm -- app quick-record toggle bind = SUPER, 164, exec, quick-record toggle
# ##################### # #####################
# ### NOTIFICATIONS ### # ### NOTIFICATIONS ###
@ -282,7 +283,7 @@ bind = CTRL, F10, pass, ^(com\.obsproject\.Studio)$
# Isolating group to prevent keybind capturing (for games etc) # Isolating group to prevent keybind capturing (for games etc)
# SUPER + End # SUPER + End
bind = SUPER, End, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on (Super + END to disable)" bind = SUPER, End, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on"
submap = isolate submap = isolate
bind = SUPER, End, exec, hyprctl dispatch submap reset && notify-send "Keybind isolation" "Keybind isolation off" bind = SUPER, End, exec, hyprctl dispatch submap reset && notify-send "Keybind isolation" "Keybind isolation off"
submap = reset submap = reset

View file

@ -5,5 +5,4 @@ MONITOR_ID="$1"
MONITOR_NAME="$2" MONITOR_NAME="$2"
MONITOR_DESCRIPTION="$3" MONITOR_DESCRIPTION="$3"
systemctl --user start eww-window@bar1.service eww open bar1
#eww open bar1

View file

@ -9,15 +9,11 @@ if [ "$MONITORS_AMT" -lt 1 ]; then
fi fi
if [ "$MONITORS_AMT" -eq 2 ]; then if [ "$MONITORS_AMT" -eq 2 ]; then
systemctl --user start eww-window@bar1.service eww open bar1
#eww open bar1
fi fi
if [ "$MONITORS_AMT" -eq 1 ]; then if [ "$MONITORS_AMT" -eq 1 ]; then
if eww active-windows | grep "bar1"; then eww active-windows | grep "bar1" && eww close bar1
systemctl --user stop eww-window@bar1.service
#eww close bar1
fi
fi fi
if [ "$MONITORS_AMT" -gt 2 ]; then if [ "$MONITORS_AMT" -gt 2 ]; then

View file

@ -3,5 +3,4 @@ set -euo pipefail
MONITOR_NAME="$1" MONITOR_NAME="$1"
systemctl --user stop eww-window@bar1.service eww close bar1
# eww close bar1

View file

@ -8,17 +8,18 @@
# which means the XDG definitions will be ignored anyway, and # which means the XDG definitions will be ignored anyway, and
# defining them may break programs when root is actually logged in. # defining them may break programs when root is actually logged in.
# Add all folders in ~/.local/bin into PATH # Add all folders in ~/.local/bin into PATH
# Some window managers require this line to be in profile not in .zshenv # Some window managers require this line to be in profile not in .zshenv
if [ -d "$HOME/.local/bin" ]; then if [ -d "$HOME/.local/bin" ]; then
PATH+=":$(find -L ~/.local/bin -type d | tr '\n' ':' | sed 's/:$//')" PATH+=":${$(find -L ~/.local/bin -type d | tr '\n' ':')%%:}"
fi fi
if [ -d "$HOME/.local/share/npm/bin" ]; then if [ -d "$HOME/.local/share/npm/bin" ]; then
PATH+=":$HOME/.local/share/npm/bin" PATH+=":$HOME/.local/share/npm/bin"
fi fi
# Prepend rye shims to PATH, to have rye python executables # Prepend rye shims to PATH, to have rye python executables
# take priority over the system-wide python. # take priority over the system-wide python.
if [ -d "${RYE_HOME:-$HOME/.rye}/shims" ]; then if [ -d "${RYE_HOME:-$HOME/.rye}/shims" ]; then
PATH="${RYE_HOME:-$HOME/.rye}/shims:$PATH" PATH="${RYE_HOME:-$HOME/.rye}/shims:$PATH"
@ -96,7 +97,6 @@ export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history"
export DOTNET_CLI_HOME="$XDG_DATA_HOME/dotnet" export DOTNET_CLI_HOME="$XDG_DATA_HOME/dotnet"
export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter" export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter"
export RYE_HOME="$XDG_CONFIG_HOME/rye" export RYE_HOME="$XDG_CONFIG_HOME/rye"
export OMNISHARPHOME="$XDG_CONFIG_HOME"/omnisharp
# Theming # Theming
export GTK_THEME="Tokyonight-Dark" export GTK_THEME="Tokyonight-Dark"

View file

@ -1,14 +1,13 @@
[Unit] [Unit]
Description=Show a notification when the battery is low Description="Show a notification when the battery is low"
Requires=graphical-session.target PartOf=graphical-session.target
[Service] [Service]
Type=oneshot
ExecStart=%h/.local/bin/scripts/gui/battery-notification ExecStart=%h/.local/bin/scripts/gui/battery-notification
Type=oneshot
RemainAfterExit=false RemainAfterExit=false
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice RestartSec=3s
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,12 +1,9 @@
[Unit] [Unit]
Description=Timer for low battery notification sendout Description="Timer for low battery notification sendout"
After=graphical-session.target
Requires=graphical-session.target
PartOf=graphical-session.target PartOf=graphical-session.target
[Timer] [Timer]
OnUnitActiveSec=20s OnUnitActiveSec=20s
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,13 +1,10 @@
[Unit] [Unit]
Description=Clipman clipboard manager Description="Clipboard clipboard manager"
After=graphical-session.target PartOf=graphical-session.target
Requires=graphical-session.target
[Service] [Service]
ExecStart=/usr/bin/wl-paste -t text --watch /usr/bin/clipman store --no-persist ExecStart=/usr/bin/wl-paste -t text --watch /usr/bin/clipman store --no-persist
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1 +0,0 @@
/usr/lib/systemd/user/systemd-lock-handler.service

View file

@ -0,0 +1,10 @@
[Unit]
Description="Dunst daemon"
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/dunst
Restart=on-failure
[Install]
WantedBy=wm-ready.target

View file

@ -1,18 +1,17 @@
[Unit] [Unit]
Description=Open %I eww window Description="Open %I eww window"
After=graphical-session.target PartOf=graphical-session.target
After=eww.service After=eww.service
PartOf=eww.service PartOf=eww.service
[Service] [Service]
Type=oneshot
ExecStartPre=/usr/bin/eww ping ExecStartPre=/usr/bin/eww ping
ExecStart=/usr/bin/eww open %i ExecStart=/usr/bin/eww open %i
ExecStop=/usr/bin/eww close %i ExecStop=/usr/bin/eww close %i
Type=oneshot
RemainAfterExit=true RemainAfterExit=true
Restart=on-failure Restart=on-failure
RestartSec=3s RestartSec=3s
Slice=background-graphical.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,14 +1,11 @@
[Unit] [Unit]
Description=Eww daemon Description="Eww daemon"
After=graphical-session.target PartOf=graphical-session.target
After=pipewire.service
Requires=graphical-session.target
Requires=pipewire.service
[Service] [Service]
ExecStart=/usr/bin/eww daemon --no-daemonize ExecStart=/usr/bin/eww daemon --no-daemonize
Restart=always Restart=always
Slice=background-graphical.slice RestartSec=3s
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,14 +1,14 @@
[Unit] [Unit]
Description=Show unread GitHub notifications Description="Show unread GitHub notifications"
Requires=graphical-session.target PartOf=graphical-session.target
After=dunst.service
[Service] [Service]
Type=oneshot
ExecStart=%h/.local/bin/scripts/gui/gh-notification -vv ExecStart=%h/.local/bin/scripts/gui/gh-notification -vv
Type=oneshot
RemainAfterExit=false RemainAfterExit=false
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice RestartSec=3s
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,12 +1,9 @@
[Unit] [Unit]
Description=Timer for GitHub notification sendout Description="Timer for GitHub notification sendout"
After=graphical-session.target
Requires=graphical-session.target
PartOf=graphical-session.target PartOf=graphical-session.target
[Timer] [Timer]
OnUnitActiveSec=1m OnUnitActiveSec=1m
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -1,2 +0,0 @@
[Service]
Environment="GNUPGHOME=%h/.local/share/gnupg"

View file

@ -1 +0,0 @@
/usr/lib/systemd/user/hypridle.service

View file

@ -1 +0,0 @@
/usr/lib/systemd/user/swaync.service

View file

@ -0,0 +1,10 @@
[Unit]
Description="Idle management daemon"
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/stdbuf -oL /usr/bin/hypridle
Restart=on-failure
[Install]
WantedBy=wayland-session.target

View file

@ -1,2 +0,0 @@
[Service]
Slice=background-graphical.slice

View file

@ -1,14 +1,10 @@
[Unit] [Unit]
Description=Daemon watching for Hyprland monitor updates Description="Daemon watching for Hyprland monitor updates"
After=wayland-session@hyprland.desktop.target PartOf=graphical-session.target
After=eww.service
Requires=eww.service
Requires=wayland-session@hyprland.desktop.target
[Service] [Service]
ExecStart=%h/.local/bin/scripts/gui/hyprland/hyprland-monitord ExecStart=%h/.local/bin/scripts/gui/hyprland/hyprland-monitord
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice
[Install] [Install]
WantedBy=wayland-session@hyprland.desktop.target WantedBy=wayland-session.target

View file

@ -1,6 +1,6 @@
[Unit] [Unit]
Description=Run hyprlock screenlocker on lock dbus event (using systemd-lock-handler) Description=Run hyprlock screenlocker on lock dbus event (using systemd-lock-handler)
Requisite=graphical-session.target Requisite=wm-ready.target
# if hyprlock exists cleanly, enter a 'unlock' target # if hyprlock exists cleanly, enter a 'unlock' target
OnSuccess=unlock.target OnSuccess=unlock.target
# When lock.target is stopped, stop this unit too # When lock.target is stopped, stop this unit too
@ -9,10 +9,9 @@ PartOf=lock.target
[Service] [Service]
ExecStart=/usr/bin/hyprlock ExecStart=/usr/bin/hyprlock
StandardOutput=journal StandardOutput=journal
ExecStop=/bin/kill -s SIGUSR1 $MAINPID
ExecStopPost=/bin/loginctl unlock-session ExecStopPost=/bin/loginctl unlock-session
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice
[Install] [Install]
WantedBy=lock.target WantedBy=lock.target

View file

@ -0,0 +1,12 @@
[Unit]
Description="Hyprpaper (Hyprland wallpaper daemon"
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/hyprpaper
Restart=on-failure
[Install]
WantedBy=wayland-session.target

View file

@ -1,3 +0,0 @@
[Service]
ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "Hyprland" ""
Slice=background-graphical.slice

View file

@ -1,12 +1,10 @@
[Unit] [Unit]
Description="PolicyKit authentication agent" Description="PolicyKit authentication agent"
After=graphical-session.target PartOf=graphical-session.target
Requires=graphical-session.target
[Service] [Service]
ExecStart=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 ExecStart=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wm-ready.target

View file

@ -4,10 +4,8 @@ Requisite=swaync.service
Before=lock.target Before=lock.target
[Service] [Service]
Type=oneshot
ExecStart=/usr/bin/swaync-client --inhibitor-add screen-locker ExecStart=/usr/bin/swaync-client --inhibitor-add screen-locker
Slice=background-graphical.slice Type=oneshot
[Install] [Install]
WantedBy=lock.target WantedBy=lock.target

View file

@ -4,9 +4,8 @@ Requisite=swaync.service
After=unlock.target After=unlock.target
[Service] [Service]
Type=oneshot
ExecStart=/usr/bin/swaync-client --inhibitor-remove screen-locker ExecStart=/usr/bin/swaync-client --inhibitor-remove screen-locker
Slice=background-graphical.slice Type=oneshot
[Install] [Install]
WantedBy=unlock.target WantedBy=unlock.target

View file

@ -0,0 +1,10 @@
[Unit]
Description="Swaync daemon"
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/swaync
Restart=on-failure
[Install]
WantedBy=wayland-session.target

View file

@ -1,2 +0,0 @@
[Service]
Slice=background-graphical.slice

View file

@ -0,0 +1,6 @@
[Unit]
Description=Waylnad compositor loaded and ready
BindsTo=wm-ready.target
Wants=xdg-desktop-portal.service
Wants=xdg-desktop-portal-hyprland.service
Wants=systemd-lock-handler.service

View file

@ -0,0 +1 @@
/home/itsdrike/.config/systemd/user/hypridle.service

View file

@ -1,12 +1,10 @@
[Unit] [Unit]
Description=Redshift and brightness control for Wayland Description="Redshift and brightness control for Wayland"
After=graphical-session.target BindsTo=wayland-session.target
Requires=graphical-session.target
[Service] [Service]
ExecStart=/usr/bin/wl-gammarelay-rs run ExecStart=/usr/bin/wl-gammarelay-rs run
Restart=on-failure Restart=on-failure
Slice=background-graphical.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=wayland-session.target

View file

@ -0,0 +1,7 @@
[Unit]
Description=Window Manager loaded and ready
BindsTo=graphical-session.target
Wants=wireplumber.service
Wants=pipewire-pulse.socket
Wants=usbguard-notifier.service
Wants=gnome-keyring-daemon.service

View file

@ -1 +0,0 @@
hyprland-uwsm.desktop

View file

@ -1,3 +0,0 @@
#!/bin/bash
source "$HOME"/.config/shell/environment

View file

@ -1,12 +1,18 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
serv="hypridle.service" idleprog="hypridle" # or swayidle
if systemctl --user is-active --quiet "$serv"; then pid="$(pidof "$idleprog" || true)"
systemctl --user stop "$serv" if [ -n "$pid" ]; then
notify-send "Idle-Toggle" "Idle timeouts disabled" # is process suspended?
if ps -o stat= -p "$pid" | grep T >/dev/null; then
kill -CONT "$pid"
notify-send "Idle-Toggle" "Idle timeouts enabled"
else
kill -STOP "$pid"
notify-send "Idle-Toggle" "Idle timeouts disabled"
fi
else else
systemctl --user start "$serv" notify-send "Idle-Toggle" "$idleprog not running!"
notify-send "Idle-Toggle" "Idle timeouts enabled"
fi fi

View file

@ -99,8 +99,7 @@ paru -S --noconfirm --needed \
# Wayland WM essentials # Wayland WM essentials
paru -S --noconfirm --needed \ paru -S --noconfirm --needed \
wl-clipboard xdg-desktop-portal xdg-desktop-portal-gtk qt5-wayland qt6-wayland wev wl-gammarelay-rs wdisplays \ wl-clipboard xdg-desktop-portal xdg-desktop-portal-gtk qt5-wayland qt6-wayland wev wl-gammarelay-rs wdisplays
uwsm
# Utilities # Utilities
paru -S --noconfirm --needed \ paru -S --noconfirm --needed \

View file

@ -7,7 +7,7 @@ vt = 1
# If the user logs out, greetd will render the default session # If the user logs out, greetd will render the default session
[initial_session] [initial_session]
user = "itsdrike" user = "itsdrike"
command = "/usr/local/bin/greetd-session-wrapper uwsm start hyprland.desktop" command = "/usr/local/bin/greetd-session-wrapper Hyprland"
# The default session, also known as the greeter. # The default session, also known as the greeter.
[default_session] [default_session]