diff --git a/ansible/roles/hyprland/templates/dunstrc.j2 b/ansible/roles/hyprland/templates/dunstrc.j2 new file mode 100644 index 0000000..8334b0f --- /dev/null +++ b/ansible/roles/hyprland/templates/dunstrc.j2 @@ -0,0 +1,65 @@ +[global] + monitor = 0 + follow = mouse + width = 300 + height = 300 + origin = top-right + offset = 10x10 + scale = 0 + notification_limit = 0 + progress_bar = true + progress_bar_height = 10 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 300 + indicate_hidden = yes + transparency = 0 + separator_height = 2 + padding = 8 + horizontal_padding = 8 + text_icon_padding = 0 + frame_width = 3 + frame_color = "#aaaaaa" + separator_color = frame + sort = yes + idle_threshold = 120 + font = Monospace 12 + line_height = 0 + markup = full + format = "%s\n%b" + alignment = left + vertical_alignment = center + show_age_threshold = 60 + ellipsize = middle + ignore_newline = no + stack_duplicates = true + hide_duplicate_count = false + show_indicators = yes + icon_position = left + min_icon_size = 0 + max_icon_size = 32 + sticky_history = yes + history_length = 20 + dmenu = /usr/bin/wofi -dmenu -p dunst: + browser = /usr/bin/xdg-open + always_run_script = true + title = Dunst + class = Dunst + corner_radius = 10 + ignore_dbusclose = false + +[urgency_low] + background = "#222222" + foreground = "#888888" + timeout = 10 + +[urgency_normal] + background = "#285577" + foreground = "#ffffff" + timeout = 20 + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + frame_color = "#ff0000" + timeout = 0 diff --git a/ansible/roles/hyprland/templates/hypridle.conf.j2 b/ansible/roles/hyprland/templates/hypridle.conf.j2 new file mode 100644 index 0000000..4eac56b --- /dev/null +++ b/ansible/roles/hyprland/templates/hypridle.conf.j2 @@ -0,0 +1,16 @@ +general { + lock_cmd = pidof hyprlock || hyprlock + before_sleep_cmd = loginctl lock-session + after_sleep_cmd = hyprctl dispatch dpms on +} + +listener { + timeout = 300 + on-timeout = loginctl lock-session +} + +listener { + timeout = 330 + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on +} diff --git a/ansible/roles/hyprland/templates/hyprland.conf.j2 b/ansible/roles/hyprland/templates/hyprland.conf.j2 new file mode 100644 index 0000000..d9b8ae2 --- /dev/null +++ b/ansible/roles/hyprland/templates/hyprland.conf.j2 @@ -0,0 +1,102 @@ +# hyprland.conf - managed by Ansible + +# Monitors +# Monitor names for Wayland: DP-1, HDMI-A-1, DVI-D-1 +# Layout: Left (DP-1), Center (HDMI-A-1), Right (DVI-D-1) +monitor=DP-1, 1920x1080@60, 0x0, 1 +monitor=HDMI-A-1, 1920x1080@60, 1920x0, 1 +monitor=DVI-D-1, 1920x1080@60, 3840x0, 1 + +# Execute on start +exec-once = waybar +exec-once = dunst +exec-once = hypridle +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store + +# Environment variables for NVIDIA +env = LIBVA_DRIVER_NAME,nvidia +env = XDG_SESSION_TYPE,wayland +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = WLR_NO_HARDWARE_CURSORS,1 +env = NVD_BACKEND,direct + +# Input +input { + kb_layout = de + follow_mouse = 1 + sensitivity = 0 +} + +# General +general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + layout = dwindle +} + +# Decoration +decoration { + rounding = 10 + blur { + enabled = true + size = 3 + passes = 1 + } +} + +# Animations +animations { + enabled = yes +} + +# Dwindle layout +dwindle { + pseudotile = yes + preserve_split = yes +} + +# Keybindings +$mainMod = SUPER + +bind = $mainMod, Return, exec, kitty +bind = $mainMod, Q, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, dolphin +bind = $mainMod, V, togglefloating, +bind = $mainMod, D, exec, wofi --show drun +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, L, exec, hyprlock + +# Focus +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# 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 + +# Move to workspace +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 diff --git a/ansible/roles/hyprland/templates/hyprlock.conf.j2 b/ansible/roles/hyprland/templates/hyprlock.conf.j2 new file mode 100644 index 0000000..62c18b0 --- /dev/null +++ b/ansible/roles/hyprland/templates/hyprlock.conf.j2 @@ -0,0 +1,29 @@ +general { + no_fade_in = false + grace = 0 + disable_loading = true +} + +background { + monitor = + color = rgba(25, 20, 20, 1.0) + blur_passes = 2 +} + +input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 + dots_spacing = 0.15 + dots_center = true + outer_color = rgb(151515) + inner_color = rgb(200, 200, 200) + font_color = rgb(10, 10, 10) + fade_on_empty = true + placeholder_text = Input Password... + hide_input = false + position = 0, -20 + halign = center + valign = center +} diff --git a/ansible/roles/hyprland/templates/waybar_config.j2 b/ansible/roles/hyprland/templates/waybar_config.j2 new file mode 100644 index 0000000..a2953cd --- /dev/null +++ b/ansible/roles/hyprland/templates/waybar_config.j2 @@ -0,0 +1,29 @@ +{ + "layer": "top", + "position": "top", + "height": 30, + "modules-left": ["hyprland/workspaces", "hyprland/mode"], + "modules-center": ["hyprland/window"], + "modules-right": ["network", "cpu", "memory", "clock", "tray"], + "hyprland/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "format": "{name}" + }, + "clock": { + "format": "{:%Y-%m-%d %H:%M}", + "tooltip-format": "{:%Y %B}\n{calendar}" + }, + "cpu": { + "format": "CPU {usage}%", + "tooltip": false + }, + "memory": { + "format": "RAM {}%" + }, + "network": { + "format-wifi": " {essid} ({signalStrength}%)", + "format-ethernet": "󰈀 {ifname}", + "format-disconnected": "⚠ Disconnected" + } +} diff --git a/ansible/roles/hyprland/templates/waybar_style.css.j2 b/ansible/roles/hyprland/templates/waybar_style.css.j2 new file mode 100644 index 0000000..bce369d --- /dev/null +++ b/ansible/roles/hyprland/templates/waybar_style.css.j2 @@ -0,0 +1,26 @@ +* { + border: none; + border-radius: 0; + font-family: monospace; + font-size: 14px; +} + +window#waybar { + background: rgba(43, 48, 59, 0.5); + color: #ffffff; +} + +#workspaces button { + padding: 0 5px; + background: transparent; + color: #ffffff; +} + +#workspaces button.active { + background: #64727D; + border-bottom: 3px solid #ffffff; +} + +#clock, #cpu, #memory, #network, #tray { + padding: 0 10px; +}