Compare commits

...

46 Commits

Author SHA1 Message Date
Sravan Balaji
0cbeaf84f3 Remove explicit_sync settings which were removed in Hyprland v0.50.0 2025-08-15 19:55:28 -04:00
Sravan Balaji
ddc90c3898 Add dunst to autostart 2025-08-14 07:37:20 -04:00
Sravan Balaji
ed2b85244b Switch back to static background image for hyprlock 2025-06-01 14:53:51 -04:00
Sravan Balaji
d19373cd9d Swap hyprlock image background with blurred screenshot 2025-05-30 18:48:25 -04:00
Sravan Balaji
fc793e41b1 Remove hypridle / hyprlock sleeps 2025-05-29 20:16:51 -04:00
Sravan Balaji
005e99385a Remove gammastep-indicator from startup (using systemd service instead) 2025-05-29 18:07:24 -04:00
Sravan Balaji
edcbe0f6fd Change blur settings, add gammastep-indicator to startup, and set cursor theme on startup 2025-05-27 21:05:55 -04:00
Sravan Balaji
182dd383d3 Add keybinding for moving windows between monitors 2025-05-18 21:40:12 -04:00
Sravan Balaji
ccd91bd506 Split Workspaces Plugin
- Add hyprpm reload command to startup
- Change workspace to split-workspace
- Change movetoworkspace to split-movetoworkspace
- Add split-monitor-workspaces plugin configuration
- Add icons for workspaces 1-50 in waybar hyprland
  workspaces module
2025-05-18 21:19:49 -04:00
Sravan Balaji
a1132117df Add hyprEasymotion plugin keybinding and config 2025-05-18 20:51:49 -04:00
Sravan Balaji
a741df08f9 Change waypaper random to restore 2025-05-18 20:03:10 -04:00
Sravan Balaji
fc5500765d Add fake fullscreen keybinding 2025-05-18 16:07:18 -04:00
Sravan Balaji
4bfcd9e32f Fix waybar module to launch btop as uwsm app 2025-05-18 09:41:29 -04:00
Sravan Balaji
4e2933401f Replace hyprlock background screenshot blur with image 2025-05-18 09:34:04 -04:00
Sravan Balaji
194c105799 Replace azote with waypaper 2025-05-18 09:26:34 -04:00
Sravan Balaji
59f07db6ac Set WirePlumber volume to 25% on startup 2025-05-06 11:26:27 -04:00
Sravan Balaji
69ef245273 Add some delays to hypridle / hyprlock launch so blur gets applied 2025-05-03 10:38:12 -04:00
Sravan Balaji
9debc1d08e Add date and time widgets to hyprlock 2025-04-30 16:39:10 -04:00
Sravan Balaji
c17504809a Add waybar toggle script and keybinding 2025-04-29 21:43:50 -04:00
Sravan Balaji
54ae8e57d3 Add keybinding for color picker 2025-04-29 21:03:13 -04:00
Sravan Balaji
2678c31908 Add keybinding to force kill active window 2025-04-29 20:40:32 -04:00
Sravan Balaji
76e921525a Adjust autostart processes
- Remove waybar from Hyprland autostart (use systemd user service instead)
- Remove dunst from Hyprland autostart (D-Bus auto launches it)
- Add uwsm provided fumon to autostart
2025-04-29 20:36:35 -04:00
Sravan Balaji
e1f1103325 Add basic Hyprlock background + input field 2025-04-28 21:51:25 -04:00
Sravan Balaji
d688ec6c5f Change azote wallpaper script for Hyprland 2025-04-28 05:43:30 -04:00
Sravan Balaji
c5d1f23941 Add hypridle and hyprlock configs 2025-04-27 17:18:49 -04:00
Sravan Balaji
b16288f6f8 Add XDPH Configuration 2025-04-27 16:40:06 -04:00
Sravan Balaji
81c5a49817 Add binds, xwayland, opengl, render, and ecosystem configuration 2025-04-27 16:10:14 -04:00
Sravan Balaji
2c5b298ace Add more autostart processes from previous setup 2025-04-27 11:06:06 -04:00
Sravan Balaji
15017b556b Add SWHKD and Window Move keybindings
- Not going to use SWHKD with Hyprland since the config
  is so easy to edit / reload and SWHKD has been buggy
  when resuming from sleep
