# Copyright (C) 2020-2024 Aditya Shakya # # Hyprland configuration file for Archcraft # Hyprland Version: 0.41.2 #-- Source Files ----------------------------------------------- source = ~/.config/hypr/hyprtheme.conf env = XDG_CURRENT_DESKTOP,sway exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP #-- General ---------------------------------------------------- general { border_size = $hypr_border_size no_border_on_floating = false gaps_in = $hypr_gaps_in gaps_out = $hypr_gaps_out gaps_workspaces = $hypr_gaps_ws col.active_border = $active_border_col_1 $active_border_col_2 $gradient_angle col.inactive_border = $inactive_border_col_1 $inactive_border_col_2 $gradient_angle col.nogroup_border = $group_border_col col.nogroup_border_active = $group_border_active_col layout = dwindle no_focus_fallback = false # apply_sens_to_raw = false resize_on_border = true extend_border_grab_area = 15 hover_icon_on_border = true allow_tearing = false resize_corner = 0 } #-- Decoration ------------------------------------------------- decoration { rounding = $hypr_rounding active_opacity = 1.0 inactive_opacity = 0.95 fullscreen_opacity = 1.0 drop_shadow = true shadow_range = 25 shadow_render_power = 3 shadow_ignore_window = false col.shadow = $active_shadow_col col.shadow_inactive = $inactive_shadow_col shadow_offset = 0 0 shadow_scale = 1.0 dim_inactive = false dim_strength = 0.5 dim_special = 0.2 dim_around = 0.4 #screen_shader = blur { enabled = false size = 8 passes = 1 ignore_opacity = false new_optimizations = true xray = false noise = 0.0117 contrast = 0.8916 brightness = 0.8172 vibrancy = 0.1696 vibrancy_darkness = 0.0 special = true popups = false popups_ignorealpha = 0.2 } } #-- Animations ------------------------------------------------- animations { enabled = true first_launch_animation = true animation = windowsIn,1,5,default,popin 0% animation = windowsOut,1,5,default,popin animation = windowsMove,1,5,default,slide animation = layersIn,1,4,default,slide animation = layersOut,1,4,default,slide animation = fadeIn,1,8,default animation = fadeOut,1,8,default animation = fadeSwitch,1,8,default animation = fadeShadow,1,8,default animation = fadeDim,1,8,default animation = fadeLayersIn,1,8,default animation = fadeLayersOut,1,8,default animation = border,1,20,default animation = borderangle,1,20,default,once animation = workspaces, 1,5,default,slide animation = specialWorkspace,1,5,default,fade } #-- Input: Keyboard, Mouse, Touchpad --------------------------- input { kb_model = kb_layout = kb_variant = kb_options = kb_rules = kb_file = numlock_by_default = false resolve_binds_by_sym = false repeat_rate = 25 repeat_delay = 600 sensitivity = 1.0 accel_profile = adaptive force_no_accel = false left_handed = false scroll_points = scroll_method = 2fg scroll_button = 0 scroll_button_lock = 0 scroll_factor = 1.0 natural_scroll = false follow_mouse = 1 mouse_refocus = true float_switch_override_focus = 1 special_fallthrough = false off_window_axis_events = 1 touchpad { disable_while_typing = true natural_scroll = false scroll_factor = 1.0 middle_button_emulation = false tap_button_map = clickfinger_behavior = false tap-to-click = true drag_lock = false tap-and-drag = true } touchdevice { enabled = true transform = 0 output = } tablet { transform = 0 output = region_position = 0 0 region_size = 0 0 relative_input = false left_handed = false active_area_size = 0 0 active_area_position = 0 0 } } #-- Workspace Gestures ----------------------------------------- gestures { workspace_swipe = true workspace_swipe_fingers = 3 workspace_swipe_min_fingers = false workspace_swipe_distance = 300 workspace_swipe_touch = false workspace_swipe_invert = true workspace_swipe_min_speed_to_force = 30 workspace_swipe_cancel_ratio = 0.5 workspace_swipe_create_new = true workspace_swipe_direction_lock = true workspace_swipe_direction_lock_threshold = 10 workspace_swipe_forever = false workspace_swipe_use_r = false } #-- Group ------------------------------------------------------ group { insert_after_current = true focus_removed_window = true col.border_active = $group_border_active_col col.border_inactive = $group_border_inactive_col col.border_locked_active = $group_border_locked_active_col col.border_locked_inactive = $group_border_locked_inactive_col groupbar { enabled = true font_family = $groupbar_font_family font_size = $groupbar_font_size gradients = true height = 14 stacked = false priority = 3 render_titles = true scrolling = true text_color = $groupbar_text_color col.active = $group_border_active_col col.inactive = $group_border_inactive_col col.locked_active = $group_border_locked_active_col col.locked_inactive = $group_border_locked_inactive_col } } #-- Miscellaneous ---------------------------------------------- misc { disable_hyprland_logo = true disable_splash_rendering = false col.splash = $groupbar_text_color font_family = $groupbar_font_family splash_font_family = $groupbar_font_family force_default_wallpaper = 0 vfr = true vrr = 0 mouse_move_enables_dpms = false key_press_enables_dpms = false always_follow_on_dnd = true layers_hog_keyboard_focus = true animate_manual_resizes = false animate_mouse_windowdragging = false disable_autoreload = false enable_swallow = false swallow_regex = swallow_exception_regex = focus_on_activate = true # no_direct_scanout = false mouse_move_focuses_monitor = true render_ahead_of_time = false render_ahead_safezone = 1 allow_session_lock_restore = false background_color = 0x000000 close_special_on_empty = true new_window_takes_over_fullscreen = 0 initial_workspace_tracking = 1 middle_click_paste = true } #-- Binds ------------------------------------------------------ binds { pass_mouse_when_bound = false scroll_event_delay = 300 workspace_back_and_forth = false allow_workspace_cycles = false workspace_center_on = 0 focus_preferred_method = 0 ignore_group_lock = false movefocus_cycles_fullscreen = true disable_keybind_grabbing = false window_direction_monitor_fallback = true } #-- Xwayland --------------------------------------------------- xwayland { use_nearest_neighbor = true force_zero_scaling = false } #-- OpenGL ----------------------------------------------------- opengl { nvidia_anti_flicker = true force_introspection = 2 } #-- Cursor ----------------------------------------------------- cursor { no_hardware_cursors = false no_break_fs_vrr = false min_refresh_rate = 24 hotspot_padding = 1 inactive_timeout = 0 no_warps = false persistent_warps = false warp_on_change_workspace = false default_monitor = zoom_factor = 1.0 zoom_rigid = false enable_hyprcursor = true hide_on_key_press = false hide_on_touch = false } #-- Hyprcursor ------------------------------------------------- # # You will need to obtain themes yourself. If you are on the hyprland Discord server, see #hyprcursor-themes. # Put your theme(s) in ~/.local/share/icons or ~/.icons # Then, uncomment these two lines and replace `MyCursor` with the name of your theme. # #env = HYPRCURSOR_THEME,MyCursor #env = HYPRCURSOR_SIZE,24 #-- Debug (Only for developers) -------------------------------- debug { overlay = false damage_blink = false disable_logs = false disable_time = true damage_tracking = 2 enable_stdout_logs = false manual_crash = 0 suppress_errors = false watchdog_timeout = 5 disable_scale_checks = false error_limit = 5 error_position = 0 colored_stdout_logs = true } #-- Multi GPUs ------------------------------------------------- # # If your host machine uses multiple GPUs, you may want to primarily use one GPU # for rendering all the elements for Hyprland including windows, animations, and # another for hardware acceleration for certain applications, etc. # # Run : `lspci | grep -E 'VGA|3D'` to list all the video devices available # Then Run : `ls -l /dev/dri/by-path` to match the bus IDs and determine your integrated and dedicated GPUs # # After determining which “card” belongs to which GPU, we now have to tell Hyprland the GPU we want to use primarily. # We can do so by using the WLR_DRM_DEVICES variable. # # env = WLR_DRM_DEVICES,/dev/dri/cardN # Example : # Here, we tell Hyprland to set priorities. If card1 isn’t available for whatever reason, use card0. # The colon is for setting priorities, essentially. #env = WLR_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 #-- Blurring Layer Surfaces ------------------------------------ #layerrule = blur,waybar #-- Output ----------------------------------------------------- monitor = DP-1,2560x1440@60,2560x0,1 monitor = HDMI-A-1,2560x1440@60,0x0,1 # Example : #~ Laptop screen, mode: 1920x1080, scale: 1, gaps of 10 each side #monitor = eDP-1,1920x1080@60,0x0,1 #monitor = eDP-1,addreserved,10,10,10,10 #monitor = eDP-1,transform,0 #workspace = eDP-1,1 #~ External monitor, mode: 1920x1080, position: right of laptop, scale: 1.5, gaps of 20 each side, rotated 90d #monitor = HDMI-A-1,addreserved,20,20,20,20 #monitor = HDMI-A-1,transform,1 #workspace = HDMI-A-1,2 workspace = HDMI-A-1,1 workspace = HDMI-A-1,2 workspace = DP-1,3 # Workspace Rules #workspace = 3, rounding:false, decorate:false #workspace = name:coding, rounding:false, decorate:false, gapsin:0, gapsout:0, border:false, decorate:false, monitor:DP-1 #workspace = 8,bordersize:8 #workspace = name:Hello, monitor:DP-1, default:true #-- Layout : Dwindle ------------------------------------------- dwindle { pseudotile = false force_split = 0 preserve_split = false smart_split = false smart_resizing = true permanent_direction_override = false special_scale_factor = 0.8 split_width_multiplier = 1.0 no_gaps_when_only = false use_active_for_splits = true default_split_ratio = 1.0 } $notifycmd = notify-send -h string:x-canonical-private-synchronous:hypr-cfg -u low bind = SUPER, G, togglegroup bind = SUPER, E, moveoutofgroup bind = SUPER, G, exec, $notifycmd 'Toggled Group Mode' bind = SUPER, H, changegroupactive, b bind = SUPER, L, changegroupactive, f # bind = SUPER, A, changegroupactive, b # bind = SUPER, D, changegroupactive, f bind = SUPER_SHIFT, L, lockactivegroup, toggle bind = SUPER_SHIFT, L, exec, $notifycmd 'Toggled Group Lock' #-- Layout : Master -------------------------------------------- master { allow_small_split = false special_scale_factor = 0.8 mfact = 0.55 new_status = slave new_on_top = false new_on_active = none no_gaps_when_only = false orientation = left inherit_fullscreen = true always_center_master = false smart_resizing = true drop_at_cursor = true } #-- Window Rules ----------------------------------------------- windowrule = float, foot-float|alacritty-float windowrule = float, yad|nm-connection-editor|pavucontrolk windowrule = float, xfce-polkit|kvantummanager|qt5ct windowrule = float, feh|Viewnior|Gpicview|Gimp|MPlayer windowrule = float, VirtualBox Manager|qemu|Qemu-system-x86_64 windowrule = float, title:File Operation Progress windowrule = float, title:Confirm to replace files windowrule = float, Yad|yad windowrule = size 60% 64%, Yad|yad windowrule = float, io.calamares.calamares windowrule = center, io.calamares.calamares windowrule = float,title:^(Archcraft Installer)(.*)$ windowrule = size 60% 64%, Viewnior windowrule = center, Viewnior windowrule = animation slide down,foot-full windowrule = animation slide up,wlogout #windowrule = float,WINDOW #windowrule = tile,WINDOW #windowrule = fullscreen,WINDOW #windowrule = nofullscreenrequest,WINDOW #windowrule = move 69 420,WINDOW #windowrule = size 420 69,WINDOW #windowrule = minsize 420 69,WINDOW #windowrule = maxsize 420 69,WINDOW #windowrule = center,WINDOW #windowrule = pseudo,WINDOW #windowrule = monitor 0,WINDOW #windowrule = workspace 12,WINDOW #windowrule = opacity 1.0,WINDOW #windowrule = opaque 1.0,WINDOW #windowrule = animation slide left,WINDOW #windowrule = rounding 10,WINDOW #windowrule = noblur,WINDOW #windowrule = nofocus,WINDOW #windowrule = noborder,WINDOW #windowrule = noshadow,WINDOW #windowrule = forceinput,WINDOW #windowrule = windowdance,WINDOW #windowrule = pin,WINDOW #windowrule = noanim,WINDOW #windowrule = bordercolor color color,WINDOW #windowrule = idleinhibit none,WINDOW #windowrule = unset,WINDOW #windowrule = nomaxsize,WINDOW #-- Keybindings ------------------------------------------------ $alacritty = ~/.config/hypr/scripts/alacritty $foot = ~/.config/hypr/scripts/foot $volume = ~/.config/hypr/scripts/volume $backlight = ~/.config/hypr/scripts/brightness $screenshot = ~/.config/hypr/scripts/screenshot $lockscreen = ~/.config/hypr/scripts/lockscreen $wlogout = ~/.config/hypr/scripts/wlogout $colorpicker = ~/.config/hypr/scripts/colorpicker $files = thunar $editor = geany $browser = firefox $rofi_launcher = ~/.config/hypr/scripts/rofi_launcher $rofi_runner = ~/.config/hypr/scripts/rofi_runner $rofi_windows = ~/.config/hypr/scripts/rofi_windows $rofi_music = ~/.config/hypr/scripts/rofi_music $rofi_network = ~/.config/hypr/scripts/rofi_network $rofi_ssh = ~/.config/hypr/scripts/rofi_ssh $rofi_powermenu = ~/.config/hypr/scripts/rofi_powermenu $rofi_screenshot = ~/.config/hypr/scripts/rofi_screenshot $rofi_asroot = ~/.config/hypr/scripts/rofi_asroot $wofi_menu = ~/.config/hypr/scripts/wofi_menu $wofi_powermenu = ~/.config/hypr/scripts/wofi_powermenu # -- Terminal : alacritty -- bind = SUPER, Return, exec, $alacritty bind = SUPER_SHIFT, Return, exec, $alacritty -f bind = SUPER, T, exec, $alacritty -F # -- Terminal : foot -- #bind = SUPER, Return, exec, $foot #bind = SUPER_SHIFT, Return, exec, $foot -f #bind = SUPER_ALT, Return, exec, $foot -s #bind = SUPER, T, exec, $foot -F # -- Apps -- bind = SUPER_SHIFT, F, exec, $files bind = SUPER_SHIFT, E, exec, $editor bind = SUPER_SHIFT, W, exec, $browser # -- Rofi -- bind = SUPER, P, exec, $rofi_launcher bind = SUPER, Q, exec, $rofi_windows # bind = ALT, F1, exec, $rofi_launcher # bind = ALT, F2, exec, $rofi_runner # bind = SUPER, R, exec, $rofi_asroot bind = SUPER, M, exec, $rofi_music bind = SUPER, N, exec, $rofi_network bind = SUPER, B, exec, $rofi_ssh bind = SUPER, R, exec, $rofi_powermenu # bind = SUPER, A, exec, $rofi_screenshot # -- Wofi -- #bindr = SUPER, SUPER_L, exec, $wofi_menu #bind = SUPER, D, exec, $wofi_menu #bind = SUPER, X, exec, $wofi_powermenu # -- Misc -- #bind = SUPER, N, exec, nm-connection-editor #bind = SUPER, X, exec, $wlogout # bind = SUPER, P, exec, $colorpicker #bind = CTRL_ALT, L, exec, $lockscreen bind = SUPER, L, exec, hyprlock # -- Function keys -- bind = ,XF86MonBrightnessUp, exec, $backlight --inc bind = ,XF86MonBrightnessDown, exec, $backlight --dec bind = ,XF86AudioRaiseVolume, exec, $volume --inc bind = ,XF86AudioLowerVolume, exec, $volume --dec bind = ,XF86AudioMute, exec, $volume --toggle bind = ,XF86AudioMicMute, exec, $volume --toggle-mic bind = ,XF86AudioNext, exec, mpc next bind = ,XF86AudioPrev, exec, mpc prev bind = ,XF86AudioPlay, exec, mpc toggle bind = ,XF86AudioStop, exec, mpc stop # -- Screenshots -- bind = , Print, exec, $screenshot --now bind = ALT, Print, exec, $screenshot --in5 bind = SHIFT, Print, exec, $screenshot --in10 bind = CTRL, Print, exec, $screenshot --win bind = SUPER, Print, exec, $screenshot --area # -- Hyprland -- bind = SUPER, W, killactive, # bind = SUPER, C, killactive, bind = CTRL_ALT, Delete, exit, bind = SUPER, F, fullscreen, 0 bind = SUPER, F, exec, $notifycmd 'Fullscreen Mode' bind = SUPER, S, pseudo, bind = SUPER, S, exec, $notifycmd 'Pseudo Mode' bind = SUPER, Space, togglefloating, bind = SUPER, Space, centerwindow, # Change Focus bind = SUPER, A, movefocus, l bind = SUPER, D, movefocus, l # bind = SUPER, left, movefocus, l # bind = SUPER, right, movefocus, r bind = SUPER, up, movefocus, u bind = SUPER, down, movefocus, d # Move Active bind = SUPER_SHIFT, left, movewindow, l bind = SUPER_SHIFT, right, movewindow, r bind = SUPER_SHIFT, up, movewindow, u bind = SUPER_SHIFT, down, movewindow, d # Resize Active binde = SUPER_CTRL, left, resizeactive, -20 0 binde = SUPER_CTRL, right, resizeactive, 20 0 binde = SUPER_CTRL, up, resizeactive, 0 -20 binde = SUPER_CTRL, down, resizeactive, 0 20 # Move Active (Floating Only) binde = SUPER_ALT, left, moveactive, -20 0 binde = SUPER_ALT, right, moveactive, 20 0 binde = SUPER_ALT, up, moveactive, 0 -20 binde = SUPER_ALT, down, moveactive, 0 20 # Switch between windows bind = SUPER,Tab,cyclenext, bind = SUPER,Tab,bringactivetotop, # Workspaces bind = SUPER, 1, workspace, 1 bind = SUPER, 2, workspace, 2 bind = SUPER, 3, workspace, 3 bind = SUPER, 4, workspace, 4 bind = SUPER, 5, workspace, 5 bind = SUPER, 6, workspace, 6 bind = SUPER, 7, workspace, 7 bind = SUPER, 8, workspace, 8 bind = SUPER, 9, workspace, 9 bind = SUPER, 0, workspace, 10 bind = SUPER, MINUS, togglespecialworkspace, special # Send to Workspaces bind = SUPER_SHIFT, 1, movetoworkspace, 1 bind = SUPER_SHIFT, 2, movetoworkspace, 2 bind = SUPER_SHIFT, 3, movetoworkspace, 3 bind = SUPER_SHIFT, 4, movetoworkspace, 4 bind = SUPER_SHIFT, 5, movetoworkspace, 5 bind = SUPER_SHIFT, 6, movetoworkspace, 6 bind = SUPER_SHIFT, 7, movetoworkspace, 7 bind = SUPER_SHIFT, 8, movetoworkspace, 8 bind = SUPER_SHIFT, 9, movetoworkspace, 9 bind = SUPER_SHIFT, 0, movetoworkspace, 10 bind = SUPER_SHIFT, MINUS, movetoworkspace, special # Seamless Workspace Switching bind = CTRL_ALT, left, workspace, e-1 bind = CTRL_ALT, right, workspace, e+1 bind = CTRL_ALT_SHIFT, left, movetoworkspace, e-1 bind = CTRL_ALT_SHIFT, right, movetoworkspace, e+1 # Change Workspace Mode bind = SUPER_CTRL, F, workspaceopt, allfloat bind = SUPER_CTRL, F, exec, $notifycmd 'Toggled All Float Mode' bind = SUPER_CTRL, S, workspaceopt, allpseudo bind = SUPER_CTRL, S, exec, $notifycmd 'Toggled All Pseudo Mode' # Misc bind = SUPER_SHIFT, P, pin, bind = SUPER_SHIFT, P, exec, $notifycmd 'Toggled Pin' bind = SUPER_SHIFT, S, swapnext # bind = SUPER_SHIFT, O, toggleopaque bindl = ,switch:Lid Switch, exec, $lockscreen #-- Mouse Buttons ---------------------------------------------- bindm=SUPER, mouse:272, movewindow bindm=SUPER, mouse:273, resizewindow #-- Startup ---------------------------------------------------- exec-once = hypridle exec-once=~/.config/hypr/scripts/startup