Krolyxon
Commit 3718ac5

Branches

Refs →

dotfiles-x113718ac5

move to hyprland

Author
krolxon
Date
2025-08-03 21:29 +0530
Parent
216cf47
Commit
3718ac5eb3aae770e0b50e44b514c276376f1bcf

+881 −377

21 files changed

  1. D .config/dunst/dunstrc +0 −60
  2. A .config/hypr/hyprland.conf +296 −0
  3. A .config/hypr/hyprlock.conf +125 −0
  4. A .config/hypr/hyprpaper.conf +2 −0
  5. A .config/hypr/hyprsunset.conf +12 −0
  6. A .config/waybar/config.jsonc +145 −0
  7. A .config/waybar/style.css +301 −0
  8. D .config/x11/xinitrc +0 −23
  9. D .local/bin/colorpicker
  10. D .local/bin/dmenurecord +0 −123
  11. D .local/bin/jrun +0 −14
  12. D .local/bin/maimshot +0 −13
  13. D .local/bin/pirokit +0 −68
  14. D .local/bin/run_alacritty +0 −8
  15. D .local/bin/statusbar/sb-battery +0 −37
  16. D .local/bin/statusbar/sb-clock +0 −3
  17. D .local/bin/statusbar/sb-memory +0 −4
  18. D .local/bin/statusbar/sb-mpdup +0 −8
  19. D .local/bin/statusbar/sb-music +0 −11
  20. D .local/bin/statusbar/sb-updates +0 −3
  21. D .local/bin/statusbar/sb-volume +0 −2