- Add keybindings form moving windows around workspace
2025-04-27 11:00:25 -04:00
Sravan Balaji
e411a54df3 Configure general, decoration, and master layout settings 2025-04-27 10:35:54 -04:00
Sravan Balaji
4eec66c76f Set hyprland monitor config back to default and let shikane handle setup 2025-04-27 09:56:38 -04:00
Sravan Balaji
c6475e6d92 Configure waybar hyprland submap module 2025-04-27 09:54:30 -04:00
Sravan Balaji
9016ed9d2f Configure waybar hyprland window module 2025-04-27 09:49:01 -04:00
Sravan Balaji
f4e07a22f3 Configure waybar hyprland workspaces module 2025-04-27 09:41:49 -04:00
Sravan Balaji
4bc0986eb2 Fix Autostart Processes Exiting Prematurely
- Make all autostart processes run in background so they don't
  immediately exit
- Adjust waybar click actions to run as uwsm apps
2025-04-27 09:14:23 -04:00
Sravan Balaji
5b64925d8b Disable smart gaps 2025-04-27 09:07:54 -04:00
Sravan Balaji
08b0e542ce Add some auto start processes 2025-04-27 09:01:45 -04:00
Sravan Balaji
46fa0bda22 Replace dwl waybar modules with hyprland 2025-04-27 08:57:51 -04:00
Sravan Balaji
0896e34dee Replace waybar launch script with hyprland autostart 2025-04-27 08:52:49 -04:00
Sravan Balaji
f2b92f7938 Add waybar config from dwl 2025-04-27 08:51:03 -04:00
Sravan Balaji
9ad43ce4f1 Rofi launch programs with uwsm app 2025-04-27 08:47:24 -04:00
Sravan Balaji
62e5a7a23b Fix program launch / session control to work with uwsm 2025-04-27 08:26:24 -04:00
Sravan Balaji
67795dc5b0 Reorganize Keybindings
- Add fullscreen toggle keybinding
2025-04-26 21:29:59 -04:00
Sravan Balaji
270618456b Touchpad Gestures and Natural Scroll
- Add Table of Contents to README
- Enable natural scroll with touchpad
- Enable workspace swipe touchpad gesture
2025-04-26 21:19:45 -04:00
Sravan Balaji
844d50a1f5 Update keybindings to be similar to dwl / vim 2025-04-26 20:34:42 -04:00
Sravan Balaji
047004ab65 Monitor configuration and fix menu command 2025-04-26 19:20:44 -04:00
14 changed files with 2472 additions and 171 deletions

1567
README.org

File diff suppressed because it is too large Load Diff

18
hypridle.conf Normal file
View File

@@ -0,0 +1,18 @@
general {
lock_cmd = pgrep 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 to turn on the display
ignore_dbus_inhibit = false
ignore_systemd_inhibit = false
inhibit_sleep = 2
}
listener {
timeout = 600
on-timeout = loginctl lock-session
}
listener {
timeout = 1800
on-timeout = systemctl suspend
}

View File

