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