From e1644e91ead7cdef5d08bfe6a579c4478a816a8e Mon Sep 17 00:00:00 2001
From: Matteo Quadrino <matteo.quadrino@protonmail.com>
Date: Mon, 22 Apr 2024 11:31:29 +0200
Subject: [PATCH] config: polish default config file (#5672)

* polish default config file

polish default config, making it prettier by separating it in sections, and adding links to the wiki for each section.
No configuration was altered, I only made it prettier and more beginner friendly.
I propose this should also be used as the autogenerated config file at installation.

* update default config according to suggestions

* Update defaultConfig.hpp to match example

* remove some whitespace

* match default config

* restored string terminator
---
 example/hyprland.conf        | 169 +++++++++++++++++++++-----------
 src/config/defaultConfig.hpp | 185 +++++++++++++++++++++++------------
 2 files changed, 239 insertions(+), 115 deletions(-)

diff --git a/example/hyprland.conf b/example/hyprland.conf
index 9bec2f6d7..f0ee8b25e 100644
--- a/example/hyprland.conf
+++ b/example/hyprland.conf
@@ -1,70 +1,97 @@
 # This is an example 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,auto
 
 
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+###################
+### MY PROGRAMS ###
+###################
 
-# Execute your favorite apps at launch
-# exec-once = waybar & hyprpaper & firefox
-
-# Source a file (multi-file configs)
-# source = ~/.config/hypr/myColors.conf
+# See https://wiki.hyprland.org/Configuring/Keywords/
 
 # Set programs that you use
 $terminal = kitty
 $fileManager = dolphin
 $menu = wofi --show drun
 
-# Some default env vars.
+
+#################
+### AUTOSTART ###
+#################
+
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
+
+# exec-once = $terminal
+# exec-once = nm-applet &
+# exec-once = waybar & hyprpaper & firefox
+
+
+#############################
+### ENVIRONMENT VARIABLES ###
+#############################
+
+# See https://wiki.hyprland.org/Configuring/Environment-variables/
+
 env = XCURSOR_SIZE,24
-env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+env = HYPRCURSOR_SIZE,24
 
-# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
-input {
-    kb_layout = us
-    kb_variant =
-    kb_model =
-    kb_options =
-    kb_rules =
 
-    follow_mouse = 1
+#####################
+### LOOK AND FEEL ###
+#####################
 
-    touchpad {
-        natural_scroll = false
-    }
-
-    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
-}
-
-general {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+# 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)
 
-    layout = dwindle
+    # 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 {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
     rounding = 10
 
+    # 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
@@ -72,17 +99,13 @@ decoration {
         
         vibrancy = 0.1696
     }
-
-    drop_shadow = true
-    shadow_range = 4
-    shadow_render_power = 3
-    col.shadow = rgba(1a1a1aee)
 }
 
+# https://wiki.hyprland.org/Configuring/Variables/#animations
 animations {
     enabled = true
 
-    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+    # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
 
     bezier = myBezier, 0.05, 0.9, 0.1, 1.05
 
@@ -94,25 +117,48 @@ animations {
     animation = workspaces, 1, 6, default
 }
 
+# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
 dwindle {
-    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
-    pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
-    preserve_split = true # you probably want this
+    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 {
-    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
     new_is_master = true
 }
 
-gestures {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    workspace_swipe = false
+# 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. :(
 }
 
-misc {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+
+#############
+### INPUT ###
+#############
+
+# https://wiki.hyprland.org/Configuring/Variables/#input
+input {
+    kb_layout = us
+    kb_variant =
+    kb_model =
+    kb_options =
+    kb_rules =
+
+    follow_mouse = 1
+
+    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+
+    touchpad {
+        natural_scroll = false
+    }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#gestures
+gestures {
+    workspace_swipe = false
 }
 
 # Example per-device config
@@ -122,16 +168,13 @@ device {
     sensitivity = -0.5
 }
 
-# Example windowrule v1
-# windowrule = float, ^(kitty)$
-# Example windowrule v2
-# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
-# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
 
+####################
+### KEYBINDINGSS ###
+####################
 
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-$mainMod = SUPER
+# 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, Q, exec, $terminal
@@ -184,3 +227,19 @@ 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
+
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+
+windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
diff --git a/src/config/defaultConfig.hpp b/src/config/defaultConfig.hpp
index 33cdd0eb8..dd7df1269 100644
--- a/src/config/defaultConfig.hpp
+++ b/src/config/defaultConfig.hpp
@@ -9,87 +9,116 @@ inline const std::string AUTOCONFIG = R"#(
 # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
 # #######################################################################################
 
-#
+autogenerated = 1 # remove this line to remove the warning
+
+# This is an example 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
-#
 
-autogenerated = 1 # remove this line to remove the warning
+# 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,auto
 
 
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+###################
+### MY PROGRAMS ###
+###################
 
-# Execute your favorite apps at launch
-# exec-once = waybar & hyprpaper & firefox
-
-# Source a file (multi-file configs)
-# source = ~/.config/hypr/myColors.conf
+# See https://wiki.hyprland.org/Configuring/Keywords/
 
 # Set programs that you use
 $terminal = kitty
 $fileManager = dolphin
 $menu = wofi --show drun
 
-# Some default env vars.
+
+#################
+### AUTOSTART ###
+#################
+
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
+
+# exec-once = $terminal
+# exec-once = nm-applet &
+# exec-once = waybar & hyprpaper & firefox
+
+
+#############################
+### ENVIRONMENT VARIABLES ###
+#############################
+
+# See https://wiki.hyprland.org/Configuring/Environment-variables/
+
 env = XCURSOR_SIZE,24
-env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+env = HYPRCURSOR_SIZE,24
 
-# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
-input {
-    kb_layout = us
-    kb_variant =
-    kb_model =
-    kb_options =
-    kb_rules =
 
-    follow_mouse = 1
+#####################
+### LOOK AND FEEL ###
+#####################
 
-    touchpad {
-        natural_scroll = no
-    }
-
-    sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
-}
-
-general {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+# 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)
 
-    layout = dwindle
+    # 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 {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
     rounding = 10
-    
+
+    # 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
     }
-
-    drop_shadow = yes
-    shadow_range = 4
-    shadow_render_power = 3
-    col.shadow = rgba(1a1a1aee)
 }
 
+# https://wiki.hyprland.org/Configuring/Variables/#animations
 animations {
-    enabled = yes
+    enabled = true
 
-    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+    # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
 
     bezier = myBezier, 0.05, 0.9, 0.1, 1.05
 
@@ -101,25 +130,48 @@ animations {
     animation = workspaces, 1, 6, default
 }
 
+# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
 dwindle {
-    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
-    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
-    preserve_split = yes # you probably want this
+    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 {
-    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
     new_is_master = true
 }
 
-gestures {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    workspace_swipe = off
+# 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. :(
 }
 
-misc {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+
+#############
+### INPUT ###
+#############
+
+# https://wiki.hyprland.org/Configuring/Variables/#input
+input {
+    kb_layout = us
+    kb_variant =
+    kb_model =
+    kb_options =
+    kb_rules =
+
+    follow_mouse = 1
+
+    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+
+    touchpad {
+        natural_scroll = false
+    }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#gestures
+gestures {
+    workspace_swipe = false
 }
 
 # Example per-device config
@@ -129,23 +181,20 @@ device {
     sensitivity = -0.5
 }
 
-# Example windowrule v1
-# windowrule = float, ^(kitty)$
-# Example windowrule v2
-# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
-# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
 
+####################
+### KEYBINDINGSS ###
+####################
 
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-$mainMod = SUPER
+# 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, Q, exec, $terminal
-bind = $mainMod, C, killactive, 
-bind = $mainMod, M, exit, 
+bind = $mainMod, C, killactive,
+bind = $mainMod, M, exit,
 bind = $mainMod, E, exec, $fileManager
-bind = $mainMod, V, togglefloating, 
+bind = $mainMod, V, togglefloating,
 bind = $mainMod, R, exec, $menu
 bind = $mainMod, P, pseudo, # dwindle
 bind = $mainMod, J, togglesplit, # dwindle
@@ -191,4 +240,20 @@ 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
+
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+
+windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
 )#";