@@ -1,57 +1,91 @@
monitor=,preferred,auto,auto
monitor = , preferred, auto, 1
$terminal = foot
$fileManager = thunar
$menu = rofi --show drun
$menu = rofi -show combi -run-command "uwsm app -- {cmd}"
$colorPicker = hyprpicker -a
$toggleBar = $HOME/.config/hypr/waybar/scripts/toggleBarService.sh
exec-once = uwsm app -- fumon &
exec-once = uwsm app -- kdeconnectd --replace &
exec-once = uwsm app -- wl-paste --type text --watch cliphist store &
exec-once = uwsm app -- wl-paste --type image --watch cliphist store &
exec-once = uwsm app -- $HOME/.scripts/dunst.sh --on &
exec-once = uwsm app -- hyprctl setcursor breeze-hacked-cursor-theme 24 &
exec-once = uwsm app -- hyprpm reload -n &
exec-once = uwsm app -- shikane &
exec-once = uwsm app -- waypaper --restore &
exec-once = uwsm app -- gammastep -x &
exec-once = uwsm app -- wpctl set-volume @DEFAULT_AUDIO_SINK@ 25% &
exec-once = uwsm app -- blueman-applet &
exec-once = uwsm app -- nm-applet &
exec-once = uwsm app -- kdeconnect-indicator &
exec-once = uwsm app -- udiskie -a -n -s &
exec-once = uwsm app -- nextcloud &
exec-once = uwsm app -- syncthing-gtk &
exec-once = uwsm app -- openrgb &
general {
gaps_in = 5
gaps_out = 20
border_size = 2
no_border_on_floating = false
# 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)
gaps_in = 20
gaps_out = 30
gaps_workspaces = 0
col.active_border = rgba(bd93f9ff) rgba(8be9fdff) 45deg
col.inactive_border = rgba(282a36ff)
layout = master
# 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
}
decoration {
rounding = 10
rounding_power = 2
rounding_power = 4.0
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
fullscreen_opacity = 1.0
dim_inactive = false
blur {
enabled = true
size = 5
passes = 3
ignore_opacity = true
new_optimizations = true
xray = true
noise = 0.0117
contrast = 0.8916
brightness = 1.0
vibrancy = 0.1696
vibrancy_darkness = 0.0
special = false
popups = false
input_methods = false
}
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
scale = 1.0
}
}
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
enabled = true
first_launch_animation = true
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
@@ -78,17 +112,32 @@ animations {
}
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
pseudotile = true # Master switch for pseudotiling. See keybinding section to enable
preserve_split = true # You probably want this
}
master {
allow_small_split = false
special_scale_factor = 1.0
mfact = 0.5
new_status = master
new_on_top = true
new_on_active = none
orientation = left
inherit_fullscreen = true
smart_resizing = true
drop_at_cursor = true
always_keep_position = false
}
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. :(
disable_splash_rendering = false
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
vfr = true
vrr = 3
mouse_move_enables_dpms = true
key_press_enables_dpms = true
}
input {
@@ -98,82 +147,220 @@ input {
kb_options =
kb_rules =
numlock_by_default = true
accel_profile = flat
sensitivity = 0.0
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
scroll_method = 2fg
touchpad {
natural_scroll = false
disable_while_typing = false
natural_scroll = true
scroll_factor = 0.5
tap-to-click = true
}
}
gestures {
workspace_swipe = false
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_min_fingers = true
}
binds {
pass_mouse_when_bound = false
workspace_back_and_forth = false
allow_workspace_cycles = false
workspace_center_on = 1
focus_preferred_method = 0
movefocus_cycles_fullscreen = false
window_direction_monitor_fallback = true
}
$mainMod = SUPER # Sets "Windows" key as main modifier
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod SHIFT, Q, exec, loginctl terminate-user ""
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod SHIFT, Return, exec, uwsm app -- $terminal
bind = $mainMod, E, exec, uwsm app -- $fileManager
bind = $mainMod, P, exec, uwsm app -- $menu
bind = $mainMod, G, exec, uwsm app -- $colorPicker
bind = $mainMod, B, exec, uwsm app -- $toggleBar
bind = $mainMod CTRL, P, exec, uwsm app -- $HOME/.scripts/control-center.sh --rofi
bind = $mainMod CTRL, C, exec, uwsm app -- cliphist list | rofi -dmenu | cliphist decode | wl-copy
bind = $mainMod CTRL, D, exec, uwsm app -- $HOME/.scripts/brightness.sh --rofi
bind = $mainMod CTRL, V, exec, uwsm app -- $HOME/.scripts/pactl.sh --rofi
bind = $mainMod CTRL, M, exec, uwsm app -- $HOME/.scripts/playerctl.sh --rofi
bind = $mainMod CTRL, N, exec, uwsm app -- $HOME/.scripts/dunst.sh --rofi
bind = $mainMod CTRL, Q, exec, uwsm app -- $HOME/.scripts/session.sh --rofi
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
bind = $mainMod SHIFT, C, killactive
bind = $mainMod CTRL SHIFT, C, forcekillactive
bind = $mainMod SHIFT, F, fullscreenstate, 0 3
bind = $mainMod CTRL SHIFT, F, fullscreen
bind = $mainMod, F, togglefloating
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
bind = $mainMod, D, pseudo
bind = $mainMod, S, togglesplit
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod, Return, layoutmsg, swapwithmaster auto
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod, 1, split-workspace, 1
bind = $mainMod, 2, split-workspace, 2
bind = $mainMod, 3, split-workspace, 3
bind = $mainMod, 4, split-workspace, 4
bind = $mainMod, 5, split-workspace, 5
bind = $mainMod, 6, split-workspace, 6
bind = $mainMod, 7, split-workspace, 7
bind = $mainMod, 8, split-workspace, 8
bind = $mainMod, 9, split-workspace, 9
bind = $mainMod, 0, split-workspace, 10
bind = $mainMod, Tab, split-workspace, previous_per_monitor
bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
bind = $mainMod, mouse_down, split-workspace, e+1
bind = $mainMod, mouse_up, split-workspace, e-1
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
bind = $mainMod SHIFT, period, movewindow, mon:+1
bind = $mainMod SHIFT, comma, movewindow, mon:-1
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
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%-
bind = , print, exec, uwsm app -- grim -g "$(slurp)" - | swappy -f -
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindel = , XF86AudioRaiseVolume, exec, uwsm app -- $HOME/.scripts/pactl.sh --raise
bindel = , XF86AudioLowerVolume, exec, uwsm app -- $HOME/.scripts/pactl.sh --lower
bindel = , XF86AudioMute, exec, uwsm app -- $HOME/.scripts/pactl.sh --mute
bindel = , XF86MonBrightnessUp, exec, uwsm app -- $HOME/.scripts/brightness.sh --raise
bindel = , XF86MonBrightnessDown, exec, uwsm app -- $HOME/.scripts/brightness.sh --lower
bindl = , XF86AudioNext, exec, uwsm app -- $HOME/.scripts/playerctl.sh --next
bindl = , XF86AudioPause, exec, uwsm app -- $HOME/.scripts/playerctl.sh --play-pause
bindl = , XF86AudioPlay, exec, uwsm app -- $HOME/.scripts/playerctl.sh --play-pause
bindl = , XF86AudioPrev, exec, uwsm app -- $HOME/.scripts/playerctl.sh --prev
windowrule = suppressevent maximize, class:.*
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
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]
xwayland {
enabled = true
use_nearest_neighbor = true
force_zero_scaling = false
create_abstract_socket = false
}
opengl {
nvidia_anti_flicker = true
}
render {
direct_scanout = 2
expand_undersized_textures = true
xp_mode = false
ctm_animation = 2
cm_fs_passthrough = 2
cm_enabled = true
}
ecosystem {
no_update_news = true
no_donation_nag = true
}
bind = $mainMod, z, easymotion, action:hyprctl dispatch focuswindow address:{}
plugin {
easymotion {
#font size of the text
textsize=100
#color of the text, takes standard hyprland color format
textcolor=rgba(50fa7bff)
#background color of the label box. alpha is respected
bgcolor=rgba(282a36ff)
#enable blur. The bgcolor alpha must be at least semi-transparent.
blur=0
#Set blur alpha value. Blur must be enabled (float value)
blurA=1.0
#Set xray. Blur must be enabled
xray=0
#font to use for the label. This is passed directly to the pango font description
textfont=Sans
#padding around the text (inside the label box) size in pixels, adjusted for
#monitor scaling. This is the same format as hyprland's gapsin/gapsout workspace layout rule
#example: textpadding=2 5 5 2 (spaces not commas)
textpadding=20 20 20 20
#size of the border around the label box. A border size of zero disables border rendering.
bordersize=2
#color of the border. takes the same format as hyprland's border (so it can be a gradient)
bordercolor=rgba(50fa7bff)
#rounded corners? Same as hyprland's 'decoration:rounding' config
rounding=1
#what to do if a window is fullscreen
#none: nothing. (easymotion label won't be displayed on that window)
#toggle: take the window out of fullscreen entirely.
#maximize: convert the window to maximized.
#windows are restored to fullscreen after easymotion is exited/selected
fullscreen_action=toggle
#which keys to use for labeling windows
motionkeys=abcdefghijklmnopqrstuvwxyz1234567890
#if a monitor has a focused special workspace, only put easymotion labels on the windows in the special workspace
only_special = true
}
}
plugin {
split-monitor-workspaces {
# How many workspaces to bind to the monitor
count = 10
# Keep current workspaces focused on plugin init / reload
keep_focused = true
# Enable notifications
enable_notifications = false
# Enable management of persistent workspaces.
# This means the plugin will at initialization create $count
# workspaces on each monitor and make them persistent
enable_persistent_workspaces = false
}
}

