commit 50539b56efb6d2fbf4c1ae28df86f1b39c1d9e88 Author: Vivian Elisabeth H Date: Sun Apr 27 03:50:20 2025 +0200 Initialize diff --git a/.config/MangoHud/MangoHud.conf b/.config/MangoHud/MangoHud.conf new file mode 100644 index 0000000..29cf5af --- /dev/null +++ b/.config/MangoHud/MangoHud.conf @@ -0,0 +1,49 @@ +################### File Generated by Goverlay ################### +legacy_layout=false + + +background_alpha=0.6 +round_corners=10 +background_alpha=0.6 +background_color=000000 + +font_size=18 +text_color=FFFFFF +position=top-right + +no_display + +table_columns=3 +gpu_text=GPU +gpu_stats +gpu_temp +gpu_color=2E9762 +cpu_text=CPU +cpu_stats + +cpu_temp +cpu_color=2E97CB +swap +ram +ram_color=C26693 +fps +frame_timing +frametime_color=00FF00 +fps_limit_method=late +toggle_fps_limit=Shift_L+F1 + +fps_limit=0 +#offset=0 + + + + + + + +output_folder=/home/vivian/.mangohud/logs +log_duration=30 +autostart_log=0 +log_interval=100 +toggle_logging=Shift_L+F2 + diff --git a/.config/fastfetch/config.jsonc b/.config/fastfetch/config.jsonc new file mode 100644 index 0000000..dc0f15d --- /dev/null +++ b/.config/fastfetch/config.jsonc @@ -0,0 +1,92 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + "break", + { + "type": "title", + "format": "{6} on {8}", + }, + { + "type": "custom", + "format": "┌───────────── {#1}✨ Software ✨{#} ─────────────┐", + }, + { + "type": "os", + "key": " \udb82\udcc7 OS ", + }, + { + "type": "kernel", + "key": " \ue712 Kernel ", + }, + { + "type": "packages", + "key": " \uf1b2 Packages", + "format": "{2} (pacman), {43} (flatpak)", + }, + { + "type": "terminal", + "key": " \uf489 Terminal", + }, + { + "type": "shell", + "key": " \uf4df Shell ", + }, + { + "type": "de", + "key": " \udb86\udc76 DE ", + }, + { + "type": "custom", + "format": "└──────────────────────────────────────────┘", + }, + { + "type": "custom", + "format": "┌───────────── {#1}✨ Hardware ✨{#} ─────────────┐", + }, + { + "type": "cpu", + "key": " \uf4bc CPU ", + "format": "{1}", + }, + { + "type": "gpu", + "key": " \udb81\ude1a GPU ", + "format": "{1} {2}", + }, + { + "type": "memory", + "key": " \udb80\udf5b Memory", + "format": "{2}", + }, + { + "type": "swap", + "key": " \udb81\udce1 Swap ", + "format": "{2}", + }, + { + "type": "uptime", + "key": " \uf017 Uptime", + }, + { + "type": "custom", + "format": "└──────────────────────────────────────────┘", + }, + ], + "display": { + "color": { + "keys": "light_magenta", + "separator": "light_magenta", + "title": "light_magenta", + }, + "separator": " \uf061 ", + }, + // "logo": { + // "source": "~/.config/fastfetch/logo.png", + // "width": 30, + // "padding": { + // "left": 2, + // "right": 2, + // "top": 1 + // } + // } +} diff --git a/.config/fastfetch/logo.png b/.config/fastfetch/logo.png new file mode 100644 index 0000000..50e11d2 Binary files /dev/null and b/.config/fastfetch/logo.png differ diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100644 index 0000000..ba7a1d3 --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,19 @@ +set fish_greeting + +if status is-interactive + # Commands to run in interactive sessions can go here +end + +oh-my-posh init fish --config $HOME/.config/ohmyposh/atomic.omp.json | source +pokeget $(shuf -i 1-721 -n 1) --hide-name + +alias ll="ls -lh" +alias la="ls -lha" +alias fulltree="tree -I \".git\" -a ." + +alias burn-orphanage="pacman -Qqtd | sudo pacman -Rsu -" + +alias cd..="cd .." +alias girlboss="sudo" + +alias vifish="vim $HOME/.config/fish/config.fish" diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 0000000..d418b7a --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:blue +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/.config/fish/functions/_read_confirm.fish b/.config/fish/functions/_read_confirm.fish new file mode 100644 index 0000000..f1b2f59 --- /dev/null +++ b/.config/fish/functions/_read_confirm.fish @@ -0,0 +1,36 @@ +function _read_confirm + # Parse arguments + argparse --name _read_confirm 'p/prompt=' 'y/defaultyes' -- $argv or return + # If prompt not set, do a default + if test -z "$_flag_p" + set _flag_p "Continue?" + end + + while true + # declare variable + set confirm '' + + if test "$_flag_y" + read -p 'set_color green; echo -n "$_flag_p [Y/n]: "; set_color normal' -l temp_conf + # write to $confirm + set confirm "$temp_conf" + else + read -p 'set_color green; echo -n "$_flag_p [y/N]: "; set_color normal' -l temp_conf + set confirm "$temp_conf" + end + + switch $confirm + case Y y + return 0 + case N n + return 1 + case '' + if test "$_flag_y" + return 0 + else + return 1 + end + end + end +end + diff --git a/.config/fish/functions/update_mirrorlist.fish b/.config/fish/functions/update_mirrorlist.fish new file mode 100644 index 0000000..a9c3239 --- /dev/null +++ b/.config/fish/functions/update_mirrorlist.fish @@ -0,0 +1,18 @@ +function update_mirrorlist + if not _read_confirm -p 'Are you sure you want to update your mirrorlist?' -d + return + end + + sudo -v + + echo "Backing up old mirrorlist" + sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist_(date +%Y-%m-%d_%H-%M-%S).bak + + echo "Generating new mirrorlist" + sudo reflector -c DE --protocol https --sort rate --latest 50 --download-timeout 5 --threads 5 --save /etc/pacman.d/mirrorlist + + echo "Updating mirrors" + sudo pacman -Sy + + echo Done +end diff --git a/.config/fish/functions/whoseturn.fish b/.config/fish/functions/whoseturn.fish new file mode 100644 index 0000000..c79c11e --- /dev/null +++ b/.config/fish/functions/whoseturn.fish @@ -0,0 +1,11 @@ +function whoseturn + set start_date (date -d "2025-01-01" +%s) + set current_date (date +%s) + set days_passed (math floor\((math $current_date - $start_date) / 86400\)) + + if test (math $days_passed % 2) -eq 0 + echo "Alex's turn" + else + echo "My turn" + end +end diff --git a/.config/hyfetch.json b/.config/hyfetch.json new file mode 100644 index 0000000..6280afc --- /dev/null +++ b/.config/hyfetch.json @@ -0,0 +1,16 @@ +{ + "preset": "transgender", + "mode": "rgb", + "light_dark": "dark", + "lightness": 0.65, + "color_align": { + "mode": "horizontal", + "custom_colors": [], + "fore_back": null + }, + "backend": "fastfetch", + "args": null, + "distro": null, + "pride_month_shown": [], + "pride_month_disable": false +} diff --git a/.config/hypr/WALLPAPER_CREDITS.txt b/.config/hypr/WALLPAPER_CREDITS.txt new file mode 100644 index 0000000..9baadb2 --- /dev/null +++ b/.config/hypr/WALLPAPER_CREDITS.txt @@ -0,0 +1 @@ +https://www.reddit.com/r/MoeMorphism/comments/umjhgw/oc_arch_linuxchan_by_myself/?show=original \ No newline at end of file diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..a24fd40 --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,5 @@ +listener { + timeout = 1500 + on-timeout = brightnessctl -s set 5 + on-resume = brightnessctl -r +} \ No newline at end of file diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..cbb1576 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,29 @@ + +# ####################################################################################### +# 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 + +# 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 + +source = ~/.config/hypr/land/variables.conf +source = ~/.config/hypr/land/autostart.conf +source = ~/.config/hypr/land/environment-variables.conf +source = ~/.config/hypr/land/input.conf +source = ~/.config/hypr/land/keybinds.conf +source = ~/.config/hypr/land/look-and-feel.conf +source = ~/.config/hypr/land/monitors.conf +source = ~/.config/hypr/land/windows.conf + diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..0176cdd --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,25 @@ +background { + monitor = + path = screenshot + color = rgba(25, 20, 20, 1.0) + blur_passes = 2 +} + +input-field { + monitor = + size = 20%, 5% + outline_thickness = 3 + inner_color = rgba(0, 0, 0, 0.0) # no fill + + outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg + check_color=rgba(00ff99ee) rgba(ff6633ee) 120deg + fail_color=rgba(ff6633ee) rgba(ff0066ee) 40deg + + font_color = rgb(143, 143, 143) + fade_on_empty = false + rounding = 15 + + position = 0, -20 + halign = center + valign = center +} \ No newline at end of file diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..0ba1713 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/.config/hypr/wallpaper.png +wallpaper = , ~/.config/hypr/wallpaper.png \ No newline at end of file diff --git a/.config/hypr/land/autostart.conf b/.config/hypr/land/autostart.conf new file mode 100644 index 0000000..47465db --- /dev/null +++ b/.config/hypr/land/autostart.conf @@ -0,0 +1,12 @@ +################# +### 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 + +exec-once = waybar & swaync & hypridle & hyprpaper \ No newline at end of file diff --git a/.config/hypr/land/environment-variables.conf b/.config/hypr/land/environment-variables.conf new file mode 100644 index 0000000..ae27a64 --- /dev/null +++ b/.config/hypr/land/environment-variables.conf @@ -0,0 +1,8 @@ +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 \ No newline at end of file diff --git a/.config/hypr/land/input.conf b/.config/hypr/land/input.conf new file mode 100644 index 0000000..04e48eb --- /dev/null +++ b/.config/hypr/land/input.conf @@ -0,0 +1,34 @@ +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = de + kb_variant = nodeadkeys + kb_model = pc105 + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + numlock_by_default = true + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = true +} + +# 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 +} diff --git a/.config/hypr/land/keybinds.conf b/.config/hypr/land/keybinds.conf new file mode 100644 index 0000000..daa204c --- /dev/null +++ b/.config/hypr/land/keybinds.conf @@ -0,0 +1,30 @@ +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +source = ~/.config/hypr/land/keybinds/multimedia.conf +source = ~/.config/hypr/land/keybinds/tools.conf +source = ~/.config/hypr/land/keybinds/windows.conf +source = ~/.config/hypr/land/keybinds/workspaces.conf + +# BASIC NAVIGATION + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, return, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, SPACE, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d \ No newline at end of file diff --git a/.config/hypr/land/keybinds/multimedia.conf b/.config/hypr/land/keybinds/multimedia.conf new file mode 100644 index 0000000..1ed29bb --- /dev/null +++ b/.config/hypr/land/keybinds/multimedia.conf @@ -0,0 +1,13 @@ +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous \ No newline at end of file diff --git a/.config/hypr/land/keybinds/tools.conf b/.config/hypr/land/keybinds/tools.conf new file mode 100644 index 0000000..52cbc50 --- /dev/null +++ b/.config/hypr/land/keybinds/tools.conf @@ -0,0 +1,7 @@ +# Hyprshot +bind = , PRINT, exec, hyprshot -m region -z -o $screenshotDir +bind = SHIFT, PRINT, exec, hyprshot -m window -z -o $screenshotDir +bind = CONTROL SHIFT, PRINT, exec, hyprshot -m output -z -o $screenshotDir + +# Hyprlock +bind = $mainMod SHIFT, l, exec, hyprlock \ No newline at end of file diff --git a/.config/hypr/land/keybinds/windows.conf b/.config/hypr/land/keybinds/windows.conf new file mode 100644 index 0000000..55f7642 --- /dev/null +++ b/.config/hypr/land/keybinds/windows.conf @@ -0,0 +1,4 @@ + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow \ No newline at end of file diff --git a/.config/hypr/land/keybinds/workspaces.conf b/.config/hypr/land/keybinds/workspaces.conf new file mode 100644 index 0000000..1bb2e30 --- /dev/null +++ b/.config/hypr/land/keybinds/workspaces.conf @@ -0,0 +1,54 @@ +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 +bind = $mainMod ALT, 1, workspace, 11 +bind = $mainMod ALT, 2, workspace, 12 +bind = $mainMod ALT, 3, workspace, 13 +bind = $mainMod ALT, 4, workspace, 14 +bind = $mainMod ALT, 5, workspace, 15 +bind = $mainMod ALT, 6, workspace, 16 +bind = $mainMod ALT, 7, workspace, 17 +bind = $mainMod ALT, 8, workspace, 18 +bind = $mainMod ALT, 9, workspace, 19 +bind = $mainMod ALT, 0, workspace, 20 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 +bind = $mainMod ALT SHIFT, 1, movetoworkspace, 11 +bind = $mainMod ALT SHIFT, 2, movetoworkspace, 12 +bind = $mainMod ALT SHIFT, 3, movetoworkspace, 13 +bind = $mainMod ALT SHIFT, 4, movetoworkspace, 14 +bind = $mainMod ALT SHIFT, 5, movetoworkspace, 15 +bind = $mainMod ALT SHIFT, 6, movetoworkspace, 16 +bind = $mainMod ALT SHIFT, 7, movetoworkspace, 17 +bind = $mainMod ALT SHIFT, 8, movetoworkspace, 18 +bind = $mainMod ALT SHIFT, 9, movetoworkspace, 19 +bind = $mainMod ALT SHIFT, 0, movetoworkspace, 20 + +# 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 + +bind = $mainMod alt, right, workspace, e+1 +bind = $mainMod alt, left, workspace, e-1 \ No newline at end of file diff --git a/.config/hypr/land/look-and-feel.conf b/.config/hypr/land/look-and-feel.conf new file mode 100644 index 0000000..a64463a --- /dev/null +++ b/.config/hypr/land/look-and-feel.conf @@ -0,0 +1,108 @@ +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 10 + + border_size = 3 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + # 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 = 10 + 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 = 5 + 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 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = 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 = 2 # 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. :( +} \ No newline at end of file diff --git a/.config/hypr/land/monitors.conf b/.config/hypr/land/monitors.conf new file mode 100644 index 0000000..cdda456 --- /dev/null +++ b/.config/hypr/land/monitors.conf @@ -0,0 +1,33 @@ +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1 + +# Desktop Config +monitor=DP-1,2560x1440@60,0x0,1 # Main screen +monitor=HDMI-A-1,1920x1080@60,2560x680,1 # Second screen +monitor=HDMI-A-2,prefetted,auto,auto,mirror,DP-1 # TV + +workspace=1, monitor:DP-1 +workspace=2, monitor:DP-1 +workspace=3, monitor:DP-1 +workspace=4, monitor:DP-1 +workspace=5, monitor:DP-1 +workspace=6, monitor:DP-1 +workspace=7, monitor:DP-1 +workspace=8, monitor:DP-1 +workspace=9, monitor:DP-1 +workspace=10, monitor:DP-1 + +workspace=11, monitor:HDMI-A-1 +workspace=12, monitor:HDMI-A-1 +workspace=13, monitor:HDMI-A-1 +workspace=14, monitor:HDMI-A-1 +workspace=15, monitor:HDMI-A-1 +workspace=16, monitor:HDMI-A-1 +workspace=17, monitor:HDMI-A-1 +workspace=18, monitor:HDMI-A-1 +workspace=19, monitor:HDMI-A-1 +workspace=20, monitor:HDMI-A-1 \ No newline at end of file diff --git a/.config/hypr/land/variables.conf b/.config/hypr/land/variables.conf new file mode 100644 index 0000000..42c48a2 --- /dev/null +++ b/.config/hypr/land/variables.conf @@ -0,0 +1,11 @@ +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$fileManager = nautilus +$menu = wofi --show drun -i +$screenshotDir = ~/Pictures/Screenshots \ No newline at end of file diff --git a/.config/hypr/land/windows.conf b/.config/hypr/land/windows.conf new file mode 100644 index 0000000..ba3b13a --- /dev/null +++ b/.config/hypr/land/windows.conf @@ -0,0 +1,27 @@ +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + + +# For screen sharing +windowrulev2 = opacity 0.0 override, class:^(xwaylandvideobridge)$ +windowrulev2 = noanim, class:^(xwaylandvideobridge)$ +windowrulev2 = noinitialfocus, class:^(xwaylandvideobridge)$ +windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$ +windowrulev2 = noblur, class:^(xwaylandvideobridge)$ +windowrulev2 = nofocus, class:^(xwaylandvideobridge)$ \ No newline at end of file diff --git a/.config/hypr/wallpaper.png b/.config/hypr/wallpaper.png new file mode 100644 index 0000000..871cf6c Binary files /dev/null and b/.config/hypr/wallpaper.png differ diff --git a/.config/kitty/chalk-theme.conf b/.config/kitty/chalk-theme.conf new file mode 100644 index 0000000..f0b7350 --- /dev/null +++ b/.config/kitty/chalk-theme.conf @@ -0,0 +1,21 @@ +background #29262f +foreground #d9e6f2 +cursor #d9e6f2 +selection_background #073642 +color0 #000000 +color8 #323232 +color1 #c37372 +color9 #dbaaaa +color2 #72c373 +color10 #aadbaa +color3 #c2c372 +color11 #dadbaa +color4 #7372c3 +color12 #aaaadb +color5 #c372c2 +color13 #dbaada +color6 #72c2c3 +color14 #aadadb +color7 #d9d9d9 +color15 #ffffff +selection_foreground #29262f diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..3077022 --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,10 @@ +include chalk-theme.conf + +font_family SauceCodePro NFM +bold_font SauceCodePro NFM, Bold +italic_font SauceCodePro NFM, Regular Italic +bold_italic_font SauceCodePro NFM, Bold Italic + +font_size 16 + +# background_opacity 0.9 diff --git a/.config/nvim/LICENSE b/.config/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/.config/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.config/nvim/README.md b/.config/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/.config/nvim/README.md @@ -0,0 +1,4 @@ +# 💤 LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..2514f9e --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,2 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..66b6528 --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,43 @@ +{ + "LazyVim": { "branch": "main", "commit": "3f034d0a7f58031123300309f2efd3bb0356ee21" }, + "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, + "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, + "blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, + "conform.nvim": { "branch": "master", "commit": "6632e7d788a85bf8405ea0c812d343fc308b7b8c" }, + "copilot.lua": { "branch": "master", "commit": "b3988bb51e87a057fee79192c3cc0932a0360bf6" }, + "crates.nvim": { "branch": "main", "commit": "73d2c590c74a0c582144987a4decb4a642755859" }, + "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, + "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, + "friendly-snippets": { "branch": "main", "commit": "31f2a2657b6261724313281fe0d8ba6f43f4a4fa" }, + "gitsigns.nvim": { "branch": "main", "commit": "02eafb1273afec94447f66d1a43fc5e477c2ab8a" }, + "grug-far.nvim": { "branch": "main", "commit": "1c9325f6ab18fc8ac4d4c57e765aa845af148277" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lualine.nvim": { "branch": "master", "commit": "86fe39534b7da729a1ac56c0466e76f2c663dc42" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, + "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, + "mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" }, + "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, + "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" }, + "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, + "nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" }, + "nvim-lint": { "branch": "master", "commit": "3615c26c4922ae5f7366f0c1943a0e7cece04325" }, + "nvim-lspconfig": { "branch": "master", "commit": "b70b900fba6e3255a5a8113c76f213102564cb0d" }, + "nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "205e3369bc83d8cb83f7409c36120e24611f8c5c" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "rustaceanvim": { "branch": "master", "commit": "3f327d15a3c1ed48b1e1087e16873a28a39768c2" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, + "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } +} diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json new file mode 100644 index 0000000..6908078 --- /dev/null +++ b/.config/nvim/lazyvim.json @@ -0,0 +1,14 @@ +{ + "extras": [ + "lazyvim.plugins.extras.editor.telescope", + "lazyvim.plugins.extras.formatting.prettier", + "lazyvim.plugins.extras.lang.php", + "lazyvim.plugins.extras.lang.rust", + "lazyvim.plugins.extras.ui.alpha" + ], + "install_version": 8, + "news": { + "NEWS.md": "10960" + }, + "version": 8 +} \ No newline at end of file diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/.config/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..8f2416b --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,6 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here + +-- vim.keymap.set("v", "", vim.cmd("ToggleTerm")) +vim.keymap.set({ "n", "t" }, "", "ToggleTerm", { desc = "ToggleTerm" }) diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..3ea1454 --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,3 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here diff --git a/.config/nvim/lua/plugins/example.lua b/.config/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/.config/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "😄" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/toggleterm.lua b/.config/nvim/lua/plugins/toggleterm.lua new file mode 100644 index 0000000..a6b34ee --- /dev/null +++ b/.config/nvim/lua/plugins/toggleterm.lua @@ -0,0 +1,13 @@ +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + { + "akinsho/toggleterm.nvim", + version = "*", + config = true, + }, +} diff --git a/.config/nvim/stylua.toml b/.config/nvim/stylua.toml new file mode 100644 index 0000000..7eff7b5 --- /dev/null +++ b/.config/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Tabs" +indent_width = 4 +column_width = 120 diff --git a/.config/ohmyposh/M365Princess.omp.json b/.config/ohmyposh/M365Princess.omp.json new file mode 100644 index 0000000..6e66265 --- /dev/null +++ b/.config/ohmyposh/M365Princess.omp.json @@ -0,0 +1,105 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "palette": { + "white": "#FFFFFF", + "tan": "#CC3802", + "teal": "#047E84", + "plum": "#9A348E", + "blush": "#DA627D", + "salmon": "#FCA17D", + "sky": "#86BBD8", + "teal_blue": "#33658A" + }, + "blocks": [ + { + "alignment": "left", + "segments": [ + { + "type": "text", + "style": "diamond", + "leading_diamond": "\ue0b6", + "foreground": "p:white", + "background": "p:tan", + "template": "{{ if .Env.PNPPSHOST }} \uf8c5 {{ .Env.PNPPSHOST }} {{ end }}" + }, + { + "type": "text", + "style": "powerline", + "foreground": "p:white", + "background": "p:teal", + "powerline_symbol": "\ue0b0", + "template": "{{ if .Env.PNPPSSITE }} \uf2dd {{ .Env.PNPPSSITE }}{{ end }}" + }, + { + "type": "text", + "style": "diamond", + "trailing_diamond": "\ue0b4", + "foreground": "p:white", + "background": "p:teal", + "template": "{{ if .Env.PNPPSSITE }}\u00A0{{ end }}" + } + ], + "type": "rprompt" + }, + { + "alignment": "left", + "segments": [ + { + "background": "p:plum", + "foreground": "p:white", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "{{ .UserName }} ", + "type": "session" + }, + { + "background": "p:blush", + "foreground": "p:white", + "powerline_symbol": "\ue0b0", + "properties": { + "style": "folder" + }, + "style": "powerline", + "template": " {{ .Path }} ", + "type": "path" + }, + { + "background": "p:salmon", + "foreground": "p:white", + "powerline_symbol": "\ue0b0", + "properties": { + "branch_icon": "", + "fetch_stash_count": true, + "fetch_status": false, + "fetch_upstream_icon": true + }, + "style": "powerline", + "template": " \u279c ({{ .UpstreamIcon }}{{ .HEAD }}{{ if gt .StashCount 0 }} \ueb4b {{ .StashCount }}{{ end }}) ", + "type": "git" + }, + { + "background": "p:sky", + "foreground": "p:white", + "powerline_symbol": "\ue0b0", + "style": "powerline", + "template": " \ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} ", + "type": "node" + }, + { + "background": "p:teal_blue", + "foreground": "p:white", + "properties": { + "time_format": "15:04" + }, + "style": "diamond", + "template": " \u2665 {{ .CurrentDate | date .Format }} ", + "trailing_diamond": "\ue0b0", + "type": "time" + } + ], + "type": "prompt" + } + ], + "final_space": true, + "version": 3 +} diff --git a/.config/ohmyposh/amro.omp.json b/.config/ohmyposh/amro.omp.json new file mode 100644 index 0000000..d48be2c --- /dev/null +++ b/.config/ohmyposh/amro.omp.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "blocks": [ + { + "type": "prompt", + "alignment": "left", + "segments": [ + { + "template": "\ueb99 {{ .UserName }} on", + "foreground": "#45F1C2", + "type": "session", + "style": "plain" + }, + { + "properties": { + "folder_separator_icon": "/", + "style": "full" + }, + "template": " \uf07b {{ .Path }} ", + "foreground": "#0CA0D8", + "type": "path", + "style": "plain" + }, + { + "properties": { + "fetch_stash_count": true, + "fetch_upstream_icon": true + }, + "template": "{{ .UpstreamIcon }}{{ .HEAD }}{{ if gt .StashCount 0 }} \ueb4b {{ .StashCount }}{{ end }} ", + "foreground": "#14A5AE", + "powerline_symbol": "\ue0b0", + "type": "git", + "style": "plain" + } + ] + }, + { + "type": "prompt", + "alignment": "left", + "segments": [ + { + "template": "\ue3bf ", + "foreground": "#cd5e42", + "type": "root", + "style": "plain" + }, + { + "template": "λ ", + "foreground": "#CD4277", + "type": "text", + "style": "plain" + } + ], + "newline": true + } + ], + "version": 3 +} diff --git a/.config/ohmyposh/atomic.omp.json b/.config/ohmyposh/atomic.omp.json new file mode 100644 index 0000000..118e6c2 --- /dev/null +++ b/.config/ohmyposh/atomic.omp.json @@ -0,0 +1,286 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "blocks": [ + { + "alignment": "left", + "segments": [ + { + "background": "#0077c2", + "foreground": "#ffffff", + "leading_diamond": "\u256d\u2500\ue0b6", + "style": "diamond", + "template": "\uf120 {{ .Name }} ", + "type": "shell" + }, + { + "background": "#ef5350", + "foreground": "#FFFB38", + "style": "diamond", + "template": "\ue0b0 \uf292 ", + "type": "root" + }, + { + "background": "#FF9248", + "foreground": "#2d3436", + "powerline_symbol": "\ue0b0", + "properties": { + "folder_icon": " \uf07b ", + "home_icon": "\ue617", + "style": "folder" + }, + "style": "powerline", + "template": " \uf07b\uea9c {{ .Path }} ", + "type": "path" + }, + { + "background": "#FFFB38", + "background_templates": [ + "{{ if or (.Working.Changed) (.Staging.Changed) }}#ffeb95{{ end }}", + "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#c5e478{{ end }}", + "{{ if gt .Ahead 0 }}#C792EA{{ end }}", + "{{ if gt .Behind 0 }}#C792EA{{ end }}" + ], + "foreground": "#011627", + "powerline_symbol": "\ue0b0", + "properties": { + "branch_icon": "\ue725 ", + "fetch_status": true, + "fetch_upstream_icon": true + }, + "style": "powerline", + "template": " {{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }}<#ef5350> \uf046 {{ .Staging.String }}{{ end }} ", + "type": "git" + }, + { + "background": "#83769c", + "foreground": "#ffffff", + "properties": { + "style": "roundrock", + "threshold": 0 + }, + "style": "diamond", + "template": " \ueba2 {{ .FormattedMs }}\u2800", + "trailing_diamond": "\ue0b4", + "type": "executiontime" + } + ], + "type": "prompt" + }, + { + "alignment": "right", + "segments": [ + { + "background": "#303030", + "foreground": "#3C873A", + "leading_diamond": "\ue0b6", + "properties": { + "fetch_package_manager": true, + "npm_icon": " <#cc3a3a>\ue5fa ", + "yarn_icon": " <#348cba>\ue6a7" + }, + "style": "diamond", + "template": "\ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}", + "trailing_diamond": "\ue0b4 ", + "type": "node" + }, + { + "background": "#306998", + "foreground": "#FFE873", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "python" + }, + { + "background": "#0e8ac8", + "foreground": "#ffffff", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue738 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "java" + }, + { + "background": "#0e0e0e", + "foreground": "#0d6da8", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue77f {{ if .Unsupported }}\uf071{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "dotnet" + }, + { + "background": "#ffffff", + "foreground": "#06aad5", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue626 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "go" + }, + { + "background": "#f3f0ec", + "foreground": "#925837", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue7a8 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "rust" + }, + { + "background": "#e1e8e9", + "foreground": "#055b9c", + "leading_diamond": " \ue0b6", + "style": "diamond", + "template": "\ue798 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "dart" + }, + { + "background": "#ffffff", + "foreground": "#ce092f", + "leading_diamond": " \ue0b6", + "style": "diamond", + "template": "\ue753 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "angular" + }, + { + "background": "#ffffff", + "foreground": "#de1f84", + "leading_diamond": " \ue0b6", + "style": "diamond", + "template": "\u03b1 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "aurelia" + }, + { + "background": "#1e293b", + "foreground": "#ffffff", + "leading_diamond": " \ue0b6", + "style": "diamond", + "template": "{{ if .Error }}{{ .Error }}{{ else }}Nx {{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "nx" + }, + { + "background": "#945bb3", + "foreground": "#359a25", + "leading_diamond": " \ue0b6", + "style": "diamond", + "template": "<#ca3c34>\ue624 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "julia" + }, + { + "background": "#ffffff", + "foreground": "#9c1006", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue791 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "ruby" + }, + { + "background": "#ffffff", + "foreground": "#5398c2", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\uf104<#f5bf45>\uf0e7\uf105 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}", + "trailing_diamond": "\ue0b4 ", + "type": "azfunc" + }, + { + "background": "#565656", + "foreground": "#faa029", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\ue7ad {{.Profile}}{{if .Region}}@{{.Region}}{{end}}", + "trailing_diamond": "\ue0b4 ", + "type": "aws" + }, + { + "background": "#316ce4", + "foreground": "#ffffff", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "\uf308 {{.Context}}{{if .Namespace}} :: {{.Namespace}}{{end}}", + "trailing_diamond": "\ue0b4", + "type": "kubectl" + }, + { + "background": "#b2bec3", + "foreground": "#222222", + "leading_diamond": "\ue0b6", + "trailing_diamond": "\ue0b2", + "properties": { + "linux": "\ue712", + "macos": "\ue711", + "windows": "\ue70f" + }, + "style": "diamond", + "template": " {{ if .WSL }}WSL at {{ end }}{{.Icon}} ", + "type": "os" + }, + { + "background": "#f36943", + "background_templates": [ + "{{if eq \"Charging\" .State.String}}#b8e994{{end}}", + "{{if eq \"Discharging\" .State.String}}#fff34e{{end}}", + "{{if eq \"Full\" .State.String}}#33DD2D{{end}}" + ], + "foreground": "#262626", + "invert_powerline": true, + "powerline_symbol": "\ue0b2", + "properties": { + "charged_icon": "\uf240 ", + "charging_icon": "\uf1e6 ", + "discharging_icon": "\ue234 " + }, + "style": "powerline", + "template": " {{ if not .Error }}{{ .Icon }}{{ .Percentage }}{{ end }}{{ .Error }}\uf295 ", + "type": "battery" + }, + { + "background": "#40c4ff", + "foreground": "#ffffff", + "invert_powerline": true, + "leading_diamond": "\ue0b2", + "properties": { + "time_format": "_2,15:04" + }, + "style": "diamond", + "template": " \uf073 {{ .CurrentDate | date .Format }} ", + "trailing_diamond": "\ue0b4", + "type": "time" + } + ], + "type": "prompt" + }, + { + "alignment": "left", + "newline": true, + "segments": [ + { + "foreground": "#21c7c7", + "style": "plain", + "template": "\u2570\u2500", + "type": "text" + }, + { + "foreground": "#e0f8ff", + "foreground_templates": ["{{ if gt .Code 0 }}#ef5350{{ end }}"], + "properties": { + "always_enabled": true + }, + "style": "plain", + "template": "\ue285\ueab6 ", + "type": "status" + } + ], + "type": "prompt" + } + ], + "version": 3 +} diff --git a/.config/ohmyposh/default.json b/.config/ohmyposh/default.json new file mode 100755 index 0000000..53e7362 --- /dev/null +++ b/.config/ohmyposh/default.json @@ -0,0 +1,179 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "version": 2, + "final_space": true, + "console_title_template": "{{ .Shell }} in {{ .Folder }}", + "blocks": [ + { + "type": "prompt", + "alignment": "left", + "segments": [ + { + "type": "session", + "style": "diamond", + "foreground": "p:black", + "background": "p:yellow", + "leading_diamond": "\ue0b6", + "trailing_diamond": "\ue0b0", + "template": " {{ if .SSHSession }}\ueba9 {{ end }}{{ .UserName }} " + }, + { + "type": "path", + "style": "powerline", + "powerline_symbol": "\ue0b0", + "foreground": "p:white", + "background": "p:orange", + "template": " \uea83 {{ path .Path .Location }} ", + "properties": { + "style": "folder" + } + }, + { + "type": "git", + "style": "powerline", + "powerline_symbol": "\ue0b0", + "foreground": "p:black", + "foreground_templates": [ + "{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}", + "{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}", + "{{ if gt .Ahead 0 }}p:white{{ end }}" + ], + "background": "p:green", + "background_templates": [ + "{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}", + "{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}", + "{{ if gt .Ahead 0 }}#49416D{{ end }}", + "{{ if gt .Behind 0 }}#7A306C{{ end }}" + ], + "template": " {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }} ", + "properties": { + "branch_max_length": 25, + "fetch_status": true, + "fetch_upstream_icon": true + } + }, + { + "type": "root", + "style": "powerline", + "powerline_symbol": "\ue0b0", + "foreground": "p:white", + "background": "p:yellow", + "template": " \uf0e7 " + }, + { + "type": "status", + "style": "diamond", + "foreground": "p:white", + "background": "p:blue", + "background_templates": ["{{ if gt .Code 0 }}p:red{{ end }}"], + "leading_diamond": "\ue0b0", + "trailing_diamond": "\ue0b4", + "template": " {{ if gt .Code 0 }}\uf00d{{ else }}\uf00c{{ end }} ", + "properties": { + "always_enabled": true + } + } + ] + }, + { + "type": "rprompt", + "segments": [ + { + "type": "node", + "style": "plain", + "foreground": "p:green", + "background": "transparent", + "template": "\ue718 ", + "properties": { + "display_mode": "files", + "fetch_package_manager": false, + "home_enabled": false + } + }, + { + "type": "go", + "style": "plain", + "foreground": "p:blue", + "background": "transparent", + "template": "\ue626 ", + "properties": { + "fetch_version": false + } + }, + { + "type": "python", + "style": "plain", + "foreground": "p:yellow", + "background": "transparent", + "template": "\ue235 ", + "properties": { + "display_mode": "files", + "fetch_version": false, + "fetch_virtual_env": false + } + }, + { + "type": "shell", + "style": "plain", + "foreground": "p:white", + "background": "transparent", + "template": "in {{ .Name }} " + }, + { + "type": "time", + "style": "plain", + "foreground": "p:white", + "background": "transparent", + "template": "at {{ .CurrentDate | date \"15:04:05\" }}" + } + ] + } + ], + "tooltips": [ + { + "type": "aws", + "tips": ["aws"], + "style": "diamond", + "foreground": "p:white", + "background": "p:orange", + "leading_diamond": "\ue0b0", + "trailing_diamond": "\ue0b4", + "template": " \ue7ad {{ .Profile }}{{ if .Region }}@{{ .Region }}{{ end }} ", + "properties": { + "display_default": true + } + }, + { + "type": "az", + "tips": ["az"], + "style": "diamond", + "foreground": "p:white", + "background": "p:blue", + "leading_diamond": "\ue0b0", + "trailing_diamond": "\ue0b4", + "template": " \uebd8 {{ .Name }} ", + "properties": { + "display_default": true + } + } + ], + "transient_prompt": { + "foreground": "p:black", + "background": "transparent", + "template": "\ue0b6<,p:yellow> {{ .Folder }} \ue0b0 " + }, + "secondary_prompt": { + "foreground": "p:black", + "background": "transparent", + "template": "\ue0b6<,p:yellow> > \ue0b0 " + }, + "palette": { + "black": "#262B44", + "blue": "#4B95E9", + "green": "#59C9A5", + "orange": "#F07623", + "red": "#D81E5B", + "white": "#E0DEF4", + "yellow": "#F3AE35" + } +} diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..09d2338 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,54 @@ +{ + "position": "top", + "modules-left": ["hyprland/workspaces"], + "modules-center": ["hyprland/window"], + "modules-right": ["tray", "network", "pulseaudio", "battery", "clock", "custom/swaync", "custom/logout"], + "clock": { + "format": "{:%a %d %H:%M}", + "tooltip-format": "{:%Y %B}\n{calendar}", + "on-click": "gnome-calendar" + }, + "custom/swaync": { + "format": "\uf0f3", + "on-click": "swaync-client -t" + }, + "custom/logout": { + "format": "\uf011", + "on-click": "wlogout -b 4" + }, + "battery": { + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-warning": "{icon} {capacity}%", + "format-critical": "{icon} {capacity}%", + "format-charging": "{capacity}%", + "format-plugged": "{capacity}%", + "format-alt": "{icon} {time}", + "format-full": "{capacity}%", + "format-icons": ["", "", "", "", ""], + "tooltip-format": "{time}" + }, + "network": { + "format-wifi": "{essid}", + "format-ethernet": "\uf796 {ifname}", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected", + "tooltip-format-wifi": "Signal Strenght: {signalStrength}%", + "on-click": "nm-connection-editor" + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "\uf6a9 Mute", + "format-icons": { + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "tray": { + "show-passive-items": true, + "spacing": 12 + } +} diff --git a/.config/waybar/mocha.css b/.config/waybar/mocha.css new file mode 100644 index 0000000..f9ad83c --- /dev/null +++ b/.config/waybar/mocha.css @@ -0,0 +1,29 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; + +/* Custom Colors */ +@define-color gray #f9f9f9; diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..37025e4 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,138 @@ +@import "mocha.css"; + +* { + font-family: "MesloLGS Nerd Font Mono Bold"; + font-size: 16px; + min-height: 0; + font-weight: bold; +} + +window#waybar { + background: transparent; + background-color: @crust; + color: @overlay0; + transition-property: background-color; + transition-duration: 0.1s; + /* border-bottom: 1px solid @overlay1; */ +} + +#window { + margin: 8px; + padding-left: 8; + padding-right: 8; +} + +button { + box-shadow: inset 0 -3px transparent; + border: none; + border-radius: 0; +} + +button:hover { + background: inherit; + color: @mauve; + border-top: 2px solid @mauve; +} + +#workspaces button { + padding: 0 4px; +} + +#workspaces button.focused { + background-color: rgba(0, 0, 0, 0.3); + color: @rosewater; + border-top: 2px solid @rosewater; +} + +#workspaces button.active { + background-color: rgba(0, 0, 0, 0.3); + color: @mauve; + border-top: 2px solid @mauve; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#pulseaudio, +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#wireplumber, +#tray, +#network, +#mode, +#scratchpad, +#custom-swaync { + margin-top: 2px; + margin-bottom: 2px; + margin-left: 4px; + margin-right: 4px; + padding-left: 4px; + padding-right: 4px; +} + +#clock { + color: @maroon; + border-bottom: 2px solid @maroon; +} + +#clock.date { + color: @mauve; + border-bottom: 2px solid @mauve; +} + +#pulseaudio { + color: @blue; + border-bottom: 2px solid @blue; +} + +#network { + color: @yellow; + border-bottom: 2px solid @yellow; +} + +#idle_inhibitor { + margin-right: 12px; + color: #7cb342; +} + +#idle_inhibitor.activated { + color: @red; +} + +#battery { + color: @green; + border-bottom: 2px solid @green; +} + +#tray menu { + background-color: @crust; + color: @text; +} + +#custom-swaync, +#custom-logout { + margin-right: 16px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#custom-vpn { + color: @lavender; + border-radius: 15px; + padding-left: 6px; + padding-right: 6px; +} diff --git a/.config/wlogout/layout b/.config/wlogout/layout new file mode 100644 index 0000000..b3e50bc --- /dev/null +++ b/.config/wlogout/layout @@ -0,0 +1,24 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "", + "keybind" : "l" +} +{ + "label" : "logout", + "action" : "loginctl terminate-user $USER", + "text" : "", + "keybind" : "e" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "", + "keybind" : "s" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "", + "keybind" : "r" +} diff --git a/.config/wlogout/style.css b/.config/wlogout/style.css new file mode 100644 index 0000000..4a22556 --- /dev/null +++ b/.config/wlogout/style.css @@ -0,0 +1,63 @@ +* { + background-image: none; + box-shadow: none; +} + +window { + background-color: rgba(12, 12, 12, 0.9); +} + +button { + border-radius: 0; + /* border-color: black; + border-width: 1px; + border-style: solid; */ + border: none; + text-decoration-color: #ffffff; + color: #ffffff; + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; +} + +/* button:focus, */ +button:active, +button:hover { + /* background-color: #3700b3; */ + outline-style: none; + background-size: 30%; +} + +#lock { + background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); +} + +#logout { + background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); +} + +#suspend { + background-image: image( + url("/usr/share/wlogout/icons/suspend.png"), + url("/usr/local/share/wlogout/icons/suspend.png") + ); +} + +#hibernate { + background-image: image( + url("/usr/share/wlogout/icons/hibernate.png"), + url("/usr/local/share/wlogout/icons/hibernate.png") + ); +} + +#shutdown { + background-image: image( + url("/usr/share/wlogout/icons/shutdown.png"), + url("/usr/local/share/wlogout/icons/shutdown.png") + ); +} + +#reboot { + background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); +} diff --git a/.config/wofi/style.css b/.config/wofi/style.css new file mode 100644 index 0000000..8482f32 --- /dev/null +++ b/.config/wofi/style.css @@ -0,0 +1,52 @@ +/* The name of the window itself */ +#window { + background-color: rgba(24, 24, 24, 0.6); + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); + border-radius: 1rem; + font-size: 1.2rem; + /* The name of the box that contains everything */ +} +#window #outer-box { + /* The name of the search bar */ + /* The name of the scrolled window containing all of the entries */ +} +#window #outer-box #input { + background-color: rgba(24, 24, 24, 0.6); + color: #f2f2f2; + border: none; + border-bottom: 1px solid rgba(24, 24, 24, 0.2); + padding: 0.8rem 1rem; + font-size: 1.5rem; + border-radius: 1rem 1rem 0 0; +} +#window #outer-box #input:focus, +#window #outer-box #input:focus-visible, +#window #outer-box #input:active { + border: none; + outline: 2px solid transparent; + outline-offset: 2px; +} +#window #outer-box #scroll { + /* The name of the box containing all of the entries */ +} +#window #outer-box #scroll #inner-box { + /* The name of all entries */ + /* The name of all boxes shown when expanding */ + /* entries with multiple actions */ +} +#window #outer-box #scroll #inner-box #entry { + color: #fff; + background-color: rgba(24, 24, 24, 0.1); + padding: 0.6rem 1rem; + /* The name of all images in entries displayed in image mode */ + /* The name of all the text in entries */ +} +#window #outer-box #scroll #inner-box #entry #img { + width: 1rem; + margin-right: 0.5rem; +} +#window #outer-box #scroll #inner-box #entry:selected { + color: #fff; + background-color: rgba(255, 255, 255, 0.1); + outline: none; +}