From f2312373509ab9d34c4b38b7c315bdb5ee6f9c11 Mon Sep 17 00:00:00 2001 From: iceyrazor Date: Tue, 20 May 2025 20:03:39 -0500 Subject: [PATCH] added hyprland config --- .config/.profile | 8 +- .config/cava/config | 283 ++++++++++++ .config/cava/shaders/bar_spectrum.frag | 79 ++++ .config/cava/shaders/northern_lights.frag | 34 ++ .config/cava/shaders/pass_through.vert | 14 + .config/cava/shaders/spectrogram.frag | 53 +++ .../shaders/winamp_line_style_spectrum.frag | 112 +++++ .config/hypr/cycle-layout.sh | 5 + .config/hypr/hyprland.conf | 414 ++++++++++++++++++ .config/hypr/hyprpaper.conf | 13 + .config/nvim/after/plugin/lsp.lua | 8 +- .config/waybar/config.jsonc | 180 ++++++++ .config/waybar/style.css | 163 +++++++ .config/wezterm/wezterm.lua | 220 +++++++++- README.md | 18 +- stuff/scripts/system/backup/backup.sh | 2 +- stuff/scripts/system/backup/copy-to-git.sh | 2 +- stuff/scripts/system/url-handler.sh | 8 +- 18 files changed, 1587 insertions(+), 29 deletions(-) create mode 100644 .config/cava/config create mode 100644 .config/cava/shaders/bar_spectrum.frag create mode 100644 .config/cava/shaders/northern_lights.frag create mode 100644 .config/cava/shaders/pass_through.vert create mode 100644 .config/cava/shaders/spectrogram.frag create mode 100644 .config/cava/shaders/winamp_line_style_spectrum.frag create mode 100755 .config/hypr/cycle-layout.sh create mode 100644 .config/hypr/hyprland.conf create mode 100644 .config/hypr/hyprpaper.conf create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/style.css diff --git a/.config/.profile b/.config/.profile index bc14309..ea1d3f5 100755 --- a/.config/.profile +++ b/.config/.profile @@ -25,7 +25,9 @@ fi # . torsocks on export PROMPT_EOL_MARK="" export EDITOR="nvim" -export BROWSER="/home/iceyrazor/.local/bin/zen-x86_64.AppImage" +# idk which one works +# export BROWSER="/home/iceyrazor/.local/bin/zen-x86_64.AppImage" +export BROWSER="zen.desktop" export PREFIX=/usr export PATH="$PATH:$HOME/.cargo/bin:$HOME/stuff/scripts/system:$HOME/stuff/scripts/system/backup:$HOME/stuff/scripts/system/wlx:$HOME/stuff/scripts/system/youtube-playlist-cli:$HOME/.local/bin/blender-4.1.1-linux-x64:$HOME/stuff/manual-programs/app-images" export MANPAGER='nvim +Man!' @@ -82,7 +84,9 @@ alias pipes="pipes.sh -t 0 -p 3 -f 30 -r 2000" alias bri="fukn ~/stuff/scripts/system/bri.sh" # alias drkwll="nitrogen --head=0 --set-zoom-fill ~/stuff/media/gallifreyan/linux2.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/gallifreyan/linux2.png" -alias drkwll="nitrogen --head=0 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png" +# alias drkwll="nitrogen --head=0 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png" +alias drkwll="[ -z $WAYLAND_DISPLAY ] && nitrogen --head=0 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png || hyprctl hyprpaper wallpaper 'HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/dark_leaves.png' && hyprctl hyprpaper wallpaper 'DP-1,/home/iceyrazor/stuff/media/wallpapers/dark_leaves.png'" +alias reswll="hyprctl hyprpaper wallpaper 'HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/4500025-retrowave-vaporwave-car-typography-purple-blue-chromatic-aberration-initial-d-hachi-roku.jpg' && hyprctl hyprpaper wallpaper 'DP-1,/home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg'" # mounting alias umsu="fukn umount u" diff --git a/.config/cava/config b/.config/cava/config new file mode 100644 index 0000000..af2eb68 --- /dev/null +++ b/.config/cava/config @@ -0,0 +1,283 @@ +## Configuration file for CAVA. +# Remove the ; to change parameters. + + +[general] + +# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 +; mode = normal + +# Accepts only non-negative values. +; framerate = 60 + +# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off +# new as of 0.6.0 autosens of low values (dynamic range) +# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 +; autosens = 1 +; overshoot = 20 + +# Manual sensitivity in %. If autosens is enabled, this will only be the initial value. +# 200 means double height. Accepts only non-negative values. +; sensitivity = 100 + +# The number of bars (0-512). 0 sets it to auto (fill up console). +# Bars' width and space between bars in number of characters. +bars = 512 +bar_width = 1 +; bar_spacing = 0 +# bar_height is only used for output in "noritake" format +; bar_height = 32 + +# For SDL width and space between bars is in pixels, defaults are: +; bar_width = 20 +; bar_spacing = 5 + +# sdl_glsl have these default values, they are only used to calculate max number of bars. +; bar_width = 1 +; bar_spacing = 0 + + +# Lower and higher cutoff frequencies for lowest and highest bars +# the bandwidth of the visualizer. +# Note: there is a minimum total bandwidth of 43Mhz x number of bars. +# Cava will automatically increase the higher cutoff if a too low band is specified. +; lower_cutoff_freq = 50 +; higher_cutoff_freq = 10000 + + +# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and +# only check for input once per second. Cava will wake up once input is detected. 0 = disable. +; sleep_timer = 0 + + +[input] + +# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem' +# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with. +# On Mac it defaults to 'portaudio' or 'fifo' +# On windows this is automatic and no input settings are needed. +# +# All input methods uses the same config variable 'source' +# to define where it should get the audio. +# +# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink +# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). +# +# For pipewire 'source' will be the object name or object.serial of the device to capture from. +# Both input and output devices are supported. +# +# For alsa 'source' will be the capture device. +# For fifo 'source' will be the path to fifo-file. +# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address +# +# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'. +# README.md contains further information on how to setup CAVA for sndio. +# +# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device. +# README.md contains further information on how to setup CAVA for OSS on FreeBSD. +# +# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'. +# README.md contains further information on how to setup CAVA for JACK. +# +; method = pulse +; source = auto + +; method = pipewire +; source = auto + +; method = alsa +; source = hw:Loopback,1 + +; method = fifo +; source = /tmp/mpd.fifo + +; method = shmem +; source = /squeezelite-AA:BB:CC:DD:EE:FF + +; method = portaudio +; source = auto + +; method = sndio +; source = default + +; method = oss +; source = /dev/dsp + +; method = jack +; source = default + +# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods: +# sample_rate: fifo, pipewire, sndio, oss +# sample_bits: fifo, pipewire, sndio, oss +# channels: sndio, oss, jack +# autoconnect: jack +# Other methods ignore these settings. +# +# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported +# by the chosen audio device, the device will use other supported values instead. +# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it +# will use 44100, 16 and 1. +# +; sample_rate = 44100 +; sample_bits = 16 +; channels = 2 +; autoconnect = 2 + + +[output] + +# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl' +# or 'sdl_glsl'. +# 'noncurses' (default) uses a buffer and cursor movements to only print +# changes from frame to frame in the terminal. Uses less resources and is less +# prone to tearing (vsync issues) than 'ncurses'. +# +# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data +# stream of the bar heights that can be used to send to other applications. +# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. +# +# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display +# in graphic mode. It only support the 3000 series graphical VFDs for now. +# +# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context. +# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or +# use one of the predefined ones. +; method = noncurses + +# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or +# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl +# and ncruses output. 'horizontal' (bars go up and down from center) is only supported +# on noncurses output. +# Note: many fonts have weird or missing glyphs for characters used in orientations +# other than 'bottom', which can make output not look right. +; orientation = bottom + +# Visual channels. Can be 'stereo' or 'mono'. +# 'stereo' mirrors both channels with low frequencies in center. +# 'mono' outputs left to right lowest to highest frequencies. +# 'mono_option' set mono to either take input from 'left', 'right' or 'average'. +# set 'reverse' to 1 to display frequencies the other way around. +; channels = stereo +; mono_option = average +; reverse = 0 + +# Raw output target. +# On Linux, a fifo will be created if target does not exist. +# On Windows, a named pipe will be created if target does not exist. +; raw_target = /dev/stdout + +# Raw data format. Can be 'binary' or 'ascii'. +; data_format = binary + +# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). +; bit_format = 16bit + +# Ascii max value. In 'ascii' mode range will run from 0 to value specified here +; ascii_max_range = 1000 + +# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. +# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). +; bar_delimiter = 59 +; frame_delimiter = 10 + +# sdl window size and position. -1,-1 is centered. +; sdl_width = 1000 +; sdl_height = 500 +; sdl_x = -1 +; sdl_y= -1 +; sdl_full_screen = 0 + +# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none' +# 'frequency' displays the lower cut off frequency of the bar above. +# Only supported on ncurses and noncurses output. +; xaxis = none + +# enable synchronized sync. 1 = on, 0 = off +# removes flickering in alacritty terminal emulator. +# defaults to off since the behaviour in other terminal emulators is unknown +; synchronized_sync = 0 + +# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders +; vertex_shader = pass_through.vert +; fragment_shader = bar_spectrum.frag + +; for glsl output mode, keep rendering even if no audio +; continuous_rendering = 0 + +# disable console blank (screen saver) in tty +# (Not supported on FreeBSD) +; disable_blanking = 0 + +# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off +; show_idle_bar_heads = 1 + +# show waveform instead of frequency spectrum, 1 = on, 0 = off +; waveform = 0 + +[color] + +# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. +# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires +# a terminal that can change color definitions such as Gnome-terminal or rxvt. +# default is to keep current terminal color +; background = default +foreground = magenta +; foreground = default + +# SDL and sdl_glsl only support hex code colors, these are the default: +; background = '#111111' +; foreground = '#33ffff' + + +# Gradient mode, only hex defined colors are supported, +# background must also be defined in hex or remain commented out. 1 = on, 0 = off. +# You can define as many as 8 different colors. They range from bottom to top of screen +; gradient = 0 +; gradient_color_1 = '#59cc33' +; gradient_color_2 = '#80cc33' +; gradient_color_3 = '#a6cc33' +; gradient_color_4 = '#cccc33' +; gradient_color_5 = '#cca633' +; gradient_color_6 = '#cc8033' +; gradient_color_7 = '#cc5933' +; gradient_color_8 = '#cc3333' + + + +[smoothing] + +# Percentage value for integral smoothing. Takes values from 0 - 100. +# Higher values means smoother, but less precise. 0 to disable. +# DEPRECATED as of 0.8.0, use noise_reduction instead +; integral = 77 + +# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. +; monstercat = 0 +; waves = 0 + +# Set gravity percentage for "drop off". Higher values means bars will drop faster. +# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". +# DEPRECATED as of 0.8.0, use noise_reduction instead +; gravity = 100 + + +# In bar height, bars that would have been lower that this will not be drawn. +# DEPRECATED as of 0.8.0 +; ignore = 0 + +# Noise reduction, int 0 - 100. default 77 +# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth +# 100 will be very slow and smooth, 0 will be fast but noisy. +noise_reduction = 20 + + +[eq] + +# This one is tricky. You can have as much keys as you want. +# Remember to uncomment more than one key! More keys = more precision. +# Look at readme.md on github for further explanations and examples. +; 1 = 1 # bass +; 2 = 1 +; 3 = 1 # midtone +; 4 = 1 +; 5 = 1 # treble diff --git a/.config/cava/shaders/bar_spectrum.frag b/.config/cava/shaders/bar_spectrum.frag new file mode 100644 index 0000000..b078913 --- /dev/null +++ b/.config/cava/shaders/bar_spectrum.frag @@ -0,0 +1,79 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +//colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) +{ + //create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() +{ + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + //calculate a bar size + float bar_size = u_resolution.x / bars_count; + + //the y coordinate and bar values are the same + float y = bars[bar]; + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) + { + y = 1.0 / u_resolution.y; + } + + //draw the bar up to current height + if (y > fragCoord.y) + { + //make some space between bars basen on settings + if (x > (bar + 1) * (bar_size) - bar_spacing) + { + fragColor = vec4(bg_color,1.0); + } + else + { + if (gradient_count == 0) + { + fragColor = vec4(fg_color,1.0); + } + else + { + //find which color in the configured gradient we are at + int color = int((gradient_count - 1) * fragCoord.y); + + //find where on y this and next color is supposed to be + float y_min = color / (gradient_count - 1.0); + float y_max = (color + 1.0) / (gradient_count - 1.0); + + //make color + fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); + } + } + } + else + { + fragColor = vec4(bg_color,1.0); + } +} \ No newline at end of file diff --git a/.config/cava/shaders/northern_lights.frag b/.config/cava/shaders/northern_lights.frag new file mode 100644 index 0000000..ecd859a --- /dev/null +++ b/.config/cava/shaders/northern_lights.frag @@ -0,0 +1,34 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) + +uniform vec3 u_resolution; // window resolution, not used here + +//colors, configurable in cava config file +uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here +uniform vec3 fg_color; // foreground color, not used here + +void main() +{ + // find which bar to use based on where we are on the x axis + int bar = int(bars_count * fragCoord.x); + + float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0; + float y = (bars[bar]) * bar_y; + + float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count; + float bar_r = 1.0 - abs((bar_x - 0.5)) * 2; + + bar_r = bar_r * bar_r * 2; + + // set color + fragColor.r = fg_color.x * y * bar_r; + fragColor.g = fg_color.y * y * bar_r; + fragColor.b = fg_color.z * y * bar_r; +} diff --git a/.config/cava/shaders/pass_through.vert b/.config/cava/shaders/pass_through.vert new file mode 100644 index 0000000..a4f20e5 --- /dev/null +++ b/.config/cava/shaders/pass_through.vert @@ -0,0 +1,14 @@ +#version 330 + + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; + +// Output data ; will be interpolated for each fragment. +out vec2 fragCoord; + +void main() +{ + gl_Position = vec4(vertexPosition_modelspace,1); + fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; +} diff --git a/.config/cava/shaders/spectrogram.frag b/.config/cava/shaders/spectrogram.frag new file mode 100644 index 0000000..ccb79ae --- /dev/null +++ b/.config/cava/shaders/spectrogram.frag @@ -0,0 +1,53 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high +// to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +uniform sampler2D inputTexture; // Texture from the first render pass + +vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) { + // create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() { + // find which bar to use based on where we are on the y axis + int bar = int(bars_count * fragCoord.y); + float y = bars[bar]; + float band_size = 1.0 / float(bars_count); + float current_band_min = bar * band_size; + float current_band_max = (bar + 1) * band_size; + + int hist_length = 512; + float win_size = 1.0 / hist_length; + + if (fragCoord.x > 1.0 - win_size) { + + if (fragCoord.y > current_band_min && fragCoord.y < current_band_max) { + + fragColor = vec4(fg_color * y, 1.0); + } + } else { + vec2 offsetCoord = fragCoord; + offsetCoord.x += float(win_size); + fragColor = texture(inputTexture, offsetCoord); + } +} \ No newline at end of file diff --git a/.config/cava/shaders/winamp_line_style_spectrum.frag b/.config/cava/shaders/winamp_line_style_spectrum.frag new file mode 100644 index 0000000..375ff27 --- /dev/null +++ b/.config/cava/shaders/winamp_line_style_spectrum.frag @@ -0,0 +1,112 @@ +#version 330 + +// Emulate the "line style" spectrum analyzer from Winamp 2. +// Try this config for a demonstration: + +/* +[general] +bar_width = 2 +bar_spacing = 0 +higher_cutoff_freq = 22000 + +[output] +method = sdl_glsl +channels = mono +fragment_shader = winamp_line_style_spectrum.frag + +[color] +background = '#000000' +gradient = 1 +gradient_color_1 = '#319C08' +gradient_color_2 = '#29CE10' +gradient_color_3 = '#BDDE29' +gradient_color_4 = '#DEA518' +gradient_color_5 = '#D66600' +gradient_color_6 = '#CE2910' + +[smoothing] +noise_reduction = 10 +*/ + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +//colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) +{ + //create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() +{ + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + //calculate a bar size + float bar_size = u_resolution.x / bars_count; + + //the y coordinate is stretched by 4X to resemble Winamp + float y = min(bars[bar] * 4.0, 1.0); + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) + { + y = 1.0 / u_resolution.y; + } + + vec4 bar_color; + + if (gradient_count == 0) + { + bar_color = vec4(fg_color,1.0); + } + else + { + //find color in the configured gradient for the top of the bar + int color = int((gradient_count - 1) * y); + + //find where on y this and next color is supposed to be + float y_min = float(color) / (gradient_count - 1.0); + float y_max = float(color + 1) / (gradient_count - 1.0); + + //make a solid color for the entire bar + bar_color = vec4(normalize_C(y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); + } + + + //draw the bar up to current height + if (y > fragCoord.y) + { + //make some space between bars based on settings + if (x > (bar + 1) * (bar_size) - bar_spacing) + { + fragColor = vec4(bg_color,1.0); + } + else + { + fragColor = bar_color; + } + } + else + { + fragColor = vec4(bg_color,1.0); + } +} \ No newline at end of file diff --git a/.config/hypr/cycle-layout.sh b/.config/hypr/cycle-layout.sh new file mode 100755 index 0000000..8b7314f --- /dev/null +++ b/.config/hypr/cycle-layout.sh @@ -0,0 +1,5 @@ +if [ -z $(hyprctl getoption general:layout | grep master ) ]; then + hyprctl keyword general:layout master +else + hyprctl keyword general:layout dwindle +fi diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..7742429 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,414 @@ + +# ####################################################################################### +# AUTOGENERATED HYPRLAND CONFIG. +# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT, +# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + +# autogenerated = 1 # remove this line to remove the warning + +env = QT_QPA_PLATFORM,wayland +env = LIBVA_DRIVER_NAME,nvidia +env = GBM_BACKEND,nvidia-drm +# env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +env = GDK_BACKEND,wayland,x11,* +env = HYPRLAND_PER_MONITOR_WORKSPACES,1 + + +windowrule = float,title:^(flameshot) +windowrule = move 0 0,title:^(flameshot) +windowrule = suppressevent fullscreen,title:^(flameshot) + +exec-once = pipewire +exec-once = wireplumber +exec-once = pipewire-pulse +exec-once = waybar +exec-once = /usr/lib/xdg-desktop-portal & +exec-once = dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = ibus-daemon -rxRd +exec-once = hyprpaper + +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=HDMI-A-1,prefered,0x0,0.8 +monitor=DP-1,1024x768,auto,0.8 + + +workspace=HDMI-A-1,1 +workspace=DP-1,1 + +workspace = 1,monitor:HDMI-A-1,default:true +workspace = 2,monitor:HDMI-A-1 +workspace = 3,monitor:HDMI-A-1 +workspace = 4,monitor:HDMI-A-1 +workspace = 5,monitor:HDMI-A-1 +workspace = 6,monitor:HDMI-A-1 +workspace = 7,monitor:HDMI-A-1 +workspace = 8,monitor:HDMI-A-1 +workspace = 9,monitor:HDMI-A-1 +workspace = 10,monitor:HDMI-A-1 + +workspace = 11,monitor:DP-1,default:true +workspace = 12,monitor:DP-1 +workspace = 13,monitor:DP-1 +workspace = 14,monitor:DP-1 +workspace = 15,monitor:DP-1 +workspace = 16,monitor:DP-1 +workspace = 17,monitor:DP-1 +workspace = 18,monitor:DP-1 +workspace = 19,monitor:DP-1 +workspace = 20,monitor:DP-1 + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = wezterm +$fileManager = pcmanfm +$menu = rofi -show drun + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +# exec-once = $terminal +# exec-once = nm-applet & +# exec-once = waybar & hyprpaper & firefox + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +################### +### PERMISSIONS ### +################### + +# See https://wiki.hyprland.org/Configuring/Permissions/ +# Please note permission changes here require a Hyprland restart and are not applied on-the-fly +# for security reasons + +# ecosystem { +# enforce_permissions = 1 +# } + +# permission = /usr/(bin|local/bin)/grim, screencopy, allow +# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow +# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 5 + + border_size = 1 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.active_border = rgba(8568e6ee) rgba(cf68e6ee) 45deg + col.active_border = rgba(cf68e6ee) rgba(8568e6ee) 45deg + #33ccff + #00ff99 + #8568e6 + col.inactive_border = rgba(595959aa) + + # 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 +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 0 + rounding_power = 2 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + 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 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# 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] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +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. :( + focus_on_activate = true +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + special_fallthrough = true + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, return, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, Q, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, space, togglefloating, +bind = $mainMod, D, exec, $menu +bind = $mainMod SHIFT, D, exec, echo \"\" | rofi -x11 -dmenu -p 'Search' | xargs -I{} xdg-open 'https://searx.iceyfox.xyz/search?q={}' +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, i, togglesplit, # dwindle +bind = $mainMod, f, fullscreen, 0 +bind = $mainMod SHIFT, m, fullscreen, 1 + +# layout stuffs +bind = $mainMod SHIFT, space, exec, /home/iceyrazor/.config/hypr/cycle-layout.sh +bind = $mainMod SHIFT, i, layoutmsg, cyclenext +bind = $mainMod, z, layoutmsg, swapwithmaster master +# behaves like xmonads promote feature (https://hackage.haskell.org/package/xmonad-contrib-0.17.1/docs/XMonad-Actions-Promote.html) + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, alterzorder, top +bind = $mainMod, l, alterzorder, top +bind = $mainMod, k, alterzorder, top +bind = $mainMod, j, alterzorder, top +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d +# bind = $mainMod, h, bringactivetop, + +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, t, pin + +bind = $mainMod CTRL, j, focusmonitor, +1 +bind = $mainMod, o, movewindow, mon:+1 +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, r~1 +bind = $mainMod, 2, workspace, r~2 +bind = $mainMod, 3, workspace, r~3 +bind = $mainMod, 4, workspace, r~4 +bind = $mainMod, 5, workspace, r~5 +bind = $mainMod, 6, workspace, r~6 +bind = $mainMod, 7, workspace, r~7 +bind = $mainMod, 8, workspace, r~8 +bind = $mainMod, 9, workspace, r~9 +bind = $mainMod, 0, workspace, r~10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, r~1 +bind = $mainMod SHIFT, 2, movetoworkspace, r~2 +bind = $mainMod SHIFT, 3, movetoworkspace, r~3 +bind = $mainMod SHIFT, 4, movetoworkspace, r~4 +bind = $mainMod SHIFT, 5, movetoworkspace, r~5 +bind = $mainMod SHIFT, 6, movetoworkspace, r~6 +bind = $mainMod SHIFT, 7, movetoworkspace, r~7 +bind = $mainMod SHIFT, 8, movetoworkspace, r~8 +bind = $mainMod SHIFT, 9, movetoworkspace, r~9 +bind = $mainMod SHIFT, 0, movetoworkspace, r~10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +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_SOURCE@ toggle +# pactl set-source-mute @DEFAULT_SOURCE@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +xwayland { + force_zero_scaling = true +} + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule +# windowrule = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrule = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +windowrule = float, title:Gajim +windowrule = monitor DP-1, title:Gajim +windowrule = move 100%-w-5 100%-w-40, title:Gajim +windowrule = size 60% 60%, title:Gajim +windowrule = workspace 11, title:Gajim + +windowrule = float, class:vesktop +windowrule = monitor DP-1, class:vesktop +windowrule = move 0% 0%, class:vesktop +windowrule = size 60% 60%, title:vesktop +windowrule = workspace 11, title:vesktop + +windowrule = workspace 9, title: Envision + +windowrule = workspace 8, title: VRChat diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..a7bec0c --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,13 @@ +preload = /home/iceyrazor/stuff/media/wallpapers/4500025-retrowave-vaporwave-car-typography-purple-blue-chromatic-aberration-initial-d-hachi-roku.jpg +preload = /home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg +preload = /home/iceyrazor/stuff/media/wallpapers/dark_leaves.png + +#set the default wallpaper(s) seen on initial workspace(s) --depending on the number of monitors used +wallpaper = HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/4500025-retrowave-vaporwave-car-typography-purple-blue-chromatic-aberration-initial-d-hachi-roku.jpg +wallpaper = DP-1,/home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg + +#enable splash text rendering over the wallpaper +splash = true + +#fully disable ipc +# ipc = off diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua index 0bc44c4..99efb6d 100755 --- a/.config/nvim/after/plugin/lsp.lua +++ b/.config/nvim/after/plugin/lsp.lua @@ -16,12 +16,16 @@ local cmp_select = {behavior = cmp.SelectBehavior.Select} local cmp_mappings = cmp.mapping.preset.insert({ [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.select_next_item(cmp_select), - [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.confirm({ select = true }), [""] = cmp.mapping.complete(), }) cmp.setup({ - mapping = cmp_mappings + mapping = cmp_mappings, +}) + +vim.diagnostic.config({ + virtual_text = true, }) lsp.on_attach(function(client, bufnr) diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..b08a6c2 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,180 @@ +{ + "layer": "top", + "position": "bottom", + "modules-left": ["hyprland/workspaces"], + + //"modules-center": ["clock", ], //"custom/weather"], + + "modules-right": [ + "custom/mic", + "pulseaudio", + //"backlight", + "battery", + "network", + "cpu", + "memory", + //"custom/docker", + "custom/disc", + "custom/rss", + "clock", + "tray", + "custom/lock", + "custom/power" + ], + + "hyprland/workspaces": { + //"format": "{name}: {icon}", + //"all-outputs":true, + "format": "{icon}", + "format-icons": { + /* + "1": "", + "2": "", + "3": "", + "4": "", + "5": "" + */ + "1":"  ", + "2":"  ", + "3":"  ", + "4":"  ", + "5":"  ", + "6":"  ", + "7":"  ", + "8":"  ", + "9":"  ", + "10":"  ", + "11":"  ", + "12":"  ", + "13":"  ", + "14":"  ", + "15":"  ", + "16":"  ", + "17":"  ", + "18":"  ", + "19":"  ", + "20":"  " + }, + /* + "persistent-workspaces": { + "1": [], // Always show a workspace with name '3', on all outputs if it does not exists + "2": [], + "3": [], + "4": [], + "5": [], + "6": [], + "7": [], + "8": [], + "9": [], + "10": [] + }, + */ + "sort-by-name": true + }, + + "tray": { + "icon-size": 16, + "spacing": 10 + }, + + "custom/music": { + "format": " {}", + "escape": true, + "interval": 5, + "tooltip": false, + "exec": "playerctl metadata --format='{{ artist }} - {{ title }}'", + "on-click": "playerctl play-pause", + "max-length": 50 + }, + + "clock": { + "timezone": "America/Chicago", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format": "{:%m/%d/%Y - %I:%M:%S}", + "interval": 1 + }, + + "network": { + "interface": "wlan0", + "format-wifi": "󰤢 {bandwidthDownBits}", + "format-ethernet": "󰈀 {bandwidthDownBits}", + "format-disconnected": "󰤠 No Network", + "interval": 5, + "tooltip": true, + "tooltip-format-wifi": "{essid} ({signalStrength}%) ", + "tooltip-format-ethernet": "{ifname} ", + "tooltip-format-disconnected": "Disconnected" + }, + + "cpu": { + "interval": 1, + "format": " {icon0}{icon1}{icon2}{icon3} {usage:>2}%", + "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] + }, + + "memory": { + "interval": 30, + "format": " {used:0.1f}G/{total:0.1f}G" + }, + + "custom/uptime": { + "format": "{}", + "interval": 1600, + "exec": "sh -c '(uptime -p)'" + }, + + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "", + "format-icons": { + "default": ["", "", " "] + }, + "on-click": "pavucontrol" + }, + + "custom/power": { + "tooltip": false, + "on-click": "wlogout &", + "format": "⏻" + }, + + "custom/docker": { + "format": "{}", + "return-type": "json", + "interval": 10, + "exec": "$(pwd)/scripts/docker-stats/docker-stats", + "tooltip": true + }, + + "custom/weather": { + "format": "{}", + "tooltip": true, + "interval": 1800, + "exec": "$(pwd)/scripts/weather-stats/weather-stats", + "return-type": "json" + }, + + "custom/rss": { + "format": " {}", + "interval": 3, + "exec": "/usr/bin/newsboat -x print-unread|sed 's/\\s.*//; s/Error:/IA/'" + }, + + "custom/disc": { + "format": " {}", + "interval": 3, + "exec": "df -h -x=used /dev/mapper/artix-root | sed '1d' | awk '{print $4}'| sed 's/[^0-9]*//g'" + }, + + "custom/mic": { + "format": "{}", + "interval": 1, + "exec": "[ \"$(pactl get-source-mute @DEFAULT_SOURCE@)\" == \"Mute: no\" ] && echo  || echo 󰍭" + }, + + "custom/wifi": { + "format": "{}", + "interval": 1000, + "exec": "sed \"s/down/\\:\\(/;s/up/\\:\\)/\" /sys/class/net/$wifi_device/operstate" + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..edc87e0 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,163 @@ +* { + font-family: JetbrainsMono Nerd Font; + font-size: 13px; + min-height: 0; + padding-right: 2px; + padding-left: 2px; + padding-bottom: 0px; +} + +#waybar { + background: transparent; + color: #c6d0f5; + margin: 2px 2px; +} + +#workspaces { + border-radius: 5px; + margin: 5px; + background: #101010; + margin-left: 2px; +} + +#workspaces button { + color: #babbf1; + border-radius: 5px; + padding: 0.4rem; +} + +#workspaces button.active { + color: #99d1db; + border-radius: 5px; +} + +button { + background: transparent; +} + +#workspaces button:hover { + background: #1e1e1e; + border: 0px solid transparent; +} + +#custom-music, +#tray, +#backlight, +#clock, +#battery, +#pulseaudio, +#network, +#cpu, +#memory, +#custom-lock, +#custom-power, +#custom-weather, +#custom-uptime, +#custom-rss, +#custom-disc, +#custom-mic, +#custom-docker { + background-color: #101010; + padding: 0.5rem 1rem; + margin: 5px 0; +} + +#clock { + color: #8caaee; + border-radius: 0px; +} + +#custom-weather { + color: #8caaee; + margin-left: 0.5rem; + border-radius: 5px; +} + +#battery { + color: #a6d189; +} + +#battery.charging { + color: #a6d189; +} + +#battery.warning:not(.charging) { + color: #e78284; +} + +#backlight { + color: #e5c890; +} + +#backlight, +#battery { + border-radius: 0; +} + +#pulseaudio { + color: #ea999c; +} + +#custom-mic{ + color: #ea999c; + border-radius: 5px 0px 0px 5px; +} + +#custom-docker { + color: #85c1dc; +} + +#custom-music { + color: #ca9ee6; + border-radius: 5px; +} + +#custom-lock { + color: #babbf1; +} + +#custom-power { + margin-right: 1rem; + border-radius: 0px 5px 5px 0px; + color: #e78284; +} + +#custom-docker.docker { + color: #85c1dc; +} + +#custom-docker.docker-none { + color: #737994; +} + +#custom-docker.docker-error { + color: #e78284; +} + +#custom-weather.clear { + color: #e5c890; /* Sunny yellow */ +} + +#custom-weather.cloud { + color: #99d1db; /* Light blue */ +} + +#custom-weather.rain { + color: #8caaee; /* Blue */ +} + +#custom-weather.snow { + color: #c6d0f5; /* White-ish */ +} + +#custom-weather.thunder { + color: #ca9ee6; /* Purple */ +} + +#custom-weather.fog { + color: #b0b4bc; /* Gray */ +} + +#custom-weather.error { + color: #e78284; /* Red */ +} diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua index b75e736..603e272 100755 --- a/.config/wezterm/wezterm.lua +++ b/.config/wezterm/wezterm.lua @@ -1,14 +1,32 @@ local wezterm = require 'wezterm' + local config = {} local act = wezterm.action config.default_prog = { 'zsh', '-l' } --config.font = wezterm.font 'Classic Console' config.font_size = 15 config.font = wezterm.font 'Source Code Pro' -config.show_tabs_in_tab_bar = true -config.enable_tab_bar = true +-- tab bar +config.enable_tab_bar = false +--config.hide_tab_bar_if_only_one_tab = false +--config.tab_bar_at_bottom = true +--config.use_fancy_tab_bar = false +--config.show_tabs_in_tab_bar = true +--config.show_new_tab_button_in_tab_bar = false +--config.tab_and_split_indices_are_zero_based = true --config.font = wezterm.font 'CozetteVector' + + +-- In newer versions of wezterm, use the config_builder which will +-- help provide clearer error messages +--[[ +if wezterm.config_builder then + config = wezterm.config_builder() +end +--]] + config.font = wezterm.font_with_fallback { - --'B612', - 'Inconsolata', + 'B612 Mono', + --'Inconsolata', -- 'CozetteVector', --has weird offset with japanese. きki becomes せse and vice versa + 'JetBrainsMono', 'JetBrainsMono Nerd Font', 'JetBrainsMono Nerd Font Mono', 'IPAGothic', @@ -19,17 +37,6 @@ config.font_size = 13 --config.font = wezterm.font 'Caesar Dressing' --config.font_size = 13 -config.keys = { - { key = 'h', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' }, - { key = 'h', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Left', 1 } }, - { key = 'l', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Right' }, - { key = 'l', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Right', 1 } }, - { key = 'k', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Up' }, - { key = 'k', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Up', 1 } }, - { key = 'j', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Down' }, - { key = 'j', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Down', 1 } }, -} - --config.window_background_image = "/home/iceyrazor/stuff/media/wallpapers/hfdsjkldysa87gr9eahgf4rjek ltjkedjkaslfjd salk 9270221.jpg" --[[ config.window_background_image_hsb = { @@ -90,9 +97,6 @@ local SOLID_LEFT_ARROW = wezterm.nerdfonts.pl_right_hard_divider -- The filled in variant of the > symbol local SOLID_RIGHT_ARROW = wezterm.nerdfonts.pl_left_hard_divider - -config.use_fancy_tab_bar = false -config.show_new_tab_button_in_tab_bar = false --[[ wezterm.on( 'format-tab-title', @@ -132,4 +136,184 @@ wezterm.on( ) --]] +--[[ +local keysmain = { + { key = 'h', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' }, + { key = 'h', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Left', 1 } }, + { key = 'l', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Right' }, + { key = 'l', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Right', 1 } }, + { key = 'k', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Up' }, + { key = 'k', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Up', 1 } }, + { key = 'j', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Down' }, + { key = 'j', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Down', 1 } }, +} +]]-- + +-- WezTerm Keybindings Documentation by dragonlobster +-- =================================================== +-- Leader Key: +-- The leader key is set to ALT + q, with a timeout of 2000 milliseconds (2 seconds). +-- To execute any keybinding, press the leader key (ALT + q) first, then the corresponding key. + +-- Keybindings: +-- 1. Tab Management: +-- - LEADER + c: Create a new tab in the current pane's domain. +-- - LEADER + x: Close the current pane (with confirmation). +-- - LEADER + b: Switch to the previous tab. +-- - LEADER + n: Switch to the next tab. +-- - LEADER + : Switch to a specific tab (0–9). + +-- 2. Pane Splitting: +-- - LEADER + |: Split the current pane horizontally into two panes. +-- - LEADER + -: Split the current pane vertically into two panes. + +-- 3. Pane Navigation: +-- - LEADER + h: Move to the pane on the left. +-- - LEADER + j: Move to the pane below. +-- - LEADER + k: Move to the pane above. +-- - LEADER + l: Move to the pane on the right. + +-- 4. Pane Resizing: +-- - LEADER + LeftArrow: Increase the pane size to the left by 5 units. +-- - LEADER + RightArrow: Increase the pane size to the right by 5 units. +-- - LEADER + DownArrow: Increase the pane size downward by 5 units. +-- - LEADER + UpArrow: Increase the pane size upward by 5 units. + +-- 5. Status Line: +-- - The status line indicates when the leader key is active, displaying an ocean wave emoji (🌊). + +-- Miscellaneous Configurations: +-- - Tabs are shown even if there's only one tab. +-- - The tab bar is located at the bottom of the terminal window. +-- - Tab and split indices are zero-based. + +-- For example, changing the color scheme: +-- config.color_scheme = "Catppuccin Macchiato" +-- config.window_decorations = "RESIZE" + +-- tmux +config.leader = { key = "Space", mods = "SHIFT", timrout_milliseconds = 20000 } +config.keys = { + { + mods = "LEADER", + key = "c", + action = wezterm.action.SpawnTab "CurrentPaneDomain", + }, + { + mods = "LEADER", + key = "x", + action = wezterm.action.CloseCurrentPane { confirm = true } + }, + { + mods = "LEADER", + key = "b", + action = wezterm.action.ActivateTabRelative(-1) + }, + { + mods = "LEADER", + key = "n", + action = wezterm.action.ActivateTabRelative(1) + }, + { + mods = "LEADER", + key = "\\", + action = wezterm.action.SplitHorizontal { domain = "CurrentPaneDomain" } + }, + { + mods = "LEADER", + key = "-", + action = wezterm.action.SplitVertical { domain = "CurrentPaneDomain" } + }, + { + mods = "LEADER", + key = "h", + action = wezterm.action.ActivatePaneDirection "Left" + }, + { + mods = "LEADER", + key = "j", + action = wezterm.action.ActivatePaneDirection "Down" + }, + { + mods = "LEADER", + key = "k", + action = wezterm.action.ActivatePaneDirection "Up" + }, + { + mods = "LEADER", + key = "l", + action = wezterm.action.ActivatePaneDirection "Right" + }, + { + mods = "LEADER", + key = "LeftArrow", + action = wezterm.action.AdjustPaneSize { "Left", 5 } + }, + { + mods = "LEADER", + key = "RightArrow", + action = wezterm.action.AdjustPaneSize { "Right", 5 } + }, + { + mods = "LEADER", + key = "DownArrow", + action = wezterm.action.AdjustPaneSize { "Down", 5 } + }, + { + mods = "LEADER", + key = "UpArrow", + action = wezterm.action.AdjustPaneSize { "Up", 5 } + }, +} + +for i = 1, 9 do + -- leader + number to activate that tab + table.insert(config.keys, { + key = tostring(i), + mods = "LEADER", + action = wezterm.action.ActivateTab(i-1), + }) +end + + +-- tmux status +wezterm.on("update-right-status", function(window, _) + local SOLID_LEFT_ARROW = "" + --local ARROW_FOREGROUND = { Foreground = { Color = "#c6a0f6" } } + -- local ARROW_FOREGROUND = { Foreground = { Color = "#000000" } } + local prefix = "" + + if window:leader_is_active() then + prefix = " " .. utf8.char(0x1f30a) -- ocean wave + SOLID_LEFT_ARROW = utf8.char(0xe0b2) + end + + if window:active_tab():tab_id() ~= 0 then + -- ARROW_FOREGROUND = { Foreground = { Color = "#1e2030" } } + -- ARROW_FOREGROUND = { Foreground = { Color = "#000000" } } + end -- arrow color based on if tab is first pane + + window:set_left_status(wezterm.format { + --{ Background = { Color = "#b7bdf8" } }, + -- { Background = { Color = "#000000" } }, + { Text = prefix }, + ARROW_FOREGROUND, + { Text = SOLID_LEFT_ARROW } + }) +end) + + +config.unix_domains = { + { + name = 'unix', + no_serve_automatically = false, + }, +} + +-- This causes `wezterm` to act as though it was started as +-- `wezterm connect unix` by default, connecting to the unix +-- domain on startup. +-- If you prefer to connect manually, leave out this line. +-- config.default_gui_startup_args = { 'connect', 'unix' } + return config diff --git a/README.md b/README.md index 249885f..20278b7 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ eg my dotfiles - libxft - libxinerama - for awesome extra - - rofi + - rofi-wayland (works on x. my rofi command on awesome is rofi -x11 so this may be required) - for surf - gcr - webkit2gtk @@ -24,6 +24,14 @@ eg my dotfiles - cd into respective directory - sudo make clean install - startx #for dwm +- hyprland + - wayland + - waybar + - grim # needed for flameshot to work on wayland + - xdg-deskop=portal + - xdg-deskop=portal-hyprland + - xdg-deskop=portal-gtk + - hyprpaper - for neovim - packer - for urlview - urlview @@ -33,10 +41,13 @@ eg my dotfiles - ibus - ibus-mozc # for japanese input - fonts + - B612 mono - ttf-inconsolata + - ttf-jetbrains-mono - ttf-jetbrains-mono-nerd - otf-ipafont - login + - sddm (for hyprland. it doesnt like lightdm :<) - lightdm - lightdm-gtk-greeter - lxappearance # for setting gtk theme @@ -45,7 +56,7 @@ eg my dotfiles - for qt to gtk theme - qt6gtk2 - qt5gtk2 -- background setter - nitrogen +- background setter - nitrogen # for x11 - numen # voice control, manual setup - file manager - lf @@ -61,7 +72,7 @@ eg my dotfiles - compositor - xcompmgr # primarily - picom # for fancy ness -- inetutils - for normal ftp +- inetutils # for normal ftp - screenshots - flameshot #higher rez than ffmpeg - ffmpeg @@ -74,5 +85,6 @@ eg my dotfiles - notifications - libnotify - notify-send + - dusnt # for hyprland - calender - calcurse diff --git a/stuff/scripts/system/backup/backup.sh b/stuff/scripts/system/backup/backup.sh index aa633f6..1981ff4 100755 --- a/stuff/scripts/system/backup/backup.sh +++ b/stuff/scripts/system/backup/backup.sh @@ -15,7 +15,7 @@ fsyncb () { fi } -syncfile="stuff .bash_profile .bashrc .surf/styles .gtkrc-2.0 .urlview .vimrc .xinitrc .Xresources .zshrc .p10k.zsh .gnupg .ssh .local/bin/lf-gadgets .config/dwm .config/wezterm .config/.profile .config/tmux .config/wireplumber .config/FreeTube .config/awesome .config/wlxoverlay .config/newsboat .config/vesktop/themes .config/fastfetch .config/gtk-3.0 .config/rofi .config/lf .config/mutt .config/zsh .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/vesktop/themes .keepass .config/Pinta .config/cmus .config/cava .local/share/applications/custom .local/share/osu" +syncfile="stuff .bash_profile .bashrc .surf/styles .gtkrc-2.0 .urlview .vimrc .xinitrc .Xresources .zshrc .p10k.zsh .gnupg .ssh .local/bin/lf-gadgets .config/dwm .config/wezterm .config/.profile .config/tmux .config/wireplumber .config/FreeTube .config/awesome .config/wlxoverlay .config/newsboat .config/vesktop/themes .config/fastfetch .config/gtk-3.0 .config/rofi .config/lf .config/mutt .config/zsh .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/vesktop/themes .keepass .config/Pinta .config/cmus .config/cava .config/hypr .config/waybar .local/share/applications/custom .local/share/osu" # se shit syncfile="$syncfile /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/Blueprints /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/IngameScripts /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/Saves" diff --git a/stuff/scripts/system/backup/copy-to-git.sh b/stuff/scripts/system/backup/copy-to-git.sh index 3c66805..70720b6 100755 --- a/stuff/scripts/system/backup/copy-to-git.sh +++ b/stuff/scripts/system/backup/copy-to-git.sh @@ -11,7 +11,7 @@ fsync () { fi } -syncfile=".urlview .vimrc .Xresources .bashrc .zshrc .p10k.zsh .config/.profile .config/wezterm .config/dwm .config/tmux .config/awesome .config/rofi .config/lf .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/fastfetch stuff/manual-programs/suckless" +syncfile=".urlview .vimrc .Xresources .bashrc .zshrc .p10k.zsh .config/.profile .config/wezterm .config/dwm .config/tmux .config/awesome .config/rofi .config/cava .config/hypr .config/waybar .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/fastfetch stuff/manual-programs/suckless" syncfile="$syncfile stuff/scripts/system/stbar stuff/scripts/system/url-handler.sh stuff/scripts/system/backup/copy-to-git.sh stuff/scripts/system/backup/backup.sh" syncfile="$syncfile stuff/scripts/system/neoboot.sh stuff/scripts/system/math.sh stuff/scripts/system/bri.sh stuff/scripts/system/restart-pipe.sh stuff/scripts/system/set-pri-java.sh" diff --git a/stuff/scripts/system/url-handler.sh b/stuff/scripts/system/url-handler.sh index 5f626ce..30d7548 100755 --- a/stuff/scripts/system/url-handler.sh +++ b/stuff/scripts/system/url-handler.sh @@ -6,13 +6,17 @@ echo $url choices=" clipboard -firefox +zen " choice=$(echo "$choices" | sed /^$/d | rofi -dmenu "$prompt_message") if [ "$choice" == "clipboard" ]; then - printf "$url" | xclip -selection clipboard + if [ -z $WAYLAND_DISPLAY ]; then + printf "$url" | xclip -selection clipboard + else + printf "$url" | wl-copy + fi else $choice "$url" fi