-- This is an example Hyprland Lua config file. -- Refer to the wiki for more information. -- https://wiki.hypr.land/Configuring/Start/ -- Please note not all available settings / options are set here. -- For a full list, see the wiki -- You can (and should!!) split this configuration into multiple files -- Create your files separately and then require them like this: -- require("myColors") require("environment") local colors = require("rose-pine") ------------------ ---- MONITORS ---- ------------------ -- See https://wiki.hypr.land/Configuring/Basics/Monitors/ hl.monitor({ output = "DP-1", mode = "1920x1080@100", position = "0x0", scale = 1, }) hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "1920x0", scale = 1.25, }) --------------------- ---- MY PROGRAMS ---- --------------------- -- Set programs that you use local terminal = "kitty" local fileManager = "kitty" local menu = "hyprlauncher" local browser = "vivaldi-stable --enable-features=AcceleratedVideoEncoder" local browserPrivate = "vivaldi --incognito --enable-features=AcceleratedVideoEncoder" ------------------- ---- AUTOSTART ---- ------------------- -- See https://wiki.hypr.land/Configuring/Basics/Autostart/ -- Autostart necessary processes (like notifications daemons, status bars, etc.) -- Or execute your favorite apps at launch like this: hl.on("hyprland.start", function() hl.exec_cmd("swaybg -i /home/sortedcord/Pictures/Wallpapers/cliff.jpg -m fill") hl.exec_cmd("wayle shell") hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") hl.exec_cmd("quickshell") hl.exec_cmd("hyprpm reload -n") end) ------------------------------- ---- ENVIRONMENT VARIABLES ---- ------------------------------- -- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/ hl.env("XCURSOR_SIZE", "24") hl.env("HYPRCURSOR_SIZE", "24") hl.env("bitdepth", "10") hl.env("XDG_DESKTOP_PORTAL_HYPRLAND_FORCE_SHM", "1") ----------------------- ----- PERMISSIONS ----- ----------------------- -- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/ -- Please note permission changes here require a Hyprland restart and are not applied on-the-fly -- for security reasons -- hl.config({ -- ecosystem = { -- enforce_permissions = true, -- }, -- }) -- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow") -- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow") -- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow") ----------------------- ---- LOOK AND FEEL ---- ----------------------- -- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/ hl.config({ general = { gaps_in = 3, gaps_out = 3, border_size = 2, col = { active_border = colors.rose, inactive_border = colors.muted, }, -- Set to true to enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false, -- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on allow_tearing = false, layout = "hy3", }, decoration = { rounding = 0, rounding_power = 0, -- Change transparency of focused and unfocused windows active_opacity = 1.0, inactive_opacity = 1.0, shadow = { enabled = false, range = 4, render_power = 3, color = 0xee1a1a1a, }, blur = { enabled = false, size = 3, passes = 1, vibrancy = 0.1696, }, }, animations = { enabled = false, }, }) -- hy3 plugin settings for i3-like tabbing & container layout hl.config({ plugin = { hy3 = { -- policy controlling what happens when a node is removed from a group, -- leaving only a group -- 0 = remove the nested group -- 1 = keep the nested group -- 2 = keep the nested group only if its parent is a tab group node_collapse_policy = 2, -- offset from group split direction when only one window is in a group group_inset = 10, -- if a tab group will automatically be created for the first window spawned in a workspace tab_first_window = false, -- tab group settings tabs = { -- height of the tab bar height = 20, -- padding between the tab bar and its focused node padding = 3, -- the tab bar should animate in/out from the top instead of below the window from_top = false, -- radius of tab bar corners radius = 0, -- tab bar border width border_width = 2, -- render the window title on the bar render_text = true, -- center the window title text_center = true, -- font to render the window title with text_font = "Sans", -- height of the window title text_height = 10, -- left padding of the window title text_padding = 3, colors = { -- active tab bar segment colors (using Rose Pine colors, fully opaque) active = colors.rose, active_border = colors.rose, active_text = colors.base, -- active tab bar segment colors for bars on an unfocused monitor active_alt_monitor = colors.subtle, active_alt_monitor_border = colors.subtle, active_alt_monitor_text = colors.base, -- focused tab bar segment colors (focused node in unfocused container) focused = colors.muted, focused_border = colors.muted, focused_text = colors.text, -- inactive tab bar segment colors inactive = colors.surface, inactive_border = colors.overlay, inactive_text = colors.muted, -- urgent tab bar segment colors urgent = colors.love, urgent_border = colors.love, urgent_text = colors.base, -- locked tab bar segment colors locked = colors.gold, locked_border = colors.gold, locked_text = colors.base, }, -- if tab backgrounds should be blurred blur = false, -- opacity multiplier for tabs opacity = 1.0, }, -- autotiling settings autotile = { enable = false, ephemeral_groups = true, trigger_width = 0, trigger_height = 0, workspaces = "all", }, }, }, }) -- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/ -- Default springs -- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/ -- "Smart gaps" / "No gaps when only" -- uncomment all if you wish to use that. -- hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 }) -- hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 }) -- hl.window_rule({ -- name = "no-gaps-wtv1", -- match = { float = false, workspace = "w[tv1]" }, -- border_size = 0, -- rounding = 0, -- }) -- hl.window_rule({ -- name = "no-gaps-f1", -- match = { float = false, workspace = "f[1]" }, -- border_size = 0, -- rounding = 0, -- }) -- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more hl.config({ dwindle = { preserve_split = true, -- You probably want this }, }) -- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more hl.config({ master = { new_status = "master", }, }) -- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more hl.config({ scrolling = { fullscreen_on_one_column = true, }, }) ---------------- ---- MISC ---- ---------------- hl.config({ misc = { disable_hyprland_logo = true, -- If true disables the random hyprland logo / anime girl background. :( }, }) --------------- ---- INPUT ---- --------------- hl.config({ 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, }, }, }) hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace", }) -- Example per-device config -- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more hl.device({ name = "epic-mouse-v1", sensitivity = -0.5, }) --------------------- ---- KEYBINDINGS ---- --------------------- require("keybinds").setup({ terminal = terminal, menu = menu, browser = browser, browserPrivate = browserPrivate, }) -------------------------------- ---- WINDOWS AND WORKSPACES ---- -------------------------------- require("windowrules")