69
hyprlock.conf Normal file
View File

@@ -0,0 +1,69 @@
general {
hide_cursor = true
grace = 0
ignore_empty_input = false
immediate_render = true
text_trim = true
fractional_scaling = 2
screencopy_mode = 0
fail_timeout = 2000
}
auth {
pam {
enabled = true
module = hyprlock
}
}
animations {
enabled = false
}
background {
monitor =
path = ~/Data/NextCloud/Wallpapers/Desktop/Solar_System.png
color = rgba(282a36ff)
}
input-field {
monitor =
size = 20%, 5%
outline_thickness = 2
dots_size = 0.2
dots_spacing = 0.35
dots_center = true
dots_rounding = -1
outer_color = rgba(8be9fdff) rgba(bd93f9ff) 45deg
inner_color = rgba(282a36ff)
font_color = rgba(f8f8f2ff)
font_family = Noto Sans
fade_on_empty = true
fade_timeout = 2000
check_color = rgba(f1fa8cff)
fail_color = rgba(ff5555ff)
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] date +"%A, %B %d"
color = rgba(bd93f9ff)
font_size = 22
font_family = JetBrains Mono
position = 0, 300
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] date +"%-I:%M %p"
color = rgba(8be9fdff)
font_size = 95
font_family = JetBrains Mono Extrabold
position = 0, 200
halign = center
valign = center
}