D .config/dunst/dunstrc View
@@ -1,60 +0,0 @@
1−# New Start: A modern Arch workflow built with an emphasis on functionality.
2−# Copyright (C) 2018 Donovan Glover
3−
4−# NOTE: This file is automatically generated by pywal. Do not edit it by hand.
5−
6−[global]
7− # Make the width 3740 (3840 - 100), have 50 left margin and 95 above
8− # geometry = "3740x5-50+95"
9− offset = 3x20
10−
11− # Show multiple notifications in the same box
12− separator_height = 0
13−
14− # Add vertical padding to the inside of the notification
15− padding = 8
16−
17− # Add horizontal padding for when the text gets long enough
18− horizontal_padding = 8
19−
20− # The frame color and width of the notification
21− frame_color = "#224487"
22− frame_width = 2
23−
24− # How long a user needs to be idle for sticky notifications
25− idle_threshold = 120
26−
27− # Font and typography settings
28− font = JetbrainsMono Nerd Font 10
29− alignment = left
30− word_wrap = yes
31−
32− # Format for how notifications will be displayed
33− # Usage: `notify-send 'Title' 'Summary'`
34− format = "<b>%s</b>\n%b"
35−
36− # Allow some HTML tags like <i> and <u> in notifications
37− markup = full
38− max_icon_size = 120
39− transparency = 5
40−
41−# These are the keybindings used to control dunst notifications
42−[shortcuts]
43− close = ctrl+space
44− close_all = ctrl+shift+space
45− history = ctrl+grave
46−
47−# Set the background and foreground (text) color for all notifications
48−[urgency_low]
49− background = "#000000"
50− foreground = "#ffffff"
51−
52−[urgency_normal]
53− background = "#000000"
54− foreground = "#ffffff"
55−
56−[urgency_critical]
57− background = "#000000"
58− foreground = "#ffffff"
59−
60−# vim:ft=cfg
A .config/hypr/hyprland.conf View
@@ -0,0 +1,296 @@
1+autogenerated = 0
2+
3+env = HYPRSHOT_DIR,/home/krolyxon/pix/ss/
4+
5+
6+plugin {
7+ split-monitor-workspaces {
8+ count = 10
9+ keep_focused = 1
10+ enable_notifications = 0
11+ enable_persistent_workspaces = 1
12+ }
13+}
14+
15+# This is an example Hyprland config file.
16+# Refer to the wiki for more information.
17+# https://wiki.hypr.land/Configuring/
18+
19+# Please note not all available settings / options are set here.
20+# For a full list, see the wiki
21+
22+# You can split this configuration into multiple files
23+# Create your files separately and then link them to this file like this:
24+source = ~/.config/hypr/monitors.conf
25+
26+
27+###################
28+### MY PROGRAMS ###
29+###################
30+# See https://wiki.hypr.land/Configuring/Keywords/
31+
32+# Set programs that you use
33+$terminal = alacritty
34+$fileManager = pcmanfm
35+# $menu = rofi -show drun
36+$menu = wofi --show drun
37+$browser = brave
38+
39+
40+#################
41+### AUTOSTART ###
42+#################
43+
44+# Autostart necessary processes (like notifications daemons, status bars, etc.)
45+# Or execute your favorite apps at launch like this:
46+
47+exec-once = hyprpm reload -n
48+exec-once = waybar & hyprpaper & swaync & hyprsunset
49+exec-once = systemctl --user start hyprpolkitagent
50+
51+plugin {
52+ hyprsplit {
53+ num_workspaces = 10
54+ persistent_workspaces = true
55+ }
56+}
57+
58+#############################
59+### ENVIRONMENT VARIABLES ###
60+#############################
61+
62+# See https://wiki.hypr.land/Configuring/Environment-variables/
63+
64+env = XCURSOR_SIZE,24
65+env = HYPRCURSOR_SIZE,24
66+
67+
68+###################
69+### PERMISSIONS ###
70+###################
71+
72+# See https://wiki.hypr.land/Configuring/Permissions/
73+# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
74+# for security reasons
75+
76+# ecosystem {
77+# enforce_permissions = 1
78+# }
79+
80+# permission = /usr/(bin|local/bin)/grim, screencopy, allow
81+# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
82+# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
83+
84+
85+#####################
86+### LOOK AND FEEL ###
87+#####################
88+
89+# Refer to https://wiki.hypr.land/Configuring/Variables/
90+
91+# https://wiki.hypr.land/Configuring/Variables/#general
92+general {
93+ gaps_in = 10
94+ gaps_out = 10
95+ border_size = 2
96+ resize_on_border = false
97+ allow_tearing = false
98+ col.active_border = rgba(1b9993ee)
99+ col.inactive_border = rgba(888e8eaa)
100+ layout = master
101+}
102+
103+# https://wiki.hypr.land/Configuring/Variables/#decoration
104+decoration {
105+ rounding = 0
106+
107+ blur {
108+ enabled = true
109+ size = 3
110+ passes = 1
111+ }
112+
113+ # drop_shadow = yes
114+ # shadow_range = 4
115+ # shadow_render_power = 3
116+ # col.shadow = rgba(1a1a1aee)
117+}
118+# https://wiki.hypr.land/Configuring/Variables/#animations
119+
120+animations {
121+ enabled = yes
122+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
123+ animation = windows, 1, 7, myBezier
124+ animation = windowsOut, 1, 7, default, popin 80%
125+ animation = border, 1, 10, default
126+ animation = borderangle, 1, 8, default
127+ animation = fade, 1, 7, default
128+ animation = workspaces, 1, 6, default
129+}
130+
131+# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
132+# "Smart gaps" / "No gaps when only"
133+# uncomment all if you wish to use that.
134+# workspace = w[tv1], gapsout:0, gapsin:0
135+# workspace = f[1], gapsout:0, gapsin:0
136+# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
137+# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
138+# windowrule = bordersize 0, floating:0, onworkspace:f[1]
139+# windowrule = rounding 0, floating:0, onworkspace:f[1]
140+
141+# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
142+dwindle {
143+ pseudotile = true# Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
144+ preserve_split = true # You probably want this
145+}
146+
147+# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
148+master {
149+ new_status = master
150+ # new_on_top = true
151+
152+}
153+
154+# https://wiki.hypr.land/Configuring/Variables/#misc
155+misc {
156+ force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
157+ disable_hyprland_logo = true# If true disables the random hyprland logo / anime girl background. :(
158+}
159+
160+
161+#############
162+### INPUT ###
163+#############
164+
165+# https://wiki.hypr.land/Configuring/Variables/#input
166+input {
167+ kb_layout = us
168+ kb_variant =
169+ kb_model =
170+ kb_options =
171+ kb_rules =
172+
173+ follow_mouse = 1
174+
175+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
176+
177+ touchpad {
178+ natural_scroll = false
179+ }
180+
181+ repeat_delay = 300
182+ repeat_rate = 50
183+}
184+
185+# https://wiki.hypr.land/Configuring/Variables/#gestures
186+gestures {
187+ workspace_swipe = false
188+}
189+
190+# Example per-device config
191+# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
192+device {
193+ name = epic-mouse-v1
194+ sensitivity = -0.5
195+}
196+
197+
198+###################
199+### KEYBINDINGS ###
200+###################
201+
202+# See https://wiki.hypr.land/Configuring/Keywords/
203+$mainMod = SUPER # Sets "Windows" key as main modifier
204+
205+# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
206+bind = $mainMod, Return, exec, $terminal
207+bind = $mainMod SHIFT, X, killactive,
208+bind = $mainMod SHIFT, Q, exit,
209+bind = $mainMod, F, Fullscreen
210+bind = $mainMod SHIFT, R, togglefloating,
211+bind = $mainMod, R, exec, $menu
212+bind = $mainMod SHIFT, P, pseudo, # dwindle
213+bind = $mainMod, J, togglesplit, # dwindle
214+bind = $mainMod, tab, cyclenext
215+bind = $mainMod, b, exec, killall waybar || waybar
216+
217+# Applications
218+bind = $mainMod, W, exec, $browser
219+
220+# Music Controls
221+bind = $mainMod, m, exec, $terminal -e "ncmpcpp"
222+bind = $mainMod, p, exec, mpc toggle
223+bind = $mainMod, comma, exec, mpc seek -10
224+bind = $mainMod, period, exec, mpc seek -10
225+
226+# Move focus with mainMod + arrow keys
227+bind = $mainMod, h, movefocus, l
228+bind = $mainMod, j, movefocus, r
229+bind = $mainMod, k, movefocus, u
230+bind = $mainMod, l, movefocus, d
231+
232+# Switch workspaces with mainMod + [0-9]
233+bind = $mainMod, 1, split-workspace, 1
234+bind = $mainMod, 2, split-workspace, 2
235+bind = $mainMod, 3, split-workspace, 3
236+bind = $mainMod, 4, split-workspace, 4
237+bind = $mainMod, 5, split-workspace, 5
238+bind = $mainMod, 6, split-workspace, 6
239+bind = $mainMod, 7, split-workspace, 7
240+bind = $mainMod, 8, split-workspace, 8
241+bind = $mainMod, 9, split-workspace, 9
242+bind = $mainMod, 0, split-workspace, 10
243+
244+# Move active window to a workspace with mainMod + SHIFT + [0-9]
245+bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
246+bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
247+bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
248+bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
249+bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
250+bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
251+bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
252+bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
253+bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
254+bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
255+
256+# Example special workspace (scratchpad)
257+bind = $mainMod, S, togglespecialworkspace, magic
258+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
259+
260+# Scroll through existing workspaces with mainMod + scroll
261+bind = $mainMod, mouse_down, workspace, e+1
262+bind = $mainMod, mouse_up, workspace, e-1
263+
264+# Move/resize windows with mainMod + LMB/RMB and dragging
265+bindm = $mainMod, mouse:272, movewindow
266+bindm = $mainMod, mouse:273, resizewindow
267+
268+# Laptop multimedia keys for volume and LCD brightness
269+bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
270+bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
271+bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
272+bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
273+bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
274+bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
275+
276+# Requires playerctl
277+bindl = , XF86AudioNext, exec, playerctl next
278+bindl = , XF86AudioPause, exec, playerctl play-pause
279+bindl = , XF86AudioPlay, exec, playerctl play-pause
280+bindl = , XF86AudioPrev, exec, playerctl previous
281+
282+##############################
283+### WINDOWS AND WORKSPACES ###
284+##############################
285+
286+# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
287+# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
288+
289+# Example windowrule
290+# windowrule = float,class:^(kitty)$,title:^(kitty)$
291+
292+# Ignore maximize requests from apps. You'll probably like this.
293+windowrule = suppressevent maximize, class:.*
294+
295+# Fix some dragging issues with XWayland
296+windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
A .config/hypr/hyprlock.conf View
@@ -0,0 +1,125 @@
1+# BACKGROUND
2+background {
3+ monitor =
4+ path = ~/.config/hypr/hyprlock.png
5+ blur_passes = 0
6+ contrast = 0.8916
7+ brightness = 0.8916
8+ vibrancy = 0.8916
9+ vibrancy_darkness = 0.0
10+}
11+
12+# GENERAL
13+general {
14+ no_fade_in = false
15+ grace = 0
16+ disable_loading_bar = false
17+}
18+
19+# Profie-Photo
20+image {
21+ monitor =
22+ path = $HOME/.config/hypr/thunder.png
23+ border_size = 2
24+ border_color = rgba(216, 222, 233, 0.80)
25+ size = 100
26+ rounding = -1
27+ rotate = 0
28+ reload_time = -1
29+ reload_cmd =
30+ position = 25, 200
31+ halign = center
32+ valign = center
33+}
34+
35+# NAME
36+label {
37+ monitor =
38+ text = THUNDER
39+ color = rgba(216, 222, 233, 0.80)
40+ outline_thickness = 0
41+ dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
42+ dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
43+ dots_center = true
44+ font_size = 20
45+ font_family = SF Pro Display Bold
46+ position = 25, 110
47+ halign = center
48+ valign = center
49+}
50+
51+# Time
52+label {
53+ monitor =
54+ text = cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"
55+ color = rgba(216, 222, 233, 0.80)
56+ font_size = 60
57+ font_family = SF Pro Display Bold
58+ position = 30, -8
59+ halign = center
60+ valign = center
61+}
62+
63+# Day-Month-Date
64+label {
65+ monitor =
66+ text = cmd[update:1000] echo -e "$(date +"%A, %B %d")"
67+ color = rgba(216, 222, 233, .80)
68+ font_size = 19
69+ font_family = SF Pro Display Bold
70+ position = 35, -60
71+ halign = center
72+ valign = center
73+}
74+
75+# USER-BOX
76+shape {
77+ monitor =
78+ size = 320, 55
79+ color = rgba(255, 255, 255, 0.1)
80+ rounding = -1
81+ border_size = 0
82+ border_color = rgba(255, 255, 255, 1)
83+ rotate = 0
84+ xray = false # if true, make a "hole" in the background (rectangle of specified size, no rotation)
85+
86+ position = 34, -190
87+ halign = center
88+ valign = center
89+}
90+
91+# USER
92+label {
93+ monitor =
94+ text =  $USER
95+ color = rgba(216, 222, 233, 0.80)
96+ outline_thickness = 0
97+ dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
98+ dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
99+ dots_center = true
100+ font_size = 16
101+ font_family = SF Pro Display Bold
102+ position = 38, -190
103+ halign = center
104+ valign = center
105+}
106+
107+# INPUT FIELD
108+input-field {
109+ monitor =
110+ size = 320, 55
111+ outline_thickness = 0
112+ dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
113+ dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
114+ dots_center = true
115+ outer_color = rgba(255, 255, 255, 0)
116+ inner_color = rgba(255, 255, 255, 0.1)
117+ font_color = rgb(200, 200, 200)
118+ fade_on_empty = false
119+ font_family = SF Pro Display Bold
120+ placeholder_text = <i><span foreground="##ffffff99">🔒 Enter Pass</span></i>
121+ hide_input = false
122+ position = 34, -268
123+ halign = center
124+ valign = center
125+}
A .config/hypr/hyprpaper.conf View
@@ -0,0 +1,2 @@
1+preload = ~/pix/wallpapers/morpheus-red-pill-blue-pill.jpg
2+wallpaper = ,~/pix/wallpapers/morpheus-red-pill-blue-pill.jpg
A .config/hypr/hyprsunset.conf View
@@ -0,0 +1,12 @@
1+max-gamma = 150
2+
3+profile {
4+ time = 7:30
5+ identity = true
6+}
7+
8+profile {
9+ time = 21:00
10+ temperature = 5500
11+ gamma = 0.8
12+}
A .config/waybar/config.jsonc View
@@ -0,0 +1,145 @@
1+{
2+ // "layer": "top", // Waybar at top layer
3+ "position": "top", // Waybar position (top|bottom|left|right)
4+ "height": 0, // Waybar height (to be removed for auto height)
5+ "width": 0, // Waybar width (0 == auto)
6+ "spacing": 0, // Gaps between modules
7+ // "output": ["HDMI-A-1", "DP-2", "eDP-1"],
8+ // Choose the order of the modules
9+ "modules-left": [
10+ "hyprland/workspaces"
11+ // "hyprland/window",
12+ ],
13+ "modules-center" : [
14+ ],
15+ "modules-right": [
16+ "mpd",
17+ "pulseaudio",
18+ "battery",
19+ "cpu",
20+ "memory",
21+ "network",
22+ "custom/date",
23+ "clock",
24+ "tray",
25+ ],
26+ // Modules configuration
27+ "hyprland/workspaces": {
28+ "format": "{icon}",
29+ "format-icons": {
30+ "1": "",
31+ "2": "",
32+ "3": "",
33+ "4": "",
34+ "5": "",
35+ "6": "",
36+ "7": "",
37+ "8": "",
38+ "9": "",
39+ "10": "",
40+ "11": "",
41+ "12": "",
42+ "13": "",
43+ "14": "",
44+ "15": "",
45+ "16": "",
46+ "17": "",
47+ "18": "",
48+ "19": "",
49+ "20": "",
50+ "urgent": "",
51+ // "active": "", // focused workspace on current monitor
52+ // "visible": "", // focused workspace on other monitors
53+ // "default": "",
54+ // "default": "", // focused workspace on current monitor
55+ // "empty": "" // persistent
56+ },
57+ "on-scroll-up": "hyprctl dispatch workspace r-1",
58+ "on-scroll-down": "hyprctl dispatch workspace r+1",
59+ "all-outputs": false,
60+ "show-special": false
61+ },
62+ "tray": {
63+ "icon-size": 21,
64+ "spacing": 12
65+ },
66+ "clock": {
67+ "timezone": "Asia/Kolkata",
68+ "tooltip-format": "<tt><big>{calendar}</big></tt>",
69+ "format": "󰥔 {:%H:%M}",
70+ "interval": 5
71+ },
72+ "custom/date": {
73+ "timezone": "Asia/Kolkata",
74+ "exec": "date +'%a %Y-%m-%d'",
75+ "format": "󰃭 {}",
76+ "interval": 1,
77+ "tooltip": false
78+ },
79+ "cpu": {
80+ "format": " {usage:2}%",
81+ "tooltip": false,
82+ "interval": 1
83+ },
84+ "memory": {
85+ "format": " {:2}%",
86+ "interval": 1
87+ },
88+ "network": {
89+ "interval": 5,
90+ "format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
91+ "format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
92+ "format-disconnected": "⚠ Disconnected",
93+ "tooltip-format": "{ifname}: {ipaddr}"
94+ },
95+ "battery": {
96+ "states": {
97+ "good": 90,
98+ "warning": 30,
99+ "critical": 15
100+ },
101+ "format": "{icon} {capacity:3}%",
102+ "format-charging": "󰂄 {capacity:3}%",
103+ "format-plugged": " {capacity:3}%",
104+ "format-alt": "{icon} ",
105+ "format-good": "{icon} {capacity:3}%",
106+ "format-full": "{icon} {capacity:3}%",
107+ "format-icons": [
108+ "",
109+ "",
110+ "",
111+ "",
112+ ""
113+ ]
114+ },
115+ "pulseaudio": {
116+ "scroll-step": 1, // %, can be a float
117+ "format": "{volume:2}% {icon} {format_source}",
118+ "format-muted": "{volume:2}% 󰝟 {format_source}",
119+ "format-bluetooth": "{volume:2}% {icon}  {format_source}",
120+ "format-source": "",
121+ "format-source-muted": "",
122+ "format-icons": {
123+ "analog": "",
124+ "hdmi": "󰓃",
125+ "headphone": "",
126+ "headset": "󰋎",
127+ "default": [
128+ "", // 0 - 25
129+ "", // 25 - 50
130+ "", // 50 - 75
131+ "" // 75 - 100
132+ ]
133+ },
134+ "on-click": "pavucontrol",
135+ },
136+ "mpd": {
137+ "format": "Playing ",
138+ "format-paused": "Paused ",
139+ "format-stopped": "Stopped ",
140+ "max-length": 20,
141+ "tooltip": false,
142+ "tooltip-format": "{title}\n{artist}\n{album}",
143+ "tooltip": true
144+ },
145+}
A .config/waybar/style.css View
@@ -0,0 +1,301 @@
1+* {
2+ /* `otf-font-awesome` is required to be installed for icons */
3+ font-family: JetBrains Mono Nerd Font, FontAwesome;
4+ font-size: 13px;
5+ font-weight: bold;
6+}
7+
8+window#waybar {
9+ background-color: rgba(0, 0, 0, 0);
10+ color: #e3e3e3;
11+ transition-property: background-color;
12+ transition-duration: .5s;
13+ border: none;
14+ border-radius: 0;
15+}
16+
17+/**************/
18+/* Workspaces */
19+/**************/
20+
21+#workspaces {
22+ /* border-radius: 8px; */
23+ padding: 0 3px 0 8px;
24+ margin: 5px 5px 5px 0;
25+ transition: all 0.2s ease;
26+}
27+
28+/* non-empty workspaces */
29+#workspaces button {
30+ background-color: #2e3440;
31+
32+ border: none;
33+ border-radius: 0;
34+
35+ color: #d8dee9;
36+ transition: all 0.2s ease;
37+ text-shadow: none;
38+
39+ /* center the icon, no clue why this is necessary */
40+ padding-left: 5px;
41+ padding-right: 10px;
42+ padding-top: 1px;
43+
44+ box-shadow: inset 0 -2px #eceff4;
45+}
46+
47+/* the first and last buttons should be rounded */
48+#workspaces button:first-child {
49+ border-top-left-radius: 8px;
50+ border-bottom-left-radius: 8px;
51+}
52+#workspaces button:last-child {
53+ border-top-right-radius: 8px;
54+ border-bottom-right-radius: 8px;
55+}
56+
57+#workspaces button:hover {
58+ transition-duration: .2s;
59+ color: #2e3440;
60+ box-shadow: inset 0 -3px #ffffff;
61+ /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
62+ text-shadow: inherit;
63+}
64+
65+/* non-empty persistent workspaces */
66+#workspaces button.persistent {
67+ background-color: #4c566a;
68+}
69+
70+/* empty persistent workspaces */
71+#workspaces button.empty {
72+ background-color: #2e3440;
73+ box-shadow: none;
74+}
75+
76+/* active or visible workspaces */
77+#workspaces button.active,
78+#workspaces button.visible {
79+ background-color: #4c566a;
80+ /* box-shadow: inset 0 -4px #eceff4; */
81+}
82+
83+#workspaces button.urgent {
84+ color: #bf616a;
85+}
86+
87+/**************/
88+
89+#mode {
90+ background-color: #64727D;
91+ border-bottom: 3px solid #ffffff;
92+}
93+
94+#clock,
95+#custom-date,
96+#battery,
97+#cpu,
98+#memory,
99+#disk,
100+#temperature,
101+#backlight,
102+#network,
103+#pulseaudio,
104+#wireplumber,
105+#mpris,
106+#custom-media,
107+#tray,
108+#custom-notification,
109+#mpd {
110+ background-color: #2e3440;
111+ border-radius: 8px;
112+ padding: 0 12px 0 12px;
113+ margin: 5px 5px 5px 0;
114+}
115+
116+/* If workspaces is the leftmost module, omit left margin */
117+.modules-left>widget:first-child>#workspaces {
118+ margin-left: 0;
119+}
120+
121+/* If workspaces is the rightmost module, omit right margin */
122+.modules-right>widget:last-child>#workspaces {
123+ margin-right: 0;
124+}
125+
126+#clock {
127+ color: #eceff4;
128+}
129+
130+#custom-date {
131+ color: #b48ead;
132+}
133+
134+#battery {
135+ color: #ebcb8b;
136+}
137+
138+@keyframes blink {
139+ to {
140+ background-color: #ffffff;
141+ color: black;
142+ }
143+}
144+
145+#battery.critical:not(.charging) {
146+ background-color: #bf616a;
147+ color: #ffffff;
148+ animation-name: blink;
149+ animation-duration: 0.5s;
150+ animation-timing-function: linear;
151+ animation-iteration-count: infinite;
152+ animation-direction: alternate;
153+}
154+
155+label:focus {
156+ background-color: black;
157+}
158+
159+#cpu {
160+ color: #bf616a;
161+}
162+
163+#memory {
164+ color: #a3be8c;
165+}
166+
167+/* #disk {
168+ background-color: #964B00;
169+} */
170+
171+/* #backlight {
172+ background-color: #90b1b1;
173+} */
174+
175+#network {
176+ color: #5e81ac;
177+}
178+
179+#network.disconnected {
180+ color: #81a1c1;
181+}
182+
183+#network.linked {
184+ color: #bf616a;
185+}
186+
187+#pulseaudio {
188+ color: #d8dee9;
189+}
190+
191+#mpris,
192+#custom-media {
193+ background-color: #66cc99;
194+ color: black;
195+}
196+
197+#mpris.firefox,
198+#custom-media.firefox {
199+ background-color: #FF9500;
200+ color: black;
201+}
202+
203+#mpris.spotify,
204+#custom-media.spotify {
205+ background-color: #66cc99;
206+ color: #191414;
207+}
208+
209+#mpris.vlc,
210+#custom-media.vlc {
211+ background-color: #E85E00;
212+ color: black;
213+}
214+
215+#mpris.jellyfin,
216+#custom-media.jellyfin {
217+ /* https://jellyfin.org/docs/general/contributing/branding */
218+ color: #000B25;
219+ background-color: #AA5CC3;
220+}
221+
222+
223+
224+#temperature {
225+ color: #d08770;
226+}
227+
228+#temperature.critical {
229+ color: #bf616a;
230+}
231+
232+#tray {
233+ color: #eceff4;
234+}
235+
236+#tray>.passive {
237+ -gtk-icon-effect: dim;
238+}
239+
240+#tray>.needs-attention {
241+ -gtk-icon-effect: highlight;
242+ background-color: #bf616a;
243+}
244+
245+/* #idle_inhibitor {
246+ background-color: #2d3436;
247+} */
248+
249+/* #idle_inhibitor.activated {
250+ background-color: #ecf0f1;
251+ color: #2d3436;
252+} */
253+
254+/* #mpd {
255+ background-color: #66cc99;
256+ color: #2a5c45;
257+}
258+
259+#mpd.disconnected {
260+ background-color: #bf616a;
261+}
262+
263+#mpd.stopped {
264+ background-color: #90b1b1;
265+}
266+
267+#mpd.paused {
268+ background-color: #51a37a;
269+} */
270+
271+/* #language {
272+ background: #00b093;
273+ color: #740864;
274+ padding: 0 5px;
275+ margin: 0 5px;
276+ min-width: 16px;
277+} */
278+
279+/* #keyboard-state {
280+ background: #97e1ad;
281+ color: black;
282+ padding: 0 0px;
283+ margin: 0 5px;
284+ min-width: 16px;
285+}
286+
287+#keyboard-state > label {
288+ padding: 0 5px;
289+}
290+
291+#keyboard-state > label.locked {
292+ background: rgba(0, 0, 0, 0.2);
293+}
294+
295+#scratchpad {
296+ background: rgba(0, 0, 0, 0.2);
297+}
298+
299+#scratchpad.empty {
300+ background-color: transparent;
301+} */
D .config/x11/xinitrc View
@@ -1,23 +0,0 @@
1−#!/bin/sh
2−
3−#setwall &
4−
5−if [ $(envycontrol -q) = "nvidia" ]; then
6− xrandr --setprovideroutputsource modesetting NVIDIA-0
7− xrandr --auto
8− xrandr --dpi 96
9−fi
10−
11−# xwallpaper --zoom ~/.local/share/wallpaper3.jpg
12−# xwallpaper --zoom $(find .local/share/wallpapers -type f | shuf -n 1)
13−xwallpaper --zoom $(find pix/wallpapers -type f | grep "jpg" | shuf -n 1)
14−xcompmgr &
15−xset r rate 300 50
16−xrandr -r 60.00
17−unclutter &
18−dwmblocks &
19−dunst &
20−backlight_control 20 &
21−redshift &
22−# exec dwm > /dev/null 2>&1
23−while type dwm > /dev/null ; do dwm && continue || break ; done
D .local/bin/colorpicker View

