First commit

This commit is contained in:
2026-02-22 17:28:02 +01:00
parent 7a70268785
commit 6bacf1878e
9011 changed files with 114470 additions and 0 deletions
@@ -0,0 +1,161 @@
##############################################
# These files are just for reference.
# If you want to change anything, edit the source files in:
# ~/system-master/assets/conf
#
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
# After that, run:
# cd ~/system-master && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
#
# If everything still works, you can use the same command but:
# - keep "switch"
# - and add a reboot:
#
# cd ~/system-master && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
#
# Make sure the lines starting with: cd ~/system-master
# are written as ONE single line.
###############################################
# Keybindings #
###############
$mainMod = SUPER
# use walker to show exec menu
bind = $mainMod, Space , exec, walker
bind = $mainMod, P, pseudo
bind = $mainMod, T, togglesplit
# grimblast
bind = $mainMod SHIFT, p, exec, grimblast -n -f copysave active
bind = $mainMod SHIFT, a, exec, grimblast -n -f copysave area
bind = $mainMod ALT, p, exec, grimblast -n -f copysave output
bind = $mainMod CTRL, p, exec, grimblast -n -f copysave screen
# Terminal / launcher / kill / reload
bind = $mainMod, E, exec, thunar
bind = $mainMod, RETURN, exec, kitty
bind = $mainMod, D, exec, wofi --show drun
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod SHIFT, R, exec, hyprctl reload
# Default browser
bind = $mainMod, W, exec, flatpak run app.zen_browser.zen
# Switch windows
bind = $mainMod, TAB, hyprexpo:expo, toggle
bind = ALT, TAB, cyclenext
bind = ALT SHIFT, TAB, cyclenext , prev
# Focus movement
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# # Move windows
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# Resize windows
bind = $mainMod CTRL, H, resizeactive, -30 0
bind = $mainMod CTRL, L, resizeactive, 30 0
bind = $mainMod CTRL, K, resizeactive, 0 -30
bind = $mainMod CTRL, J, resizeactive, 0 30
# Floating / fullscreen
bind = $mainMod, V, togglefloating,
bind = $mainMod, F, fullscreen, 0
bind = $mainMod SHIFT, F, fullscreen, 1
# Workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Cycle workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Mouse drag
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
#########################
# Screenshots
#########################
bind = $mainMod SHIFT, s, exec, grim -g "$(slurp)" - | wl-copy
bind = , XF86Screenshot, exec, grim - | wl-copy
#########################
# Audio (pamixer)
#########################
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
bind = , XF86AudioMute, exec, pamixer -t
bind = , XF86AudioMicMute, exec, pamixer --default-source -t
#########################
# Media (playerctl)
#########################
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPause, exec, playerctl pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioStop, exec, playerctl stop
#########################
# Brightness (brightnessctl)
#########################
bind = , XF86MonBrightnessUp, exec, brightnessctl set +10%
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
bind = , XF86KbdBrightnessUp, exec, brightnessctl -d '*kbd_backlight*' set +10%
bind = , XF86KbdBrightnessDown, exec, brightnessctl -d '*kbd_backlight*' set 10%-
#########################
# Power / session
#########################
bind = , XF86Sleep, exec, systemctl suspend
bind = , XF86PowerOff, exec, systemctl poweroff
bind = , XF86WakeUp, exec, systemctl suspend
#########################
# Start apps
#########################
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
bind = CTRL ALT, S, exec, spotify
bind = CTRL ALT, z, exec, flatpak run app.zen_browser.zen --filesystem=home
bind = CTRL ALT, k, exec, kate
@@ -0,0 +1,16 @@
general {
lock_cmd = hyprlock
after_sleep_cmd = hyprctl dispatch dpms on
ignore_dbus_inhibit = false
}
listener {
timeout = 600
on-timeout = hyprlock
}
listener {
timeout = 900
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}
@@ -0,0 +1,91 @@
##############################################
# These files are just for reference.
# If you want to change anything definitive, edit the source files in:
# ~/system-master/assets/conf
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
#
# After that, run:
# cd ~/system-master && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
#
# If everything still works, you can use the same command but:
# - keep "switch"
# - and add a reboot:
#
# cd ~/system-master && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
#
# NOTE:
# Make sure the lines starting with: cd ~/system-master
# are written as ONE single line.
###############################################
############################
# Variables
############################
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
$base = rgba(1e1e2eff)
$inactive = rgba(595959aa)
$blue = rgba(33ccffee)
$green = rgba(00ff99ee)
# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4}
exec-once = dbus-update-activation-environment --systemd --all
exec-once = uwsm app -- waybar
input {
follow_mouse = 1
kb_layout = us
kb_options = ctrl:nocaps
sensitivity = -0.5
accel_profile = adaptive
scroll_factor = 0.5
touchpad {
natural_scroll = yes
scroll_factor = 0.5
}
}
cursor {
no_hardware_cursors = true
}
general {
gaps_in = 2
gaps_out = 4
border_size = 2
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
col.active_border = $blue $green 45deg
col.inactive_border = $inactive
layout = dwindle
resize_on_border = true
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
}
decoration {
rounding = 5
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
pseudotile = yes
preserve_split = yes
}
misc {
disable_hyprland_logo = false
focus_on_activate = true
}
# Start required session helpers
exec-once = hypridle
exec-once = hyprpolkitagent
# Lid close: lock only if no external monitor is connected
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
# Lid open: turn DPMS back on (does not unlock)
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
exec-once = systemd-run --user --scope --unit=elephant elephant
@@ -0,0 +1,32 @@
# ~/.config/hypr/hyprlock.conf
general {
grace = 2
ignore_empty_input = true
}
background {
path = ~/.config/hypr/lock.png
blur_passes = 2
blur_size = 6
}
input-field {
size = 320, 60
outline_thickness = 2
dots_size = 0.25
dots_spacing = 0.20
fade_on_empty = true
placeholder_text = "Password"
position = 0, -120
halign = center
valign = center
}
label {
text = $TIME
font_size = 72
position = 0, 120
halign = center
valign = center
}
@@ -0,0 +1,71 @@
// Edit with `hyprshell config edit` <-- GUI app, resize!
(
version: 3,
windows: (
scale: 8.5,
items_per_row: 5 ,
overview: (
launcher: (
default_terminal: None,
launch_modifier: "ctrl",
width: 800,
max_items: 5,
show_when_empty: true,
plugins: (
applications: (
run_cache_weeks: 8,
show_execs: true,
show_actions_submenu: true,
),
terminal: None,
shell: None,
websearch: None,
calc: (),
path: (),
actions: (
actions: [
lock_screen,
hibernate,
logout,
reboot,
shutdown,
suspend,
custom(
names: [
"Kill",
"Stop",
],
details: "Kill or stop a process by name",
command: "pkill \"{}\" && notify-send hyprshell \"stopped {}\"",
icon: "remove",
),
custom(
names: [
"Reload Hyprshell",
],
details: "Reload Hyprshell",
command: "sleep 1; hyprshell socat \'\"Restart\"\'",
icon: "system-restart",
),
],
),
),
),
key: "Super_L",
modifier: "super",
filter_by: [],
hide_filtered: false,
exclude_special_workspaces: "",
),
switch: (
modifier: "alt",
key: "Tab",
filter_by: [
current_monitor,
],
switch_workspaces: false,
exclude_special_workspaces: "",
),
switch_2: None,
),
)
@@ -0,0 +1,8 @@
window {
background: rgba(20, 20, 20, 0.92);
border-radius: 18px;
}
* {
background-color: unset;
}
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -euo pipefail
# If ANY external monitor exists, do NOT lock on lid close (clamshell use-case).
# Your internal panel is eDP-1.
# Anything not starting with eDP is treated as external.
if hyprctl monitors -j | grep -q '"name":"[^"]\+"' ; then
if hyprctl monitors -j | grep -q '"name":"DP-1"' ; then
exit 0
fi
fi
# Generic: if any monitor is not eDP-1, assume external exists.
if hyprctl monitors -j | grep -q '"name":"[^"]\+"' && hyprctl monitors -j | grep -vq '"name":"eDP-1"'; then
exit 0
fi
exec hyprlock
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

