diff --git a/dotfiles/hypr-session/dot-config/hypr/hypridle.conf b/dotfiles/hypr-session/dot-config/hypr/hypridle.conf new file mode 100644 index 0000000..c56a690 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/hypridle.conf @@ -0,0 +1,29 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +## Turn off keyboard and screen backlight after 2.5 minutes +listener { + timeout = 150 + on-timeout = brightnessctl -d *::kbd_backlight -s set 0 + on-resume = brightnessctl -d *::kbd_backlight -r +} +listener { + timeout = 150 + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on +} + +## Lock screen after 10 minutes +listener { + timeout = 600 + on-timeout = loginctl lock-session +} + +## Suspend after 30 Minutes +listener { + timeout = 1800 + on-timeout = systemctl suspend +} diff --git a/dotfiles/hypr-session/dot-config/hypr/hyprland.conf b/dotfiles/hypr-session/dot-config/hypr/hyprland.conf new file mode 100644 index 0000000..d8d96a7 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/hyprland.conf @@ -0,0 +1,159 @@ +# This is the Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1 + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$fileManager = pcmanfm +$menu = wofi --show drun + + +################# +### AUTOSTART ### +################# + +exec-once = nm-applet +exec-once = blueman-applet +exec-once = dunst +exec-once = waybar +exec-once = qpwgraph --minimized +exec-once = hypridle +exec-once = hyprpaper +exec-once = wl-paste --watch cliphist store + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +##################### +### LOOK AND FEEL ### +##################### +source = src_hyprland/lookNfeel.conf + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = de + kb_variant = nodeadkeys + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + drag_lock = true + clickfinger_behavior = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod SHIFT, E, exit, +bind = $mainMod SHIFT, C, killactive, +bind = $mainMod SHIFT, F, togglefloating, +bind = $mainMod, F, fullscreen, +bind = $mainMod SHIFT, P, pseudo, # dwindle +bind = $mainMod SHIFT, J, togglesplit, # dwindle + +bind = $mainMod, D, exec, $menu +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, L , exec, loginctl lock-session +bind = $mainMod, X, exec, $fileManager +bind = $mainMod, C, exec, plus42 +bind = $mainMod SHIFT, B, exec, ~/.bin/waybar_restart.sh +bind = $mainMod, B, exec, ~/.bin/startBrowser.sh +bind = $mainMod, N, exec, ~/.bin/startBrowserPrivat.sh +bind = $mainMod, V, exec, cliphist list | wofi -p Clipboard -S dmenu | cliphist decode | wl-copy + +# Laptop multimedia keys for volume and LCD brightness +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = , XF86MonBrightnessUp, exec, brightnessctl s 5%+ +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 5%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# Screenshots +bind = , Print, exec, HYPRSHOT_DIR=~ hyprshot -m window +bind = SHIFT, Print, exec, HYPRSHOT_DIR=~ hyprshot -m region + +# Import windowmovement keys +source = src_hyprland/windowmgm_keys.conf + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +windowrulev2 = float,class:^(plus42)$ +windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$ diff --git a/dotfiles/hypr-session/dot-config/hypr/hyprlock.conf b/dotfiles/hypr-session/dot-config/hypr/hyprlock.conf new file mode 100644 index 0000000..e8ce7f4 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/hyprlock.conf @@ -0,0 +1,9 @@ +background { + monitor = + grace 5 + path = ~/Pictures/backgrounds/bg.jpg +} +input-field { + monitor = + placeholder_text = Identify +} diff --git a/dotfiles/hypr-session/dot-config/hypr/hyprpaper.conf b/dotfiles/hypr-session/dot-config/hypr/hyprpaper.conf new file mode 100644 index 0000000..8aa2dd7 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/hyprpaper.conf @@ -0,0 +1,8 @@ +preload = ~/Pictures/backgrounds/bg.jpg +wallpaper = , ~/Pictures/backgrounds/bg.jpg + +#enable splash text rendering over the wallpaper +splash = true + +#fully disable ipc +# ipc = off diff --git a/dotfiles/hypr-session/dot-config/hypr/src_hyprland/lookNfeel.conf b/dotfiles/hypr-session/dot-config/hypr/src_hyprland/lookNfeel.conf new file mode 100644 index 0000000..b8b6f65 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/src_hyprland/lookNfeel.conf @@ -0,0 +1,81 @@ +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 20 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 5 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = true + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + 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 +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( +} diff --git a/dotfiles/hypr-session/dot-config/hypr/src_hyprland/windowmgm_keys.conf b/dotfiles/hypr-session/dot-config/hypr/src_hyprland/windowmgm_keys.conf new file mode 100644 index 0000000..db5a85e --- /dev/null +++ b/dotfiles/hypr-session/dot-config/hypr/src_hyprland/windowmgm_keys.conf @@ -0,0 +1,61 @@ + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, down, movefocus, d +bind = $mainMod, up, movefocus, u +bind = $mainMod, right, movefocus, r +bind = $mainMod, h, movefocus, l +bind = $mainMod, j, movefocus, d +bind = $mainMod, k, movefocus, u +bind = $mainMod, l, movefocus, r + +# Switch workspaces with mainMod + [0-9] +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 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 +bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +bind = , F1, togglespecialworkspace, magic +bind = SHIFT, F1, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Resize windows +bind = $mainMod, R, submap, resize +submap = resize +binde = , left, resizeactive, -15 0 +binde = , down, resizeactive, 0 15 +binde = , up, resizeactive, 0 -15 +binde = , right, resizeactive, 15 0 +binde = , h, resizeactive, -15 0 +binde = , j, resizeactive, 0 15 +binde = , k, resizeactive, 0 -15 +binde = , l, resizeactive, 15 0 +bind = , escape, submap, reset +submap = reset + diff --git a/dotfiles/hypr-session/dot-config/kitty/color/tokyo-night-kitty.conf b/dotfiles/hypr-session/dot-config/kitty/color/tokyo-night-kitty.conf new file mode 100644 index 0000000..e309eee --- /dev/null +++ b/dotfiles/hypr-session/dot-config/kitty/color/tokyo-night-kitty.conf @@ -0,0 +1,77 @@ +# Tokyo Night color scheme for kitty terminal emulator +# https://github.com/davidmathers/tokyo-night-kitty-theme +# +# Based on Tokyo Night color theme for Visual Studio Code +# https://github.com/enkia/tokyo-night-vscode-theme + +foreground #a9b1d6 +background #1a1b26 + +# Black +color0 #414868 +color8 #414868 + +# Red +color1 #f7768e +color9 #f7768e + +# Green +color2 #73daca +color10 #73daca + +# Yellow +color3 #e0af68 +color11 #e0af68 + +# Blue +color4 #7aa2f7 +color12 #7aa2f7 + +# Magenta +color5 #bb9af7 +color13 #bb9af7 + +# Cyan +color6 #7dcfff +color14 #7dcfff + +# White +color7 #c0caf5 +color15 #c0caf5 + +# Cursor +cursor #c0caf5 +cursor_text_color #1a1b26 + +# Selection highlight +selection_foreground none +selection_background #28344a + +# The color for highlighting URLs on mouse-over +url_color #9ece6a + +# Window borders +active_border_color #3d59a1 +inactive_border_color #101014 +bell_border_color #e0af68 + +# Tab bar +tab_bar_style fade +tab_fade 1 +active_tab_foreground #3d59a1 +active_tab_background #16161e +active_tab_font_style bold +inactive_tab_foreground #787c99 +inactive_tab_background #16161e +inactive_tab_font_style bold +tab_bar_background #101014 + +# Title bar +macos_titlebar_color #16161e + +# Storm +# background #24283b +# cursor_text_color #24283b +# active_tab_background #1f2335 +# inactive_tab_background #1f2335 +# macos_titlebar_color #1f2335 diff --git a/dotfiles/hypr-session/dot-config/kitty/kitty.conf b/dotfiles/hypr-session/dot-config/kitty/kitty.conf new file mode 100644 index 0000000..3f9fef2 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/kitty/kitty.conf @@ -0,0 +1,16 @@ +linux_display_server wayland + +font_family EnvyCodeR Nerd Font Mono +font_size 16.0 +background_opacity 0.9 + +include color/tokyo-night-kitty.conf + +enable_audio_bell no + +map ctrl+plus increase_font_size +map ctrl+minus decrease_font_size + +copy_on_select yes + + diff --git a/dotfiles/hypr-session/dot-config/waybar/config.jsonc b/dotfiles/hypr-session/dot-config/waybar/config.jsonc new file mode 100644 index 0000000..8d0d4e0 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/waybar/config.jsonc @@ -0,0 +1,116 @@ +{ + "position": "top", + "layer": "bottom", + "height": 20, + "modules-left": [ + "hyprland/workspaces", + "hyprland/window" + ], + "modules-center": [ + "privacy" + ], + "modules-right": [ + "network", + "idle_inhibitor", + "group/hardware", + "pulseaudio", + "clock", + "tray" + ], + "group/hardware": { + "orientation": "horizontal", + "modules": [ + "temperature", + "cpu", + "memory", + "battery" + ] + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "\uf06e", + "deactivated": "\uf070" + } + }, + "privacy": { + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24 + }, + { + "type": "audio-out", + "tooltip": true, + "tooltip-icon-size": 24 + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 24 + } + ] + }, + "network": { + "format-wifi": "\uf1eb {ipaddr}/{cidr} ({essid} {signalStrength}%)", + "format-ethernet": "\udb81\udef3 {ipaddr}/{cidr}", + "format-linked": "\udb81\udef3 No IP", + "format-disconnected": "\udb80\udd5b Disconnected", + "tooltip-format": "{ifname} via {gwaddr}" + }, + "temperature": { + "thermal-zone": 9, + "format": "\uf2c9 {temperatureC}\u00b0C" + }, + "cpu": { + "interval": 10, + "format": "\uec19 {}%", + "max-length": 10 + }, + "memory": { + "interval": 30, + "format": "\uf0c9 {}%", + "max-length": 10 + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "\uf466", + "format-icons": { + "default": [ + "\uf026", + "\uf027", + "\uf028" + ] + }, + "on-click": "pavucontrol" + }, + "battery": { + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-warning": "{icon} {capacity}%", + "format-critical": "{icon} {capacity}%", + "format-charging": "\uf1e6 {capacity}%", + "format-plugged": "\uf1e6 {capacity}%", + "format-alt": "{icon} {time}", + "format-full": "{capacity}%", + "format-icons": [ + "\uf244", + "\uf243", + "\uf242", + "\uf241", + "\uf240" + ], + "tooltip-format": "{time}" + }, + "clock": { + "format": "\uf017 {:%Y-%m-%d W%V %H:%M}", + "tooltip-format": "{calendar}" + }, + "tray": { + "spacing": 10 + } +} diff --git a/dotfiles/hypr-session/dot-config/waybar/style.css b/dotfiles/hypr-session/dot-config/waybar/style.css new file mode 100644 index 0000000..9247554 --- /dev/null +++ b/dotfiles/hypr-session/dot-config/waybar/style.css @@ -0,0 +1,76 @@ +* { + border: none; + border-radius: 0; + font-family: Hack Nerd Font Propo; + font-size: 14px; + min-height: 0; +} + +window#waybar { + background: transparent; + color: white; +} + +#workspaces { + background-color: #24283b; + margin-right: 20px; +} + +#workspaces button { + color: #c0caf5; +} + +#workspaces button.focused { + color: #24283b; + background-color: #7aa2f7; +} + +#workspaces button.active { + color: #24283b; + background-color: #7aa2f7; +} + +#workspaces button:hover { + background-color: #7dcfff; + color: #24283b; +} + +#privacy-item { + color: #FF966C; + padding: 0px 5px 0px 5px; +} +#privacy-item.audio-out { + color: #82AAFF; + padding: 0px 5px 0px 5px; +} + +#idle_inhibitor, #clock, #battery, #pulseaudio, #network, #cpu, #memory, #temperature, #tray { + background-color: #24283b; + padding: 0px 5px 0px 5px; +} + +#clock { + color: #b48ead; + margin-right: 10px; +} + +#battery { + color: #9ece6a; +} + +#battery.charging { + color: #9ece6a; +} + +#battery.warning:not(.charging) { + background-color: #f7768e; + color: #24283b; +} + +#network { + color: #f7768e; +} + +#pulseaudio { + color: #e0af68; +} diff --git a/dotfiles/hypr-session/dot-config/wofi/config b/dotfiles/hypr-session/dot-config/wofi/config new file mode 100644 index 0000000..307e3ef --- /dev/null +++ b/dotfiles/hypr-session/dot-config/wofi/config @@ -0,0 +1,11 @@ +xoffset = 710 +yoffset = 275 +show = drun +width = 500 +height = 500 +always_parse_args = true +show_all = false +print_command = true +layer = overlay +insensitive = true +prompt = diff --git a/dotfiles/hypr-session/dot-config/wofi/style.css b/dotfiles/hypr-session/dot-config/wofi/style.css new file mode 100644 index 0000000..70ec10e --- /dev/null +++ b/dotfiles/hypr-session/dot-config/wofi/style.css @@ -0,0 +1,47 @@ +window { +margin: 0px; +border: 2px solid #414868; +border-radius: 5px; +background-color: #24283b; +font-family: Hack Nerd Font Propo; +font-size: 14px; +} + +#input { +margin: 5px; +border: 1px solid #24283b; +color: #c0caf5; +background-color: #24283b; +} + +#input image { + color: #c0caf5; +} + +#inner-box { +margin: 5px; +border: none; +background-color: #24283b; +} + +#outer-box { +margin: 5px; +border: none; +background-color: #24283b; +} + +#scroll { +margin: 0px; +border: none; +} + +#text { +margin: 5px; +border: none; +color: #c0caf5; +} + +#entry:selected { + background-color: #414868; + font-weight: normal; +} diff --git a/system/arch/workstation.yaml b/system/arch/workstation.yaml index e01494c..ea6feca 100644 --- a/system/arch/workstation.yaml +++ b/system/arch/workstation.yaml @@ -17,6 +17,7 @@ - binutils - blueman - bluez-utils + - brightnessctl - coreutils - cryptsetup - curl @@ -123,6 +124,24 @@ state: present update_cache: True + - name: "Install hypr packages" + package: + name: + - hyprland + - hyprlock + - hypridle + - hyprpicker + - hyprshot + - hyprpaper + - cliphist + - wofi + - waybar + - kitty + - qt6-wayland + - xdg-desktop-portl-hyprland + state: present + update_cache: True + - name: "Remove unwanted packages" package: name: '{{ item }}'