diff --git a/config/hypr/.luarc.json b/config/hypr/.luarc.json new file mode 100644 index 00000000..ff0e3599 --- /dev/null +++ b/config/hypr/.luarc.json @@ -0,0 +1,11 @@ +{ + "workspace": { + "library": [ + "/usr/share/hypr/stubs" + ], + "checkThirdParty": false + }, + "diagnostics": { + "globals": ["hl"] + } +} diff --git a/config/hypr/autostart.conf b/config/hypr/autostart.conf deleted file mode 100644 index 708b3a29..00000000 --- a/config/hypr/autostart.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Extra autostart processes -# exec-once = uwsm-app -- my-service diff --git a/config/hypr/autostart.lua b/config/hypr/autostart.lua new file mode 100644 index 00000000..5f444bb1 --- /dev/null +++ b/config/hypr/autostart.lua @@ -0,0 +1,4 @@ +-- Extra autostart processes. +-- hl.on("hyprland.start", function() +-- hl.exec_cmd("uwsm-app -- my-service") +-- end) diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf deleted file mode 100644 index e7eb692d..00000000 --- a/config/hypr/bindings.conf +++ /dev/null @@ -1,40 +0,0 @@ -# Application bindings -bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)" -bindd = SUPER ALT, RETURN, Tmux, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)" bash -c "tmux attach || tmux new -s Work" -bindd = SUPER SHIFT, RETURN, Browser, exec, omarchy-launch-browser -bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window -bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)" -bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser -bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private -bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify -bindd = SUPER SHIFT ALT, M, Music TUI, exec, omarchy-launch-or-focus-tui cliamp -bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor -bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker -bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop" -bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian" -bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime -bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password - -# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment -bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" -bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" -bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/" -bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com" -bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" -bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/" -bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations" -bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/" -bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/" -bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" - -# Add extra bindings -# bind = SUPER SHIFT, R, exec, alacritty -e ssh your-server - -# Overwrite existing bindings, like putting Omarchy Menu on Super + Space -# unbind = SUPER, SPACE -# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu - -# Logitech MX Keys -# bind = SUPER SHIFT, S, exec, omarchy-capture-screenshot # Print Screen Button -# bind = SUPER, H, exec, voxtype record toggle # Dictation Button -# bind = SUPER, PERIOD, exec, omarchy-launch-walker -m symbols # Emoji Button diff --git a/config/hypr/bindings.lua b/config/hypr/bindings.lua new file mode 100644 index 00000000..ed04cc42 --- /dev/null +++ b/config/hypr/bindings.lua @@ -0,0 +1,40 @@ +-- Application bindings. +hl.bind("SUPER + RETURN", hl.dsp.exec_cmd([[uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)"]]), { description = "Terminal" }) +hl.bind("SUPER + ALT + RETURN", hl.dsp.exec_cmd([[uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)" bash -c "tmux attach || tmux new -s Work"]]), { description = "Tmux" }) +hl.bind("SUPER + SHIFT + RETURN", hl.dsp.exec_cmd("omarchy-launch-browser"), { description = "Browser" }) +hl.bind("SUPER + SHIFT + F", hl.dsp.exec_cmd("uwsm-app -- nautilus --new-window"), { description = "File manager" }) +hl.bind("SUPER + ALT + SHIFT + F", hl.dsp.exec_cmd([[uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"]]), { description = "File manager (cwd)" }) +hl.bind("SUPER + SHIFT + B", hl.dsp.exec_cmd("omarchy-launch-browser"), { description = "Browser" }) +hl.bind("SUPER + SHIFT + ALT + B", hl.dsp.exec_cmd("omarchy-launch-browser --private"), { description = "Browser (private)" }) +hl.bind("SUPER + SHIFT + M", hl.dsp.exec_cmd("omarchy-launch-or-focus spotify"), { description = "Music" }) +hl.bind("SUPER + SHIFT + ALT + M", hl.dsp.exec_cmd("omarchy-launch-or-focus-tui cliamp"), { description = "Music TUI" }) +hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("omarchy-launch-editor"), { description = "Editor" }) +hl.bind("SUPER + SHIFT + D", hl.dsp.exec_cmd("omarchy-launch-tui lazydocker"), { description = "Docker" }) +hl.bind("SUPER + SHIFT + G", hl.dsp.exec_cmd([[omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"]]), { description = "Signal" }) +hl.bind("SUPER + SHIFT + O", hl.dsp.exec_cmd([[omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian"]]), { description = "Obsidian" }) +hl.bind("SUPER + SHIFT + W", hl.dsp.exec_cmd("uwsm-app -- typora --enable-wayland-ime"), { description = "Typora" }) +hl.bind("SUPER + SHIFT + SLASH", hl.dsp.exec_cmd("uwsm-app -- 1password"), { description = "Passwords" }) + +-- Web app bindings. +hl.bind("SUPER + SHIFT + A", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://chatgpt.com"]]), { description = "ChatGPT" }) +hl.bind("SUPER + SHIFT + ALT + A", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://grok.com"]]), { description = "Grok" }) +hl.bind("SUPER + SHIFT + C", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"]]), { description = "Calendar" }) +hl.bind("SUPER + SHIFT + E", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://app.hey.com"]]), { description = "Email" }) +hl.bind("SUPER + SHIFT + Y", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://youtube.com/"]]), { description = "YouTube" }) +hl.bind("SUPER + SHIFT + ALT + G", hl.dsp.exec_cmd([[omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"]]), { description = "WhatsApp" }) +hl.bind("SUPER + SHIFT + CTRL + G", hl.dsp.exec_cmd([[omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"]]), { description = "Google Messages" }) +hl.bind("SUPER + SHIFT + P", hl.dsp.exec_cmd([[omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/"]]), { description = "Google Photos" }) +hl.bind("SUPER + SHIFT + X", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://x.com/"]]), { description = "X" }) +hl.bind("SUPER + SHIFT + ALT + X", hl.dsp.exec_cmd([[omarchy-launch-webapp "https://x.com/compose/post"]]), { description = "X Post" }) + +-- Add extra bindings below. +-- hl.bind("SUPER + SHIFT + R", hl.dsp.exec_cmd("alacritty -e ssh your-server"), { description = "SSH" }) + +-- Overwrite existing bindings with hl.unbind() first if needed. +-- hl.unbind("SUPER + SPACE") +-- hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("omarchy-menu"), { description = "Omarchy menu" }) + +-- Logitech MX Keys examples: +-- hl.bind("SUPER + SHIFT + S", hl.dsp.exec_cmd("omarchy-capture-screenshot")) +-- hl.bind("SUPER + H", hl.dsp.exec_cmd("voxtype record toggle")) +-- hl.bind("SUPER + PERIOD", hl.dsp.exec_cmd("omarchy-launch-walker -m symbols")) diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf deleted file mode 100644 index cf4f9ad0..00000000 --- a/config/hypr/hyprland.conf +++ /dev/null @@ -1,26 +0,0 @@ -# Learn how to configure Hyprland: https://wiki.hypr.land/Configuring/ - -# Use defaults Omarchy defaults (but don't edit these directly!) -source = ~/.local/share/omarchy/default/hypr/autostart.conf -source = ~/.local/share/omarchy/default/hypr/bindings/media.conf -source = ~/.local/share/omarchy/default/hypr/bindings/clipboard.conf -source = ~/.local/share/omarchy/default/hypr/bindings/tiling-v2.conf -source = ~/.local/share/omarchy/default/hypr/bindings/utilities.conf -source = ~/.local/share/omarchy/default/hypr/envs.conf -source = ~/.local/share/omarchy/default/hypr/looknfeel.conf -source = ~/.local/share/omarchy/default/hypr/input.conf -source = ~/.local/share/omarchy/default/hypr/windows.conf -source = ~/.config/omarchy/current/theme/hyprland.conf - -# Change your own setup in these files (and overwrite any settings from defaults!) -source = ~/.config/hypr/monitors.conf -source = ~/.config/hypr/input.conf -source = ~/.config/hypr/bindings.conf -source = ~/.config/hypr/looknfeel.conf -source = ~/.config/hypr/autostart.conf - -# Toggle config flags dynamically -source = ~/.local/state/omarchy/toggles/hypr/*.conf - -# Add any other personal Hyprland configuration below -# windowrule = workspace 5, match:class qemu diff --git a/config/hypr/hyprland.lua b/config/hypr/hyprland.lua new file mode 100644 index 00000000..af2ce6db --- /dev/null +++ b/config/hypr/hyprland.lua @@ -0,0 +1,42 @@ +-- Learn how to configure Hyprland: https://wiki.hypr.land/Configuring/Start/ + +local home = os.getenv("HOME") or "" + +-- Hyprland recommends require() for split Lua configs. These two roots let us +-- load user modules from ~/.config and Omarchy defaults from $OMARCHY_PATH. +package.path = home .. "/.config/?.lua;" .. (os.getenv("OMARCHY_PATH") or (home .. "/.local/share/omarchy")) .. "/?.lua;" .. package.path + +local paths = require("default.hypr.paths") + +-- Use Omarchy defaults, but don't edit these directly. +require("default.hypr.autostart") +require("default.hypr.bindings.media") +require("default.hypr.bindings.clipboard") +require("default.hypr.bindings.tiling-v2") +require("default.hypr.bindings.utilities") +require("default.hypr.envs") +require("default.hypr.looknfeel") +require("default.hypr.input") +require("default.hypr.windows") + +-- Current theme overrides. +do + local theme = io.open(paths.config_home .. "/omarchy/current/theme/hyprland.lua", "r") + if theme then + theme:close() + require("omarchy.current.theme.hyprland") + end +end + +-- Change your own setup in these files and override defaults. +require("hypr.monitors") +require("hypr.input") +require("hypr.bindings") +require("hypr.looknfeel") +require("hypr.autostart") + +-- Toggle config flags dynamically. +require("default.hypr.toggles") + +-- Add any other personal Hyprland configuration below. +-- hl.window_rule({ match = { class = "qemu" }, workspace = "5" }) diff --git a/config/hypr/input.conf b/config/hypr/input.conf deleted file mode 100644 index ad15ddaf..00000000 --- a/config/hypr/input.conf +++ /dev/null @@ -1,53 +0,0 @@ -# Control your input devices -# See https://wiki.hypr.land/Configuring/Basics/Variables/#input -input { - # Use multiple keyboard layouts and switch between them with Left Alt + Right Alt - # kb_layout = us,dk,eu - - # Use a specific keyboard variant if needed (e.g. intl for international keyboards) - # kb_variant = intl - - kb_options = compose:caps # ,grp:alts_toggle - - # Change speed of keyboard repeat - repeat_rate = 40 - repeat_delay = 250 - - # Start with numlock on by default - numlock_by_default = true - - # Increase sensitivity for mouse/trackpad (default: 0) - # sensitivity = 0.35 - - # Turn off mouse acceleration (default: adaptive) - # accel_profile = flat - - touchpad { - # Use natural (inverse) scrolling - # natural_scroll = true - - # Use two-finger clicks for right-click instead of lower-right corner - clickfinger_behavior = true - - # Control the speed of your scrolling - scroll_factor = 0.4 - - # Enable the touchpad while typing - # disable_while_typing = false - - # Left-click-and-drag with three fingers - # drag_3fg = 1 - } -} - -# Scroll nicely in the terminal -windowrule = match:class (Alacritty|kitty|foot), scroll_touchpad 1.5 -windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2 - -# Enable touchpad gestures for changing workspaces -# See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Gestures/ -# gesture = 3, horizontal, workspace - -# Enable touchpad gestures for moving focus (helpful on scrolling layout) -# gesture = 3, left, dispatcher, movefocus, l -# gesture = 3, right, dispatcher, movefocus, r diff --git a/config/hypr/input.lua b/config/hypr/input.lua new file mode 100644 index 00000000..d3ef0d20 --- /dev/null +++ b/config/hypr/input.lua @@ -0,0 +1,55 @@ +-- Control your input devices. +-- See https://wiki.hypr.land/Configuring/Basics/Variables/#input +hl.config({ + input = { + -- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt. + -- kb_layout = "us,dk,eu", + + -- Use a specific keyboard variant if needed (e.g. intl for international keyboards). + -- kb_variant = "intl", + + kb_options = "compose:caps", -- ,grp:alts_toggle + + -- Change speed of keyboard repeat. + repeat_rate = 40, + repeat_delay = 250, + + -- Start with numlock on by default. + numlock_by_default = true, + + -- Increase sensitivity for mouse/trackpad (default: 0). + -- sensitivity = 0.35, + + -- Turn off mouse acceleration (default: adaptive). + -- accel_profile = "flat", + + touchpad = { + -- Use natural (inverse) scrolling. + -- natural_scroll = true, + + -- Use two-finger clicks for right-click instead of lower-right corner. + clickfinger_behavior = true, + + -- Control the speed of your scrolling. + scroll_factor = 0.4, + + -- Enable the touchpad while typing. + -- disable_while_typing = false, + + -- Left-click-and-drag with three fingers. + -- drag_3fg = 1, + }, + }, +}) + +-- Scroll nicely in the terminal. +hl.window_rule({ match = { class = "(Alacritty|kitty|foot)" }, scroll_touchpad = 1.5 }) +hl.window_rule({ match = { class = "com.mitchellh.ghostty" }, scroll_touchpad = 0.2 }) + +-- Enable touchpad gestures for changing workspaces. +-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Gestures/ +-- hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" }) + +-- Enable touchpad gestures for moving focus (helpful on scrolling layout). +-- hl.gesture({ fingers = 3, direction = "left", action = function() hl.dispatch(hl.dsp.focus({ direction = "l" })) end }) +-- hl.gesture({ fingers = 3, direction = "right", action = function() hl.dispatch(hl.dsp.focus({ direction = "r" })) end }) diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf deleted file mode 100644 index ea30461d..00000000 --- a/config/hypr/looknfeel.conf +++ /dev/null @@ -1,40 +0,0 @@ -# Change the default Omarchy look'n'feel - -# https://wiki.hypr.land/Configuring/Basics/Variables/#general -general { - # No gaps between windows or borders - # gaps_in = 0 - # gaps_out = 0 - # border_size = 0 - - # Change to niri-like side-scrolling layout - # layout = scrolling -} - -# https://wiki.hypr.land/Configuring/Basics/Variables/#decoration -decoration { - # Use round window corners - # rounding = 8 - - # Dim unfocused windows (0.0 = no dim, 1.0 = fully dimmed) - # dim_inactive = true - # dim_strength = 0.15 -} - -# https://wiki.hypr.land/Configuring/Basics/Variables/#animations -animations { - # Disable all animations - # enabled = no -} - -# https://wiki.hypr.land/Configuring/Basics/Variables/#layout -layout { - # Avoid overly wide single-window layouts on wide screens - # single_window_aspect_ratio = 1 1 -} - -# https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ -scrolling { - # See only one column per screen instead of two - # column_width = 0.97 -} diff --git a/config/hypr/looknfeel.lua b/config/hypr/looknfeel.lua new file mode 100644 index 00000000..a86d053e --- /dev/null +++ b/config/hypr/looknfeel.lua @@ -0,0 +1,50 @@ +-- Change the default Omarchy look'n'feel. + +-- https://wiki.hypr.land/Configuring/Basics/Variables/#general +-- hl.config({ +-- general = { +-- -- No gaps between windows or borders. +-- gaps_in = 0, +-- gaps_out = 0, +-- border_size = 0, +-- +-- -- Change to niri-like side-scrolling layout. +-- layout = "scrolling", +-- }, +-- }) + +-- https://wiki.hypr.land/Configuring/Basics/Variables/#decoration +-- hl.config({ +-- decoration = { +-- -- Use round window corners. +-- rounding = 8, +-- +-- -- Dim unfocused windows (0.0 = no dim, 1.0 = fully dimmed). +-- dim_inactive = true, +-- dim_strength = 0.15, +-- }, +-- }) + +-- https://wiki.hypr.land/Configuring/Basics/Variables/#animations +-- hl.config({ +-- animations = { +-- -- Disable all animations. +-- enabled = false, +-- }, +-- }) + +-- https://wiki.hypr.land/Configuring/Basics/Variables/#layout +-- hl.config({ +-- layout = { +-- -- Avoid overly wide single-window layouts on wide screens. +-- single_window_aspect_ratio = { 1, 1 }, +-- }, +-- }) + +-- https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ +-- hl.config({ +-- scrolling = { +-- -- See only one column per screen instead of two. +-- column_width = 0.97, +-- }, +-- }) diff --git a/config/hypr/monitors.conf b/config/hypr/monitors.conf deleted file mode 100644 index badc9b28..00000000 --- a/config/hypr/monitors.conf +++ /dev/null @@ -1,13 +0,0 @@ -# See https://wiki.hypr.land/Configuring/Basics/Monitors/ -# List current monitors and resolutions possible: hyprctl monitors -# Format: monitor = [port], resolution, position, scale - -# Default configuration -env = GDK_SCALE,2 -monitor=,preferred,auto,auto - -# Portrait/rotated secondary monitor (transform: 1 = 90°, 3 = 270°) -# monitor = DP-2, preferred, auto, 1, transform, 1 - -# Disable the second ghost monitor on an Apple 6K XDR over Thunderbolt -# monitor=DP-2,disable diff --git a/config/hypr/monitors.lua b/config/hypr/monitors.lua new file mode 100644 index 00000000..b51a5820 --- /dev/null +++ b/config/hypr/monitors.lua @@ -0,0 +1,25 @@ +-- See https://wiki.hypr.land/Configuring/Basics/Monitors/ +-- List current monitors and resolutions possible: hyprctl monitors all + +-- Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K. +hl.env("GDK_SCALE", "2") +hl.monitor({ output = "", mode = "preferred", position = "auto", scale = "auto" }) + +-- Good compromise for 27" or 32" 4K monitors (but fractional!) +-- hl.env("GDK_SCALE", "1.75") +-- hl.monitor({ output = "", mode = "preferred", position = "auto", scale = 1.6 }) + +-- Straight 1x setup for low-resolution displays like 1080p or 1440p. +-- Or for ultrawide monitors like 34" 3440x1440 or 49" 5120x1440. +-- hl.env("GDK_SCALE", "1") +-- hl.monitor({ output = "", mode = "preferred", position = "auto", scale = 1 }) + +-- Portrait/rotated secondary monitor (transform: 1 = 90°, 3 = 270°) +-- hl.monitor({ output = "DP-2", mode = "preferred", position = "auto", scale = 1, transform = 1 }) + +-- Example for Framework 13 w/ 6K XDR Apple display. +-- hl.monitor({ output = "DP-5", mode = "6016x3384@60", position = "auto", scale = 2 }) +-- hl.monitor({ output = "eDP-1", mode = "2880x1920@120", position = "auto", scale = 2 }) + +-- Disable the second ghost monitor on an Apple 6K XDR over Thunderbolt. +-- hl.monitor({ output = "DP-2", disabled = true })