#+TITLE: General System Configurations #+PROPERTY: header-args :mkdirp yes #+auto_tangle: t #+STARTUP: overview * Git #+begin_src conf :tangle ~/.gitconfig [user] email = public@thanosapollo.com name = Thanos Apollo signingkey = 5F6B32E27F433AA9E42A530A0A50703D1CE7AE29 [commit] gpgsign = true [format] subjectPrefix = PATCH [sendemail] from = Thanos Apollo smtpserver = mail.gandi.net smtpuser = public@thanosapollo.com smtpencryption = ssl smtpserverport = 465 annotate = yes [credential "smtp://mail.gandi.net:465"] helper = "!f() { echo username=public@thanosapollo.com; echo \"password=$(pass show gandi/thanosapollo)\"; }; f" #+end_src * Hyprland ** Config *** Keyboard & monitors #+begin_src conf :tangle ~/.config/hypr/hyprland.conf # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=transform,preferred,auto,auto # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Some default env vars. env = XCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us,gr,my-cyr kb_variant = kb_model = kb_options = ctrl:swapcaps, grp:alt_space_toggle, kb_rules = follow_mouse = 1 touchpad { natural_scroll = no } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } #+end_src *** Style #+begin_src conf :tangle ~/.config/hypr/hyprland.conf general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 10 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = master } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more active_opacity = 0.99 inactive_opacity = 0.97 rounding = 10 blur = no blur_size = 3 blur_passes = 1 blur_new_optimizations = on drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes # Some 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 } 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 } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_is_master = false mfact = 0.53 } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = off } # Personal Configuration for Hyprland # Thanos Apollo 2023 # See https://wiki.hyprland.org/Configuring/ for more device:epic mouse V1 { sensitivity = -0.5 } #+end_src *** Keybindings #+begin_src conf :tangle ~/.config/hypr/hyprland.conf # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = CTRL_ALT # Binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = , F5, exec, "/home/$USER/Developer/scripts/keyboard-light-x220.sh" bind = , F1, exec, swaylock --screenshot --clock --effect-blur 10x9 --indicator bind = , F8, exec, brightnessctl set +5% bind = , F7, exec, brightnessctl set 5-% bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 bind = , XF86AudioLowerVolume, exec, pamixer -d 5 bind = , XF86AudioMute, exec, pamixer -t bind = $mainMod, Return, exec, emacsclient -c bind = $mainMod, W, exec, kitty bind = $mainMod, Q, killactive, bind = $mainMod SHIFT, Q, exit, bind = $mainMod, R, exec, rofi -show drun bind = $mainMod, E, exec, tessen --dmenu=rofi bind = $mainMod, V, togglefloating, bind = $mainMod, J, togglesplit, # dwindle bind = ALT, F12, exec, grim -g "$(slurp)" bind = ALT, F11, fullscreen # Move focus with mainMod + arrow keys bind = $mainMod, B, movefocus, l bind = $mainMod, F, movefocus, r bind = $mainMod, N, movefocus, d bind = $mainMod, P, movefocus, u bind = $mainMod SHIFT, P, movewindow, u bind = $mainMod SHIFT, N, movewindow, d bind = $mainMod SHIFT, F, movewindow, r bind = $mainMod SHIFT, B, movewindow, l # 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, 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 # Scroll through existing workspaces with mainMod + scroll bind = ALT, mouse_down, workspace, e+1 bind = ALT, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = ALT, mouse:272, movewindow bindm = ALT, mouse:273, resizewindow #+end_src *** Exec upon start #+begin_src conf :tangle ~/.config/hypr/hyprland.conf exec-once = waybar exec = hyprpaper exec-once = emacs --daemon exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = nm-applet #+end_src ** Hyprpaper #+begin_src conf :tangle ~/.config/hypr/hyprpaper.conf preload = ~/wallpapers/wallpaper-cyberpunk.jpg preload = ~/wallpapers/science-athlete.jpg preload = ~/wallpapers/robo-girl.jpg preload = ~/wallpapers/chalk-board-wallpapers.jpg wallpaper = DP-1, ~/wallpapers/chalk-board-wallpapers.jpg wallpaper = HDMI-A-1, ~/wallpapers/chalk-board-wallpapers.jpg wallpaper = LVDS-1, ~/wallpapers/science-athlete.jpg #+end_src * Waybar ** Configuration #+begin_src jsonc :tangle ~/.config/waybar/config.jsonc { "layer": "top", "position": "top", "mod": "dock", "exclusive": true, "passthrough": false, "gtk-layer-shell": true, "height": 0, "modules-left": [ "clock", "custom/weather" // "hyprland/window", ], "modules-center": ["wlr/workspaces"], "modules-right": [ "tray", "custom/updates", "custom/language", "battery", "backlight", "custom/volume" // "pulseaudio#microphone" ], "hyprland/window": { "format": "{}" }, "wlr/workspaces": { "disable-scroll": true, "all-outputs": true, "on-click": "activate", //"format": "{icon}", "persistent_workspaces": { "1": [], "2": [], "3": [], "4": [], "5": [], "6": [], "7": [], "8": [], "9": [], "10": [] } }, "custom/updates": { "exec": "(pacman -Qu ; paru -Qua) | wc -l", "interval": 7200, "format": " {}" }, "custom/weather" : { "tooltip" : true, "format" : "{}", "interval" : 30, "exec" : "~/Developer/scripts/waybar-wttr.py", "return-type" : "json" }, "tray": { "icon-size": 13, "spacing": 10 }, "clock": { "format": "{: %R  %d/%m}", "tooltip-format": "{:%Y %B}\n{calendar}" }, "backlight": { "device": "intel_backlight", "format": "{icon} {percent}%", "format-icons": ["", "", ""], "on-scroll-up": "brightnessctl set 1%+", "on-scroll-down": "brightnessctl set 1%-", "min-length": 6 }, "battery": { "states": { "good": 95, "warning": 30, "critical": 20 }, "format": "{icon} {capacity}%", "format-charging": " {capacity}%", "format-plugged": " {capacity}%", "format-alt": "{time} {icon}", "format-icons": ["", "", "", "", "", "", "", "", "", "", ""] }, "pulseaudio": { "format": "{icon} {volume}%", "tooltip": false, "format-muted": " Muted", "on-click": "pamixer -t", "on-scroll-up": "pamixer -i 5", "on-scroll-down": "pamixer -d 5", "scroll-step": 5, "format-icons": { "headphone": "", "hands-free": "", "headset": "", "phone": "", "portable": "", "car": "", "default": ["", "", ""] } }, "custom/volume": { "exec": "pamixer --get-volume", "interval": 1, "format": " {}%", "tooltip": true } // "custom/pipewire": { // "format": {}, // "exec": "awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)", // "interval": 10 // }, } #+end_src ** Style #+begin_src css :tangle ~/.config/waybar/style.css ,* { border: none; border-radius: 0; font-family: Jetbrains Mono, Cartograph CF Nerd Font, monospace; font-weight: bold; font-size: 14px; min-height: 0; } window#waybar { background: rgba(21, 18, 27, 0); color: #cdd6f4; } tooltip { background: #0d1017; border-radius: 10px; border-width: 2px; border-style: solid; border-color: #11111b; } #workspaces button { padding: 5px; color: #313244; margin-right: 5px; } #workspaces button.active { color: #39bae6; } #workspaces button.focused { color: #a6adc8; background: #eba0ac; border-radius: 10px; } #workspaces button.urgent { color: #11111b; background: #a6e3a1; border-radius: 10px; } #workspaces button:hover { background: #11111b; color: #cdd6f4; border-radius: 10px; } #custom-language, #custom-updates, #custom-caffeine, #custom-weather, #window, #clock, #battery, #pulseaudio, #custrom-volume, #network, #workspaces, #tray, #backlight { background: #0d1017; padding: 0px 10px; margin: 3px 0px; margin-top: 10px; border: 1px solid #181825; } #tray { border-radius: 10px; margin-right: 10px; } #workspaces { background: #0d1017; border-radius: 10px; margin-left: 10px; padding-right: 0px; padding-left: 5px; } #custom-caffeine { color: #89dceb; border-radius: 10px 0px 0px 10px; border-right: 0px; margin-left: 10px; } #custom-language { color: #f38ba8; border-left: 0px; border-right: 0px; } #custom-updates { color: #ff8f40; border-left: 0px; border-right: 0px; } #window { border-radius: 10px; margin-left: 20px; margin-right: 60px; } #clock { color: #39bae6; border-radius: 10px 0px 0px 10px; margin-left: 0px; border-right: 0px; } #network { color: #f9e2af; border-left: 0px; border-right: 0px; } #pulseaudio { color: #59c2ff; border-left: 5px; border-right: 5px; } #custom-volume { background: #0d1017; color: #59c2ff; padding: 8px; margin-top: 11px; margin-bottom: 3px; border-left: 0px; border-right: 0px; } #battery { color: #a6e3a1; border-radius: 0 10px 10px 0; margin-right: 10px; border-left: 0px; } #custom-weather { border-radius: 0px 10px 10px 0px; border-right: 0px; margin-left: 0px; } #+end_src * iSync #+begin_src conf :tangle ~/.mbsyncrc IMAPAccount public Host mail.gandi.net Port 993 User public@thanosapollo.com PassCmd "pass show gandi/thanosapollo" SSLType IMAPS SSLVersions TLSv1.2 CertificateFile /etc/ssl/certs/ca-certificates.crt IMAPStore public-remote Account public MaildirStore public-local Path ~/Mail/Public/ Inbox ~/Mail/Public/Inbox Trash ~/Mail/Public/Trash/ SubFolders Verbatim Channel public Far :public-remote: Near :public-local: Patterns * Expunge None CopyArrivalDate yes Sync All Create Both SyncState * #+end_src