345
waybar/config.jsonc Normal file
View File

@@ -0,0 +1,345 @@
// -*- mode: jsonc -*-
{
"layer": "top", // Waybar at top layer
// "output": "",
"position": "top", // Waybar position (top|bottom|left|right)
// "height": 25, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
"mode": "dock",
"start_hidden": false,
"fixed-center": true,
"reload_style_on_change": true,
"modules-left": [
"group/power-menu",
"hyprland/workspaces",
"hyprland/window",
"hyprland/submap",
],
"modules-center": [
"tray",
],
"modules-right": [
"group/media-playing",
"pulseaudio",
"idle_inhibitor",
"custom/system76-power",
"cpu",
"memory",
"disk",
"battery",
"clock",
"group/dunst",
],
"group/power-menu": {
"orientation": "inherit",
"modules": [
"custom/power-menu-launcher",
"custom/power-menu-shutdown",
"custom/power-menu-reboot",
"custom/power-menu-sleep",
"custom/power-menu-lock",
"custom/power-menu-logout",
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true,
"click-to-reveal": false,
},
},
"group/media-playing": {
"orientation": "inherit",
"modules": [
"custom/media-playing-source",
"custom/media-playing-prev",
"custom/media-playing-play-pause",
"custom/media-playing-next",
],
},
"group/dunst": {
"orientation": "inherit",
"modules": [
"custom/dunst-status",
"custom/dunst-history-view",
"custom/dunst-clear",
"custom/dunst-history-clear",
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true,
"click-to-reveal": false,
},
},
"battery": {
"interval": 60,
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"tooltip": true,
"tooltip-format": "󱧥\t{timeTo}\n󱐋\t{power} W\n󱠴\t{cycles}\n󱈏\t{health}%",
},
"cpu": {
"interval": 5,
"format": " {usage}%",
"tooltip": true,
"on-click-right": "uwsm app -- foot btop",
},
"clock": {
"interval": 60,
"format": "󰥔 {:%I:%M %p}",
"tooltip": true,
"tooltip-format": "<tt><small>{calendar}</small></tt>",
"calendar": {
"mode" : "month",
"mode-mon-col" : 3,
"weeks-pos" : "left",
"on-scroll" : 1,
"format": {
"months": "<span color='#50fa7b'><b>{}</b></span>",
"days": "<span color='#f8f8f2'><b>{}</b></span>",
"weeks": "<span color='#8be9fd'><b>W{}</b></span>",
"weekdays": "<span color='#f1fa8c'><b>{}</b></span>",
"today": "<span color='#bd93f9'><b><u>{}</u></b></span>"
},
},
"actions": {
"on-click": "mode",
"on-click-right": "shift_reset",
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down",
},
},
"custom/dunst-status": {
"exec": "uwsm app -- $HOME/.config/hypr/waybar/scripts/dunst.sh",
"restart-interval": 1,
"on-click": "uwsm app -- $HOME/.scripts/dunst.sh --dnd",
"on-click-right": "uwsm app -- $HOME/.scripts/dunst.sh --rofi",
"tooltip": true,
"tooltip-format": "Toggle Do Not Disturb",
},
"custom/dunst-clear": {
"format": "",
"on-click": "uwsm app -- $HOME/.scripts/dunst.sh --close-all",
"tooltip": true,
"tooltip-format": "Close Open Notifications",
},
"custom/dunst-history-view": {
"format": "󰋚",
"on-click": "uwsm app -- $HOME/.scripts/dunst.sh --history",
"tooltip": true,
"tooltip-format": "View Notification History",
},
"custom/dunst-history-clear": {
"format": "󰎟",
"on-click": "uwsm app -- $HOME/.scripts/dunst.sh --history-clear",
"tooltip": true,
"tooltip-format": "Clear Notification History",
},
"disk": {
"interval": 60,
"format": "󰋊 {percentage_used}%",
"tooltip": true,
"tooltip-format": "Used: {used} ({percentage_used}%)\nFree: {free} ({percentage_free}%)\nTotal: {total}",
"on-click-right": "uwsm app -- qdirstat",
},
"hyprland/workspaces": {
"active-only": false,
"all-outputs": false,
"format": "{icon}",
"format-icons": {
"1": "󰻧 ₁",
"2": "󰍩 ₂",
"3": "󰠮 ₃",
"4": " ₄",
"5": "󰖟 ₅",
"6": " ₆",
"7": "󰊢 ₇",
"8": "󰊖 ₈",
"9": " ₉",
"10": " ₁₀",
"11": "󰻧 ₁",
"12": "󰍩 ₂",
"13": "󰠮 ₃",
"14": " ₄",
"15": "󰖟 ₅",
"16": " ₆",
"17": "󰊢 ₇",
"18": "󰊖 ₈",
"19": " ₉",
"20": " ₁₀",
"21": "󰻧 ₁",
"22": "󰍩 ₂",
"23": "󰠮 ₃",
"24": " ₄",
"25": "󰖟 ₅",
"26": " ₆",
"27": "󰊢 ₇",
"28": "󰊖 ₈",
"29": " ₉",
"30": " ₁₀",
"31": "󰻧 ₁",
"32": "󰍩 ₂",
"33": "󰠮 ₃",
"34": " ₄",
"35": "󰖟 ₅",
"36": " ₆",
"37": "󰊢 ₇",
"38": "󰊖 ₈",
"39": " ₉",
"40": " ₁₀",
"41": "󰻧 ₁",
"42": "󰍩 ₂",
"43": "󰠮 ₃",
"44": " ₄",
"45": "󰖟 ₅",
"46": " ₆",
"47": "󰊢 ₇",
"48": "󰊖 ₈",
"49": " ₉",
"50": " ₁₀",
},
"show-special": true,
"special-visible-only": true,
"move-to-monitor": false,
},
"hyprland/window": {
"format": "{title}",
"rewrite": {
"": "",
},
"separate-outputs": true,
"icon": true,
"icon-size": 21,
},
"hyprland/submap": {
"format": "󰘳 {}",
"always-on": false,
"default-submap": "",
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󱄄 on",
"deactivated": "󰶐 off",
},
"tooltip": true,
"tooltip-format-activated": "Idle Inhibitor: {status}",
"tooltip-format-deactivated": "Idle Inhibitor: {status}",
"start-activated": true,
},
"memory": {
"interval": 5,
"format": " {percentage}%",
"tooltip": true,
"tooltip-format": "RAM:\n\tUsed: {used} GiB ({percentage}%)\n\tFree: {avail} GiB\n\tTotal: {total} GiB\nSwap:\n\tUsed: {swapUsed} GiB ({swapPercentage}%)\n\tFree: {swapAvail} GiB\n\tTotal: {swapTotal} GiB",
"on-click-right": "uwsm app -- foot btop",
},
"custom/media-playing-source": {
"exec": "uwsm app -- $HOME/.config/hypr/waybar/scripts/get-media-playing.sh",
"return-type": "json",
"restart-interval": 1,
"on-click": "uwsm app -- $HOME/.scripts/playerctl.sh --change",
"tooltip": true,
},
"custom/media-playing-prev": {
"format": "󰒮",
"on-click": "uwsm app -- $HOME/.scripts/playerctl.sh --prev",
"tooltip": false,
},
"custom/media-playing-play-pause": {
"exec": "uwsm app -- $HOME/.config/hypr/waybar/scripts/get-media-status-icon.sh",
"restart-interval": 1,
"on-click": "uwsm app -- $HOME/.scripts/playerctl.sh --play-pause",
"tooltip": false,
},
"custom/media-playing-next": {
"format": "󰒭",
"on-click": "uwsm app -- $HOME/.scripts/playerctl.sh --next",
"tooltip": false,
},
"custom/power-menu-launcher": {
"format": "",
"on-click": "rofi -show combi -run-command 'uwsm app -- {cmd}'",
"on-click-right": "uwsm app -- $HOME/.scripts/control-center.sh --rofi",
"tooltip": true,
"tooltip-format": "Application Launcher",
},
"custom/power-menu-shutdown": {
"format": "",
"on-click": "uwsm app -- $HOME/.scripts/session.sh --shutdown",
"tooltip": true,
"tooltip-format": "Shutdown",
},
"custom/power-menu-reboot": {
"format": "",
"on-click": "uwsm app -- $HOME/.scripts/session.sh --reboot",
"tooltip": true,
"tooltip-format": "Reboot",
},
"custom/power-menu-sleep": {
"format": "⏾",
"on-click": "uwsm app -- $HOME/.scripts/session.sh --sleep",
"tooltip": true,
"tooltip-format": "Sleep",
},
"custom/power-menu-lock": {
"format": "",
"on-click": "uwsm app -- $HOME/.scripts/session.sh --lock",
"tooltip": true,
"tooltip-format": "Lock",
},
"custom/power-menu-logout": {
"format": "",
"on-click": "uwsm app -- $HOME/.scripts/session.sh --logout",
"tooltip": true,
"tooltip-format": "Logout",
},
"pulseaudio": {
"interval": 5,
"format": "{icon} {volume}%",
"format-bluetooth": "{icon} 󰂯 {volume}%",
"format-muted": "󰝟 muted",
"format-icons": {
"hdmi": "󰡁",
"headset": "󰋎",
"speaker": "󰓃",
"headphone": "󰋋",
"car": "",
"hifi": "󰤽",
"default": "",
},
"scroll-step": 5,
"on-click": "uwsm app -- $HOME/.scripts/pactl.sh --mute",
"on-click-right": "uwsm app -- $HOME/.scripts/pactl.sh --mixer",
"tooltip": true,
"tooltip-format": "{desc}",
"scroll-step": 0.25,
},
"custom/system76-power": {
"exec": "uwsm app -- $HOME/.config/hypr/waybar/scripts/system76-power.sh",
"return-type": "json",
"restart-interval": 60,
"on-click-right": "uwsm app -- $HOME/.scripts/cpu-gpu.sh --rofi",
"tooltip": true,
},
"tray": {
"icon-size": 21,
"show-passive-items": true,
"spacing": 4,
"reverse-direction": false,
},
}

