moved to @autumn.bsky.gay/dots

Add a bunch of new stuff #2

closed opened by autumn.bsky.gay targeting main from autumn/new-stuff

Will make an issue for creating a nushell script that automatically patches new data into the repository.

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:e2nwnarqo7kdbt7ngr3gejp6/sh.tangled.repo.pull/3mh3eabja5m22
+118 -594
Diff #0
+31 -68
config/hypr/hyprland.conf
··· 1 - 2 - # ####################################################################################### 3 - # AUTOGENERATED HYPRLAND CONFIG. 4 - # PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT, 5 - # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. 6 - # ####################################################################################### 7 - 8 - autogenerated = 0 # remove this line to remove the warning 9 - 10 - # This is an example Hyprland config file. 11 - # Refer to the wiki for more information. 12 - # https://wiki.hyprland.org/Configuring/ 13 - 14 - # Please note not all available settings / options are set here. 15 - # For a full list, see the wiki 16 - 17 - # You can split this configuration into multiple files 18 - # Create your files separately and then link them to this file like this: 19 - # source = ~/.config/hypr/myColors.conf 20 - 21 - 22 1 ################ 23 2 ### MONITORS ### 24 3 ################ ··· 32 11 ################### 33 12 34 13 # See https://wiki.hyprland.org/Configuring/Keywords/ 35 - 36 - # Set programs that you use 37 14 $terminal = kgx 38 15 $fileManager = nautilus 39 16 $menu = wofi --show drun ··· 43 20 ### AUTOSTART ### 44 21 ################# 45 22 46 - # Autostart necessary processes (like notifications daemons, status bars, etc.) 47 - # Or execute your favorite apps at launch like this: 48 - 49 - # exec-once = $terminal 50 - # exec-once = nm-applet & 51 - exec-once = waybar & hyprpaper # hyprpanel & hyprpaper # waybar & hyprpaper 23 + exec-once = discord & ironbar & hyprpaper & hyprsunset # waybar is the old top-bar 52 24 53 25 54 26 ############################# ··· 86 58 87 59 # https://wiki.hyprland.org/Configuring/Variables/#general 88 60 general { 89 - gaps_in = 5 90 - gaps_out = 10 61 + gaps_in = 3 # 5 62 + gaps_out = 6 # 10 91 63 92 64 border_size = 2 93 65 ··· 183 155 184 156 # https://wiki.hyprland.org/Configuring/Variables/#misc 185 157 misc { 186 - force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers 158 + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers 187 159 disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( 188 160 } 189 161 ··· 209 181 } 210 182 } 211 183 212 - # https://wiki.hyprland.org/Configuring/Variables/#gestures 213 - gestures { 214 - workspace_swipe = false 215 - } 216 - 217 184 # Example per-device config 218 185 # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more 219 186 device { ··· 227 194 ################### 228 195 229 196 # See https://wiki.hyprland.org/Configuring/Keywords/ 230 - $mainMod = SUPER # Sets "Windows" key as main modifier 197 + $mainMod = SUPER # Sets "Super" key as main modifier 231 198 232 199 # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more 200 + bind = $mainMod, A, exec, $menu 201 + bind = $mainMod, C, exec, cinny 202 + bind = $mainMod, D, exec, discord 203 + bind = $mainMod, E, exec, $fileManager 204 + bind = $mainMod, F, exec, feishin 205 + bind = $mainMod SHIFT, F, exec, fladder 206 + bind = $mainMod, H, exec, helium 207 + bind = $mainMod, L, exec, hyprlock 208 + bind = $mainMod, M, exec, minecraft-launcher 209 + bind = $mainMod, O, exec, obsidian 210 + bind = $mainMod, P, pseudo, # dwindle 211 + bind = $mainMod, Q, killactive, 212 + bind = $mainMod, R, exec, revolt 213 + bind = $mainMod SHIFT, R, exec, root 214 + bind = $mainMod SHIFT, S, exec, hyprshot -m region -c -s -o ~/Pictures/Screenshots 215 + bind = Alt+SHIFT, S, exec, hyprshot -zm region -o ~/Pictures/Screenshots -- pinta 216 + bind = $mainMod, S, exec, steam 217 + bind = $mainMod Alt, S, exec, signal-desktop --password-store="gnome-libsecret" 233 218 bind = $mainMod, T, exec, $terminal 234 - bind = $mainMod, Q, killactive, 219 + bind = $mainMod, V, exec, via 220 + # bind = $mainMod, V, togglefloating, 235 221 bind = $mainMod, Z, exec, zen 236 - bind = $mainMod, D, exec, discord 237 - bind = $mainMod, M, exec, minecraft-launcher 238 - bind = $mainMod, L, exec, hyprlock 239 222 bind = Ctrl+Alt, Backspace, exit, 240 223 bind = Ctrl+SHIFT+Alt, Backspace, exec, poweroff 241 - bind = $mainMod SHIFT, S, exec, hyprshot -zm region -o ~/Pictures/Screenshots 242 - bind = $mainMod, S, exec, steam 243 - bind = $mainMod, E, exec, $fileManager 244 - bind = $mainMod, V, togglefloating, 245 - bind = $mainMod, R, exec, revolt 246 - bind = $mainMod, P, pseudo, # dwindle 247 - bind = $mainMod, J, togglesplit, # dwindle 224 + bind = , F11, fullscreen, 248 225 249 226 # Move focus with mainMod + arrow keys 250 227 bind = $mainMod, left, movefocus, l ··· 276 253 bind = $mainMod SHIFT, 9, movetoworkspace, 9 277 254 bind = $mainMod SHIFT, 0, movetoworkspace, 10 278 255 279 - # Example special workspace (scratchpad) 280 - # bind = $mainMod, S, togglespecialworkspace, magic 281 - # bind = $mainMod SHIFT, S, movetoworkspace, special:magic 256 + # Change position of currently active window 257 + bind = $mainMod SHIFT, left, movewindow, l 258 + bind = $mainMod SHIFT, right, movewindow, r 259 + bind = $mainMod SHIFT, up, movewindow, u 260 + bind = $mainMod SHIFT, down, movewindow, d 282 261 283 262 # Scroll through existing workspaces with mainMod + scroll 284 263 bind = $mainMod, mouse_down, workspace, e+1 ··· 301 280 bindl = , XF86AudioPause, exec, playerctl play-pause 302 281 bindl = , XF86AudioPlay, exec, playerctl play-pause 303 282 bindl = , XF86AudioPrev, exec, playerctl previous 304 - 305 - ############################## 306 - ### WINDOWS AND WORKSPACES ### 307 - ############################## 308 - 309 - # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 310 - # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules 311 - 312 - # Example windowrule 313 - # windowrule = float,class:^(kitty)$,title:^(kitty)$ 314 - 315 - # Ignore maximize requests from apps. You'll probably like this. 316 - windowrule = suppressevent maximize, class:.* 317 - 318 - # Fix some dragging issues with XWayland 319 - windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
+1 -1
config/hypr/hyprlock/status.sh
··· 26 26 fi 27 27 fi 28 28 29 - echo '' 29 + echo ''
+27 -28
config/hypr/hyprlock.conf
··· 2 2 $entry_background_color = rgba(1E006011) 3 3 $entry_border_color = rgba(938E9F55) 4 4 $entry_color = rgba(E7DEFFFF) 5 - $font_family = Rubik Light 6 - $font_family_clock = Rubik Light 7 - $font_material_symbols = Material Symbols Rounded 5 + $font_family = Maple Mono NF 6 + $font_family_clock = Maple Mono NF 7 + $font_material_symbols = Maple Mono NF 8 8 9 9 background { 10 - color = rgba(181818FF) 11 - # path = {{ SWWW_WALL }} 12 - 10 + # color = rgba(181818FF) 13 11 # path = screenshot 14 - # blur_size = 15 15 - # blur_passes = 4 12 + path = /opt/backgrounds/orion_nebula_nasa_heic0601a.jpg 13 + blur_size = 15 14 + blur_passes = 4 16 15 } 17 16 input-field { 18 17 monitor = ··· 23 22 outer_color = $entry_border_color 24 23 inner_color = $entry_background_color 25 24 font_color = $entry_color 25 + font_family = $font_family 26 26 fade_on_empty = true 27 - 27 + fail_color = rgba(fc4e59ff) 28 + fail_text = <i><b>$FAIL ($ATTEMPTS)</b></i> 29 + placeholder_text = <i><b>Enter Password...</b></i> 28 30 position = 0, 20 29 31 halign = center 30 32 valign = center ··· 47 49 color = $text_color 48 50 font_size = 65 49 51 font_family = $font_family_clock 50 - 51 52 position = 0, 300 52 53 halign = center 53 54 valign = center ··· 58 59 color = $text_color 59 60 font_size = 17 60 61 font_family = $font_family 61 - 62 62 position = 0, 240 63 63 halign = center 64 64 valign = center 65 65 } 66 66 67 - label { # User 68 - monitor = 69 - text = ๏Šพ $USER 70 - color = $text_color 71 - shadow_passes = 1 72 - shadow_boost = 0.35 73 - outline_thickness = 2 74 - dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 75 - dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 76 - dots_center = true 77 - font_size = 20 78 - font_family = $font_family 79 - position = 0, 50 80 - halign = center 81 - valign = bottom 82 - } 67 + # label { # User 68 + # monitor = 69 + # text = $USER 70 + # color = $text_color 71 + # shadow_passes = 1 72 + # shadow_boost = 0.35 73 + # outline_thickness = 2 74 + # dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 75 + # dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 76 + # dots_center = true 77 + # font_size = 20 78 + # font_family = $font_family 79 + # position = 0, 50 80 + # halign = center 81 + # valign = bottom 82 + # } 83 83 84 84 label { # Status 85 85 monitor = ··· 87 87 color = $text_color 88 88 font_size = 14 89 89 font_family = $font_family 90 - 91 90 position = 30, -30 92 91 halign = left 93 92 valign = top
+5 -2
config/hypr/hyprpaper.conf
··· 1 - preload = ./in-the-clouds.jpg 2 - wallpaper = , ./in-the-clouds.jpg 1 + wallpaper { 2 + monitor = 3 + path = /opt/backgrounds/orion_nebula_nasa_heic0601a.jpg 4 + fit_mode = cover 5 + }
+52 -494
config/hypr/shaders/crt.frag
··· 1 - #version 100 2 - precision highp float; 3 - varying highp vec2 v_texcoord; 4 - varying highp vec3 v_pos; 5 - uniform highp sampler2D tex; 6 - uniform lowp float time; 7 - 8 - #define BORDER_COLOR vec4(vec3(0.0, 0.0, 0.0), 1.0) // black border 9 - #define BORDER_RADIUS 1.0 // larger vignette radius 10 - #define BORDER_SIZE 0.01 // small border size 11 - #define CHROMATIC_ABERRATION_STRENGTH 0.00 12 - #define DENOISE_INTENSITY 0.0001 // 13 - #define DISTORTION_AMOUNT 0.00 // moderate distortion amount 14 - #define HDR_BLOOM 0.75 // bloom intensity 15 - #define HDR_BRIGHTNESS 0.011 // brightness 16 - #define HDR_CONTRAST 0.011 // contrast 17 - #define HDR_SATURATION 1.0// saturation 18 - #define LENS_DISTORTION_AMOUNT 0.0 19 - #define NOISE_THRESHOLD 0.0001 20 - #define PHOSPHOR_BLUR_AMOUNT 0.77 // Amount of blur for phosphor glow 21 - #define PHOSPHOR_GLOW_AMOUNT 0.77 // Amount of phosphor glow 22 - #define SAMPLING_RADIUS 0.0001 23 - #define SCANLINE_FREQUENCY 540.0 24 - #define SCANLINE_THICKNESS 0.0507 25 - #define SCANLINE_TIME time * 471.24 26 - #define SHARPNESS 0.25 27 - #define SUPERSAMPLING_SAMPLES 16.0 28 - #define VIGNETTE_RADIUS 0.0 // larger vignette radius 29 - #define PI 3.14159265359 30 - #define TWOPI 6.28318530718 31 - 32 - vec2 applyBarrelDistortion(vec2 coord, float amt) { 33 - vec2 p = coord.xy / vec2(1.0); 34 - vec2 v = p * 2.0 - vec2(1.0); 35 - float r = dot(v, v); 36 - float k = 1.0 + pow(r, 2.0) * pow(amt, 2.0); 37 - vec2 result = v * k; 38 - return vec2(0.5, 0.5) + 0.5 * result.xy; 39 - } 40 - 41 - vec4 applyColorCorrection(vec4 color) { 42 - color.rgb *= vec3(1.0, 0.79, 0.89); 43 - return vec4(color.rgb, 1.0); 44 - } 45 - 46 - vec4 applyBorder(vec2 tc, vec4 color, float borderSize, vec4 borderColor) { 47 - float dist_x = min(tc.x, 1.0 - tc.x); 48 - float dist_y = min(tc.y, 1.0 - tc.y); 49 - float dist = min(dist_x, dist_y) * -1.0; 50 - float border = smoothstep(borderSize, 0.0, dist); 51 - border += smoothstep(borderSize, 0.0, dist); 52 - return mix(color, borderColor, border); 53 - } 54 - 55 - vec4 applyFakeHDR(vec4 color, float brightness, float contrast, float saturation, float bloom) { 56 - color.rgb = (color.rgb - vec3(0.5)) * exp2(brightness) + vec3(0.5); 57 - vec3 crtfactor = vec3(1.05, 0.92, 1.0); 58 - color.rgb = pow(color.rgb, crtfactor); 59 - // // NTSC 60 - // vec3 lumCoeff = vec3(0.2125, 0.7154, 0.0721); 61 - 62 - // // BT.709 63 - // vec3 lumCoeff = vec3(0.299, 0.587, 0.114); 64 - 65 - // BT.2020 66 - vec3 lumCoeff = vec3(0.2627, 0.6780, 0.0593); 67 - 68 - // // Warm NTSC 69 - // vec3 lumCoeff = vec3(0.2125, 0.7010, 0.0865); 70 - 71 - float luminance = dot(color.rgb, lumCoeff); 72 - luminance = pow(luminance, 2.2); 73 - color.rgb = mix(vec3(luminance), color.rgb, saturation); 74 - color.rgb = mix(color.rgb, vec3(1.0), pow(max(0.0, luminance - 1.0 + bloom), 4.0)); 75 - return color; 76 - } 77 - 78 - vec4 applyVignette(vec4 color) { 79 - vec2 center = vec2(0.5, 0.5); // center of screen 80 - float radius = VIGNETTE_RADIUS; // radius of vignette effect 81 - float softness = 1.0; // softness of vignette effect 82 - float intensity = 0.7; // intensity of vignette effect 83 - vec2 offset = v_texcoord - center; // offset from center of screen 84 - float distance = length(offset); // distance from center of screen 85 - float alpha = smoothstep(radius, radius - radius * softness, distance) * intensity; // calculate alpha value for vignette effect 86 - return mix(vec4(0.0, 0.0, 0.0, alpha), color, alpha); // mix black with color using calculated alpha value 87 - } 88 - 89 - vec4 applyPhosphorGlow(vec2 tc, vec4 color, sampler2D tex) { 90 - // Calculate average color value of the texture 91 - vec4 texelColor = color; 92 - float averageColor = (texelColor.r + texelColor.g + texelColor.b) / 3.0; 93 - 94 - // Determine brightness-dependent color factor 95 - float factor = mix( 96 - mix(0.09, 97 - mix(0.005, 0.0075, (averageColor - 0.1) / 0.1), 98 - step(0.01, averageColor)), 0.0005, 99 - step(0.02, averageColor)); 100 - // Apply phosphor glow effect 101 - vec4 sum = vec4(0.0); 102 - vec4 pixels[9]; 103 - pixels[0] = texture2D(tex, tc - vec2(0.001, 0.001)); 104 - pixels[1] = texture2D(tex, tc - vec2(0.001, 0.0)); 105 - pixels[2] = texture2D(tex, tc - vec2(0.001, -0.001)); 106 - pixels[3] = texture2D(tex, tc - vec2(0.0, 0.001)); 107 - pixels[4] = texture2D(tex, tc); 108 - pixels[5] = texture2D(tex, tc + vec2(0.001, 0.001)); 109 - pixels[6] = texture2D(tex, tc + vec2(0.001, 0.0)); 110 - pixels[7] = texture2D(tex, tc + vec2(0.001, -0.001)); 111 - pixels[8] = texture2D(tex, tc + vec2(0.0, 0.001)); 112 - 113 - // Perform operations on input pixels in parallel 114 - sum = pixels[0] 115 - + pixels[1] 116 - + pixels[2] 117 - + pixels[3] 118 - + pixels[4] 119 - + pixels[5] 120 - + pixels[6] 121 - + pixels[7] 122 - + pixels[8]; 123 - sum /= 9.0; 124 - sum += texture2D(tex, tc - vec2(0.01, 0.01)) * 0.001; 125 - sum += texture2D(tex, tc - vec2(0.0, 0.01)) * 0.001; 126 - sum += texture2D(tex, tc - vec2(-0.01, 0.01)) * 0.001; 127 - sum += texture2D(tex, tc - vec2(0.01, 0.0)) * 0.001; 128 - sum += color * PHOSPHOR_BLUR_AMOUNT; 129 - sum += texture2D(tex, tc - vec2(-0.01, 0.0)) * 0.001; 130 - sum += texture2D(tex, tc - vec2(0.01, -0.01)) * 0.001; 131 - sum += texture2D(tex, tc - vec2(0.0, -0.01)) * 0.001; 132 - sum += texture2D(tex, tc - vec2(-0.01, -0.01)) * 0.001; 133 - sum *= PHOSPHOR_GLOW_AMOUNT; 134 - 135 - // Initialize sum_sum_factor to zero 136 - vec4 sum_sum_factor = vec4(0.0); 137 - // Compute sum_j for i = -1 138 - vec4 sum_j = vec4(0.0); 139 - sum_j += texture2D(tex, tc + vec2(-1, -1) * 0.01); 140 - sum_j += texture2D(tex, tc + vec2(0, -1) * 0.01); 141 - sum_j += texture2D(tex, tc + vec2(1, -1) * 0.01); 142 - sum_j += texture2D(tex, tc + vec2(-1, 0) * 0.01); 143 - sum_j += texture2D(tex, tc + vec2(0, 0) * 0.01); 144 - sum_j += texture2D(tex, tc + vec2(1, 0) * 0.01); 145 - sum_j += texture2D(tex, tc + vec2(-1, 1) * 0.01); 146 - sum_j += texture2D(tex, tc + vec2(0, 1) * 0.01); 147 - sum_j += texture2D(tex, tc + vec2(1, 1) * 0.01); 148 - sum_sum_factor += sum_j * vec4(0.011); 149 - 150 - // Compute sum_j for i = 0 151 - sum_j = vec4(0.0); 152 - sum_j += texture2D(tex, tc + vec2(-1, 0) * 0.01); 153 - sum_j += texture2D(tex, tc + vec2(0, 0) * 0.01); 154 - sum_j += texture2D(tex, tc + vec2(1, 0) * 0.01); 155 - sum_j += texture2D(tex, tc + vec2(-1, 1) * 0.01); 156 - sum_j += texture2D(tex, tc + vec2(0, 1) * 0.01); 157 - sum_j += texture2D(tex, tc + vec2(1, 1) * 0.01); 158 - sum_sum_factor += sum_j * vec4(0.011); 159 - 160 - // Compute sum_j for i = 1 161 - sum_j = vec4(0.0); 162 - sum_j += texture2D(tex, tc + vec2(-1, 0) * 0.01); 163 - sum_j += texture2D(tex, tc + vec2(0, 1) * 0.01); 164 - sum_j += texture2D(tex, tc + vec2(1, 0) * 0.01); 165 - sum_j += texture2D(tex, tc + vec2(-1, 1) * 0.01); 166 - sum_j += texture2D(tex, tc + vec2(0, 1) * 0.01); 167 - sum_j += texture2D(tex, tc + vec2(1, 1) * 0.01); 168 - sum_sum_factor += sum_j * vec4(0.011); 169 - color += mix(sum_sum_factor * sum_sum_factor * vec4(factor), sum, 0.5); 170 - return color; 171 - } 172 - 173 - vec4 applyAdaptiveSharpen(vec2 tc, vec4 color, sampler2D tex) { 174 - vec4 color_tl = texture2D(tex, tc + vec2(-1.0, -1.0) * 0.5 / 2160.0); 175 - vec4 color_tr = texture2D(tex, tc + vec2(1.0, -1.0) * 0.5 / 2160.0); 176 - vec4 color_bl = texture2D(tex, tc + vec2(-1.0, 1.0) * 0.5 / 2160.0); 177 - vec4 color_br = texture2D(tex, tc + vec2(1.0, 1.0) * 0.5 / 2160.0); 178 - float sharpness = SHARPNESS; 179 - vec3 color_no_alpha = color.rgb; 180 - vec3 color_tl_no_alpha = color_tl.rgb; 181 - vec3 color_tr_no_alpha = color_tr.rgb; 182 - vec3 color_bl_no_alpha = color_bl.rgb; 183 - vec3 color_br_no_alpha = color_br.rgb; 184 - float delta = (dot(color_no_alpha, vec3(0.333333)) + dot(color_tl_no_alpha, vec3(0.333333)) + dot(color_tr_no_alpha, vec3(0.333333)) + dot(color_bl_no_alpha, vec3(0.333333)) + dot(color_br_no_alpha, vec3(0.333333))) * 0.2 - dot(color_no_alpha, vec3(0.333333)); 185 - vec3 sharp_color_no_alpha = color_no_alpha + min(vec3(0.0), vec3(delta * sharpness)); 186 - vec4 sharp_color = vec4(sharp_color_no_alpha, color.a); 187 - return sharp_color; 188 - } 189 - 190 - vec4 applyScanlines(vec2 tc, vec4 color) { 191 - float scanline = (cos(tc.y * SCANLINE_FREQUENCY + SCANLINE_TIME) * 192 - sin(tc.y * SCANLINE_FREQUENCY + SCANLINE_TIME)) * SCANLINE_THICKNESS; 193 - float alpha = clamp(1.0 - abs(scanline), 0.0, 1.0); 194 - return vec4(color.rgb * alpha, color.a); 195 - } 196 - 197 - vec4 applyChromaticAberration(vec2 uv, vec4 color) { 198 - vec2 center = vec2(0.5, 0.5); // center of the screen 199 - vec2 offset = (uv - center) * CHROMATIC_ABERRATION_STRENGTH; // calculate the offset from the center 200 - 201 - // apply lens distortion 202 - float rSquared = dot(offset, offset); 203 - float distortion = 1.0 + LENS_DISTORTION_AMOUNT * rSquared; 204 - vec2 distortedOffset = offset * distortion; 205 - 206 - // apply chromatic aberration 207 - vec2 redOffset = vec2(distortedOffset.x * 1.00, distortedOffset.y * 1.00); 208 - vec2 blueOffset = vec2(distortedOffset.x * 1.00, distortedOffset.y * 1.00); 209 - 210 - vec4 redColor = texture2D(tex, uv + redOffset); 211 - vec4 blueColor = texture2D(tex, uv + blueOffset); 212 - 213 - vec4 result = vec4(redColor.r, color.g, blueColor.b, color.a); 214 - 215 - return result; 216 - } 217 - 218 - vec4 reduceGlare(vec4 color) { 219 - // Calculate the intensity of the color by taking the average of the RGB components 220 - float intensity = (color.r + color.g + color.b) / 3.0; 221 - // Set the maximum intensity that can be considered for glare 222 - float maxIntensity = 0.98; 223 - // Use smoothstep to create a smooth transition from no glare to full glare 224 - // based on the intensity of the color and the maximum intensity 225 - float glareIntensity = smoothstep(maxIntensity - 0.02, maxIntensity, intensity); 226 - // Set the amount of glare to apply to the color 227 - float glareAmount = 0.02; 228 - // Mix the original color with the reduced color that has glare applied to it 229 - vec3 reducedColor = mix(color.rgb, vec3(glareIntensity), glareAmount); 230 - // Return the reduced color with the original alpha value 231 - return vec4(reducedColor, color.a); 232 - } 233 - 234 - // Apply a fake HDR effect to the input color. 235 - // Parameters: 236 - // - inputColor: the color to apply the effect to. 237 - // - brightness: the brightness of the image. Should be a value between 0 and 1. 238 - // - contrast: the contrast of the image. Should be a value between 0 and 1. 239 - // - saturation: the saturation of the image. Should be a value between 0 and 2. 240 - // - bloom: the intensity of the bloom effect. Should be a value between 0 and 1. 241 - vec4 applyFakeHDREffect(vec4 inputColor, float brightness, float contrast, float saturation, float bloom) { 242 - const float minBrightness = 0.0; 243 - const float maxBrightness = 1.0; 244 - const float minContrast = 0.0; 245 - const float maxContrast = 1.0; 246 - const float minSaturation = 0.0; 247 - const float maxSaturation = 2.0; 248 - const float minBloom = 0.0; 249 - const float maxBloom = 1.0; 250 - 251 - // Check input parameters for validity 252 - if (brightness < minBrightness || brightness > maxBrightness) { 253 - return vec4(0.0, 0.0, 0.0, 1.0); // Return black with alpha of 1.0 to indicate error 254 - } 255 - if (contrast < minContrast || contrast > maxContrast) { 256 - return vec4(0.0, 0.0, 0.0, 1.0); 257 - } 258 - if (saturation < minSaturation || saturation > maxSaturation) { 259 - return vec4(0.0, 0.0, 0.0, 1.0); 260 - } 261 - if (bloom < minBloom || bloom > maxBloom) { 262 - return vec4(0.0, 0.0, 0.0, 1.0); 263 - } 264 - 265 - // Apply brightness and contrast 266 - vec3 color = inputColor.rgb; 267 - color = (color - vec3(0.5)) * exp2(brightness * 10.0) + vec3(0.5); 268 - color = mix(vec3(0.5), color, pow(contrast * 4.0 + 1.0, 2.0)); 269 - 270 - // // NTSC 271 - // vec3 lumCoeff = vec3(0.2125, 0.7154, 0.0721); 272 - 273 - // // BT.709 274 - // vec3 lumCoeff = vec3(0.299, 0.587, 0.114); 275 - 276 - // // BT.2020 277 - // vec3 lumCoeff = vec3(0.2627, 0.6780, 0.0593); 278 - 279 - // Warm NTSC 280 - vec3 lumCoeff = vec3(0.2125, 0.7010, 0.0865); 1 + #version 300 es 2 + precision mediump float; 281 3 282 - // Apply saturation 283 - float luminance = dot(color, lumCoeff); 284 - vec3 grey = vec3(luminance); 285 - color = mix(grey, color, saturation); 4 + in vec2 v_texcoord; 5 + uniform sampler2D tex; 6 + uniform float time; 7 + out vec4 fragColor; 286 8 287 - // Apply bloom effect 288 - float threshold = 1.0 - bloom; 289 - vec3 bloomColor = max(color - threshold, vec3(0.0)); 290 - bloomColor = pow(bloomColor, vec3(2.0)); 291 - bloomColor = mix(vec3(0.0), bloomColor, pow(min(luminance, threshold), 4.0)); 292 - color += bloomColor; 293 - 294 - return vec4(color, inputColor.a); 295 - } 296 - 297 - vec4 bilateralFilter(sampler2D tex, vec2 uv, vec4 color, float sampleRadius, float noiseThreshold, float intensity) { 298 - vec4 filteredColor = vec4(0.0); 299 - float totalWeight = 0.0; 300 - 301 - // Top-left pixel 302 - vec4 sample = texture2D(tex, uv + vec2(-1.0, -1.0)); 303 - float dist = length(vec2(-1.0, -1.0)); 304 - float colorDist = length(sample - color); 305 - float weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 306 - filteredColor += sample * weight; 307 - totalWeight += weight; 308 - 309 - // Top pixel 310 - sample = texture2D(tex, uv + vec2(0.0, -1.0)); 311 - dist = length(vec2(0.0, -1.0)); 312 - colorDist = length(sample - color); 313 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 314 - filteredColor += sample * weight; 315 - totalWeight += weight; 316 - 317 - // Top-right pixel 318 - sample = texture2D(tex, uv + vec2(1.0, -1.0)); 319 - dist = length(vec2(1.0, -1.0)); 320 - colorDist = length(sample - color); 321 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 322 - filteredColor += sample * weight; 323 - totalWeight += weight; 324 - 325 - // Left pixel 326 - sample = texture2D(tex, uv + vec2(-1.0, 0.0)); 327 - dist = length(vec2(-1.0, 0.0)); 328 - colorDist = length(sample - color); 329 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 330 - filteredColor += sample * weight; 331 - totalWeight += weight; 332 - 333 - // Center pixel 334 - sample = texture2D(tex, uv); 335 - dist = 0.0; 336 - colorDist = length(sample - color); 337 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 338 - filteredColor += sample * weight; 339 - totalWeight += weight; 340 - 341 - // Right pixel 342 - sample = texture2D(tex, uv + vec2(1.0, 0.0)); 343 - dist = length(vec2(1.0, 0.0)); 344 - colorDist = length(sample - color); 345 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 346 - filteredColor += sample * weight; 347 - totalWeight += weight; 348 - 349 - // Bottom-left pixel 350 - sample = texture2D(tex, uv + vec2(-1.0, 1.0)); 351 - dist = length(vec2(-1.0, 1.0)); 352 - colorDist = length(sample - color); 353 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 354 - filteredColor += sample * weight; 355 - totalWeight += weight; 356 - 357 - // Bottom pixel 358 - sample = texture2D(tex, uv + vec2(0.0, sampleRadius)); 359 - dist = length(vec2(0.0, sampleRadius)); 360 - colorDist = length(sample - color); 361 - weight = exp(-0.5 * (dist * dist + colorDist * colorDist * intensity) / (sampleRadius * sampleRadius)); 362 - filteredColor += sample * weight; 363 - totalWeight += weight; 364 - 365 - filteredColor /= totalWeight; 366 - return mix(color, filteredColor, step(noiseThreshold, length(filteredColor - color))); 367 - } 368 - 369 - vec4 supersample(sampler2D tex, vec2 uv, float sampleRadius, float noiseThreshold, float intensity) { 370 - float radiusSq = sampleRadius * sampleRadius; 371 - vec2 poissonDisk; 372 - vec4 color = vec4(0.0); 373 - 374 - float r1_0 = sqrt(0.0 / 16.0); 375 - float r2_0 = fract(1.0 / 3.0); 376 - float theta_0 = TWOPI * r2_0; 377 - poissonDisk = vec2(r1_0 * cos(theta_0), r1_0 * sin(theta_0)); 378 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 379 - 380 - float r1_1 = sqrt(1.0 / 16.0); 381 - float r2_1 = fract(2.0 / 3.0); 382 - float theta_1 = TWOPI * r2_1; 383 - poissonDisk = vec2(r1_1 * cos(theta_1), r1_1 * sin(theta_1)); 384 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 385 - 386 - float r1_2 = sqrt(2.0 / 16.0); 387 - float r2_2 = fract(3.0 / 3.0); 388 - float theta_2 = TWOPI * r2_2; 389 - poissonDisk = vec2(r1_2 * cos(theta_2), r1_2 * sin(theta_2)); 390 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 391 - 392 - float r1_3 = sqrt(3.0 / 16.0); 393 - float r2_3 = fract(4.0 / 3.0); 394 - float theta_3 = TWOPI * r2_3; 395 - poissonDisk = vec2(r1_3 * cos(theta_3), r1_3 * sin(theta_3)); 396 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 397 - 398 - float r1_4 = sqrt(4.0 / 16.0); 399 - float r2_4 = fract(5.0 / 3.0); 400 - float theta_4 = TWOPI * r2_4; 401 - poissonDisk = vec2(r1_4 * cos(theta_4), r1_4 * sin(theta_4)); 402 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 403 - 404 - float r1_5 = sqrt(5.0 / 16.0); 405 - float r2_5 = fract(6.0 / 3.0); 406 - float theta_5 = TWOPI * r2_5; 407 - poissonDisk = vec2(r1_5 * cos(theta_5), r1_5 * sin(theta_5)); 408 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 409 - 410 - float r1_6 = sqrt(6.0 / 16.0); 411 - float r2_6 = fract(7.0 / 3.0); 412 - float theta_6 = TWOPI * r2_6; 413 - poissonDisk = vec2(r1_6 * cos(theta_6), r1_6 * sin(theta_6)); 414 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 415 - 416 - float r1_7 = sqrt(7.0 / 16.0); 417 - float r2_7 = fract(8.0 / 3.0); 418 - float theta_7 = TWOPI * r2_7; 419 - poissonDisk = vec2(r1_7 * cos(theta_7), r1_7 * sin(theta_7)); 420 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 421 - 422 - float r1_8 = sqrt(8.0 / 16.0); 423 - float r2_8 = fract(9.0 / 3.0); 424 - float theta_8 = TWOPI * r2_8; 425 - poissonDisk = vec2(r1_8 * cos(theta_8), r1_8 * sin(theta_8)); 426 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 427 - 428 - float r1_9 = sqrt(9.0 / 16.0); 429 - float r2_9 = fract(10.0 / 3.0); 430 - float theta_9 = TWOPI * r2_9; 431 - poissonDisk = vec2(r1_9 * cos(theta_9), r1_9 * sin(theta_9)); 432 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 433 - 434 - float r1_10 = sqrt(10.0 / 16.0); 435 - float r2_10 = fract(11.0 / 3.0); 436 - float theta_10 = TWOPI * r2_10; 437 - poissonDisk = vec2(r1_10 * cos(theta_10), r1_10 * sin(theta_10)); 438 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 439 - 440 - float r1_11 = sqrt(11.0 / 16.0); 441 - float r2_11 = fract(12.0 / 3.0); 442 - float theta_11 = TWOPI * r2_11; 443 - poissonDisk = vec2(r1_11 * cos(theta_11), r1_11 * sin(theta_11)); 444 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 445 - 446 - float r1_12 = sqrt(12.0 / 16.0); 447 - float r2_12 = fract(13.0 / 3.0); 448 - float theta_12 = TWOPI * r2_12; 449 - poissonDisk = vec2(r1_12 * cos(theta_12), r1_12 * sin(theta_12)); 450 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 451 - 452 - float r1_13 = sqrt(13.0 / 16.0); 453 - float r2_13 = fract(14.0 / 3.0); 454 - float theta_13 = TWOPI * r2_13; 455 - poissonDisk = vec2(r1_13 * cos(theta_13), r1_13 * sin(theta_13)); 456 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 457 - 458 - float r1_14 = sqrt(14.0 / 16.0); 459 - float r2_14 = fract(15.0 / 3.0); 460 - float theta_14 = TWOPI * r2_14; 461 - poissonDisk = vec2(r1_14 * cos(theta_14), r1_14 * sin(theta_14)); 462 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 463 - 464 - float r1_15 = sqrt(15.0 / 16.0); 465 - float r2_15 = fract(16.0 / 3.0); 466 - float theta_15 = TWOPI * r2_15; 467 - poissonDisk = vec2(r1_15 * cos(theta_15), r1_15 * sin(theta_15)); 468 - color += texture2D(tex, uv + poissonDisk * sampleRadius); 469 - 470 - return bilateralFilter(tex, uv, color, sampleRadius, noiseThreshold, intensity); 471 - } 472 9 void main() { 473 - vec2 tc_no_dist = v_texcoord; 474 - 475 - vec2 tc = applyBarrelDistortion(tc_no_dist, DISTORTION_AMOUNT); 10 + vec2 tc = vec2(v_texcoord.x, v_texcoord.y); 476 11 477 - // [-1, 1] 478 - vec2 tc_no_dist_symmetric = tc_no_dist * 2.0 - 1.0; 12 + // Distance from the center 13 + float dx = abs(0.5 - tc.x); 14 + float dy = abs(0.5 - tc.y); 479 15 480 - // [0,1] 481 - vec2 tc_no_dist_normalized = (tc_no_dist_symmetric + 1.0) / 2.0; 16 + // Square it to smooth the edges 17 + dx *= dx; 18 + dy *= dy; 482 19 483 - // vec4 color = texture2D(tex, tc); 484 - vec4 color = supersample(tex, tc, SAMPLING_RADIUS, NOISE_THRESHOLD, DENOISE_INTENSITY); 485 - 486 - color = applyAdaptiveSharpen(tc, color, tex); 487 - 488 - color = applyPhosphorGlow(tc, color, tex); 20 + tc.x -= 0.5; 21 + tc.x *= 1.0 + (dy * 0.03); 22 + tc.x += 0.5; 489 23 490 - color = reduceGlare(color); 24 + tc.y -= 0.5; 25 + tc.y *= 1.0 + (dx * 0.03); 26 + tc.y += 0.5; 491 27 492 - color = mix(applyFakeHDREffect(color, HDR_BRIGHTNESS, HDR_CONTRAST, HDR_SATURATION, HDR_BLOOM), color, 0.5); 28 + // Add RGB offset for retro color separation effect 29 + vec2 r_tc = tc + vec2(0.0001, 0.001); 30 + vec2 g_tc = tc; 31 + vec2 b_tc = tc - vec2(0.0001, 0.001); 493 32 494 - color = applyColorCorrection(color); 33 + vec4 color; 34 + color.r = texture(tex, r_tc).r; 35 + color.g = texture(tex, g_tc).g; 36 + color.b = texture(tex, b_tc).b; 37 + color.a = 1.0; 495 38 496 - color /= SUPERSAMPLING_SAMPLES; 39 + // Add scanlines 40 + float scanline = sin(tc.y * 2000.0) * 0.02; 41 + color.rgb += scanline; 497 42 498 - color = mix(applyChromaticAberration(tc, color), color, 0.25); 43 + // Add noise 44 + float noise = (fract(sin(dot(tc.xy, vec2(12.9898, 78.233))) * 43758.5453) - 0.5) * 0.04; 45 + color.rgb += noise; 499 46 500 - color = mix(color, applyVignette(color), 0.37); 47 + // Apply vignette effect 48 + float vignette = smoothstep(0.8, 0.2, dx + dy); 49 + color.rgb *= vignette; 501 50 502 - color = applyBorder(tc_no_dist_normalized, color, 1.0 - BORDER_SIZE * BORDER_RADIUS, BORDER_COLOR); 51 + // Vertical CRT lines with reduced intensity 52 + float lines = sin(tc.y * 40.0) * 0.02; 53 + color.rgb *= 1.0 - lines; 503 54 504 - color = mix(applyBorder(tc, color, BORDER_SIZE, BORDER_COLOR), color, 0.05); 55 + // Apply retro orange color transformation 56 + vec3 retroColor = vec3( 57 + color.r * 1.0, // Boost the red channel 58 + color.g * 1.0, // Keep the green channel as is 59 + color.b * 1.0 // Reduce the blue channel 60 + ); 61 + color.rgb = retroColor; 505 62 506 - color = applyScanlines(tc, color); 63 + // Cutoff 64 + if (tc.y > 1.0 || tc.x < 0.0 || tc.x > 1.0 || tc.y < 0.0) 65 + color = vec4(0.0); 507 66 508 - gl_FragColor = color; 509 - gl_FragColor.a = 1.0; 67 + // Apply 68 + fragColor = color; 510 69 } 511 -
+1
config/ironbar/config.toml
··· 23 23 24 24 [[end]] 25 25 type = "music" 26 + truncate = { mode = "end", max_length = 50 } 26 27 27 28 [[end]] 28 29 type = "volume"
+1 -1
config/ironbar/style.css
··· 120 120 } 121 121 122 122 .workspaces .item.urgent { 123 - background-color: var(--color-urgent); 123 + /* background-color: var(--color-urgent); */ 124 124 } 125 125 126 126 button > .background, button contents {
screenshots/hyprland/applications.png

This is a binary file and will not be displayed.

screenshots/hyprland/idle.png

This is a binary file and will not be displayed.

screenshots/hyprlock/idle.png

This is a binary file and will not be displayed.

screenshots/hyprlock/password-incorrect.png

This is a binary file and will not be displayed.

screenshots/hyprlock/password-input.png

This is a binary file and will not be displayed.

screenshots/hyprlock/password-prompt.png

This is a binary file and will not be displayed.

History

1 round 4 comments
sign up or login to add to the discussion
autumn.bsky.gay submitted #0
2 commits
expand
Add screenshots
Add all the new stuff
expand 4 comments

okay some interesting things happening on the frontend/backend

closed without merging