diff --git a/.gitignore b/.gitignore index 7590bee..05db3ac 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,4 @@ *.log hyprlock.conf hyprpaper.conf -user_config/* -config/autostart.conf scripts/autostart/workspace \ No newline at end of file diff --git a/config/autostart.lua b/config/autostart.lua new file mode 100644 index 0000000..e5925d7 --- /dev/null +++ b/config/autostart.lua @@ -0,0 +1,31 @@ +hl.on("hyprland.start", function () + hl.exec_cmd("nm-applet") + hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'") + hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") + hl.exec_cmd("systemctl --user start hyprpolkitagent") + hl.exec_cmd("tmux new-session -d -s keyring '/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg'") + + hl.exec_cmd("hypridle") + hl.exec_cmd("hyprpaper") + if HOSTNAME == "archlinux-hypr" then + hl.exec_cmd("tmux new-session -d -s ydotool 'ydotoold'") + hl.exec_cmd("tmux new-session -d -s ollama '/usr/bin/ollama serve'") + hl.exec_cmd("tmux new-session -d -s fah 'cd ~/.local/share/fah && fah-client'") + hl.exec_cmd("tmux new-session -d -s carla 'carla -n /home/honney/Downloads/test.carxp'") + hl.exec_cmd("bash -c '~/.config/hypr/scripts/goxlr/goxlr-start.sh > ~/.config/hypr/scripts/goxlr/goxlr-start.log'") + hl.exec_cmd("bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log'") + + hl.exec_cmd("nextcloud") + hl.exec_cmd("librewolf") + hl.exec_cmd("thunderbird") + hl.exec_cmd("discord") + elseif HOSTNAME == "hp-laptop" then + hl.exec_cmd("bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log'") + hl.exec_cmd("tmux new-session -d -s ydotool 'ydotoold'") + hl.exec_cmd("tmux new-session -d -s ollama '/usr/bin/ollama serve'") + hl.exec_cmd("nextcloud") + hl.exec_cmd("discord") + end + + hl.exec_cmd("bash -c '~/.config/hypr/scripts/autostart/autostart.sh > ~/.config/hypr/scripts/autostart/autostart.log'") +end) \ No newline at end of file diff --git a/config/bind.conf b/config/bind.conf deleted file mode 100755 index 34fe339..0000000 --- a/config/bind.conf +++ /dev/null @@ -1,92 +0,0 @@ -# -- keybinds -- -$mod = SUPER - -bind = $mod, RETURN, exec, $terminal -bind = $mod, W, killactive, # "Quit" -bind = $mod, Q, killactive, # "Quit" -bind = $mod, F, fullscreen, -bind = $mod, V, togglefloating, -bind = $mod, D, exec, $menu # "Apps" -bind = $mod SHIFT, D, pseudo, # dwindle -# bind = $mod, J, togglesplit, # dwindle - -# file manager -bind = $mod, E, exec, $fileManager - -# hyprlock -bind = $mod, L, exec, hyprlock - -# switch workspaces -bind = $mod, 1, workspace, 1 -bind = $mod, 2, workspace, 2 -bind = $mod, 3, workspace, 3 -bind = $mod, 4, workspace, 4 -bind = $mod, 5, workspace, 5 -bind = $mod, 6, workspace, 6 -bind = $mod, 7, workspace, 7 -bind = $mod, 8, workspace, 8 -bind = $mod, 9, workspace, 9 -bind = $mod, 0, workspace, 10 -bind = $mod, TAB, workspace, e+1 - -bind = $mod, F1, workspace, 401 - -# move active window to a workspace -bind = $mod SHIFT, 1, movetoworkspace, 1 -bind = $mod SHIFT, 2, movetoworkspace, 2 -bind = $mod SHIFT, 3, movetoworkspace, 3 -bind = $mod SHIFT, 4, movetoworkspace, 4 -bind = $mod SHIFT, 5, movetoworkspace, 5 -bind = $mod SHIFT, 6, movetoworkspace, 6 -bind = $mod SHIFT, 7, movetoworkspace, 7 -bind = $mod SHIFT, 8, movetoworkspace, 8 -bind = $mod SHIFT, 9, movetoworkspace, 9 -bind = $mod SHIFT, 0, movetoworkspace, 10 - -bind = $mod SHIFT, F1, movetoworkspace, 401 - -# move focus -bind = $mod, left, movefocus, l -bind = $mod, right, movefocus, r -bind = $mod, up, movefocus, u -bind = $mod, down, movefocus, d - -# scroll through existing workspaces -bind = $mod, mouse_down, workspace, e+1 -bind = $mod, mouse_up, workspace, e-1 - -# move/resize windows -bindm = $mod, mouse:272, movewindow -bindm = $mod SHIFT, mouse:272, resizewindow - -bind = $mod SHIFT, right, resizeactive, 30 0 -bind = $mod SHIFT, left, resizeactive, -30 0 -bind = $mod SHIFT, up, resizeactive, 0 -30 -bind = $mod SHIFT, down, resizeactive, 0 30 - -bind = $mod SHIFT, L, moveactive, 30 0 -bind = $mod SHIFT, I, moveactive, -30 0 -bind = $mod SHIFT, O, moveactive, 0 -30 -bind = $mod SHIFT, K, moveactive, 0 30 - -# screenshots -bind = $mod, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_window.sh -bind = $mod ALT, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_monitor.sh -bind = $mod SHIFT, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_area.sh -bind = $mod SHIFT, S, exec, ~/.config/hypr/scripts/screenshot/screenshot_area_2.sh - -# Scrolling -bind = $mod CTRL, left, layoutmsg, focus l -bind = $mod CTRL, right, layoutmsg, focus r -bind = $mod CTRL SHIFT, left, layoutmsg, swapcol l -bind = $mod CTRL SHIFT, right, layoutmsg, swapcol r - -# Audio keys -bindel = , XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ -bindel = , XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - -# Video Keys -bindel = , XF86AudioPlay, exec, playerctl play-pause || playerctl play-pause -bindel = , XF86AudioNext, exec, playerctl next -bindel = , XF86AudioPrev, exec, playerctl previous \ No newline at end of file diff --git a/config/bind.lua b/config/bind.lua new file mode 100644 index 0000000..9cb7acc --- /dev/null +++ b/config/bind.lua @@ -0,0 +1,105 @@ +-- Set default applications +local terminal = "kitty" +local fileManager = "nautilus" +local menu = "wofi --show drun, run" +local lockscreen = "hyprlock" + +-- open Software +hl.bind("SUPER + SHIFT + Q", hl.dsp.exec_cmd("firefox")) +hl.bind("SUPER+RETURN", hl.dsp.exec_cmd(terminal)) +hl.bind("SUPER+D", hl.dsp.exec_cmd(menu)) +hl.bind("SUPER+E", hl.dsp.exec_cmd(fileManager)) +hl.bind("SUPER+L", hl.dsp.exec_cmd(lockscreen), { locked = true }) + +-- Hyprland hl.binds + + -- Manipulating Windows/Software + hl.bind("SUPER+W", hl.dsp.window.close()) + hl.bind("SUPER+Q", hl.dsp.window.close()) + hl.bind("SUPER+F", hl.dsp.window.fullscreen) + hl.bind("SUPER+V", hl.dsp.window.float({ action = "toggle" })) + hl.bind("SUPER+SHIFT+D", hl.dsp.window.pseudo) + + -- Interacting with Workspaces + for i = 1, 9 do + hl.bind("SUPER+" .. tostring(i), hl.dsp.focus({ workspace = tostring(i) })) + hl.bind("SUPER+CTRL+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = false})) + hl.bind("SUPER+SHIFT+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = true})) + end + + hl.bind("SUPER+0", hl.dsp.focus({ workspace = "10" })) + hl.bind("SUPER+CTRL+0", hl.dsp.window.move({workspace = "10", follow = false})) + hl.bind("SUPER+SHIFT+0", hl.dsp.window.move({workspace = "10", follow = true})) + hl.bind("SUPER+F1", hl.dsp.focus({ workspace = "401" })) + hl.bind("SUPER+CTRL+F1", hl.dsp.window.move({workspace = "401", follow = false})) + hl.bind("SUPER+SHIFT+F1", hl.dsp.window.move({workspace = "401", follow = true})) + + -- -- Scrolling + -- hl.bind("SUPER+CTRL+left", hl.dsp.layout(move = "+col")) + -- hl.bind("SUPER+CTRL+right", hl.dsp.layout(move = "-col")) + -- hl.bind("SUPER+CTRL+SHIFT+left", hl.dsp.layout(swapcol = "l")) + -- hl.bind("SUPER+CTRL+SHIFT+right", hl.dsp.layout(swapcol = "r")) + + -- -- Resizing windows + -- hl.bind("SUPER+SHIFT+right", "resizeactive", "30 0") + -- hl.bind("SUPER+SHIFT+left", "resizeactive", "-30 0") + -- hl.bind("SUPER+SHIFT+up", "resizeactive", "0 -30") + -- hl.bind("SUPER+SHIFT+down", "resizeactive", "0 30") + + -- Mouse Commands for moving windows + -- hl.bind("SUPER+mouse_down", "workspace", "e+1") + -- hl.bind("SUPER+mouse_up", "workspace", "e-1") + hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true }) + hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true }) + hl.bind("SUPER + SHIFT + mouse:272", hl.dsp.window.resize(), { mouse = true }) + + -- Move between workspaces/screens + hl.bind("SUPER+left" , hl.dsp.focus({ direction = "l" })) + hl.bind("SUPER+right", hl.dsp.focus({ direction = "r" })) + hl.bind("SUPER+up" , hl.dsp.focus({ direction = "u" })) + hl.bind("SUPER+down" , hl.dsp.focus({ direction = "d" })) + hl.bind("SUPER+TAB" , hl.dsp.focus({ workspace = "e+1", on_current_monitor = true })) + +-- Screenshots +hl.bind("SUPER+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_window.sh")) +hl.bind("SUPER+ALT+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_monitor.sh")) +hl.bind("SUPER+SHIFT+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_area.sh")) +hl.bind("SUPER+SHIFT+S", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_area_2.sh")) + +-- Audio Control +hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+")) +hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-")) +hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle")) + +hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause || playerctl play-pause")) +hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next")) +hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous")) + +-- German Umlaute +hl.bind("SUPER+a", hl.dsp.exec_cmd("wtype \"ä\"")) +hl.bind("SUPER+SHIFT+a", hl.dsp.exec_cmd("wtype \"Ä\"")) +hl.bind("SUPER+o", hl.dsp.exec_cmd("wtype \"ö\"")) +hl.bind("SUPER+SHIFT+o", hl.dsp.exec_cmd("wtype \"Ö\"")) +hl.bind("SUPER+u", hl.dsp.exec_cmd("wtype \"ü\"")) +hl.bind("SUPER+SHIFT+u", hl.dsp.exec_cmd("wtype \"Ü\"")) +hl.bind("SUPER+s", hl.dsp.exec_cmd("wtype \"ß\"")) +hl.bind("SUPER+SHIFT+e", hl.dsp.exec_cmd("wtype \"€\"")) + +-- Opening coder +hl.bind("SUPER+SHIFT+C", hl.dsp.exec_cmd("code")) +hl.bind("SUPER+SHIFT+V", hl.dsp.exec_cmd("vscodium")) + +-- device specifics +if HOSTNAME == "archlinux-hypr" then + for i = 1, 12 do + hl.bind("SUPER+SHIFT+CTRL+F"..tostring(i), hl.dsp.exec_cmd("~/.config/hypr/scripts/makropad/button"..string.format("%02d", i)..".sh")) + end + hl.bind("ALT+T", hl.dsp.exec_cmd("~/.config/hypr/scripts/writing/todo.sh")) + hl.bind("ALT+Y", hl.dsp.exec_cmd("~/.config/hypr/scripts/writing/tmdb.sh")) +end + +-- Quickshell +hl.bind("SUPER + SHIFT + W", hl.dsp.global("quickshell:Wallpaper")) +hl.bind("SUPER + SHIFT + J", hl.dsp.global("quickshell:JLearner")) +hl.bind("SUPER + SHIFT + L", hl.dsp.global("quickshell:WLogout")) +hl.bind("escape", hl.dsp.global("quickshell:Closer")) \ No newline at end of file diff --git a/config/env.conf b/config/env.conf deleted file mode 100755 index 5ac4a18..0000000 --- a/config/env.conf +++ /dev/null @@ -1,69 +0,0 @@ -# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # -# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/ - -env = GTK_USE_PORTAL,1 - -# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf - -# environment-variables -# Toolkit Backend Variables -env = GDK_BACKEND,wayland,x11,* -env = QT_QPA_PLATFORM,xcb -env = CLUTTER_BACKEND,wayland - -#Run SDL2 applications on Wayland. -#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues -#env = SDL_VIDEODRIVER,wayland - -# xdg Specifications -env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_DESKTOP,Hyprland -env = XDG_SESSION_TYPE,wayland - -# QT Variables -env = QT_AUTO_SCREEN_SCALE_FACTOR,1 -env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 -env = QT_QPA_PLATFORMTHEME,hyprqt6engine -env = QT_STYLE_OVERRIDE,kvantum # Maybe qt5-fix? -env = KVANTUM_THEME,ColloidDark -env = QT_ENABLE_HIGHDPI_SCALING,1 -env = QT_QPA_PLATFORM,wayland - -# hyprland-qt-support -env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style - -# xwayland apps scale fix (useful if you are use monitor scaling). -# Set same value if you use scaling in Monitors.conf -# 1 is 100% 1.5 is 150% -# see https://wiki.hyprland.org/Configuring/XWayland/ -env = GDK_SCALE,1 -env = QT_SCALE_FACTOR,1 - -# Bibata-Modern-Ice-Cursor -# NOTE! You must have the hyprcursor version to activate this. -# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/ -#env = HYPRCURSOR_THEME,Bibata-Modern-Ice -#env = HYPRCURSOR_SIZE,24 - -# firefox -env = MOZ_ENABLE_WAYLAND,1 - -# electron >28 apps (may help) ## -# https://www.electronjs.org/docs/latest/api/environment-variables -env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise - - - -# Aquamarine Environment Variables #### ( Hyprland > 0.45 ) -# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd--- -# env = AQ_TRACE,1 # Enables more verbose logging. -# env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. It’s a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0 -# env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers -# env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers - -#### Hyprland Environment Variables #### -# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables -# env = HYPRLAND_TRACE,1 # Enables more verbose logging. -# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland. -# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls. -# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments. diff --git a/config/env.lua b/config/env.lua new file mode 100644 index 0000000..f4e428f --- /dev/null +++ b/config/env.lua @@ -0,0 +1,37 @@ +-- Hyprland env +-- https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/ +hl.env("HYPRLAND_TRACE", "1") + +-- Toolkit Backend Variables +hl.env("GDK_BACKEND", "wayland,x11,*") +hl.env("QT_QPA_PLATFORM", "wayland;xcb") +hl.env("SDL_VIDEODRIVER", "wayland") -- if older game fails set to x11 +hl.env("CLUTTER_BACKEND", "wayland") + +-- XDG Specifications +hl.env("XDG_CURRENT_DESKTOP", "Hyprland") +hl.env("XDG_SESSION_TYPE", "wayland") +hl.env("XDG_SESSION_DESKTOP", "Hyprland") + +-- Qt Variables +hl.env("QT_AUTO_SCREEN_SCALE_FACTOR", "1") +hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1") +-- enable hyprqt6engine +hl.env("QT_QPA_PLATFORMTHEME", "hyprqt6engine") +hl.env("QT_STYLE_OVERRIDE", "kvantum") +hl.env("QT_ENABLE_HIGHDPI_SCALING", "1") +-- hyprland-qt-support +hl.env("QT_ENABLE_HIGHDPI_SCALING", "1") + +-- GDK Variables +hl.env("GTK_USE_PORTAL", "1") +hl.env("GDK_SCALE", "1") + +-- Firefox +hl.env("MOZ_ENABLE_WAYLAND", "1") + +-- electron +hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto") + +-- -- set XDG +-- hl.env("XDG_DATA_DIRS", "/usr/local/share:/usr/share:~/.local/share:~/.icons") \ No newline at end of file diff --git a/config/hostname.lua b/config/hostname.lua new file mode 100644 index 0000000..1f21878 --- /dev/null +++ b/config/hostname.lua @@ -0,0 +1,6 @@ +local f = io.popen("hostname 2>/dev/null") +HOSTNAME = "unknown" +if f then + HOSTNAME = (f:read("*l") or "unknown"):gsub("%s+", "") + f:close() +end \ No newline at end of file diff --git a/config/monitor.conf b/config/monitor.conf deleted file mode 100644 index 4d6caf9..0000000 --- a/config/monitor.conf +++ /dev/null @@ -1,12 +0,0 @@ -# The config where the resolution, position and -# other monitor Stuff is set up - -# monitor = name, resolution, position, scale - -misc { - vrr = 2 # 0: off, 1: on, 2: fullscreen only -} - -render { - cm_auto_hdr = 1 # 0: off, 1: on, 2: edid -} \ No newline at end of file diff --git a/config/theme.conf b/config/theme.conf deleted file mode 100644 index ce12506..0000000 --- a/config/theme.conf +++ /dev/null @@ -1,76 +0,0 @@ -$GTK_THEME = "catppuccin-mocha-blue-standard+default" -$CURSOR_THEME = "DJ-FOX-C" -$ICON_THEME = "BeautyLine-Garuda" -$KVANTUM_THEME = "Catppuccin-Mocha-Blue" - -# GTK Theming -env = GTK_THEME,Colloid-Dark -env = GTK_ICON_THEME,BeautyLine-Garuda -env = GTK_THEME_VARIANT,dark -env = XDG_CURRENT_DESKTOP,Hyprland -env = GDK_BACKEND,wayland,x11 -env = GTK_USE_PORTAL,1 -env = GTK_THEME_VARIANT,dark - - -# Qt/Kvantum Theming -# in env.conf - -# Icons: -env = XDG_DATA_DIRS,/usr/local/share:/usr/share:~/.local/share:~/.icons -env = GTK_ICON_THEME,BeautyLine-Garuda - -# Icons & Cursor -env = HYPRCURSOR_THEME,DJ-FOX-C -env = HYPRCURSOR_SIZE,24 -env = XCURSOR_THEME,DJ-FOX-C -env = XCURSOR_SIZE,24 - -cursor { - no_hardware_cursors = true -} - -# Window management -general { - gaps_in = 5 - gaps_out = 8 - border_size = 0 - layout = dwindle - allow_tearing = false -} - -decoration { - rounding = 5 - active_opacity = 1 - # inactive_opacity = 0.75 - inactive_opacity = 1 - fullscreen_opacity = 1 - blur { - enabled = false - size = 3 - passes = 1 - } -} - -animations { - enabled = yes - 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 -} - -misc { - force_default_wallpaper = 0 - disable_hyprland_logo = true -} - -scrolling { - column_width = 1 - follow_focus = true - fullscreen_on_one_column = true - # explicit_column_widths = 0.17,0.3 -} diff --git a/config/theme.lua b/config/theme.lua new file mode 100644 index 0000000..1922f92 --- /dev/null +++ b/config/theme.lua @@ -0,0 +1,132 @@ +hl.config({ + general = { + border_size = 1, + gaps_in = 5, + gaps_out = 8, + float_gaps = 0, + gaps_workspaces = 0, + col = { + inactive_border = 0xff444444, + active_border = 0xffffffff, + nogroup_border = 0xffffaaff, + nogroup_border_active = 0xffff00ff, + }, + layout = "dwindle", + no_focus_fallback = false, + resize_on_border = false, + extend_border_grab_area = 15, + hover_icon_on_border = true, + allow_tearing = false, + resize_corner = 0, + modal_parent_blocking = true, + locale = "de", + } +}) + +hl.config({ + dwindle = { + force_split = 0, + preserve_split = false, + smart_split = false, + smart_resizing = true, + permanent_direction_override = false, + special_scale_factor = 1, + split_width_multiplier = 1.0, + use_active_for_splits = true, + default_split_ratio = 1.0, + split_bias = 0, + precise_mouse_move = false, + }, +}) + +hl.config({ + scrolling = { + fullscreen_on_one_column = false, + column_width = 0.8, + focus_fit_method = 0, + follow_focus = true, + follow_min_visible = 1, + explicit_column_widths = "0.333, 0.5, 0.667, 1.0", + wrap_focus = true, + wrap_swapcol = true, + direction = "right", + }, +}) + +hl.config({ + decoration = { + rounding = 5, + active_opacity = 1, + inactive_opacity = 0.75, + dim_modal = true, + dim_inactive = true, + dim_strength = 0.5, + blur = { + enabled = true, + }, + } +}) + +-- MISC +hl.config({ + misc = { + disable_hyprland_logo = true, + font_family = "CodeNewRoman Nerd Font", + splash_font_family = "CodeNewRoman Nerd Font", + force_default_wallpaper = 0, + vrr = 3, + animate_manual_resizes = true, + animate_mouse_windowdragging = true, + background_color = 0x000000, + on_focus_under_fullscreen = 0, + middle_click_paste = false, + } +}) + +hl.config({ + render = { + direct_scanout = 2, + cm_enabled = true, + cm_auto_hdr = 1, + } +}) + +hl.config({ + cursor ={ + no_hardware_cursors = 1, + } +}) + +if HOSTNAME == "archlinux-hypr" then + hl.config({ + cursor ={ + default_monitor = "BNQ BenQ EX2710U Y8P00876019", + } + }) +end + +hl.config({ + quirks ={ + prefer_hdr = 1, + } +}) + +hl.config({ + debug={ + full_cm_proto = true, + } +}) + +-- Kvantum +hl.env("KVANTUM_THEME", "ColloidDark") + +-- GTK +hl.env("GTK_THEME", "Colloid-Dark") +hl.env("GTK_ICON_THEME", "BeautyLine-Garuda") +hl.env("GTK_THEME_VARIANT", "dark") + +-- +hl.env("HYPRCURSOR_THEME", "DJ-FOX-C") +hl.env("HYPRCURSOR_SIZE", "24") +hl.env("XCURSOR_THEME", "DJ-FOX-C") +hl.env("XCURSOR_SIZE", "24") \ No newline at end of file diff --git a/examples/autostart.conf.example b/examples/autostart.conf.example deleted file mode 100755 index b1d2409..0000000 --- a/examples/autostart.conf.example +++ /dev/null @@ -1,9 +0,0 @@ -# Needs To start first -exec-once = hypridle -exec-once = hyprpaper -# now via: -exec-once = bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log' -exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP -exec-once = systemctl --user start hyprpolkitagent -exec-once = sleep 2 && hyprctl reload diff --git a/examples/bind.conf.example b/examples/bind.conf.example deleted file mode 100644 index 8ed3eca..0000000 --- a/examples/bind.conf.example +++ /dev/null @@ -1,12 +0,0 @@ -# bind = modifier (win/shift/alt/CTRL), other_button, exec, command -# bind = $mod SHIFT, 1, movetoworkspace, 1 - -# Umlaute / German compatability on english Keyboard -bind = $mod, a, exec, wtype "ä" -bind = $mod SHIFT, a, exec, wtype "Ä" -bind = $mod, o, exec, wtype "ö" -bind = $mod SHIFT, o, exec, wtype "Ö" -bind = $mod, u, exec, wtype "ü" -bind = $mod SHIFT, u, exec, wtype "Ü" -bind = $mod, s, exec, wtype "ß" -bind = $mod SHIFT, e, exec, wtype "€" \ No newline at end of file diff --git a/examples/hyprlock.conf.example b/examples/hyprlock.conf.example old mode 100755 new mode 100644 index b6f8c9e..e69de29 --- a/examples/hyprlock.conf.example +++ b/examples/hyprlock.conf.example @@ -1,67 +0,0 @@ -general { - hide_cursor = true - no_fade_in = false - grace = 0 - disable_loading_bar = true -} - -background { - monitor = - path = ~/Pictures/Wallpapers/Static/blurred.jpg - blur_passes = 0 -} - -# -- time -- -label { - monitor = - text = cmd[update:1000] echo "$(date +"%H:%M")" - color = 0xFFceca75 - font_size = 80 - font_family = JetBrains Mono ExtraBold - position = 0, 140 - halign = center - valign = center -} - -# -- quote -- -label { - monitor = - text = - PAIN IS REAL, BUT SO IS HOPE - - color = 0xFFa5d0bb - font_size = 12 - font_family = JetBrains Mono ExtraLight - position = 0, 80 - halign = center - valign = center -} - -# -- greeting -- -label { - monitor = - text = Heya $USER :3 - color = 0xFFceca75 - font_size = 20 - font_family = JetBrains Mono Light - position = 0, 0 - halign = center - valign = center -} - -# -- password input -- -input-field { - monitor = - size = 230, 40 - outline_thickness = 0 - dots_size = 0.2 - dots_spacing = 0.4 - dots_center = true - inner_color = 0xFF4b4900 - font_color = 0xFFceca75 - fade_on_empty = false - placeholder_text = unlock the magic... - fail_color = 0xFFffb4ab - hide_input = false - position = 0, -50 - halign = center - valign = center -} diff --git a/examples/hyprpaper.conf.example b/examples/hyprpaper.conf.example index 078cfe8..d1c1ea8 100755 --- a/examples/hyprpaper.conf.example +++ b/examples/hyprpaper.conf.example @@ -1,5 +1,5 @@ wallpaper { monitor = * - path = /home/honney/Pictures/Wallpapers/Japanes_tempel_dark.png + path = /home/honney/Pictures/Wallpapers/japan_old_emperor_stream_with_bridge.png fit_mode = cover } \ No newline at end of file diff --git a/examples/input.conf.example b/examples/input.conf.example deleted file mode 100644 index ea8c01a..0000000 --- a/examples/input.conf.example +++ /dev/null @@ -1,16 +0,0 @@ -input { - kb_layout = us - kb_variant = - kb_model = - kb_options = - kb_rules = - follow_mouse = 1 - touchpad { - disable_while_typing = false - natural_scroll = true - scroll_factor = 0.15 - tap-and-drag = true - } - sensitivity = 0 # -1.0 to 1.0; 0 means no modification. - numlock_by_default = true -} \ No newline at end of file diff --git a/examples/monitor.conf.example b/examples/monitor.conf.example deleted file mode 100644 index 6cec1c1..0000000 --- a/examples/monitor.conf.example +++ /dev/null @@ -1,23 +0,0 @@ -monitor=,preferred,auto,auto - -# Getting monitor info: -# hyprctl monitors -j -# -# -# Example: -# monitorv2 { -# output = desc:BNQ BenQ EX2710U Y8P00876019 -# mode = 3840x2160@144 -# position = 0x0 -# scale = 1 -# bitdepth = 10 -# supports_hdr = 1 -# transform = 0 -# supports_wide_color = 1 -# sdr_min_luminance = 1000 -# sdr_max_luminance = 400 -# } -# -# monitor = desc:LG Electronics LG ULTRAFINE 503NTKF3L437, 3840x2160@60, 0x-2160, 1, transform, 2, bitdepth, 10, cm, wide -# -# monitor = desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65, 1920x1080@144, -1920x-1080, 1, transform, 2 \ No newline at end of file diff --git a/examples/workspace.conf.example b/examples/workspace.conf.example deleted file mode 100644 index 10f94cf..0000000 --- a/examples/workspace.conf.example +++ /dev/null @@ -1,17 +0,0 @@ -# To get monitor names: hyprctl monitors -j -# -# To get the class/name: hyprctl clients -j | jq '.[] | select(.workspace.id == ID_OF_THE_WORKSPACE)' -# hyprctl clients -j | jq '.[] | select(.workspace.id == )' -# -# To enable scrolling -# workspace = 1, monitor:desc:BNQ BenQ EX2710U Y8P00876019, layout:scrolling, layoutopt:direction:right -# -# to put a specific workspace on a monitor -# workspace = 3, monitor:desc:LG Electronics LG ULTRAFINE 503NTKF3L437 -# -# How to set windowrules: -# windowrule { -# name = Discord -# match:class = .*discord.* -# workspace = 4 -# } \ No newline at end of file diff --git a/hyprland.conf b/hyprland.conf deleted file mode 100755 index 10156d6..0000000 --- a/hyprland.conf +++ /dev/null @@ -1,18 +0,0 @@ -# _____ __ __ _____ _____ __ _____ _____ ____ -# | | | | | _ | __ | | | _ | | | \ -# | |_ _| __| -| |__| | | | | | | -# |__|__| |_| |__| |__|__|_____|__|__|_|___|____/ -# -# by Bina & edited by Honney - -# -- programs -- -$terminal = kitty -$fileManager = nautilus# nemo # put your preffered fileManager here, choose keybind -$menu = wofi --show drun, run - -# including all the sub configs -source = ~/.config/hypr/config/* -source = ~/.config/hypr/user_config/* - -debug:disable_logs=false -debug:gl_debugging=true diff --git a/hyprland.lua b/hyprland.lua new file mode 100644 index 0000000..d533f22 --- /dev/null +++ b/hyprland.lua @@ -0,0 +1,9 @@ +require("config/hostname") +require("config/bind") +require("config/env") +require("config/theme") +require("config/autostart") +require("user_config/monitor") +require("user_config/input") +require("user_config/workspacerules") +require("user_config/windowrules") \ No newline at end of file diff --git a/install.sh b/install.sh index 75647da..6d6206f 100755 --- a/install.sh +++ b/install.sh @@ -1,36 +1,112 @@ +#!/usr/bin/env bash +set -euo pipefail + SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -WALLPAPER_DIR=$(scripts/install/wallpaper_dir.sh) -copy_missing() { - local dest="$1" - local filename - filename="$(basename "$dest")" - local src="$SCRIPT_DIR/examples/$filename.example" +# ---------------------------- +# UI helpers +# ---------------------------- +info() { echo -e "\033[1;34m[INFO]\033[0m $*"; } +ok() { echo -e "\033[1;32m[ OK ]\033[0m $*"; } +warn() { echo -e "\033[1;33m[WARN]\033[0m $*"; } +fail() { echo -e "\033[1;31m[FAIL]\033[0m $*"; } - if [ -e "$dest" ]; then - echo "Already exists: $dest" - else - echo "Creating: $dest" - cp "$src" "$dest" - fi +# ---------------------------- +# Packages +# ---------------------------- +REQUIRED_PKGS=( + hyprland-qt-support + hyprcursor + hypridle + hyprlock + libnotify + jq + inetutils +) + +OPTIONAL_PKGS=( + hyprpaper "Wallpaper daemon" OFF + carla "Audio plugin host" OFF + gnome-keyring "Secrets management" OFF + curl "HTTP requests" OFF + wofi "Launcher" OFF + kitty "Terminal" OFF + nautilus "File manager" OFF + wtype "Typing tool" OFF + ydotool "Input automation" OFF + imagemagick "Image tools" OFF + playerctl "Media control" OFF + wlopm "Monitor power" OFF + hyprshot "Screenshot tool" OFF + matugen "Theme generator" OFF +) + +# ---------------------------- +# Optional selection (ONLY whiptail use) +# ---------------------------- +command -v whiptail &>/dev/null || { + fail "whiptail is required for selection" + exit 1 } -if [ ! -d "$SCRIPT_DIR/user_config" ]; then - mkdir "$SCRIPT_DIR/user_config" - echo "$SCRIPT_DIR/user_config created" +info "Selecting optional packages..." +SELECTED=$(whiptail --title "Optional Packages" --checklist \ +"Select extras to install:" 18 70 10 \ +"${OPTIONAL_PKGS[@]}" \ +3>&1 1>&2 2>&3) || { + fail "Cancelled" + exit 1 +} + +OPT_ARGS=() +[[ -n "${SELECTED:-}" ]] && eval "OPT_ARGS=($SELECTED)" + +ok "Selection complete" + +# ---------------------------- +# Config setup +# ---------------------------- +info "Preparing config files..." + +mkdir -p "$SCRIPT_DIR/scripts/autostart" + +[[ ! -f "$SCRIPT_DIR/scripts/autostart/workspace" ]] && { + cp "$SCRIPT_DIR/examples/workspace.example" "$SCRIPT_DIR/scripts/autostart/workspace" + ok "workspace config created" +} + +[[ ! -f "$SCRIPT_DIR/hyprlock.conf" ]] && { + cp "$SCRIPT_DIR/examples/hyprlock.conf.example" "$SCRIPT_DIR/hyprlock.conf" + ok "hyprlock config created" +} + +[[ ! -f "$SCRIPT_DIR/hyprpaper.conf" ]] && { + cp "$SCRIPT_DIR/examples/hyprpaper.conf.example" "$SCRIPT_DIR/hyprpaper.conf" + ok "hyprpaper config created" +} + +# ---------------------------- +# Install +# ---------------------------- +info "Updating system..." +sudo pacman -Syu --noconfirm +ok "System updated" + +info "Installing required packages..." +sudo pacman -S --needed --noconfirm "${REQUIRED_PKGS[@]}" +ok "Required packages installed" + +if [[ ${#OPT_ARGS[@]} -gt 0 ]]; then + info "Installing optional packages..." + sudo pacman -S --needed --noconfirm "${OPT_ARGS[@]}" + ok "Optional packages installed" else - echo "$SCRIPT_DIR/user_config exists" + warn "No optional packages selected" fi -copy_missing "$SCRIPT_DIR/user_config/monitor.conf" -copy_missing "$SCRIPT_DIR/user_config/input.conf" -copy_missing "$SCRIPT_DIR/user_config/workspace.conf" -copy_missing "$SCRIPT_DIR/scripts/autostart/workspace" -copy_missing "$SCRIPT_DIR/user_config/bind.conf" -copy_missing "$SCRIPT_DIR/user_config/input.conf" -copy_missing "$SCRIPT_DIR/hyprlock.conf" -copy_missing "$SCRIPT_DIR/hyprpaper.conf" -copy_missing "$SCRIPT_DIR/config/autostart.conf" - -echo "The script will now install dependencies via pacman" -sudo pacman -S --needed hyprland-qt-support hyprcursor hypridle hyprlock hypridle \ No newline at end of file +# ---------------------------- +# Done +# ---------------------------- +echo +ok "Setup complete" +info "Restart Hyprland to apply changes" \ No newline at end of file diff --git a/scripts/autostart/autostart.sh b/scripts/autostart/autostart.sh index 22931f6..9b81169 100755 --- a/scripts/autostart/autostart.sh +++ b/scripts/autostart/autostart.sh @@ -103,4 +103,6 @@ done hyprctl dispatch workspace 4 hyprctl dispatch workspace 3 hyprctl dispatch workspace 2 -hyprctl dispatch workspace 1 \ No newline at end of file +hyprctl dispatch workspace 1 + +tmux new-session -d -s qs 'sleep 4 && quickshell' \ No newline at end of file diff --git a/user_config/input.lua b/user_config/input.lua new file mode 100644 index 0000000..469d9c4 --- /dev/null +++ b/user_config/input.lua @@ -0,0 +1,37 @@ +hl.config({ + input={ + -- keyboard + kb_model = "", + kb_layout = "de", + kb_variant = "", + kb_options = "", + kb_rules = "", + kb_file = "", + numlock_by_default = true, + -- mouse + sensitivity = 0, + left_handed = false, + natural_scroll = false, + follow_mouse = 1, + touchpad = { + disable_while_typing = false, + natural_scroll = true, + scroll_factor = 0.15, + middle_button_emulation = true, + clickfinger_behavior = true, + drag_lock = 1, + tap_and_drag = true, + drag_3fg = 2, + }, + } +}) + +-- hyprctl devices +hl.device({ + name = "evision-rgb-keyboard", + kb_layout = "us", +}) +hl.device({ + name = "evision-rgb-keyboard-1", + kb_layout = "us", +}) \ No newline at end of file diff --git a/user_config/monitor.lua b/user_config/monitor.lua new file mode 100644 index 0000000..16f24b9 --- /dev/null +++ b/user_config/monitor.lua @@ -0,0 +1,79 @@ +if HOSTNAME == "archlinux-hypr" then + hl.monitor({ + output = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609", + mode = "3840x2160@60", + position = "-3840x0", + scale = 1, + transform = 0, + bitdepth = 10, + cm = "srgb", + sdr_eotf = "default", + sdrbrightness = 1.0, + sdrsaturation = 1.0, + vrr = 0, + supports_wide_color = 1, + supports_hdr = 1, + sdr_min_luminance = 0.2, + sdr_max_luminance = 400, + }) + hl.monitor({ + output = "desc:BNQ BenQ EX2710U Y8P00876019", + mode = "3840x2160@144", + position = "0x0", + scale = 1, + transform = 0, + bitdepth = 10, + cm = "srgb", + sdr_eotf = "default", + sdrbrightness = 1.0, + sdrsaturation = 1.0, + vrr = 0, + supports_wide_color = 1, + supports_hdr = 1, + sdr_min_luminance = 0.2, + sdr_max_luminance = 600, + }) + hl.monitor({ + output = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437", + mode = "3840x2160@60", + position = "0x-2160", + scale = 1, + transform = 2, + bitdepth = 10, + cm = "srgb", + sdr_eotf = "default", + sdrbrightness = 1.0, + sdrsaturation = 1.0, + vrr = 0, + supports_wide_color = 1, + supports_hdr = 1, + sdr_min_luminance = 0.2, + sdr_max_luminance = 400, + }) + hl.monitor({ + output = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65", + mode = "1920x1080@144", + position = "-1920x-1080", + scale = 1, + transform = 2, + bitdepth = 10, + }) + hl.monitor({ + output = "desc:Dell Inc. DELL P2419H D4CN3Q2", + mode = "1920x1080@60", + position = "-1920x-2160", + scale = 1, + transform = 0, + }) +elseif HOSTNAME == "hp-laptop" then + hl.monitor({ + output = "desc:BOE 0x08A8", + mode = "1920x1080@60", + position = "0x0", + scale = 1, + transform = 0, + }) +end + +-- mirror string Output name to mirror +-- icc string Absolute path to an ICC profile \ No newline at end of file diff --git a/user_config/windowrules.lua b/user_config/windowrules.lua new file mode 100644 index 0000000..4fd8331 --- /dev/null +++ b/user_config/windowrules.lua @@ -0,0 +1,61 @@ +if HOSTNAME == "archlinux-hypr" then + --# Window rules on Monitor 3 + hl.window_rule({ + name = "Librewolf", + match = { + class = ".*librewolf.*" + }, + workspace = "300 silent" + }) + hl.window_rule({ + name = "Mozilla Thunderbird", + match = { + class = ".*Thunderbird.*" + }, + workspace = "301 silent" + }) + --# Window rules on Monitor 4 + hl.window_rule({ + name = "Discord", + match = { + class = ".*discord.*" + }, + workspace = "4 silent" + }) + hl.window_rule({ + name = "Signal", + match = { + class = ".*Signal.*" + }, + workspace = "4" + }) + hl.window_rule({ + name = "Nextcloud", + match = { + class = ".*nextcloud.*" + }, + workspace = "400" + }) +elseif HOSTNAME == "hp-laptop" then + hl.window_rule({ + name = "Discord", + match = { + class = ".*discord.*" + }, + workspace = "4 silent" + }) + hl.window_rule({ + name = "Signal", + match = { + class = ".*Signal.*" + }, + workspace = "4" + }) + hl.window_rule({ + name = "Nextcloud", + match = { + class = ".*nextcloud.*" + }, + workspace = "400" + }) +end \ No newline at end of file diff --git a/user_config/workspacerules.lua b/user_config/workspacerules.lua new file mode 100644 index 0000000..b58e23a --- /dev/null +++ b/user_config/workspacerules.lua @@ -0,0 +1,58 @@ +if HOSTNAME == "archlinux-hypr" then + --# Workspaces on Monitor 1 + hl.workspace_rule({ + workspace = "1", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = true, + layout = "scrolling", + }) + --# Workspaces on Monitor 2 + hl.workspace_rule({ + workspace = "2", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = true, + layout = "scrolling", + }) + hl.workspace_rule({ + workspace = "200", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) + --# Workspaces on Monitor 3 + hl.workspace_rule({ + workspace = "3", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = true, + }) + hl.workspace_rule({ + workspace = "300", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) + hl.workspace_rule({ + workspace = "301", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) + hl.workspace_rule({ + workspace = "302", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) + --# Workspaces on Monitor 4 + hl.workspace_rule({ + workspace = "4", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = true, + }) + hl.workspace_rule({ + workspace = "400", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) + hl.workspace_rule({ + workspace = "401", + monitor = "desc:BNQ BenQ EX2710U Y8P00876019", + default = false, + }) +end \ No newline at end of file