9
waybar/scripts/dunst.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
isPaused=$(dunstctl is-paused)
notificationCount=$(dunstctl count history)
if [[ "$isPaused" == "true" ]]; then
echo "󰂛 $notificationCount"
else
echo "󰂚 $notificationCount"
fi

View File

@@ -0,0 +1,33 @@
#!/usr/bin/env bash
mediaSourceIcon=$(`dirname $0`/get-media-source-icon.sh)
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
artist="N/A"
title="N/A"
album="N/A"
status="N/A"
else
artist=$(playerctl --player=playerctld metadata --format '{{ xesam:artist }}')
title=$(playerctl --player=playerctld metadata --format '{{ xesam:title }}')
album=$(playerctl --player=playerctld metadata --format '{{ xesam:album }}')
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
if [[ $artist == "" ]]; then
artist="N/A"
fi
if [[ $title == "" ]]; then
title="N/A"
fi
if [[ $album == "" ]]; then
album="N/A"
fi
if [[ $status == "" ]]; then
status="N/A"
fi
fi
echo '{"text":"'$mediaSourceIcon'","tooltip":"󰝚\t'${title//'"'/'\"'}'\r󰠃\t'${artist//'"'/'\"'}'\r󰀥\t'${album//'"'/'\"'}'\r󰐎\t'${status//'"'/'\"'}'"}'

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "󰡀"
else
trackid=$(playerctl --player=playerctld metadata --format '{{ mpris:trackid }}')
title=$(playerctl --player=playerctld metadata --format '{{ xesam:title }}')
if grep -q -i "netflix" <<< "$title"; then
echo "󰝆"
elif grep -q -i "hulu" <<< "$title"; then
echo "󰠩"
elif grep -q -i "prime video" <<< "$title"; then
echo ""
elif grep -q -i "youtube tv" <<< "$title"; then
echo "󰑈"
elif grep -q -i "chromium" <<< "$trackid"; then
echo ""
elif grep -q -i "vlc" <<< "$trackid"; then
echo "󰕼"
elif grep -q -i "spotify" <<< "$trackid"; then
echo ""
else
echo "󰡀"
fi
fi

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
mediaStatus=$(`dirname $0`/get-media-status.sh)
if [[ "$mediaStatus" == "N/A" ]]; then
echo "󰐎"
else
if [[ "$mediaStatus" == "Playing" ]]; then
echo "󰏤"
elif [[ "$mediaStatus" == "Paused" ]]; then
echo "󰐊"
fi
fi

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "N/A"
else
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
echo $status
fi

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
profile="$(sudo system76-power profile | sed -z '$ s/\n$//' | tr '\n' '\r')"
graphics="$(sudo system76-power graphics)"
graphicsPower="$(sudo system76-power graphics power)"
chargeThresholds="$(sudo system76-power charge-thresholds | sed -z '$ s/\n$//' | tr '\n' '\r')"
echo '{"text":"󰢮 '$graphics'","tooltip":"󰢮\t'$graphics'\r󰐥\t'$graphicsPower'\r\r Profile\r'$profile'\r\r󰚥 Charge Thresholds\r'$chargeThresholds'"}'

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
if systemctl --user is-active waybar.service; then
systemctl --user stop waybar.service
else
systemctl --user start waybar.service
fi

187
waybar/style.css Normal file
View File

@@ -0,0 +1,187 @@
window#waybar {
background: transparent;
}
#window {
padding: 0px 0px;
color: transparent;
background: transparent;
}
widget {
background: #282a36;
border-radius: 25px;
}
label.module {
padding: 0px 10px;
}
button {
border-radius: 0px;
padding: 0px 0px;
}
.module,button {
font-size: 15px;
font-family: Ubuntu Nerd Font;
}
#battery {
background: transparent;
color: #ff79c6;
}
#cpu {
background: transparent;
color: #ffb86c;
}
#clock {
background: transparent;
color: #bd93f9;
}
box#dunst {
padding: 0px 10px;
}
#custom-dunst-status {
background: transparent;
color: #50fa7b;
padding: 0px 5px;
}
#custom-dunst-clear {
background: transparent;
color: #50fa7b;
padding: 0px 5px;
}
#custom-dunst-history-view {
background: transparent;
color: #50fa7b;
padding: 0px 5px;
}
#custom-dunst-history-clear {
background: transparent;
color: #50fa7b;
padding: 0px 5px;
}
#disk {
background: transparent;
color: #f1fa8c;
}
#workspaces {
padding: 0px 10px;
}
#workspaces button {
background: transparent;
color: #f1fa8c;
padding: 0px 5px;
}
#workspaces button.empty {
color: #44475a;
}
#workspaces button.active {
box-shadow: inset 0 -3px #bd93f9;
}
#workspaces button.urgent {
color: #ff5555;
}
#window {
background: transparent;
color: #f8f8f2;
padding: 0px 10px;
}
#submap {
background: transparent;
color: #50fa7b;
padding: 0px 10px;
}
#idle_inhibitor.activated {
background: transparent;
color: #f1fa8c;
}
#idle_inhibitor.deactivated {
background: transparent;
color: #44475a;
}
#memory {
background: transparent;
color: #8be9fd;
}
box#media-playing {
padding: 0px 10px;
}
#custom-media-playing-source {
background: transparent;
color: #ff5555;
padding: 0px 5px;
}
#custom-media-playing-prev {
background: transparent;
color: #ff5555;
padding: 0px 5px;
}
#custom-media-playing-play-pause {
background: transparent;
color: #ff5555;
padding: 0px 5px;
}
#custom-media-playing-next {
background: transparent;
color: #ff5555;
padding: 0px 5px;
}
box#power-menu {
padding: 0px 10px;
}
#custom-power-menu-launcher {
background: transparent;
color: #8be9fd;
padding: 0px 5px;
}
#custom-power-menu-shutdown {
background: transparent;
color: #ff5555;
padding: 0px 5px;
}
#custom-power-menu-reboot {
background: transparent;
color: #50fa7b;
padding: 0px 5px;
}
#custom-power-menu-sleep {
background: transparent;
color: #f1fa8c;
padding: 0px 5px;
}
#custom-power-menu-lock {
background: transparent;
color: #ff79c6;
padding: 0px 5px;
}
#custom-power-menu-logout {
background: transparent;
color: #ffb86c;
padding: 0px 5px;
}
#pulseaudio {
background: transparent;
color: #ff79c6;
}
#custom-system76-power {
background: transparent;
color: #50fa7b;
}
#tray {
background: transparent;
padding: 0px 10px;
}

4
xdph.conf Normal file
View File

@@ -0,0 +1,4 @@
screencopy {
max_fps = 0
allow_token_by_default = false
}