diff --git a/.config/hypr/animations.conf b/.config/hypr/animations.conf new file mode 100644 index 0000000..f106e03 --- /dev/null +++ b/.config/hypr/animations.conf @@ -0,0 +1,12 @@ +animations { + enabled = yes + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 2, myBezier + animation = windowsOut, 1, 2, default, popin 80% + animation = border, 1, 5, default + animation = borderangle, 1, 3, default + animation = fade, 1, 2, default + animation = workspaces, 1, 1, default +} diff --git a/.config/hypr/autostart.conf b/.config/hypr/autostart.conf new file mode 100644 index 0000000..36218c8 --- /dev/null +++ b/.config/hypr/autostart.conf @@ -0,0 +1,3 @@ +exec-once = waypaper --restore +exec-once = wl-paste --watch cliphist store +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 diff --git a/.config/hypr/environment.conf b/.config/hypr/environment.conf new file mode 100644 index 0000000..1862f5d --- /dev/null +++ b/.config/hypr/environment.conf @@ -0,0 +1,19 @@ +# Firefox +env = MOZ_ENABLE_WAYLAND,1 + +# Qt +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORMTHEME,qt6ct +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 + +# Wayland +env = XDG_SESSION_TYPE,wayland +env = GDK_BACKEND,wayland +env = GSK_RENDERER,vulkan + +# Wlroots +env = WLR_NO_HARDWARE_CURSORS,1 +env = WLR_RENDERER,vulkan + +# X11 +env = XCURSOR_SIZE,24 diff --git a/.config/hypr/general.conf b/.config/hypr/general.conf new file mode 100644 index 0000000..3d3c497 --- /dev/null +++ b/.config/hypr/general.conf @@ -0,0 +1,69 @@ +general { + gaps_in = 2 + gaps_out = 4 + border_size = 2 + layout = dwindle + allow_tearing = true + + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) +} + +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + touchpad { + natural_scroll = no + } + + follow_mouse = 1 + sensitivity = 0 + accel_profile = flat +} + +debug { + overlay = false +} + +decoration { + rounding = 5 + + blur { + enabled = true + size = 4 + passes = 4 + new_optimizations = on + ignore_opacity = on + xray = false + } + + drop_shadow = no + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + #active_opacity = 0.9 + #inactive_opacity = 0.9 +} + +dwindle { + pseudotile = yes + preserve_split = yes + no_gaps_when_only = 1 +} + +master { + new_is_master = true +} + +gestures { + workspace_swipe = off +} + +misc { + force_default_wallpaper = 0 +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..b83a503 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,9 @@ +source = monitor.conf +source = programs.conf +source = environment.conf +source = autostart.conf +source = general.conf +source = animations.conf +source = rules.conf +source = keys.conf +source = typing.conf diff --git a/.config/hypr/keys.conf b/.config/hypr/keys.conf new file mode 100644 index 0000000..010fe4f --- /dev/null +++ b/.config/hypr/keys.conf @@ -0,0 +1,92 @@ +$main = SUPER + +# Apps +bind = $main, B, exec, $browser +bind = $main, D, exec, $editor +bind = $main, E, exec, $files +bind = $main, L, exec, $lockscreen +bind = $main, S, exec, pkill $statusbar || $statusbar +bind = $main, Super_L, exec, pkill $menu || $menu +bind = $main, T, exec, $terminal +bind = $main, W, exec, $wallpaper +bind = $main, Return, exec, $floating +bind = $main, F1, exec, $systeminfo +bind = , Print, exec, $screenshot + +# Window management +bind = $main, C, killactive, +bind = $main, F, fullscreen, +bind = $main, V, togglefloating, +bind = $main, P, pseudo, +bind = $main, J, togglesplit, + +# Session management +bind = $main, Backspace, exit, +bind = $main, F12, exec, $logout + +# Window focus +bind = $main, left, movefocus, l +bind = $main, right, movefocus, r +bind = $main, up, movefocus, u +bind = $main, down, movefocus, d + +# Window resizing +binde = $main SHIFT, left, resizeactive, -10 0 +binde = $main SHIFT, right, resizeactive, 10 0 +binde = $main SHIFT, up, resizeactive, 0 -10 +binde = $main SHIFT, down, resizeactive, 0 10 + +# Switch workspaces with numpad +bind =, KP_Home, workspace, 1 +bind =, KP_Up, workspace, 2 +bind =, KP_Prior, workspace, 3 +bind =, KP_Left, workspace, 4 +bind =, KP_Begin, workspace, 5 +bind =, KP_Right, workspace, 6 +bind =, KP_End, workspace, 7 +bind =, KP_Down, workspace, 8 +bind =, KP_Next, workspace, 9 + +# Move window to a specific workspace with numpad +bind = $main, KP_Home, movetoworkspace, 1 +bind = $main, KP_Up, movetoworkspace, 2 +bind = $main, KP_Prior, movetoworkspace, 3 +bind = $main, KP_Left, movetoworkspace, 4 +bind = $main, KP_Begin, movetoworkspace, 5 +bind = $main, KP_Right, movetoworkspace, 6 +bind = $main, KP_End, movetoworkspace, 7 +bind = $main, KP_Down, movetoworkspace, 8 +bind = $main, KP_Next, movetoworkspace, 9 + +# Move window to a specific workspace with numbers +bind = $main, 1, movetoworkspace, 1 +bind = $main, 2, movetoworkspace, 2 +bind = $main, 3, movetoworkspace, 3 +bind = $main, 4, movetoworkspace, 4 +bind = $main, 5, movetoworkspace, 5 +bind = $main, 6, movetoworkspace, 6 +bind = $main, 7, movetoworkspace, 7 +bind = $main, 8, movetoworkspace, 8 +bind = $main, 9, movetoworkspace, 9 + +# Move window to an adjacent workspace +bind = $main ALT, right, movetoworkspace, +1 +bind = $main ALT, left, movetoworkspace, -1 + +# Special workspace (scratchpad) +bind = $main, F9, togglespecialworkspace, magic +bind = $main SHIFT, F9, movetoworkspace, special:magic + +# Move and resize windows (main + LMB/RMB and drag) +bindm = $main, mouse:272, movewindow +bindm = $main, mouse:273, resizewindow + +# Media player control +bindl =, XF86AudioPlay, exec, playerctl play-pause +bindl =, XF86AudioNext, exec, playerctl next +bindl =, XF86AudioPrev, exec, playerctl previous + +# Volume control +bindle =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+ +bindle =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05- +bindl =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle diff --git a/.config/hypr/monitor.conf b/.config/hypr/monitor.conf new file mode 100644 index 0000000..8ccd5e6 --- /dev/null +++ b/.config/hypr/monitor.conf @@ -0,0 +1 @@ +monitor = ,highrr,auto,auto diff --git a/.config/hypr/programs.conf b/.config/hypr/programs.conf new file mode 100644 index 0000000..f8912ec --- /dev/null +++ b/.config/hypr/programs.conf @@ -0,0 +1,17 @@ +# Apps +$browser = google-chrome +$email = thunderbird +$files = nautilus +$logout = wlogout +$lockscreen = swaylock +$menu = fuzzel +$screenshot = IMG=~/pictures/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png && grim -g "$(slurp -d)" $IMG && wl-copy < $IMG +$statusbar = waybar +$terminal = kgx +$wallpaper = waypaper + +# Terminal based +$editor = $terminal -e nano +$center = [float;size 960 540;center] +$floating = $center $terminal +$systeminfo = $center $terminal --hold -e fastfetch diff --git a/.config/hypr/rules.conf b/.config/hypr/rules.conf new file mode 100644 index 0000000..64df288 --- /dev/null +++ b/.config/hypr/rules.conf @@ -0,0 +1,10 @@ +# Blur the status bar +layerrule = blur, $statusbar +layerrule = ignorealpha 0.1, $statusbar + +# Blur the launcher +layerrule = blur, launcher +layerrule = ignorealpha 0.1, launcher + +# Disable maximize event +windowrulev2 = suppressevent maximize, class:.* diff --git a/.config/hypr/typing.conf b/.config/hypr/typing.conf new file mode 100644 index 0000000..82fcbbb --- /dev/null +++ b/.config/hypr/typing.conf @@ -0,0 +1,26 @@ +$mod = ALT + +# Special characters +bindle = $mod, KP_Add, exec, wtype ± +bindle = $mod, KP_Subtract, exec, wtype ± +bindle = $mod, Equal, exec, wtype ≈ +bindle = $mod, Grave, exec, wtype ≈ +bindle = $mod, T, exec, wtype ™ +bindle = $mod, C, exec, wtype © +bindle = $mod, R, exec, wtype ® + +# German language +bindle = $mod, A, exec, wtype ä +bindle = $mod SHIFT, A, exec, wtype Ä +bindle = $mod, O, exec, wtype ö +bindle = $mod SHIFT, O, exec, wtype Ö +bindle = $mod, U, exec, wtype ü +bindle = $mod SHIFT, U, exec, wtype Ü +bindle = $mod, S, exec, wtype ß + +# Emoji +bindle = $mod, W, exec, wtype 👋 +bindle = $mod, H, exec, wtype ❤️ +bindle = $mod, L, exec, wtype 👍 +bindle = $mod, P, exec, wtype 🙏 +bindle = $mod, F, exec, wtype 🤣 diff --git a/.config/swaylock/config b/.config/swaylock/config new file mode 100644 index 0000000..28a9383 --- /dev/null +++ b/.config/swaylock/config @@ -0,0 +1,38 @@ +daemonize +show-failed-attempts +clock +screenshot +effect-blur=9x5 +effect-vignette=0.5:0.5 +color=1f1d2e80 +font=Ubuntu Nerd Font +indicator +indicator-radius=200 +indicator-thickness=20 +line-color=1f1d2e +ring-color=33CCFE +inside-color=1f1d2e +key-hl-color=EC4899 +separator-color=00000000 +text-color=e0def4 +text-caps-lock-color= +line-ver-color=eb6f92 +ring-ver-color=eb6f92 +inside-ver-color=1f1d2e +text-ver-color=e0def4 +ring-wrong-color=31748f +text-wrong-color=31748f +inside-wrong-color=1f1d2e +inside-clear-color=1f1d2e +text-clear-color=e0def4 +ring-clear-color=9ccfd8 +line-clear-color=1f1d2e +line-wrong-color=1f1d2e +bs-hl-color=31748f +grace=2 +grace-no-mouse +grace-no-touch +datestr= +timestr=%H : %M +fade-in=0.2 +ignore-empty-password diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..e31de93 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,22 @@ +{ + "layer": "top", + "position": "bottom", + "modules-left": [], + "modules-center": [], + "modules-right": [ + "group/hardware", + "custom/updates", + "wireplumber", + "clock", + ], + "group/hardware": { + "orientation": "horizontal", + "modules": [ + "cpu", + "custom/gpu", + "memory", + "disk", + ], + }, + "include": "~/.config/waybar/modules.jsonc", +} diff --git a/.config/waybar/modules.jsonc b/.config/waybar/modules.jsonc new file mode 100644 index 0000000..bc990ea --- /dev/null +++ b/.config/waybar/modules.jsonc @@ -0,0 +1,115 @@ +{ + "clock": { + "interval": 60, + "format": " {:%H : %M}", + "tooltip-format": "{:%A, %Y-%m-%d}", + "on-click": "gnome-clocks", + "on-click-right": "date -u +'%Y-%m-%dT%H:%M:%SZ' | wl-copy", + }, + "cpu": { + "interval": 2, + "format": "{icon} {usage}%", + "format-icons": ["󰾆", "󰾅", "󰓅"], + "max-length": 10, + "on-click": "$TERMINAL -e btop", + }, + "custom/updates": { + "interval": 300, + "format": "󰏖 {}", + "exec": "~/.bin/updates", + "return-type": "json", + "on-click": "$TERMINAL -e yay", + }, + "custom/gpu": { + "interval": 2, + "exec": "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits", + "format": " {}%", + "return-type": "", + "on-click": "$TERMINAL -e nvtop", + "max-length": 10, + }, + "memory": { + "interval": 2, + "format": "{used} GiB", + "max-length": 10, + "on-click": "$TERMINAL -e btop", + }, + "network#up": { + "interval": 2, + "format": "{bandwidthUpBits}", + "tooltip-format": " {ifname} upload", + "max-length": 10, + "on-click": "$TERMINAL -e nethogs", + }, + "network#down": { + "interval": 2, + "format": "{bandwidthDownBits}", + "tooltip-format": " {ifname} download", + "max-length": 10, + "on-click": "$TERMINAL -e nethogs", + }, + "disk": { + "interval": 30, + "format": "󰋊 {used}", + "path": "/", + "max-length": 10, + "on-click": "$TERMINAL -e dua i", + }, + "mpris": { + "format": "{player_icon} {title}", + "format-paused": "{status_icon} {title}", + "player-icons": { + "default": "󰝚", + "mpv": "󰝚" + }, + "status-icons": { + "paused": "󰏤" + }, + "title-len": 30, + }, + "wireplumber": { + "format": "{icon} {volume}%", + "format-muted": "", + "scroll-step": 5, + "format-icons": ["", "", ""], + "max-length": 10, + "on-click": "helvum", + }, + "hyprland/window": { + "format": "󰘔 {initialTitle}", + "separate-outputs": true + }, + "hyprland/workspaces": { + "format": "{icon}", + "persistent-workspaces": { + "*": 9 + }, + "format-icons": { + "default": "", + "empty": "", + "active": "", + "urgent": "", + }, + "sort-by-number": true, + "on-click": "activate", + }, + "custom/os":{ + "format": "", + "tooltip": false, + "on-click": "$TERMINAL --hold -e fastfetch", + }, + "wlr/taskbar": { + "format": "{icon}", + "icon-size": 14, + "icon-theme": "Adwaita", + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + ], + "app_ids-mapping": { + }, + "rewrite": { + }, + }, +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..3f239fe --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,124 @@ +/* ===== Generic ===== */ + +* { + border: none; + font-family: "Ubuntu Nerd Font"; + font-size: 12px; + padding: 0; + margin: 0; +} + +/* ===== Waybar ===== */ + +#waybar { + background: transparent; + /* background: rgba(54, 137, 230, 0.8); */ + /* border-top: 1px solid rgba(54, 137, 230, 0.8); */ +} + +#waybar.hidden { + opacity: 0.2; +} + +#waybar #window { + opacity: 1; + transition: opacity 200ms ease; +} + +#waybar.empty #window { + opacity: 0; +} + +/* ===== Modules ===== */ + +#clock, +#cpu, +#disk, +#memory, +#mpris, +#network, +#window, +#wireplumber, +#custom-gpu, +#custom-updates { + color: rgba(32, 32, 32, 0.8); + padding: 4px 8px; + margin: 2px; + margin-right: 0; + border-radius: 3px; +} + +#custom-os { + font-size: 150%; + color: rgb(137, 220, 235); + /* background: transparent; */ +} + +#custom-updates.disabled { + opacity: 0; +} + +/* ===== Taskbar ===== */ + +#taskbar button { + padding: 0px 5px; +} + +#taskbar button:hover {} +#taskbar button.active {} + +/* ===== Workspaces ===== */ + +#workspaces button { + /* color: rgba(38, 41, 44, 0.9); */ + padding: 0px 5px; + color: white; + background: transparent; + text-shadow: none; + border-radius: 0; + opacity: 0.5; +} + +#workspaces button.empty { + opacity: 0.5; +} + +#workspaces button.active { + opacity: 1.0; +} + +#workspaces button.visible {} +#workspaces button.urgent {} +#workspaces button.persistent {} +#workspaces button.hidden {} + + +/* ===== Extra colors ===== */ + +#cpu { + background: rgb(50.15%, 92.07%, 99.48%); +} + +#custom-gpu { + background: rgb(67.06%, 91.37%, 70.2%); +} + +#memory { + background: rgb(100%, 81.7%, 68.38%); +} + +#disk { + background: rgb(100%, 80.74%, 81.04%); +} + +#network { + background: rgb(92.54%, 81.78%, 100%); +} + +#wireplumber { + background: rgb(90%, 90%, 90%); +} + +#clock { + background: rgb(90%, 90%, 90%); +} diff --git a/.config/wlogout/layout b/.config/wlogout/layout new file mode 100644 index 0000000..e125ce4 --- /dev/null +++ b/.config/wlogout/layout @@ -0,0 +1,18 @@ +{ + "label" : "logout", + "action" : "loginctl terminate-user $USER", + "text" : "Logout", + "keybind" : "l" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/.config/wlogout/style.css b/.config/wlogout/style.css new file mode 100644 index 0000000..b9d7cc1 --- /dev/null +++ b/.config/wlogout/style.css @@ -0,0 +1,46 @@ +* { + background-image: none; +} + +window { + background-color: rgba(0, 0, 0, 0.5); +} + +button { + color: #ffffff; + background-color: rgba(0, 0, 0, 1); + border-style: solid; + border-color: #33ccfe; + border-width: 2px; + border-radius: 10px; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + margin: 50px; +} + +button:focus, button:active, button:hover { + background-color: #353c4a; + outline-style: none; +} + +#logout { + background-image: image( + url("/usr/share/wlogout/icons/logout.png"), + url("/usr/local/share/wlogout/icons/logout.png") + ); +} + +#shutdown { + background-image: image( + url("/usr/share/wlogout/icons/shutdown.png"), + url("/usr/local/share/wlogout/icons/shutdown.png") + ); +} + +#reboot { + background-image: image( + url("/usr/share/wlogout/icons/reboot.png"), + url("/usr/local/share/wlogout/icons/reboot.png") + ); +}