From 27f7b9735f2fc4eef2e2d2d312105a042f9f7f3a Mon Sep 17 00:00:00 2001
From: Trianta <56975502+Trimutex@users.noreply.github.com>
Date: Tue, 4 Feb 2025 07:23:29 -0600
Subject: [PATCH] armory: update dotfiles to v0.1.0
---
dunst/dunstrc | 434 +------------------------------------
hypr/hyprland.conf | 54 ++++-
hypr/hyprlandd-nested.conf | 288 ++++++++++++++++++++++++
hypr/hyprlandd.conf | 294 +++++++++++++++++--------
hypr/scripts/xrandr.sh | 4 +-
5 files changed, 541 insertions(+), 533 deletions(-)
create mode 100644 hypr/hyprlandd-nested.conf
diff --git a/dunst/dunstrc b/dunst/dunstrc
index b2539c7..e0d3cac 100644
--- a/dunst/dunstrc
+++ b/dunst/dunstrc
@@ -1,439 +1,32 @@
-# See dunst(5) for all configuration options
-
[global]
-### Display ###
-
-# Which monitor should the notifications be displayed on.
+separator_color=frame
monitor = 1
-
-# Display notification on focused monitor. Possible modes are:
-# mouse: follow mouse pointer
-# keyboard: follow window with keyboard focus
-# none: don't follow anything
-#
-# "keyboard" needs a window manager that exports the
-# _NET_ACTIVE_WINDOW property.
-# This should be the case for almost all modern window managers.
-#
-# If this option is set to mouse or keyboard, the monitor option
-# will be ignored.
follow = none
-
-### Geometry ###
-
-# dynamic width from 0 to 300
-# width = (0, 300)
-# constant width of 300
-width = 300
-
-# The maximum height of a single notification, excluding the frame.
-height = 300
-
-# Position the notification in the top right corner
-origin = top-right
-
-# Offset from the origin
-offset = 20x20
-
-# Scale factor. It is auto-detected if value is 0.
-scale = 0
-
-# Maximum number of notification (0 means no limit)
-notification_limit = 20
-
-### Progress bar ###
-
-# Turn on the progess bar. It appears when a progress hint is passed with
-# for example dunstify -h int:value:12
-progress_bar = true
-
-# Set the progress bar height. This includes the frame, so make sure
-# it's at least twice as big as the frame width.
-progress_bar_height = 10
-
-# Set the frame width of the progress bar
-progress_bar_frame_width = 0
-
-# Set the minimum width for the progress bar
-progress_bar_min_width = 125
-
-# Set the maximum width for the progress bar
-progress_bar_max_width = 250
-
-# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 4
-
-# Corner radius for the icon image.
icon_corner_radius = 5
-
-# Show how many messages are currently hidden (because of
-# notification_limit).
indicate_hidden = yes
-
-# The transparency of the window. Range: [0; 100].
-# This option will only work if a compositing window manager is
-# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 10
-
-# Draw a line of "separator_height" pixel height between two
-# notifications.
-# Set to 0 to disable.
-# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
-
-# Padding between text and separator.
padding = 8
-
-# Horizontal padding.
horizontal_padding = 8
-
-# Padding between text and icon.
text_icon_padding = 10
-
-# Defines width in pixels of frame around the notification window.
-# Set to 0 to disable.
-frame_width = 3
-
-# Defines color of the frame around the notification window.
-#frame_color = "#eba0ac"
-frame_color = "#89B4FA"
-separator_color = frame
-
-# Size of gap to display between notifications - requires a compositor.
-# If value is greater than 0, separator_height will be ignored and a border
-# of size frame_width will be drawn around each notification instead.
-# Click events on gaps do not currently propagate to applications below.
gap_size = 5
-
-# Define a color for the separator.
-# possible values are:
-# * auto: dunst tries to find a color fitting to the background;
-# * foreground: use the same color as the foreground;
-# * frame: use the same color as the frame;
-# * anything else will be interpreted as a X color.
-
-# Sort messages by urgency.
sort = yes
-
-# Don't remove messages, if the user is idle (no mouse or keyboard input)
-# for longer than idle_threshold seconds.
-# Set to 0 to disable.
-# A client can set the 'transient' hint to bypass this. See the rules
-# section for how to disable this if necessary
-# idle_threshold = 120
-
-### Text ###
-
-font = mononoki Nerd Font 8
-
-# The spacing between lines. If the height is smaller than the
-# font height, it will get raised to the font height.
-line_height = 3
-
-# Possible values are:
-# full: Allow a small subset of html markup in notifications:
-# bold
-# italic
-# strikethrough
-# underline
-#
-# For a complete reference see
-# .
-#
-# strip: This setting is provided for compatibility with some broken
-# clients that send markup even though it's not enabled on the
-# server. Dunst will try to strip the markup but the parsing is
-# simplistic so using this option outside of matching rules for
-# specific applications *IS GREATLY DISCOURAGED*.
-#
-# no: Disable markup parsing, incoming notifications will be treated as
-# plain text. Dunst will not advertise that it has the body-markup
-# capability if this is set as a global setting.
-#
-# It's important to note that markup inside the format option will be parsed
-# regardless of what this is set to.
+font = Hack Nerd Font 8
markup = full
-
-# The format of the message. Possible variables are:
-# %a appname
-# %s summary
-# %b body
-# %i iconname (including its path)
-# %I iconname (without its path)
-# %p progress value if set ([ 0%] to [100%]) or nothing
-# %n progress value if set without any extra characters
-# %% Literal %
-# Markup is allowed
-format = " %a\n %s\n%b"
-
-# Alignment of message text.
-# Possible values are "left", "center" and "right".
-alignment = left
-
-# Vertical alignment of message text and icon.
-# Possible values are "top", "center" and "bottom".
-vertical_alignment = center
-
-# Show age of message if message is older than show_age_threshold
-# seconds.
-# Set to -1 to disable.
-show_age_threshold = 60
-
-# Specify where to make an ellipsis in long lines.
-# Possible values are "start", "middle" and "end".
-ellipsize = middle
-
-# Ignore newlines '\n' in notifications.
-ignore_newline = no
-
-# Stack together notifications with the same content
-stack_duplicates = true
-
-# Hide the count of stacked notifications with the same content
-hide_duplicate_count = false
-
-# Display indicators for URLs (U) and actions (A).
-show_indicators = yes
-
-### Icons ###
-
-# Recursive icon lookup. You can set a single theme, instead of having to
-# define all lookup paths.
-#enable_recursive_icon_lookup = true
-
-# Set icon theme (only used for recursive icon lookup)
-#icon_theme = Adwaita
-# You can also set multiple icon themes, with the leftmost one being used first.
-icon_theme = "Tela-circle-dracula"
-
-# Align icons left/right/top/off
-icon_position = left
-
-# Scale small icons up to this size, set to 0 to disable. Helpful
-# for e.g. small files or high-dpi screens. In case of conflict,
-# max_icon_size takes precedence over this.
-min_icon_size = 32
-
-# Scale larger icons down to this size, set to 0 to disable
-max_icon_size = 128
-
-# Paths to default icons (only neccesary when not using recursive icon lookup)
-icon_path = /usr/share/icons/Tela-circle-dracula/16/actions:/usr/share/icons/Tela-circle-dracula/16/apps:/usr/share/icons/Tela-circle-dracula/16/devices:/usr/share/icons/Tela-circle-dracula/16/mimetypes:/usr/share/icons/Tela-circle-dracula/16/panel:/usr/share/icons/Tela-circle-dracula/16/places:/usr/share/icons/Tela-circle-dracula/16/status
-
-### History ###
-
-# Should a notification popped up from history be sticky or timeout
-# as if it would normally do.
-sticky_history = yes
-
-# Maximum amount of notifications kept in history
-history_length = 20
-
-### Misc/Advanced ###
-
-# dmenu path.
+#format = " %a\n %s\n%b"
dmenu = /usr/bin/rofi -dmenu -p dunst:
-
-# Browser for opening urls in context menu.
-browser = /usr/bin/xdg-open
-
-# Always run rule-defined scripts, even if the notification is suppressed
-always_run_script = true
-
-# Define the title of the windows spawned by dunst
title = Dunst
-
-# Define the class of the windows spawned by dunst
class = Dunst
-
-# Define the corner radius of the notification window
-# in pixel size. If the radius is 0, you have no rounded
-# corners.
-# The radius will be automatically lowered if it exceeds half of the
-# notification height to avoid clipping text and/or icons.
-corner_radius = 10
-
-# Ignore the dbus closeNotification message.
-# Useful to enforce the timeout set by dunst configuration. Without this
-# parameter, an application may close the notification sent before the
-# user defined timeout.
-ignore_dbusclose = false
-
-### Wayland ###
-# These settings are Wayland-specific. They have no effect when using X11
-
-# Uncomment this if you want to let notications appear under fullscreen
-# applications (default: overlay)
-# layer = top
-
-# Set this to true to use X11 output on Wayland.
force_xwayland = false
-
-### Legacy
-
-# Use the Xinerama extension instead of RandR for multi-monitor support.
-# This setting is provided for compatibility with older nVidia drivers that
-# do not support RandR and using it on systems that support RandR is highly
-# discouraged.
-#
-# By enabling this setting dunst will not be able to detect when a monitor
-# is connected or disconnected which might break follow mode if the screen
-# layout changes.
-force_xinerama = false
-
-### mouse
-
-# Defines list of actions for each mouse event
-# Possible values are:
-# * none: Don't do anything.
-# * do_action: Invoke the action determined by the action_name rule. If there is no
-# such action, open the context menu.
-# * open_url: If the notification has exactly one url, open it. If there are multiple
-# ones, open the context menu.
-# * close_current: Close current notification.
-# * close_all: Close all notifications.
-# * context: Open context menu for the notification.
-# * context_all: Open context menu for all notifications.
-# These values can be strung together for each mouse event, and
-# will be executed in sequence.
mouse_left_click = context, close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
+enable_posix_regex = true
-# Experimental features that may or may not work correctly. Do not expect them
-# to have a consistent behaviour across releases.
[experimental]
-# Calculate the dpi to use on a per-monitor basis.
-# If this setting is enabled the Xft.dpi value will be ignored and instead
-# dunst will attempt to calculate an appropriate dpi value for each monitor
-# using the resolution and physical size. This might be useful in setups
-# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-#
-# Messages can be matched by
-# appname (discouraged, see desktop_entry)
-# body
-# category
-# desktop_entry
-# icon
-# match_transient
-# msg_urgency
-# stack_tag
-# summary
-#
-# and you can override the
-# background
-# foreground
-# format
-# frame_color
-# fullscreen
-# new_icon
-# set_stack_tag
-# set_transient
-# set_category
-# timeout
-# urgency
-# icon_position
-# skip_display
-# history_ignore
-# action_name
-# word_wrap
-# ellipsize
-# alignment
-# hide_text
-#
-# Shell-like globbing will get expanded.
-#
-# Instead of the appname filter, it's recommended to use the desktop_entry filter.
-# GLib based applications export their desktop-entry name. In comparison to the appname,
-# the desktop-entry won't get localized.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-# Disable the transient hint so that idle_threshold cannot be bypassed from the
-# client
-#[transient_disable]
-# match_transient = yes
-# set_transient = no
-#
-# Make the handling of transient notifications more strict by making them not
-# be placed in history.
-#[transient_history_ignore]
-# match_transient = yes
-# history_ignore = yes
-
-# fullscreen values
-# show: show the notifications, regardless if there is a fullscreen window opened
-# delay: displays the new notification, if there is no fullscreen window active
-# If the notification is already drawn, it won't get undrawn.
-# pushback: same as delay, but when switching into fullscreen, the notification will get
-# withdrawn from screen again and will get delayed like a new notification
-#[fullscreen_delay_everything]
-# fullscreen = delay
-#[fullscreen_show_critical]
-# msg_urgency = critical
-# fullscreen = show
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# skip_display = true
-
-#[history-ignore]
-# # This notification will not be saved in history
-# summary = "foobar"
-# history_ignore = yes
-
-#[skip-display]
-# # This notification will not be displayed, but will be included in the history
-# summary = "foobar"
-# skip_display = yes
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-#[stack-volumes]
-# appname = "some_volume_notifiers"
-# set_stack_tag = "volume"
-#
-# vim: ft=cfg
-
[Type-1]
summary = "t1"
format = "%a"
@@ -442,29 +35,20 @@ format = "%a"
summary = "t2"
format = "%a\n%b"
-[urgency_critical]
-background = "#1E1E2E"
-foreground = "#CDD6F4"
-frame_color = "#FAB387"
-icon = "~/.config/dunst/icons/critical.svg"
-timeout = 0
-script = ~/.config/dunst/scripts/alert.sh
-# Icon for notifications with critical urgency, uncomment to enable
-#default_icon = /path/to/icon
-
[urgency_low]
background = "#1E1E2E"
foreground = "#CDD6F4"
frame_color = "#2F3130"
-icon = "~/.config/dunst/icons/hyprdots.svg"
timeout = 10
[urgency_normal]
background = "#1E1E2E"
foreground = "#CDD6F4"
frame_color = "#575C5B"
-icon = "~/.config/dunst/icons/hyprdots.svg"
timeout = 10
-#[play_sound]
-#summary = "*"
+[urgency_critical]
+background = "#1E1E2E"
+foreground = "#CDD6F4"
+frame_color = "#FAB387"
+timeout = 0
diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf
index b0dbfd2..a2983bf 100755
--- a/hypr/hyprland.conf
+++ b/hypr/hyprland.conf
@@ -4,8 +4,9 @@ source = ~/.config/hypr/mocha.conf # Catppuccin colorscheme
# monitors
#monitor=HDMI-A-4, disabled
-monitor = HDMI-A-4, 3840x2160@60, 0x0, 2, bitdepth, 8
-monitor = DP-1, 3440x1440@160, 1920x0, 1, vrr, 1, bitdepth, 8
+
+monitor = HDMI-A-4, 3840x2160@60, 0x0, 1.6, bitdepth, 8
+monitor = DP-1, 3440x1440@160, 2400x0, 1, vrr, 0, bitdepth, 8
# < End Section >
@@ -25,6 +26,9 @@ env = QT_QPA_PLATFORM,wayland;xcb
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt5ct
+#env = HYPRLAND_TRACE,1
+#env = AQ_TRACE,1
+
# < End Section >
@@ -40,6 +44,7 @@ exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESK
exec-once = /usr/lib/polkit-kde-authentication-agent-1 # authentication dialogue for GUI apps
exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha'
exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
+#exec-once = wayvnc --output=DP-1 0.0.0.0
# xrandr settings
exec-once = ~/.config/hypr/scripts/xrandr.sh
@@ -53,7 +58,9 @@ exec-once = xwaylandvideobridge
# main applications
exec-once = thunderbird
-exec-once = vesktop --enable-features=UseOzonePlatform --ozone-platform=wayland
+#exec-once = obs
+#exec-once = discord
+exec-once = vesktop
exec-once = spotify
exec-once = alacritty
exec-once = firefox
@@ -63,6 +70,9 @@ exec-once = taskset -c 1-7 steam
# completion alert
exec-once = sleep 5 && pw-play --volume=2.0 ~/.alert/finished.mp3
+# first time lock
+exec-once = hyprlock
+
# < End Section >
@@ -168,10 +178,12 @@ cursor {
inactive_timeout = 2
no_warps = false
default_monitor = DP-1
+ warp_on_change_workspace = false
}
debug {
disable_logs = true
+ #overlay = false
}
render {
@@ -180,6 +192,12 @@ render {
direct_scanout = false
}
+experimental {
+ wide_color_gamut = false
+ hdr = false
+ xx_color_management_v4 = true
+}
+
# < End Section >
@@ -213,8 +231,9 @@ windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$
# main
windowrulev2 = workspace 1 silent, class:^(discord)$
windowrulev2 = workspace 1 silent, class:^(vesktop)$
+windowrulev2 = workspace 1 silent, class:^(thunderbird)$
windowrulev2 = workspace 1 silent, class:^(Dopamine)$
-windowrulev2 = workspace 5 silent, class:^(spotify)$
+windowrulev2 = workspace 1 silent, class:^(spotify)$
windowrulev2 = workspace 2 silent, class:^(Alacritty)$
windowrulev2 = float, class:^(Alacritty)$
windowrulev2 = size 1920 1080, class:^(Alacritty)$
@@ -229,29 +248,33 @@ windowrulev2 = workspace 4 silent, class:^(steam_proton)$
windowrulev2 = workspace 4 silent, class:^(hl2_linux)$
windowrulev2 = workspace 4 silent, class:^(dota2)$
windowrulev2 = workspace 4 silent, class:^(gamescope)$
-windowrulev2 = workspace 5 silent, class:^(Bolt.*)$
-windowrulev2 = workspace 5 silent, class:^(net-runelite-client-RuneLite)$
windowrulev2 = workspace 6 silent, class:^(steam)$
# development
+windowrulev2 = float, class:^(VirtualBox.*)$
windowrulev2 = float, title:^(SnakePlusPlus)$
windowrulev2 = center, title:^(SnakePlusPlus)$
windowrulev2 = opacity 0.4, title:^(SnakePlusPlus)$
windowrulev2 = float, title:^(TetrisPlusPlus)$
windowrulev2 = center, title:^(TetrisPlusPlus)$
-windowrulev2 = workspace 4 silent, class:^(aquamarine)$
+windowrulev2 = workspace 5 silent, class:^(aquamarine)$
windowrulev2 = fullscreen, class:^(aquamarine)$
# games
# 16:9 windowed - 1920 1080
-# 21:9 windowed - 2560 1080
+# 21:9 windowed - 2580 1080
# 32:9 windowed - 3200 900
# theoretical mix - 3200 1100
# alternative - 2660 1140
+# world of warcraft classic
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(wowclassic.exe)$
+windowrulev2 = workspace 4 silent, class:^(wowclassic.exe)$
# runelite
windowrulev2 = opacity 1.00 override 1.00 override, class:^(net-runelite-client-RuneLite)$
-windowrulev2 = float, class:^(net-runelite-client-RuneLite)$
-windowrulev2 = size 825 520, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = fullscreen, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = workspace 5, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = workspace 5, class:^(Bolt.*)$
+windowrulev2 = centerwindow, class:^(Bolt.*)$
# minecraft
windowrulev2 = opacity 1.00 override 1.00 override, title:^(Minecraft.*)$
# native
@@ -267,6 +290,9 @@ windowrulev2 = opacity 1.00 override 1.00 override, class:^(dota2)$
windowrulev2 = opacity 1.00 override 1.00 override, class:^(gamescope)$
windowrulev2 = float, class:^(gamescope)$
windowrulev2 = size 3200 1100, class:^(gamescope)$
+# steamtinkerlaunch
+windowrulev2 = float, class:^(yad)$
+windowrulev2 = size 1920 1080, class:^(yad)$
# layer rules
layerrule = blur,waybar
@@ -290,7 +316,7 @@ windowrulev2 = noblur,class:^(xwaylandvideobridge)$
$mainMod = SUPER
# passthrough
-#bind = , mouse:275, pass, class:^(discord)$
+bind = , mouse:275, pass, class:^(discord)$
#bind = , mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
#bind = SHIFT, mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
@@ -308,6 +334,7 @@ bind = $mainMod, RETURN, exec, alacritty
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
bind = $mainMod SHIFT, 7, exec, taskset -c 1-7 prismlauncher
bind = $mainMod, S, exec, pkill -x rofi || rofi -show drun
+bind = $mainMod, 0, exec, taskset -c 1-7 virtualbox
# generic audio control
binde = , XF86AudioPlay, exec, playerctl play-pause
@@ -357,4 +384,9 @@ binde = $mainMod, down, resizeactive, 0 5
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
+# recordings
+bind = SUPER, R, pass, class:^(com\.obsproject\.Studio)$
+bind = SUPER, F9, pass, class:^(com\.obsproject\.Studio)$
+bind = SUPER, F10, pass, class:^(com\.obsproject\.Studio)$
+
# < End Section >
diff --git a/hypr/hyprlandd-nested.conf b/hypr/hyprlandd-nested.conf
new file mode 100644
index 0000000..adfa122
--- /dev/null
+++ b/hypr/hyprlandd-nested.conf
@@ -0,0 +1,288 @@
+source = ~/.config/hypr/mocha.conf # Catppuccin colorscheme
+
+# < Start Section >
+# monitors
+
+monitor= , 2560x1440@60, 0x0, 1
+
+# < End Section >
+
+
+
+# < Start Section >
+# environment variables
+
+env = xdg_current_desktop,hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+env = MOZ_ENABLE_WAYLAND,1
+env = HYPRCURSOR_THEME, rose-pine-hyprcursor
+env = HYPRCURSOR_SIZE, 24
+
+# Trace logging
+#env = HYPRLAND_TRACE,1
+#env = AQ_TRACE,1
+
+# < End Section >
+
+
+
+# < Start Section >
+# startup applications
+
+# exit applications
+
+# < End Section >
+
+
+
+# < Start Section >
+# workspace rules
+
+# < End Section >
+
+
+
+# < Start Section >
+# variables
+
+general {
+ gaps_in = 0
+ gaps_out = 8
+ border_size = 0
+ col.active_border = $peach
+ layout = master
+ resize_on_border = false
+}
+
+decoration {
+ rounding = 6
+ dim_special = 0.3
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = yes
+ special = true
+ size = 6
+ passes = 3
+ new_optimizations = on
+ ignore_opacity = on
+ xray = false
+ }
+}
+
+animations {
+ enabled = yes
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
+
+input {
+ kb_layout = us
+ kb_options = caps:escape
+ follow_mouse = 2
+ mouse_refocus = false;
+
+ sensitivity = -.75 # -1.0 - 1.0, 0 means no modification.
+ force_no_accel = 1
+}
+
+group {
+ col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
+ col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
+ col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
+ col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
+}
+
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ force_default_wallpaper = 0
+ vrr = 1
+ vfr = true
+ middle_click_paste = false
+}
+
+xwayland {
+ enabled = true
+ use_nearest_neighbor = true
+ force_zero_scaling = false
+}
+
+cursor {
+ no_hardware_cursors = true
+ inactive_timeout = 2
+ no_warps = false
+ default_monitor = DP-1
+}
+
+debug {
+ disable_logs = true
+ #disable_logs = false
+ #watchdog_timeout = 0
+ overlay = true
+}
+
+render {
+ explicit_sync = 1
+ explicit_sync_kms = 1
+ direct_scanout = true
+}
+
+experimental {
+ hdr = true
+}
+
+# < End Section >
+
+
+
+# < Start Section >
+# master layout
+
+master {
+ new_status = master
+}
+
+# < End Section >
+
+
+
+# < Start Section >
+# window rules
+
+# core
+windowrulev2 = opacity 0.80 0.80,class:^(.*)$
+windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$
+windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$
+windowrulev2 = float, class:^(qt5ct)$
+windowrulev2 = float, class:^(nwg-look)$
+windowrulev2 = float, class:^(pavucontrol)$
+windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$
+
+# main
+windowrulev2 = workspace 1 silent, class:^(discord)$
+windowrulev2 = workspace 1 silent, class:^(vesktop)$
+windowrulev2 = workspace 1 silent, class:^(Dopamine)$
+#windowrulev2 = workspace 1 silent, class:^(Spotify)$
+windowrulev2 = workspace 1 silent, initialTitle:^(Spotify Premium)$
+windowrulev2 = workspace 2 silent, class:^(Alacritty)$
+windowrulev2 = workspace 3 silent, class:^(firefox)$
+windowrulev2 = workspace 3 silent, class:^(firefox-nightly)$
+windowrulev2 = workspace 4 silent, class:^(steam)$
+windowrulev2 = workspace 4 silent, class:^(org.prismlauncher.PrismLauncher)$
+windowrulev2 = workspace 4 silent, title:^(Minecraft.*)$
+windowrulev2 = workspace 4 silent, class:^(steam_app_.*)$
+windowrulev2 = workspace 4 silent, class:^(steam_proton)$
+windowrulev2 = workspace 4 silent, class:^(hl2_linux)$
+windowrulev2 = workspace 4 silent, class:^(gamescope)$
+windowrulev2 = workspace 5 silent, class:^(Bolt.*)$
+windowrulev2 = workspace 6 silent, class:^(steam)$
+
+# development
+windowrulev2 = float, title:^(SnakePlusPlus)$
+windowrulev2 = center, title:^(SnakePlusPlus)$
+windowrulev2 = opacity 0.4, title:^(SnakePlusPlus)$
+windowrulev2 = float, title:^(TetrisPlusPlus)$
+windowrulev2 = center, title:^(TetrisPlusPlus)$
+
+# games
+# 16:9 windowed - 1920 1080
+# 21:9 windowed - 2560 1080
+# 32:9 windowed - 3200 900
+# theoretical mix - 3200 1100
+# alternative - 2660 1140
+# runelite
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = pseudo, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = size 825 520, class:^(net-runelite-client-RuneLite)$
+# minecraft
+windowrulev2 = opacity 1.00 override 1.00 override, title:^(Minecraft.*)$
+windowrulev2 = pseudo, title:^(Minecraft.*)$
+windowrulev2 = size 3200 1100, title:^(Minecraft.*)$
+# native
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(steam_app_.*)$
+windowrulev2 = pseudo, class:^(steam_app_.*)$
+#windowrulev2 = size 3200 900, class:^(steam_app_.*)$
+# proton
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(steam_proton)$
+windowrulev2 = pseudo, class:^(steam_proton)$
+#windowrulev2 = size 3200 900, class:^(steam_proton)$
+# hl2 (css, etc)
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(hl2_linux)$
+# gamescope
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(gamescope)$
+windowrulev2 = pseudo, class:^(gamescope)$
+windowrulev2 = size 3200 1100, class:^(gamescope)$
+
+# layer rules
+layerrule = blur,waybar
+layerrule = ignorezero, waybar
+
+# xwaylandvideobridge
+windowrulev2 = opacity 0.0 override,class:^(xwaylandvideobridge)$
+windowrulev2 = noanim,class:^(xwaylandvideobridge)$
+windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$
+windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$
+windowrulev2 = noblur,class:^(xwaylandvideobridge)$
+
+# < End Section >
+
+
+
+# < Start Section >
+# keybinds
+
+# main modifier
+$mainMod = ALT
+
+# core binds
+bind = $mainMod SHIFT, Q, killactive,
+bind = $mainMod SHIFT, M, exit
+bind = $mainMod, SPACE, togglefloating,
+bind = $mainMod, C, centerwindow
+bind = $mainMod, F, fullscreen,
+bind = $mainMod SHIFT, L, exec, hyprlock
+bind = $mainMod $CONTROL, ESCAPE, exec, killall waybar || waybar # toggle waybar
+
+# main application shortcuts
+bind = $mainMod, RETURN, exec, alacritty
+bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
+bind = $mainMod SHIFT, 7, exec, taskset -c 1-7 prismlauncher
+bind = $mainMod, S, exec, pkill -x rofi || rofi -show drun
+
+# move focus
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# workspaces
+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 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
+
+# resizing windows
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+# < End Section >
diff --git a/hypr/hyprlandd.conf b/hypr/hyprlandd.conf
index 0d2ed98..9f06c80 100644
--- a/hypr/hyprlandd.conf
+++ b/hypr/hyprlandd.conf
@@ -3,7 +3,10 @@ source = ~/.config/hypr/mocha.conf # Catppuccin colorscheme
# < Start Section >
# monitors
-monitor= , 2560x1440@60, 0x0, 1
+#monitor=HDMI-A-4, disabled
+
+monitor = HDMI-A-4, 3840x2160@60, 0x0, 1.6, bitdepth, 8
+monitor = DP-1, 3440x1440@160, 2400x0, 1, vrr, 0, bitdepth, 8
# < End Section >
@@ -12,14 +15,17 @@ monitor= , 2560x1440@60, 0x0, 1
# < Start Section >
# environment variables
-env = xdg_current_desktop,hyprland
+env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = MOZ_ENABLE_WAYLAND,1
env = HYPRCURSOR_THEME, rose-pine-hyprcursor
env = HYPRCURSOR_SIZE, 24
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_QPA_PLATFORMTHEME,qt5ct
-# Trace logging
#env = HYPRLAND_TRACE,1
#env = AQ_TRACE,1
@@ -30,7 +36,41 @@ env = HYPRCURSOR_SIZE, 24
# < Start Section >
# startup applications
-# exit applications
+# environment launches
+exec-once = ~/.config/hypr/scripts/resetxdgportal.sh # reset XDPH for screenshare
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
+exec-once = dbus-update-activation-environment --systemd --all
+exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = /usr/lib/polkit-kde-authentication-agent-1 # authentication dialogue for GUI apps
+exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha'
+exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
+#exec-once = wayvnc --output=DP-1 0.0.0.0
+
+# xrandr settings
+exec-once = ~/.config/hypr/scripts/xrandr.sh
+
+# background applications
+exec-once = waybar -c ~/.config/waybar/config
+exec-once = dunst
+exec-once = swww-daemon
+#exec-once = syncthing --no-browser
+exec-once = xwaylandvideobridge
+
+# main applications
+exec-once = thunderbird
+#exec-once = discord
+exec-once = vesktop
+exec-once = spotify
+exec-once = alacritty
+exec-once = firefox
+#exec-once = bolt
+exec-once = taskset -c 1-7 steam
+
+# completion alert
+exec-once = sleep 5 && pw-play --volume=2.0 ~/.alert/finished.mp3
+
+# first time lock
+exec-once = hyprlock
# < End Section >
@@ -39,6 +79,17 @@ env = HYPRCURSOR_SIZE, 24
# < Start Section >
# workspace rules
+# gaps numbers (top, right, bottom, left)
+workspace = 1, monitor:DP-1, persistent:true, default:true
+workspace = 2, monitor:DP-1, persistent:true
+workspace = 3, monitor:DP-1, persistent:true
+workspace = 4, monitor:DP-1, persistent:true
+
+# Workspaces swapped for ease of use
+workspace = 6, monitor:DP-1, persistent:true
+workspace = 5, monitor:HDMI-A-4, persistent:true
+workspace = 5, layoutopt:orientation:right
+
# < End Section >
@@ -47,96 +98,103 @@ env = HYPRCURSOR_SIZE, 24
# variables
general {
- gaps_in = 0
- gaps_out = 8
- border_size = 0
- col.active_border = $peach
- layout = master
- resize_on_border = false
+ gaps_in = 0
+ gaps_out = 4
+ border_size = 2
+ col.active_border = 0x000000
+ col.inactive_border = 0x000000
+ layout = master
+ resize_on_border = false
}
decoration {
- rounding = 6
- drop_shadow = false
- dim_special = 0.3
- fullscreen_opacity = 1.0
-
- blur {
- enabled = yes
- special = true
- size = 6
- passes = 3
- new_optimizations = on
- ignore_opacity = on
- xray = false
+ rounding = 0
+ shadow {
+ enabled = false
}
+ dim_special = 0.3
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ special = true
+ size = 6
+ passes = 3
+ new_optimizations = true
+ ignore_opacity = true
+ xray = false
+ }
}
animations {
- enabled = yes
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
- bezier = liner, 1, 1, 1, 1
- animation = windows, 1, 6, wind, slide
- animation = windowsIn, 1, 6, winIn, slide
- animation = windowsOut, 1, 5, winOut, slide
- animation = windowsMove, 1, 5, wind, slide
- animation = border, 1, 1, liner
- animation = borderangle, 1, 30, liner, loop
- animation = fade, 1, 10, default
- animation = workspaces, 1, 5, wind
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
}
input {
- kb_layout = us
- kb_options = caps:escape
- follow_mouse = 2
- mouse_refocus = false;
-
- sensitivity = -.75 # -1.0 - 1.0, 0 means no modification.
- force_no_accel = 1
+ kb_layout = us
+ kb_options = caps:escape
+ follow_mouse = 2
+ mouse_refocus = false;
+ force_no_accel = 1
}
group {
- col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
- col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
- col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
- col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
+ col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
+ col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
+ col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
+ col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
}
misc {
- disable_hyprland_logo = true
- disable_splash_rendering = true
- force_default_wallpaper = 0
- vrr = 1
- vfr = true
- middle_click_paste = false
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ force_default_wallpaper = 0
+ vrr = 1
+ vfr = true
+ middle_click_paste = false
+ render_unfocused_fps = 15
}
xwayland {
- enabled = true
- use_nearest_neighbor = true
- force_zero_scaling = false
+ enabled = true
+ use_nearest_neighbor = true
+ force_zero_scaling = false
}
cursor {
- no_hardware_cursors = true
- inactive_timeout = 2
- no_warps = false
- default_monitor = DP-1
+ inactive_timeout = 2
+ no_warps = false
+ default_monitor = DP-1
+ warp_on_change_workspace = false
}
debug {
- #disable_logs = true
- disable_logs = false
- watchdog_timeout = 0
+ disable_logs = true
+ #overlay = false
}
render {
- explicit_sync = 1
- explicit_sync_kms = 1
- direct_scanout = true
+ explicit_sync = 1
+ explicit_sync_kms = 1
+ direct_scanout = false
+}
+
+experimental {
+ wide_color_gamut = false
+ hdr = true
+ xx_color_management_v4 = true
}
# < End Section >
@@ -144,10 +202,10 @@ render {
# < Start Section >
-# master layout
+# master layout
master {
- new_status = master
+ new_status = master
}
# < End Section >
@@ -158,6 +216,9 @@ master {
# window rules
# core
+workspace = w[t1], gapsout:0, border:0, rounding:0
+windowrulev2 = suppressevent maximize, class:^(.*)$
+windowrulev2 = renderunfocused,class:^(.*)$
windowrulev2 = opacity 0.80 0.80,class:^(.*)$
windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$
windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$
@@ -169,57 +230,68 @@ windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$
# main
windowrulev2 = workspace 1 silent, class:^(discord)$
windowrulev2 = workspace 1 silent, class:^(vesktop)$
+windowrulev2 = workspace 1 silent, class:^(thunderbird)$
windowrulev2 = workspace 1 silent, class:^(Dopamine)$
-#windowrulev2 = workspace 1 silent, class:^(Spotify)$
-windowrulev2 = workspace 1 silent, initialTitle:^(Spotify Premium)$
+windowrulev2 = workspace 1 silent, class:^(spotify)$
windowrulev2 = workspace 2 silent, class:^(Alacritty)$
+windowrulev2 = float, class:^(Alacritty)$
+windowrulev2 = size 1920 1080, class:^(Alacritty)$
windowrulev2 = workspace 3 silent, class:^(firefox)$
-windowrulev2 = workspace 3 silent, class:^(firefox-nightly)$
+windowrulev2 = float, class:^(firefox)$
+windowrulev2 = size 1920 1080, class:^(firefox)$
windowrulev2 = workspace 4 silent, class:^(steam)$
windowrulev2 = workspace 4 silent, class:^(org.prismlauncher.PrismLauncher)$
windowrulev2 = workspace 4 silent, title:^(Minecraft.*)$
windowrulev2 = workspace 4 silent, class:^(steam_app_.*)$
windowrulev2 = workspace 4 silent, class:^(steam_proton)$
windowrulev2 = workspace 4 silent, class:^(hl2_linux)$
+windowrulev2 = workspace 4 silent, class:^(dota2)$
windowrulev2 = workspace 4 silent, class:^(gamescope)$
-windowrulev2 = workspace 5 silent, class:^(Bolt.*)$
-windowrulev2 = workspace 6 silent, class:^(steam)$
+windowrulev2 = workspace 6 silent, class:^(steam)$
# development
-windowrulev2 = float, title:^(SnakePlusPlus)$
-windowrulev2 = center, title:^(SnakePlusPlus)$
-windowrulev2 = opacity 0.4, title:^(SnakePlusPlus)$
-windowrulev2 = float, title:^(TetrisPlusPlus)$
-windowrulev2 = center, title:^(TetrisPlusPlus)$
+windowrulev2 = float, class:^(VirtualBox.*)$
+windowrulev2 = float, title:^(SnakePlusPlus)$
+windowrulev2 = center, title:^(SnakePlusPlus)$
+windowrulev2 = opacity 0.4, title:^(SnakePlusPlus)$
+windowrulev2 = float, title:^(TetrisPlusPlus)$
+windowrulev2 = center, title:^(TetrisPlusPlus)$
+windowrulev2 = workspace 5 silent, class:^(aquamarine)$
+windowrulev2 = fullscreen, class:^(aquamarine)$
# games
# 16:9 windowed - 1920 1080
-# 21:9 windowed - 2560 1080
-# 32:9 windowed - 3200 900
+# 21:9 windowed - 2580 1080
+# 32:9 windowed - 3200 900
# theoretical mix - 3200 1100
# alternative - 2660 1140
+# world of warcraft classic
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(wowclassic.exe)$
+windowrulev2 = workspace 4 silent, class:^(wowclassic.exe)$
# runelite
windowrulev2 = opacity 1.00 override 1.00 override, class:^(net-runelite-client-RuneLite)$
-windowrulev2 = pseudo, class:^(net-runelite-client-RuneLite)$
-windowrulev2 = size 825 520, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = fullscreen, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = workspace 5, class:^(net-runelite-client-RuneLite)$
+windowrulev2 = workspace 5, class:^(Bolt.*)$
+windowrulev2 = centerwindow, class:^(Bolt.*)$
# minecraft
windowrulev2 = opacity 1.00 override 1.00 override, title:^(Minecraft.*)$
-windowrulev2 = pseudo, title:^(Minecraft.*)$
-windowrulev2 = size 3200 1100, title:^(Minecraft.*)$
# native
windowrulev2 = opacity 1.00 override 1.00 override, class:^(steam_app_.*)$
-windowrulev2 = pseudo, class:^(steam_app_.*)$
-#windowrulev2 = size 3200 900, class:^(steam_app_.*)$
+windowrulev2 = float, class:^(steam_app_.*)$
# proton
windowrulev2 = opacity 1.00 override 1.00 override, class:^(steam_proton)$
-windowrulev2 = pseudo, class:^(steam_proton)$
-#windowrulev2 = size 3200 900, class:^(steam_proton)$
+windowrulev2 = float, class:^(steam_proton)$
# hl2 (css, etc)
-windowrulev2 = opacity 1.00 override 1.00 override, class:^(hl2_linux)$
+# dota 2
+windowrulev2 = opacity 1.00 override 1.00 override, class:^(dota2)$
# gamescope
windowrulev2 = opacity 1.00 override 1.00 override, class:^(gamescope)$
-windowrulev2 = pseudo, class:^(gamescope)$
+windowrulev2 = float, class:^(gamescope)$
windowrulev2 = size 3200 1100, class:^(gamescope)$
+# steamtinkerlaunch
+windowrulev2 = float, class:^(yad)$
+windowrulev2 = size 1920 1080, class:^(yad)$
# layer rules
layerrule = blur,waybar
@@ -240,24 +312,44 @@ windowrulev2 = noblur,class:^(xwaylandvideobridge)$
# keybinds
# main modifier
-$mainMod = ALT
+$mainMod = SUPER
+
+# passthrough
+bind = , mouse:275, pass, class:^(discord)$
+#bind = , mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
+#bind = SHIFT, mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
# core binds
-bind = $mainMod SHIFT, Q, killactive,
+bind = $mainMod SHIFT, Q, killactive
bind = $mainMod SHIFT, M, exit
-bind = $mainMod, SPACE, togglefloating,
+bind = $mainMod, SPACE, togglefloating
bind = $mainMod, C, centerwindow
-bind = $mainMod, F, fullscreen,
+bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, L, exec, hyprlock
-bind = $mainMod $CONTROL, ESCAPE, exec, killall waybar || waybar # toggle waybar
+bind = $mainMod $CONTROL, ESCAPE, exec, killall waybar || waybar -c ~/.config/waybar/config # toggle waybar
# main application shortcuts
bind = $mainMod, RETURN, exec, alacritty
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
bind = $mainMod SHIFT, 7, exec, taskset -c 1-7 prismlauncher
bind = $mainMod, S, exec, pkill -x rofi || rofi -show drun
+bind = $mainMod, 0, exec, taskset -c 1-7 virtualbox
-# move focus
+# generic audio control
+binde = , XF86AudioPlay, exec, playerctl play-pause
+binde = , XF86AudioStop, exec, playerctl stop
+binde = , XF86AudioPrev, exec, playerctl previous
+binde = , XF86AudioNext, exec, playerctl next
+binde = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
+binde = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+binde = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+
+# custom audio control
+binde = $mainMod, F1, exec, playerctl play-pause
+binde = $mainMod, F2, exec, playerctl previous
+binde = $mainMod, F3, exec, playerctl next
+
+# move focus
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
@@ -276,8 +368,18 @@ 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 ALT, 1, movetoworkspacesilent, 1
+bind = $mainMod ALT, 2, movetoworkspacesilent, 2
+bind = $mainMod ALT, 3, movetoworkspacesilent, 3
+bind = $mainMod ALT, 4, movetoworkspacesilent, 4
+bind = $mainMod ALT, 5, movetoworkspacesilent, 5
+bind = $mainMod ALT, 6, movetoworkspacesilent, 6
# resizing windows
+binde = $mainMod, right, resizeactive, 5 0
+binde = $mainMod, left, resizeactive, -5 0
+binde = $mainMod, up, resizeactive, 0 -5
+binde = $mainMod, down, resizeactive, 0 5
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
diff --git a/hypr/scripts/xrandr.sh b/hypr/scripts/xrandr.sh
index 16dcbca..892fdd9 100755
--- a/hypr/scripts/xrandr.sh
+++ b/hypr/scripts/xrandr.sh
@@ -1,8 +1,10 @@
#!/bin/bash
# Custom resolution through xrandr (21:9)
-xrandr --newmode "2560x1080" 677.75 2560 2784 3064 3568 1080 1083 1093 1188 -hsync +vsync
+xrandr --newmode "2560x1080" 677.75 2560 2784 3064 3568 1080 1083 1093 1188 -hsync +vsync
+xrandr --newmode "2560x1080R" 373.00 2560 2608 2640 2720 1080 1083 1093 1144 +hsync -vsync
xrandr --addmode DP-1 2560x1080
+xrandr --addmode DP-1 2560x1080R
# 3200x900 suggestion (32:9)
xrandr --newmode "3200x900" 704.50 3200 3472 3824 4448 900 903 913 991 -hsync +vsync