Compare commits

..

10 commits

48 changed files with 118 additions and 139 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,11 +1,4 @@
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 finalize
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP GTK_THEME QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE exec-once = uwsm app vesktop
# 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,23 +23,22 @@ bind = SUPER_SHIFT, S, layoutmsg, togglesplit
# ### PROGRAMS ### # ### PROGRAMS ###
# ################ # ################
bind = SUPER, R, exec, wofi --show drun bind = SUPER, R, exec, uwsm app -- $(uwsm app -- wofi --show drun --define=drun-print_desktop_file=true)
bind = SUPER_SHIFT, Return, exec, wofi --show run bind = SUPER_SHIFT, V, exec, uwsm app -- clipman pick -t wofi
bind = SUPER_SHIFT, V, exec, clipman pick -t wofi
bind = SUPER, Return, exec, kitty bind = SUPER, Return, exec, uwsm app -- kitty
bind = SUPER, X, exec, pcmanfm-qt bind = SUPER, X, exec, uwsm app -- pcmanfm-qt
bind = SUPER, B, exec, firefox bind = SUPER, B, exec, uwsm app -- firefox
bind = SUPER, C, exec, qalculate-gtk bind = SUPER, C, exec, uwsm app -- qalculate-gtk
bind = , XF86Calculator, exec, qalculate-gtk bind = , XF86Calculator, exec, uwsm app -- qalculate-gtk
# ##################### # #####################
# ### DE/WM CONTROL ### # ### DE/WM CONTROL ###
# ##################### # #####################
bind = SUPER_SHIFT, Q, exec, menuquit bind = SUPER_SHIFT, Q, exec, uwsm app -- menuquit
bind = SUPER_CTRL, L, exec, loginctl lock-session bind = SUPER_CTRL, L, exec, loginctl lock-session
bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell bind = SUPER_SHIFT, L, exec, uwsm app -- wlogout -p layer-shell
bind = SUPER_SHIFT, T, exec, toggle-idle bind = SUPER_SHIFT, T, exec, toggle-idle
# ################### # ###################
@ -63,8 +62,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, quick-record --notify toggle bind = , 164, exec, uwsm app -- quick-record --notify toggle
bind = SUPER, 164, exec, quick-record toggle bind = SUPER, 164, exec, uwsm -- app quick-record toggle
# ##################### # #####################
# ### NOTIFICATIONS ### # ### NOTIFICATIONS ###
@ -283,7 +282,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" bind = SUPER, End, exec, hyprctl dispatch submap isolate && notify-send "Keybind isolation" "Keybind isolation on (Super + END to disable)"
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,4 +5,5 @@ MONITOR_ID="$1"
MONITOR_NAME="$2" MONITOR_NAME="$2"
MONITOR_DESCRIPTION="$3" MONITOR_DESCRIPTION="$3"
eww open bar1 systemctl --user start eww-window@bar1.service
#eww open bar1

View file

@ -9,11 +9,15 @@ if [ "$MONITORS_AMT" -lt 1 ]; then
fi fi
if [ "$MONITORS_AMT" -eq 2 ]; then if [ "$MONITORS_AMT" -eq 2 ]; then
eww open bar1 systemctl --user start eww-window@bar1.service
#eww open bar1
fi fi
if [ "$MONITORS_AMT" -eq 1 ]; then if [ "$MONITORS_AMT" -eq 1 ]; then
eww active-windows | grep "bar1" && eww close bar1 if eww active-windows | grep "bar1"; then
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,4 +3,5 @@ set -euo pipefail
MONITOR_NAME="$1" MONITOR_NAME="$1"
eww close bar1 systemctl --user stop eww-window@bar1.service
# eww close bar1

View file

@ -8,15 +8,14 @@
# 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' ':')%%:}" PATH+=":$(find -L ~/.local/bin -type d | tr '\n' ':' | sed 's/:$//')"
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
@ -97,6 +96,7 @@ 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,13 +1,14 @@
[Unit] [Unit]
Description="Show a notification when the battery is low" Description=Show a notification when the battery is low
PartOf=graphical-session.target Requires=graphical-session.target
[Service] [Service]
ExecStart=%h/.local/bin/scripts/gui/battery-notification
Type=oneshot Type=oneshot
ExecStart=%h/.local/bin/scripts/gui/battery-notification
RemainAfterExit=false RemainAfterExit=false
Restart=on-failure Restart=on-failure
RestartSec=3s Slice=background-graphical.slice
[Install] [Install]
WantedBy=wm-ready.target WantedBy=graphical-session.target

View file

@ -1,9 +1,12 @@
[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=wm-ready.target WantedBy=graphical-session.target

View file

@ -1,10 +1,13 @@
[Unit] [Unit]
Description="Clipboard clipboard manager" Description=Clipman clipboard manager
PartOf=graphical-session.target After=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=wm-ready.target WantedBy=graphical-session.target

View file

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

View file

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

View file

@ -1,17 +1,18 @@
[Unit] [Unit]
Description="Open %I eww window" Description=Open %I eww window
PartOf=graphical-session.target After=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=wm-ready.target WantedBy=graphical-session.target

View file

@ -1,11 +1,14 @@
[Unit] [Unit]
Description="Eww daemon" Description=Eww daemon
PartOf=graphical-session.target After=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
RestartSec=3s Slice=background-graphical.slice
[Install] [Install]
WantedBy=wm-ready.target WantedBy=graphical-session.target

View file

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

View file

@ -1,9 +1,12 @@
[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=wm-ready.target WantedBy=graphical-session.target

View file

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

View file

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

View file

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

View file

@ -1,10 +0,0 @@
[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

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

View file

@ -1,10 +1,14 @@
[Unit] [Unit]
Description="Daemon watching for Hyprland monitor updates" Description=Daemon watching for Hyprland monitor updates
PartOf=graphical-session.target After=wayland-session@hyprland.desktop.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.target WantedBy=wayland-session@hyprland.desktop.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=wm-ready.target Requisite=graphical-session.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,9 +9,10 @@ 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

@ -1,12 +0,0 @@
[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

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

View file

@ -1,10 +1,12 @@
[Unit] [Unit]
Description="PolicyKit authentication agent" Description="PolicyKit authentication agent"
PartOf=graphical-session.target After=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=wm-ready.target WantedBy=graphical-session.target

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +0,0 @@
[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

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

View file

@ -1,10 +1,12 @@
[Unit] [Unit]
Description="Redshift and brightness control for Wayland" Description=Redshift and brightness control for Wayland
BindsTo=wayland-session.target After=graphical-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=wayland-session.target WantedBy=graphical-session.target

View file

@ -1,7 +0,0 @@
[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

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

3
home/.config/uwsm/env Normal file
View file

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

View file

@ -1,18 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
idleprog="hypridle" # or swayidle serv="hypridle.service"
pid="$(pidof "$idleprog" || true)" if systemctl --user is-active --quiet "$serv"; then
if [ -n "$pid" ]; then systemctl --user stop "$serv"
# is process suspended? notify-send "Idle-Toggle" "Idle timeouts disabled"
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
notify-send "Idle-Toggle" "$idleprog not running!" systemctl --user start "$serv"
notify-send "Idle-Toggle" "Idle timeouts enabled"
fi fi

View file

@ -99,7 +99,8 @@ 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 Hyprland" command = "/usr/local/bin/greetd-session-wrapper uwsm start hyprland.desktop"
# The default session, also known as the greeter. # The default session, also known as the greeter.
[default_session] [default_session]