Finally add all dotfiles correctly
This commit is contained in:
40
hypr/hypridle.conf
Normal file
40
hypr/hypridle.conf
Normal file
@@ -0,0 +1,40 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
}
|
||||
|
||||
#listener {
|
||||
# timeout = 15 # 2.5min.
|
||||
# on-timeout = notify-send "Your are about to go idle"
|
||||
# on-resume = "notify-send "Resumed"
|
||||
#}
|
||||
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = brightnessctl -r # monitor backlight restore.
|
||||
}
|
||||
|
||||
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
|
||||
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5min
|
||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 330 # 5.5min
|
||||
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 1800 # 30min
|
||||
on-timeout = systemctl suspend # suspend pc
|
||||
}
|
||||
315
hypr/hyprland.conf
Normal file
315
hypr/hyprland.conf
Normal file
@@ -0,0 +1,315 @@
|
||||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPRLAND CONFIG.
|
||||
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
|
||||
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
#monitor = , preferred, auto, 1
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = thunar
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
exec-once = wl-paste --type text --watch cliphist store
|
||||
exec-once = wl-paste --type image --watch cliphist store
|
||||
exec-once = waybar & disown
|
||||
exec-once = librewolf & disown
|
||||
exec-once = swaync & disown
|
||||
exec-once = hypridle & disown
|
||||
exec-once = ~/.config/hypr/scripts/monitor_setup.sh
|
||||
exec-once = hyprctl dispatch exec "[workspace 3 silent] signal-desktop"
|
||||
exec-once = hyprctl dispatch exec "[workspace 3 silent] discord"
|
||||
exec-once = hyprctl dispatch exec "[workspace 3 silent] thunderbird"
|
||||
#exec-once = hyprctl dispatch exec "[workspace 5 silent] steam"
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,20
|
||||
env = HYPRCURSOR_SIZE,20
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 0
|
||||
gaps_out = 0
|
||||
|
||||
border_size = 1
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 0.9
|
||||
|
||||
shadow {
|
||||
enabled = false
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = no
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, return, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, F, togglefloating,
|
||||
bind = $mainMod, space, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
bind = $mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only,
|
||||
bind = $mainMod, L, exec, hyprlock
|
||||
bind = $mainMod, backslash, exec, ~/.config/hypr/scripts/monitor_setup.sh
|
||||
bind = SUPER, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
#bind = $mainMod, S, togglespecialworkspace, magic
|
||||
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
bind = SUPER_ALT_CTRL, L, exec, hyprctl keyword monitor "eDP-1,preferred,auto,1"
|
||||
|
||||
#Mouse Key Assignements
|
||||
#bind = , code:191, exec, $terminal
|
||||
#bind = , code:198, exec, $terminal
|
||||
|
||||
|
||||
# Lid Open & Closed
|
||||
bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
|
||||
# trigger when the switch is turning on
|
||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
297
hypr/hyprland.conf.save
Normal file
297
hypr/hyprland.conf.save
Normal file
@@ -0,0 +1,297 @@
|
||||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPRLAND CONFIG.
|
||||
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
|
||||
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
#monitor=eDP-1,disable
|
||||
monitor=DP-3,5120x1440@120,0x1440,0.833333
|
||||
monitor=DP-4,3440x1440@60,840x0,0.833333
|
||||
monitor = , preferred, auto, 0.83
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = dolphin
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
exec-once = waybar & librewolf & swaync & hypridle
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 0
|
||||
gaps_out = 0
|
||||
|
||||
border_size = 1
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, return, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, space, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
bind = $mainMod, Q, exec, hyprshot -m region --clipboard-only,
|
||||
bind = $mainMod, L, exec, hyprlock
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
35
hypr/hyprlock.conf
Normal file
35
hypr/hyprlock.conf
Normal file
@@ -0,0 +1,35 @@
|
||||
background {
|
||||
monitor =
|
||||
color = rgba(0, 0, 0, 1.0)
|
||||
|
||||
}
|
||||
input-field {
|
||||
monitor =
|
||||
size = 200, 50
|
||||
outline_thickness = 3
|
||||
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = false
|
||||
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
|
||||
outer_color = rgb(151515)
|
||||
inner_color = rgb(200, 200, 200)
|
||||
font_color = rgb(10, 10, 10)
|
||||
fade_on_empty = true
|
||||
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
|
||||
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
|
||||
hide_input = false
|
||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
||||
check_color = rgb(204, 136, 34)
|
||||
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
|
||||
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
||||
capslock_color = -1
|
||||
numlock_color = -1
|
||||
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
|
||||
invert_numlock = false # change color if numlock is off
|
||||
swap_font_color = false # see below
|
||||
|
||||
position = 0, -20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
130
hypr/scripts/monitor_setup.sh
Executable file
130
hypr/scripts/monitor_setup.sh
Executable file
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
# ~/.config/hypr/scripts/monitor_setup.sh
|
||||
notify-send -t 3000 "Monitor Setup" "Detecting display configuration..."
|
||||
LAPTOP="eDP-1"
|
||||
LID_STATE=$(grep -q "open" /proc/acpi/button/lid/LID/state && echo "open" || echo "closed")
|
||||
MONITORS=$(hyprctl monitors -j)
|
||||
|
||||
EXTERNAL=$(echo "$MONITORS" | jq -r '.[] | select(.name != "'$LAPTOP'") | .name' | head -1)
|
||||
|
||||
# Improved function to get the maximum resolution with highest refresh rate
|
||||
get_max_res() {
|
||||
local monitor=$1
|
||||
|
||||
# Get all available modes for the monitor
|
||||
local modes=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$monitor\") | .availableModes[]")
|
||||
|
||||
if [[ -z "$modes" ]]; then
|
||||
echo "preferred"
|
||||
return
|
||||
fi
|
||||
|
||||
# Find the mode with the highest resolution and refresh rate
|
||||
local max_pixels=0
|
||||
local max_refresh=0
|
||||
local best_mode="preferred"
|
||||
|
||||
while IFS= read -r mode; do
|
||||
# Extract width, height, and refresh rate
|
||||
local width=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $1}')
|
||||
local height=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $2}')
|
||||
local refresh=$(echo "$mode" | awk -F'@' '{print $2}' | sed 's/Hz//')
|
||||
|
||||
# Calculate total pixels (width × height) for better comparison
|
||||
local pixels=$((width * height))
|
||||
|
||||
# First prioritize by total pixel count (resolution), then by refresh rate
|
||||
if [[ $pixels -gt $max_pixels || ($pixels -eq $max_pixels && $(echo "$refresh > $max_refresh" | bc -l) -eq 1) ]]; then
|
||||
max_pixels=$pixels
|
||||
max_refresh=$refresh
|
||||
best_mode="${width}x${height}@${refresh}"
|
||||
fi
|
||||
done <<< "$modes"
|
||||
|
||||
echo "$best_mode"
|
||||
}
|
||||
|
||||
# Alternative method to get max resolution using hyprctl
|
||||
get_max_res_alt() {
|
||||
local monitor=$1
|
||||
local modes=$(hyprctl monitors -j | jq -r ".[] | select(.name == \"$monitor\") | .availableModes[]")
|
||||
|
||||
if [[ -z "$modes" ]]; then
|
||||
# Try querying wlr-randr directly as a fallback
|
||||
if command -v wlr-randr &> /dev/null; then
|
||||
modes=$(wlr-randr | grep -A 10 "$monitor" | grep -o '[0-9]\+x[0-9]\+@[0-9.]\+Hz')
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$modes" ]]; then
|
||||
echo "preferred"
|
||||
return
|
||||
fi
|
||||
|
||||
# Find highest resolution with best refresh rate
|
||||
local best_mode=$(echo "$modes" | sort -nr -k1 -t'x' -k2 -t'@' | head -1)
|
||||
echo "$best_mode"
|
||||
}
|
||||
|
||||
# Get resolution for monitors - try both methods
|
||||
EXT_RES=$(get_max_res "$EXTERNAL")
|
||||
if [[ "$EXT_RES" == "preferred" ]]; then
|
||||
EXT_RES=$(get_max_res_alt "$EXTERNAL")
|
||||
fi
|
||||
|
||||
LAPTOP_RES=$(get_max_res "$LAPTOP")
|
||||
if [[ "$LAPTOP_RES" == "preferred" ]]; then
|
||||
LAPTOP_RES=$(get_max_res_alt "$LAPTOP")
|
||||
fi
|
||||
|
||||
# Case 1: Only laptop
|
||||
if [ -z "$EXTERNAL" ]; then
|
||||
notify-send -t 3000 "Monitor Setup" "Laptop-only mode\nUsing: $LAPTOP_RES"
|
||||
hyprctl keyword monitor "$LAPTOP,$LAPTOP_RES,auto,1"
|
||||
|
||||
for ws in {1..5}; do
|
||||
hyprctl keyword "workspace $ws,monitor:$LAPTOP" >/dev/null 2>&1
|
||||
hyprctl dispatch workspace "$ws" >/dev/null 2>&1
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $LAPTOP" 2>/dev/null
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Case 2: External + open lid
|
||||
if [ "$LID_STATE" = "open" ]; then
|
||||
notify-send -t 3000 "Monitor Setup" "Dual monitor mode (Laptop + External)\nLaptop: $LAPTOP_RES\nExternal: $EXT_RES"
|
||||
hyprctl keyword monitor "$LAPTOP,$LAPTOP_RES,auto,1"
|
||||
hyprctl keyword monitor "$EXTERNAL,$EXT_RES,auto,1"
|
||||
|
||||
for ws in {1..3}; do
|
||||
hyprctl keyword "workspace $ws,monitor:$LAPTOP" >/dev/null 2>&1
|
||||
hyprctl dispatch workspace "$ws" >/dev/null 2>&1
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $LAPTOP" 2>/dev/null
|
||||
done
|
||||
for ws in {4..5}; do
|
||||
hyprctl keyword "workspace $ws,monitor:$EXTERNAL" >/dev/null 2>&1
|
||||
hyprctl dispatch workspace "$ws" >/dev/null 2>&1
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXTERNAL" 2>/dev/null
|
||||
done
|
||||
# Case 3: External + closed lid
|
||||
else
|
||||
notify-send -t 3000 "Monitor Setup" "External monitor only (Lid closed)\nUsing: $EXT_RES"
|
||||
hyprctl dispatch dpms off "$LAPTOP"
|
||||
hyprctl keyword monitor "$LAPTOP,disable"
|
||||
hyprctl keyword monitor "$EXTERNAL,$EXT_RES,0x0,1"
|
||||
|
||||
for ws in {1..5}; do
|
||||
hyprctl keyword "workspace $ws,monitor:$EXTERNAL" >/dev/null 2>&1
|
||||
hyprctl dispatch workspace "$ws" >/dev/null 2>&1
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXTERNAL" 2>/dev/null
|
||||
done
|
||||
fi
|
||||
|
||||
# Debug output - helpful for troubleshooting
|
||||
echo "Monitor Configuration:" > /tmp/hypr_monitor_debug.log
|
||||
echo "LAPTOP: $LAPTOP with resolution $LAPTOP_RES" >> /tmp/hypr_monitor_debug.log
|
||||
echo "EXTERNAL: $EXTERNAL with resolution $EXT_RES" >> /tmp/hypr_monitor_debug.log
|
||||
echo "LID_STATE: $LID_STATE" >> /tmp/hypr_monitor_debug.log
|
||||
hyprctl monitors >> /tmp/hypr_monitor_debug.log
|
||||
|
||||
notify-send -t 5000 "Monitor Setup Complete" "Active configuration:\n$(hyprctl monitors | grep -E 'Monitor|workspace|resolution')"
|
||||
118
hypr/scripts/monitor_setup.sh.dual-not_working
Executable file
118
hypr/scripts/monitor_setup.sh.dual-not_working
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env bash
|
||||
# Robust Monitor Setup with Workspace Assignments
|
||||
|
||||
notify-send "Monitor Setup" "Starting configuration..."
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 1: Reset State
|
||||
# -------------------------------------------------------------------
|
||||
#hyprctl keyword monitor "" # Clear all monitor rules
|
||||
#hyprctl keyword workspace "" # Clear workspace assignments
|
||||
#sleep 1
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 2: Hardware Detection
|
||||
# -------------------------------------------------------------------
|
||||
MONITORS=$(hyprctl monitors -j all)
|
||||
LAPTOP="eDP-1"
|
||||
LID_STATE=$(cat /proc/acpi/button/lid/LID0/state | awk '{print $2}')
|
||||
EXTERNAL_MONITORS=($(echo "$MONITORS" | jq -r '.[] | select(.name != "eDP-1") | .name'))
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 3: Configuration
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
# Case 1: No externals - Laptop only
|
||||
if [ ${#EXTERNAL_MONITORS[@]} -eq 0 ]; then
|
||||
notify-send "Monitor Setup" "Laptop-only mode"
|
||||
hyprctl keyword monitor "$LAPTOP,1920x1200@60,0x0,1.5"
|
||||
sleep 1
|
||||
|
||||
# Assign all workspaces to laptop
|
||||
for ws in {1..10}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$LAPTOP"
|
||||
done
|
||||
|
||||
# Case 2: Any external monitors
|
||||
else
|
||||
# Try to identify known monitors by serial
|
||||
ULTRAWIDE=$(echo "$MONITORS" | jq -r '.[] | select(.serial == "303NTLE84432") | .name')
|
||||
STANDARD=$(echo "$MONITORS" | jq -r '.[] | select(.serial == "H4LN801666") | .name')
|
||||
|
||||
# Dual monitor setup (known monitors)
|
||||
if [ -n "$ULTRAWIDE" ] && [ -n "$STANDARD" ]; then
|
||||
notify-send "Monitor Setup" "Dual monitor mode (Ultrawide + Standard)"
|
||||
|
||||
# Configure monitors
|
||||
hyprctl keyword monitor "$ULTRAWIDE,5120x1440@120,0x1440,1"
|
||||
sleep 1
|
||||
hyprctl keyword monitor "$STANDARD,3440x1440@60,840x0,1"
|
||||
sleep 1
|
||||
hyprctl dispatch dpms off "$LAPTOP"
|
||||
|
||||
# Workspace assignments:
|
||||
# 1-4 on Ultrawide, 5-10 on Standard
|
||||
for ws in {1..4}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$ULTRAWIDE"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $ULTRAWIDE"
|
||||
done
|
||||
for ws in {5..9}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$STANDARD"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $STANDARD"
|
||||
done
|
||||
|
||||
hyprctl keyword "workspace 10, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "10 $LAPTOP"
|
||||
|
||||
# Single external (any monitor)
|
||||
else
|
||||
EXT_MON=${EXTERNAL_MONITORS[0]}
|
||||
notify-send "Monitor Setup" "Single external: $EXT_MON"
|
||||
|
||||
# Get max resolution
|
||||
MAX_RES=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$EXT_MON\") | .availableModes[0] | \"\(.width)x\(.height)@\(.refreshRate)\"")
|
||||
|
||||
# Check lid state
|
||||
if [ "$LID_STATE" == "closed" ]; then
|
||||
# Lid closed - only external monitor
|
||||
notify-send "Monitor Setup" "Lid closed - using external only"
|
||||
hyprctl dispatch dpms off "$LAPTOP"
|
||||
hyprctl keyword monitor "$EXT_MON,$MAX_RES,0x0,1"
|
||||
sleep 1
|
||||
|
||||
hyprctl keyword "workspace 10, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "10 $LAPTOP"
|
||||
|
||||
# Assign all workspaces to external
|
||||
for ws in {1..9}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$EXT_MON"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXT_MON"
|
||||
done
|
||||
|
||||
else
|
||||
# Lid open - both monitors
|
||||
notify-send "Monitor Setup" "Lid open - using laptop + external"
|
||||
hyprctl keyword monitor "$LAPTOP,1920x1200@60,0x0,1.5"
|
||||
sleep 1
|
||||
hyprctl keyword monitor "$EXT_MON,$MAX_RES,1920x0,1"
|
||||
sleep 1
|
||||
|
||||
# Workspace assignments:
|
||||
# 1-4 on laptop, 5-10 on external
|
||||
for ws in {1..4}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $LAPTOP"
|
||||
done
|
||||
for ws in {5..10}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$EXT_MON"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXT_MON"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Finalization
|
||||
# -------------------------------------------------------------------
|
||||
sleep 1
|
||||
notify-send "Monitor Setup Complete" "Active configuration:\n$(hyprctl monitors)"
|
||||
60
hypr/scripts/monitor_setup.sh.old
Executable file
60
hypr/scripts/monitor_setup.sh.old
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Get all monitor info (including disabled)
|
||||
MONITORS=$(hyprctl monitors -j all)
|
||||
ALL_MONITORS=$(echo "$MONITORS" | jq -r '.[] | .name')
|
||||
EXTERNAL_COUNT=$(echo "$ALL_MONITORS" | grep -v "eDP-1" | wc -l)
|
||||
|
||||
#echo $MONITORS
|
||||
#echo $ALL_MONITORS
|
||||
#echo $EXTERNAL_COUNT
|
||||
|
||||
# Case 1: No externals - laptop only
|
||||
if [[ $EXTERNAL_COUNT -eq 0 ]]; then
|
||||
hyprctl keyword monitor "eDP-1,1920x1200@60,0x0,1"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Case 2: Single external monitor
|
||||
if [[ $EXTERNAL_COUNT -eq 1 ]]; then
|
||||
EXT_MON=$(echo "$ALL_MONITORS" | grep -v "eDP-1")
|
||||
MODES=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$EXT_MON\") | .availableModes | join(\" \")")
|
||||
MAX_RES=$(echo "$MODES" | grep -oE "[0-9]+x[0-9]+@[0-9.]+" | awk -F'[@x]' '{print $1,$2,$3}' | sort -k1,1nr -k2,2nr -k3,3nr | awk '{print $1"x"$2"@"$3}' | head -n1)
|
||||
|
||||
hyprctl keyword monitor "eDP-1,1920x1200@60,0x0,1"
|
||||
hyprctl keyword monitor "$EXT_MON,$MAX_RES,1920x0,1" # Right of laptop
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Identify our specific monitors
|
||||
ULTRAWIDE=""
|
||||
STANDARD_ULTRAWIDE=""
|
||||
|
||||
for MON in $(echo "$ALL_MONITORS"); do
|
||||
echo $MON
|
||||
[[ $MON == "eDP-1" ]] && continue
|
||||
|
||||
MODES=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$MON\") | .availableModes | join(\" \")")
|
||||
|
||||
echo $MODES
|
||||
|
||||
if [[ $MODES =~ "5120x1440" ]]; then
|
||||
ULTRAWIDE=$MON
|
||||
echo "Ultrawide = $ULTRAWIDE"
|
||||
elif [[ $MODES =~ "3440x1440" ]]; then
|
||||
STANDARD_ULTRAWIDE=$MON
|
||||
echo "Standard = $STANDARD_ULTRAWIDE"
|
||||
fi
|
||||
done
|
||||
|
||||
# Case 3: Dual monitor setup (only if we found both our specific monitors)
|
||||
if [[ -n "$ULTRAWIDE" && -n "$STANDARD_ULTRAWIDE" ]]; then
|
||||
echo "dual monitors"
|
||||
hyprctl keyword monitor "eDP-1,disable"
|
||||
hyprctl keyword monitor "$ULTRAWIDE,5120x1440@120,0x1440,1" # 49" at bottom
|
||||
hyprctl keyword monitor "$STANDARD_ULTRAWIDE,3440x1440@60,840x0,1" # 34" at top-left
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If we get here, it's an unexpected configuration - do nothing
|
||||
notify-send "Error detecting monitors, no changes"
|
||||
Reference in New Issue
Block a user