Files
dotfiles/hypr/hyprland.lua
2026-06-11 19:38:59 +05:30

347 lines
8.2 KiB
Lua

-- 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 = "/home/sortedcord/.config/rofi/launch.sh -show drun"
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/wallpapers/minecraft/stahlgrave-tower.webp -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")