@@ -0,0 +1,41 @@
##############################################
# Wallpaper config (wpaperd, TOML)
#
# Source-of-truth in repo:
# ~/system-master/assets/conf/desktop/wallpaper/wallpaper.conf
#
# Runtime override (user edits this):
# ~/conf/desktop/wallpaper/wallpaper.conf
#
# Wallpapers are copied from repo to:
# ~/wallpapers/
# and by default loaded from:
# ~/wallpapers/pictures
##############################################
[default]
# Directory to pick wallpapers from
path = "~/nixos_conf/wallpaperstuff/pictures"
# Switch every 60 minutes
duration = "5m"
# Random order (ascending/descending/random)
sorting = "random"
# Include subfolders
recursive = true
# How to fit wallpaper on screen
mode = "stretch"
# Transition time in milliseconds
transition-time = 2500
# Apply a "fade-like" transition (uses gl-transitions)
[default.transition.dissolve]
# (leave empty to use the transition defaults)
# Apply these defaults to any monitor not explicitly listed
[any]
# (inherits [default]; keep empty unless you want overrides)
@@ -0,0 +1,62 @@
{
"layer": "top",
"height": 34,
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-right": [
"idle_inhibitor",
"pulseaudio",
"network",
"cpu",
"memory",
"temperature",
"battery",
"tray",
"clock"
],
"idle_inhibitor": {
"format": "{icon}",
"format-icons": { "activated": "  ", "deactivated": " 󰒲 " }
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"headphones": "",
"headset": "",
"phone": "",
"portab le": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
"network": {
"format-wifi": " ({bandwidthDownBits})",
"format-ethernet": " ({bandwidthDownBits})",
"format-disconnected": "Disconnected ⚠",
"tooltip-format-wifi": "{essid} ({signalStrength}%)",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"on-click": "impala"
},
"cpu": { "format": "{usage}%  ", "tooltip": false },
"memory": { "format": "{percentage}%  " },
"temperature": { "format": "{temperatureC}°C ", "tooltip": false },
"tray": { "spacing": 10, "icon-size": 14 },
"clock": { "format": "{:%a, %d %b %Y - %H:%M}", "tooltip": false },
"battery": {
"bat": "BAT0",
"states": { "good": 95, "warning": 30, "critical": 15 },
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% 󰂄",
"format-plugged": "{capacity}%  ",
"format-icons": ["󰁺", "󰁼", "󰁾", "󰂀", "󱈏 "]
}
}
@@ -0,0 +1,89 @@
* {
font-family: Aporetic Sans Mono, Iosevka Nerd Font, Roboto, Helvetica, Arial, sans-serif;
font-size: 13px;
}
window#waybar {
background-color: @base;
color: @text;
transition-property: background-color;
border-bottom: 0px solid rgba(0, 0, 0, 0);
transition-duration: .5s;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
border: none;
border-radius: 0;
color: @text;
}
#workspaces button:hover {
background: @surface1;
color: @text;
}
#workspaces button.active {
background-color: @green;
color: @base;
box-shadow: inset 0 -3px @subtext1;
}
#clock,
#idle_inhibitor,
#battery,
#cpu,
#memory,
#temperature,
#network,
#pulseaudio,
#tray {
margin: 0 5px;
padding: 0 2px;
}
#idle_inhibitor.activated {
background-color: @green;
}
#battery.charging {
color: @green;
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}
#battery.warning:not(.charging) {
color: white;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#window,
#workspaces {
margin: 0 4px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#network.disconnected {
background-color: @red;
}
#temperature.critical {
background-color: @red;
}