[Binary file]

D .local/bin/dmenurecord View
@@ -1,123 +0,0 @@
1−#!/bin/sh
2−
3−# Usage:
4−# `$0`: Ask for recording type via dmenu
5−# `$0 screencast`: Record both audio and screen
6−# `$0 video`: Record only screen
7−# `$0 audio`: Record only audio
8−# `$0 kill`: Kill existing recording
9−#
10−# If there is already a running instance, user will be prompted to end it.
11−
12−getdim() { xrandr | grep -oP '(?<=current ).*(?=,)' | tr -d ' ' ;}
13−
14−updateicon() { \
15− echo "$1" > /tmp/recordingicon
16− pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
17− }
18−
19−killrecording() {
20− recpid="$(cat /tmp/recordingpid)"
21− kill -15 "$recpid"
22− rm -f /tmp/recordingpid
23− updateicon ""
24− pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
25− }
26−
27−screencast() { \
28− ffmpeg -y \
29− -f x11grab \
30− -framerate 30 \
31− -s "$(getdim)" \
32− -i "$DISPLAY" \
33− -r 24 \
34− -use_wallclock_as_timestamps 1 \
35− -f alsa -thread_queue_size 1024 -i default \
36− -c:v h264 \
37− -crf 0 -preset ultrafast -c:a aac \
38− "$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mp4" &
39− echo $! > /tmp/recordingpid
40− updateicon "⏺️🎙️"
41− }
42−
43−video() { ffmpeg \
44− -f x11grab \
45− -framerate 30 \
46− -s "$(getdim)" \
47− -i "$DISPLAY" \
48− -c:v libx264 -qp 0 -r 30 \
49− "$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
50− echo $! > /tmp/recordingpid
51− updateicon "⏺️"
52− }
53−
54−webcamhidef() { ffmpeg \
55− -f v4l2 \
56− -i /dev/video0 \
57− -video_size 1920x1080 \
58− "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
59− echo $! > /tmp/recordingpid
60− updateicon "🎥"
61− }
62−
63−webcam() { ffmpeg \
64− -f v4l2 \
65− -i /dev/video0 \
66− -video_size 640x480 \
67− "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
68− echo $! > /tmp/recordingpid
69− updateicon "🎥"
70− }
71−
72−
73−audio() { \
74− ffmpeg \
75− -f alsa -i default \
76− -c:a flac \
77− "$HOME/audio-$(date '+%y%m%d-%H%M-%S').flac" &
78− echo $! > /tmp/recordingpid
79− updateicon "🎙️"
80− }
81−
82−askrecording() { \
83− choice=$(printf "screencast\\nvideo\\nvideo selected\\naudio\\nwebcam\\nwebcam (hi-def)" | dmenu -i -p "Select recording style:")
84− case "$choice" in
85− screencast) screencast;;
86− audio) audio;;
87− video) video;;
88− *selected) videoselected;;
89− webcam) webcam;;
90− "webcam (hi-def)") webcamhidef;;
91− esac
92− }
93−
94−asktoend() { \
95− response=$(printf "No\\nYes" | dmenu -i -p "Recording still active. End recording?") &&
96− [ "$response" = "Yes" ] && killrecording
97− }
98−
99−videoselected()
100−{
101− slop -f "%x %y %w %h" > /tmp/slop
102− read -r X Y W H < /tmp/slop
103− rm /tmp/slop
104−
105− ffmpeg \
106− -f x11grab \
107− -framerate 30 \
108− -video_size "$W"x"$H" \
109− -i :0.0+"$X,$Y" \
110− -c:v libx264 -qp 0 -r 30 \
111− "$HOME/box-$(date '+%y%m%d-%H%M-%S').mkv" &
112− echo $! > /tmp/recordingpid
113− updateicon "⏺️"
114−}
115−
116−case "$1" in
117− screencast) screencast;;
118− audio) audio;;
119− video) video;;
120− *selected) videoselected;;
121− kill) killrecording;;
122− *) ([ -f /tmp/recordingpid ] && asktoend && exit) || askrecording;;
123−esac
D .local/bin/jrun View
@@ -1,14 +0,0 @@
1−#!/bin/env bash
2−
3−# Script to run simple .java files.
4−# because its annoying to have .class files clutter your working directory;
5−
6−if [ -z $* ]; then
7− echo "usage: jrun <filename>"
8−else
9− filename="${1%.*}"
10− \cp -f "$1" /tmp/"$1"
11− javac -d /tmp "$1"
12− java -cp /tmp "$filename"
13−fi
14−
D .local/bin/maimshot View
@@ -1,13 +0,0 @@
1−#!/bin/sh
2−
3−ocr_cmd="xclip -sel clip"
4−
5−case "$(printf "a selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)\\na selected area\\ncurrent window\\nfull screen\\na selected area (OCR)" | dmenu -l 7 -i -p "Screenshot which area?")" in
6− "a selected area (copy)") maim -u -s | xclip -selection clipboard -t image/png ;;
7− "current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
8− "full screen (copy)") sleep 0.2 ; maim | xclip -selection clipboard -t image/png ;;
9− "a selected area") maim -u -s ~/pix/ss/pic-selected-$(uuidgen | awk -F- '{printf $2}')-"$(date '+%y-%m-%d').png" ;;
10− "current window") maim -i "$(xdotool getactivewindow)" ~/pix/ss/pic-window-"$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
11− "full screen") sleep 0.2 ; maim ~/pix/ss/pic-full-"$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
12− "a selected area (OCR)") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && maim -u -s > "$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" ;;
13−esac
D .local/bin/pirokit View
@@ -1,68 +0,0 @@
1−#!/usr/bin/bash
2−
3−mkdir -p $HOME/.cache/pirokit
4−
5−if [ -z $1 ]; then
6− query=$(echo "" | dmenu -p "Search Torrent: ")
7−else
8− query=$1
9−fi
10−
11−baseurl="https://1337x.to"
12−cachedir="$HOME/.cache/pirokit"
13−query="$(sed 's/ /+/g' <<<$query)"
14−
15−#curl -s https://1337x.to/category-search/$query/Movies/1/ > $cachedir/tmp.html
16−curl -s https://1337x.to/search/$query/1/ > $cachedir/tmp.html
17−
18−# Get Titles
19−grep -o '<a href="/torrent/.*</a>' $cachedir/tmp.html |
20− sed 's/<[^>]*>//g' > $cachedir/titles.bw
21−
22−result_count=$(wc -l $cachedir/titles.bw | awk '{print $1}')
23−if [ "$result_count" -lt 1 ]; then
24− notify-send "😔 No Result found. Try again 🔴"
25− exit 0
26−fi
27−
28−
29−# Seeders and Leechers
30−grep -o '<td class="coll-2 seeds.*</td>\|<td class="coll-3 leeches.*</td>' $cachedir/tmp.html |
31− sed 's/<[^>]*>//g' | sed 'N;s/\n/ /' > $cachedir/seedleech.bw
32−
33−# Size
34−grep -o '<td class="coll-4 size.*</td>' $cachedir/tmp.html |
35− sed 's/<span class="seeds">.*<\/span>//g' |
36− sed -e 's/<[^>]*>//g' > $cachedir/size.bw
37−
38−# Links
39−grep -E '/torrent/' $cachedir/tmp.html |
40− sed -E 's#.*(/torrent/.*)/">.*/#\1#' |
41− sed 's/td>//g' > $cachedir/links.bw
42−
43−
44−
45−# Clearning up some data to display
46−sed 's/\./ /g; s/\-/ /g' $cachedir/titles.bw |
47− sed 's/[^A-Za-z0-9 ]//g' | tr -s " " > $cachedir/tmp && mv $cachedir/tmp $cachedir/titles.bw
48−
49−awk '{print NR " - ["$0"]"}' $cachedir/size.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/size.bw
50−awk '{print "[S:"$1 ", L:"$2"]" }' $cachedir/seedleech.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/seedleech.bw
51−
52−# Getting the line number
53−LINE=$(paste -d\ $cachedir/size.bw $cachedir/seedleech.bw $cachedir/titles.bw |
54− dmenu -i -l 25 |
55− cut -d\- -f1 |
56− awk '{$1=$1; print}')
57−
58−url=$(head -n $LINE $cachedir/links.bw | tail -n +$LINE)
59−fullURL="${baseurl}${url}/"
60−
61−# Requesting page for magnet link
62−curl -s $fullURL > $cachedir/tmp.html
63−magnet=$(grep -Po "magnet:\?xt=urn:btih:[a-zA-Z0-9]*" $cachedir/tmp.html | head -n 1)
64−
65−transadd "$magnet"
66−
67−# Simple notification
68−notify-send "⬇️ Start downloading File 📁"
D .local/bin/run_alacritty View
@@ -1,8 +0,0 @@
1−#!/bin/env bash
2−
3−mode=$(autorandr --current)
4−if [[ $mode = 'hybridnew' ]]; then
5− alacritty --config-file "$XDG_CONFIG_HOME/alacritty/docked.toml" $*
6−else
7− alacritty --config-file "$XDG_CONFIG_HOME/alacritty/normal.toml" $*
8−fi
D .local/bin/statusbar/sb-battery View
@@ -1,37 +0,0 @@
1−#!/bin/sh
2−
3−# Prints all batteries, their percentage remaining and an emoji corresponding
4−# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.).
5−
6−case $BLOCK_BUTTON in
7− 3) notify-send "🔋 Battery module" "🔋: discharging
8−🛑: not charging
9−♻: stagnant charge
10−🔌: charging
11−⚡: charged
12−❗: battery very low!
13−- Scroll to change adjust xbacklight." ;;
14− 4) xbacklight -inc 10 ;;
15− 5) xbacklight -dec 10 ;;
16− 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
17−esac
18−
19−# Loop through all attached batteries and format the info
20−for battery in /sys/class/power_supply/BAT?*; do
21− # If non-first battery, print a space separator.
22− [ -n "${capacity+x}" ] && printf " "
23− # Sets up the status and capacity
24− case "$(cat "$battery/status" 2>&1)" in
25− "Full") status="⚡" ;;
26− "Discharging") status="🔋" ;;
27− "Charging") status="🔌" ;;
28− "Not charging") status="🛑" ;;
29− "Unknown") status="♻️" ;;
30− *) exit 1 ;;
31− esac
32− capacity="$(cat "$battery/capacity" 2>&1)"
33− # Will make a warn variable if discharging and low
34− [ "$status" = "🔋" ] && [ "$capacity" -le 25 ] && warn="❗"
35− # Prints the info
36− printf "[ %s %s%d%% ]" "$status" "$warn" "$capacity"; unset warn
37−done && printf "\\n"
D .local/bin/statusbar/sb-clock View
@@ -1,3 +0,0 @@
1−#!/bin/sh
2−# date "+[  %a %d %b %Y] [  %I:%M %P ]"
3−date "+[  %a %d %b %Y] [  %R ]"
D .local/bin/statusbar/sb-memory View
@@ -1,4 +0,0 @@
1−#!/bin/sh
2−# echo "[  $(free --mebi | sed -n '2{p;q}' | awk '{printf ("%2.2fGiB", ( $3 / 1024), ($2 / 1024))}') $(sensors | awk '/Core 0/ {print " " $3}') ]"
3−
4−echo "[  $(free -h --si | sed -n "2s/\([^ ]* *\)\{2\}\([^ ]*\).*/\2/p")  $(grep -o "^[^ ]*" /proc/loadavg ) ]"
D .local/bin/statusbar/sb-mpdup View
@@ -1,8 +0,0 @@
1−#!/bin/sh
2−
3−# This loop will update the mpd statusbar module whenever a command changes the
4−# music player's status. mpd must be running on X's start for this to work.
5−
6−while : ; do
7− mpc idle >/dev/null && kill -45 $(pidof dwmblocks) || break
8−done
D .local/bin/statusbar/sb-music View
@@ -1,11 +0,0 @@
1−#!/bin/sh
2−
3−filter() { mpc | sed "/^volume:/d;s/\\&/&amp;/g;s/\\[paused\\].*/⏸/g;/\\[playing\\].*/d;/^ERROR/Q" | paste -sd ' ' -;}
4−
5−pidof -x sb-mpdup >/dev/null 2>&1 || sb-mpdup >/dev/null 2>&1 &
6−
7−if [ -z "$(filter)" ]; then
8− echo ""
9−else
10− echo "[ $(filter) ]"
11−fi
D .local/bin/statusbar/sb-updates View
@@ -1,3 +0,0 @@
1−#!/bin/sh
2−
3−echo "[ 󰛀 $(checkupdates | wc -l) ]"
D .local/bin/statusbar/sb-volume View
@@ -1,2 +0,0 @@
1−#!/bin/sh
2−echo [ "$([ "$(pamixer --get-mute)" = "false" ] && printf ' ' || printf ' ')$(pamixer --get-volume)%" ]