From 3eb06362a98b7db66fc9ad4e1d1ae00fea1caf53 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sat, 12 Jul 2025 11:31:54 +0200 Subject: [PATCH] added files --- .gitignore | 2 +- alacritty/alacritty.toml | 106 ++++++++ alacritty/catppuccin-frappe.toml | 75 ++++++ alacritty/catppuccin-latte.toml | 75 ++++++ alacritty/catppuccin-macchiato.toml | 75 ++++++ alacritty/catppuccin-mocha.toml | 75 ++++++ alacritty/colors.toml | 75 ++++++ alacritty/fonts.toml | 38 +++ dunst/dunst-catppuccin | 1 + dunst/dunstrc | 1 + hypr/catppuccin-hyprland | 1 + hypr/catppuccin-hyprlock | 1 + hypr/gamemode.sh | 14 + hypr/hyprland.conf | 332 +++++++++++++++++++++++ hypr/hyprlock.conf | 100 +++++++ hypr/hyprpaper.conf | 2 + hypr/mocha.conf | 78 ++++++ hypr/scripts/powermenu.sh | 18 ++ nvim/init.lua | 380 +++++++++++++++++++++++++++ nvim/pack/nvim/start/mini.nvim | 1 + nvim/pack/nvim/start/nvim-lspconfig | 1 + nvim/pack/vendor/start/setup_nvim.sh | 6 + waybar/catppuccin-waybar | 1 + waybar/config.jsonc | 77 ++++++ waybar/scripts/power.sh | 2 + waybar/scripts/tlp-profile.sh | 24 ++ waybar/style.css | 81 ++++++ 27 files changed, 1641 insertions(+), 1 deletion(-) create mode 100644 alacritty/alacritty.toml create mode 100644 alacritty/catppuccin-frappe.toml create mode 100644 alacritty/catppuccin-latte.toml create mode 100644 alacritty/catppuccin-macchiato.toml create mode 100644 alacritty/catppuccin-mocha.toml create mode 100644 alacritty/colors.toml create mode 100644 alacritty/fonts.toml create mode 160000 dunst/dunst-catppuccin create mode 120000 dunst/dunstrc create mode 160000 hypr/catppuccin-hyprland create mode 160000 hypr/catppuccin-hyprlock create mode 100755 hypr/gamemode.sh create mode 100644 hypr/hyprland.conf create mode 100644 hypr/hyprlock.conf create mode 100644 hypr/hyprpaper.conf create mode 100644 hypr/mocha.conf create mode 100755 hypr/scripts/powermenu.sh create mode 100644 nvim/init.lua create mode 160000 nvim/pack/nvim/start/mini.nvim create mode 160000 nvim/pack/nvim/start/nvim-lspconfig create mode 100644 nvim/pack/vendor/start/setup_nvim.sh create mode 160000 waybar/catppuccin-waybar create mode 100644 waybar/config.jsonc create mode 100755 waybar/scripts/power.sh create mode 100755 waybar/scripts/tlp-profile.sh create mode 100644 waybar/style.css diff --git a/.gitignore b/.gitignore index e52b9c3..d2ff080 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # Ignore everything -* +/* !.gitignore # Configurations diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml new file mode 100644 index 0000000..51479bb --- /dev/null +++ b/alacritty/alacritty.toml @@ -0,0 +1,106 @@ + +## ENVIRONMENT ---------------------------------------------------- + +## All key-value pairs in the [env] section will be added as environment variables for any process spawned +## by Alacritty, including its shell. Some entries may override variables set by alacritty itself. +[env] +TERM = "xterm-256color" +WINIT_X11_SCALE_FACTOR = "1.0" + +## WINDOW --------------------------------------------------------- +[window] +position = "None" +dynamic_padding = true +decorations = "None" +opacity = 0.9 +blur = false +startup_mode = "Windowed" +dynamic_title = true +class = { instance = "Alacritty", general = "Alacritty" } +decorations_theme_variant = "None" + +## Number of lines/columns (not pixels) in the terminal. +[window.dimensions] +columns = 82 +lines = 24 + +## Blank space added around the window in pixels. +[window.padding] +x = 30 +y = 30 + +## SCROLLING ------------------------------------------------------ +[scrolling] +history = 10000 +multiplier = 3 + +## BELL ----------------------------------------------------------- +[bell] +animation = "Linear" +duration = 20 +command = { program = "paplay", args = ["/usr/share/sounds/freedesktop/stereo/dialog-error.oga"] } + +## SELECTION ------------------------------------------------------ +[selection] +save_to_clipboard = true + +## CURSOR --------------------------------------------------------- +[cursor] +vi_mode_style = "None" +blink_interval = 750 +blink_timeout = 5 +unfocused_hollow = false +thickness = 0.15 + +[cursor.style] +shape = "Block" +blinking = "On" + +## MOUSE ---------------------------------------------------------- +[mouse] +hide_when_typing = false + +## HINTS ---------------------------------------------------------- +[[hints.enabled]] +command = "xdg-open" +hyperlinks = true +post_processing = true +persist = false +mouse.enabled = true +binding = { key = "U", mods = "Control|Shift" } +regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩‘]+" + +## DEBUG ---------------------------------------------------------- +[debug] +render_timer = false +persistent_logging = false +log_level = "Warn" +renderer = "None" +print_events = false +highlight_damage = false +prefer_egl = false + +[general] + +## You can set shell.program to the path of your favorite shell, e.g. /bin/zsh. +## Entries in shell.args are passed as arguments to the shell. +#shell = { program = "/bin/zsh", args = ["--login"] } + +## Directory the shell is started in. When this is unset, or "None", +## the working directory of the parent process will be used. +#working_directory = "None" + +## Live config reload +live_config_reload = true + +## Offer IPC using alacritty msg +ipc_socket = true +## Copyright (C) 2020-2024 Aditya Shakya +## +## Configuration for Alacritty, the GPU enhanced terminal emulator. +## It's a very basic and simple config file, for full configuration, Run `man 5 alacritty` + +## GENERAL -------------------------------------------------------- + +## Import additional configuration files. +import = ["~/.config/alacritty/colors.toml", "~/.config/alacritty/fonts.toml"] diff --git a/alacritty/catppuccin-frappe.toml b/alacritty/catppuccin-frappe.toml new file mode 100644 index 0000000..6ee39de --- /dev/null +++ b/alacritty/catppuccin-frappe.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = "#303446" +foreground = "#c6d0f5" +dim_foreground = "#838ba7" +bright_foreground = "#c6d0f5" + +[colors.cursor] +text = "#303446" +cursor = "#f2d5cf" + +[colors.vi_mode_cursor] +text = "#303446" +cursor = "#babbf1" + +[colors.search.matches] +foreground = "#303446" +background = "#a5adce" + +[colors.search.focused_match] +foreground = "#303446" +background = "#a6d189" + +[colors.footer_bar] +foreground = "#303446" +background = "#a5adce" + +[colors.hints.start] +foreground = "#303446" +background = "#e5c890" + +[colors.hints.end] +foreground = "#303446" +background = "#a5adce" + +[colors.selection] +text = "#303446" +background = "#f2d5cf" + +[colors.normal] +black = "#51576d" +red = "#e78284" +green = "#a6d189" +yellow = "#e5c890" +blue = "#8caaee" +magenta = "#f4b8e4" +cyan = "#81c8be" +white = "#b5bfe2" + +[colors.bright] +black = "#626880" +red = "#e78284" +green = "#a6d189" +yellow = "#e5c890" +blue = "#8caaee" +magenta = "#f4b8e4" +cyan = "#81c8be" +white = "#a5adce" + +[colors.dim] +black = "#51576d" +red = "#e78284" +green = "#a6d189" +yellow = "#e5c890" +blue = "#8caaee" +magenta = "#f4b8e4" +cyan = "#81c8be" +white = "#b5bfe2" + +[[colors.indexed_colors]] +index = 16 +color = "#ef9f76" + +[[colors.indexed_colors]] +index = 17 +color = "#f2d5cf" \ No newline at end of file diff --git a/alacritty/catppuccin-latte.toml b/alacritty/catppuccin-latte.toml new file mode 100644 index 0000000..757bce8 --- /dev/null +++ b/alacritty/catppuccin-latte.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = "#eff1f5" +foreground = "#4c4f69" +dim_foreground = "#8c8fa1" +bright_foreground = "#4c4f69" + +[colors.cursor] +text = "#eff1f5" +cursor = "#dc8a78" + +[colors.vi_mode_cursor] +text = "#eff1f5" +cursor = "#7287fd" + +[colors.search.matches] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.search.focused_match] +foreground = "#eff1f5" +background = "#40a02b" + +[colors.footer_bar] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.hints.start] +foreground = "#eff1f5" +background = "#df8e1d" + +[colors.hints.end] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.selection] +text = "#eff1f5" +background = "#dc8a78" + +[colors.normal] +black = "#bcc0cc" +red = "#d20f39" +green = "#40a02b" +yellow = "#df8e1d" +blue = "#1e66f5" +magenta = "#ea76cb" +cyan = "#179299" +white = "#5c5f77" + +[colors.bright] +black = "#acb0be" +red = "#d20f39" +green = "#40a02b" +yellow = "#df8e1d" +blue = "#1e66f5" +magenta = "#ea76cb" +cyan = "#179299" +white = "#6c6f85" + +[colors.dim] +black = "#bcc0cc" +red = "#d20f39" +green = "#40a02b" +yellow = "#df8e1d" +blue = "#1e66f5" +magenta = "#ea76cb" +cyan = "#179299" +white = "#5c5f77" + +[[colors.indexed_colors]] +index = 16 +color = "#fe640b" + +[[colors.indexed_colors]] +index = 17 +color = "#dc8a78" \ No newline at end of file diff --git a/alacritty/catppuccin-macchiato.toml b/alacritty/catppuccin-macchiato.toml new file mode 100644 index 0000000..9904f6a --- /dev/null +++ b/alacritty/catppuccin-macchiato.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = "#24273a" +foreground = "#cad3f5" +dim_foreground = "#8087a2" +bright_foreground = "#cad3f5" + +[colors.cursor] +text = "#24273a" +cursor = "#f4dbd6" + +[colors.vi_mode_cursor] +text = "#24273a" +cursor = "#b7bdf8" + +[colors.search.matches] +foreground = "#24273a" +background = "#a5adcb" + +[colors.search.focused_match] +foreground = "#24273a" +background = "#a6da95" + +[colors.footer_bar] +foreground = "#24273a" +background = "#a5adcb" + +[colors.hints.start] +foreground = "#24273a" +background = "#eed49f" + +[colors.hints.end] +foreground = "#24273a" +background = "#a5adcb" + +[colors.selection] +text = "#24273a" +background = "#f4dbd6" + +[colors.normal] +black = "#494d64" +red = "#ed8796" +green = "#a6da95" +yellow = "#eed49f" +blue = "#8aadf4" +magenta = "#f5bde6" +cyan = "#8bd5ca" +white = "#b8c0e0" + +[colors.bright] +black = "#5b6078" +red = "#ed8796" +green = "#a6da95" +yellow = "#eed49f" +blue = "#8aadf4" +magenta = "#f5bde6" +cyan = "#8bd5ca" +white = "#a5adcb" + +[colors.dim] +black = "#494d64" +red = "#ed8796" +green = "#a6da95" +yellow = "#eed49f" +blue = "#8aadf4" +magenta = "#f5bde6" +cyan = "#8bd5ca" +white = "#b8c0e0" + +[[colors.indexed_colors]] +index = 16 +color = "#f5a97f" + +[[colors.indexed_colors]] +index = 17 +color = "#f4dbd6" \ No newline at end of file diff --git a/alacritty/catppuccin-mocha.toml b/alacritty/catppuccin-mocha.toml new file mode 100644 index 0000000..08a7e3a --- /dev/null +++ b/alacritty/catppuccin-mocha.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = "#1e1e2e" +foreground = "#cdd6f4" +dim_foreground = "#7f849c" +bright_foreground = "#cdd6f4" + +[colors.cursor] +text = "#1e1e2e" +cursor = "#f5e0dc" + +[colors.vi_mode_cursor] +text = "#1e1e2e" +cursor = "#b4befe" + +[colors.search.matches] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.search.focused_match] +foreground = "#1e1e2e" +background = "#a6e3a1" + +[colors.footer_bar] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.hints.start] +foreground = "#1e1e2e" +background = "#f9e2af" + +[colors.hints.end] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.selection] +text = "#1e1e2e" +background = "#f5e0dc" + +[colors.normal] +black = "#45475a" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#bac2de" + +[colors.bright] +black = "#585b70" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#a6adc8" + +[colors.dim] +black = "#45475a" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#bac2de" + +[[colors.indexed_colors]] +index = 16 +color = "#fab387" + +[[colors.indexed_colors]] +index = 17 +color = "#f5e0dc" \ No newline at end of file diff --git a/alacritty/colors.toml b/alacritty/colors.toml new file mode 100644 index 0000000..67bf1d8 --- /dev/null +++ b/alacritty/colors.toml @@ -0,0 +1,75 @@ +[colors.primary] +background = "#1e1e2e" +foreground = "#cdd6f4" +dim_foreground = "#7f849c" +bright_foreground = "#cdd6f4" + +[colors.cursor] +text = "#1e1e2e" +cursor = "#f5e0dc" + +[colors.vi_mode_cursor] +text = "#1e1e2e" +cursor = "#b4befe" + +[colors.search.matches] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.search.focused_match] +foreground = "#1e1e2e" +background = "#a6e3a1" + +[colors.footer_bar] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.hints.start] +foreground = "#1e1e2e" +background = "#f9e2af" + +[colors.hints.end] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.selection] +text = "#1e1e2e" +background = "#f5e0dc" + +[colors.normal] +black = "#45475a" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#bac2de" + +[colors.bright] +black = "#585b70" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#a6adc8" + +[colors.dim] +black = "#45475a" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#bac2de" + +[[colors.indexed_colors]] +index = 16 +color = "#fab387" + +[[colors.indexed_colors]] +index = 17 +color = "#f5e0dc" diff --git a/alacritty/fonts.toml b/alacritty/fonts.toml new file mode 100644 index 0000000..1fca9c6 --- /dev/null +++ b/alacritty/fonts.toml @@ -0,0 +1,38 @@ +## Copyright (C) 2020-2024 Aditya Shakya +## +## Font configuration --------------------------------------- + +[font] +## Font size in points. +size = 14 + +## When true, Alacritty will use a custom built-in font for box drawing characters and powerline symbols. +builtin_box_drawing = true + +## Normal font family. +[font.normal] +family = "0xProto Nerd Font Mono" + +## If the family is not specified, it will fall back to the value specified for the normal font. +[font.bold] +family = "0xProto Nerd Font Mono" + +## If the family is not specified, it will fall back to the value specified for the normal font. +[font.italic] +family = "0xProto Nerd Font Mono" + +## If the family is not specified, it will fall back to the value specified for the normal font. +[font.bold_italic] +family = "0xProto Nerd Font Mono" + +## Offset is the extra space around each character. +## 'y' can be thought of as modifying the line spacing, and 'x' as modifying the letter spacing. +[font.offset] +x = 0 +y = 0 + +## Glyph offset determines the locations of the glyphs within their cells with the default being at the bottom. +## Increasing 'x' moves the glyph to the right, increasing 'y' moves the glyph upward. +[font.glyph_offset] +x = 0 +y = 0 diff --git a/dunst/dunst-catppuccin b/dunst/dunst-catppuccin new file mode 160000 index 0000000..5955cf0 --- /dev/null +++ b/dunst/dunst-catppuccin @@ -0,0 +1 @@ +Subproject commit 5955cf0213d14a3494ec63580a81818b6f7caa66 diff --git a/dunst/dunstrc b/dunst/dunstrc new file mode 120000 index 0000000..2f77c71 --- /dev/null +++ b/dunst/dunstrc @@ -0,0 +1 @@ +dunst-catppuccin/themes/mocha.conf \ No newline at end of file diff --git a/hypr/catppuccin-hyprland b/hypr/catppuccin-hyprland new file mode 160000 index 0000000..c388ac5 --- /dev/null +++ b/hypr/catppuccin-hyprland @@ -0,0 +1 @@ +Subproject commit c388ac55563ddeea0afe9df79d4bfff0096b146b diff --git a/hypr/catppuccin-hyprlock b/hypr/catppuccin-hyprlock new file mode 160000 index 0000000..f650895 --- /dev/null +++ b/hypr/catppuccin-hyprlock @@ -0,0 +1 @@ +Subproject commit f650895064ae80db7c0e095829fce83fd85d0b26 diff --git a/hypr/gamemode.sh b/hypr/gamemode.sh new file mode 100755 index 0000000..9bf4ebc --- /dev/null +++ b/hypr/gamemode.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') +if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:shadow:enabled 0;\ + keyword decoration:blur:enabled 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + exit +fi +hyprctl reload diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..5cb8a38 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,332 @@ + +# ####################################################################################### +# 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. +# ####################################################################################### + +# 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=eDP-1, preferred, 0x0, 1 +monitor=,preferred,auto,auto +# trigger when the switch is turning off +# bindl = , switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1, 1920x1080@60, 0x0, 1" +# trigger when the switch is turning on +# bindl = , switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable" + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = alacritty +$fileManager = nautilus +$menu = fuzzel + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +exec-once = systemctl --user start hyprpolkitagent +exec-once = waybar & hyprpaper & +exec-once = nm-applet & +exec-once = nextcloud --background & + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = HYPRCURSOR_THEME,Bibata-Modern-Classic +env = HYPRCURSOR_SIZE,24 +env = XCURSOR_SIZE,24 +env = XCURSOR_THEME,Bibata-Modern-Classic +env = XDG_CURRENT_DESKTOP,Hyprland +env = debug:full_cm_proto=true + + + +################### +### 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 +source = ~/.config/hypr/catppuccin-hyprland/themes/mocha.conf +general { + gaps_in = 5 + gaps_out = 5, 5, 5, 5 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + # col.active_border = rgba(cba6f7ee) rgba(f38ba8ee) 45deg + col.active_border = rgb($mauveAlpha) rgb($pinkAlpha) 45deg + col.inactive_border = rgb($surface2Alpha) + + # 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 = true + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 5 + 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 = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( + vrr = 0 +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = dvorak-intl + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + accel_profile = flat + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + + +################### +### 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 SHIFT, Q, killactive, +# bind = $mainMod, M, exit, +bind = $mainMod CTRL, L, exec, hyprlock +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, F, fullscreen, +bindr = $mainMod, SPACE, exec, $menu +bind = $mainMod, P, exec, ~/.config/hypr/scripts/powermenu.sh & +# bind = $mainMod, J, togglesplit, # dwindle +bind = , PRINT, exec, gscreenshot -c -s + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d +bind = $mainMod SHIFT, H, movewindow, l +bind = $mainMod SHIFT, L, movewindow, r +bind = $mainMod SHIFT, K, movewindow, u +bind = $mainMod SHIFT, J, movewindow, d + +# 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 + +# 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 + +# 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_AUDIO_SINK@ 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 +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +############################## +### 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 +# 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 diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf new file mode 100644 index 0000000..26b8001 --- /dev/null +++ b/hypr/hyprlock.conf @@ -0,0 +1,100 @@ +source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf + +$accent = $mauve +$accentAlpha = $mauveAlpha +$font = JetBrainsMono Nerd Font + +# GENERAL +general { + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + path = $HOME/Pictures/wallpaper.png + blur_passes = 0 + color = $base +} + +# LAYOUT +label { + monitor = + text = Layout: $LAYOUT + color = $text + font_size = 25 + font_family = $font + position = 30, -30 + halign = left + valign = top +} + +# TIME +label { + monitor = + text = $TIME + color = $text + font_size = 90 + font_family = $font + position = -30, 0 + halign = right + valign = top +} + +# DATE +label { + monitor = + text = cmd[update:43200000] date +"%A, %d %B %Y" + color = $text + font_size = 25 + font_family = $font + position = -30, -150 + halign = right + valign = top +} + +# FINGERPRINT +{ + monitor = ""; + text = "$FPRINTPROMPT"; + color = "$text"; + font_size = 14; + font_family = $font; + position = "0, -107"; + halign = "center"; + valign = "center"; +} + +# USER AVATAR +image { + monitor = + path = $HOME/.face + size = 100 + border_color = $accent + position = 0, 75 + halign = center + valign = center +} + +# INPUT FIELD +input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -47 + halign = center + valign = center +} diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf new file mode 100644 index 0000000..189a0f5 --- /dev/null +++ b/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/Pictures/wallpaper.png +wallpaper = ,~/Pictures/wallpaper.png diff --git a/hypr/mocha.conf b/hypr/mocha.conf new file mode 100644 index 0000000..8ccb56a --- /dev/null +++ b/hypr/mocha.conf @@ -0,0 +1,78 @@ + +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b diff --git a/hypr/scripts/powermenu.sh b/hypr/scripts/powermenu.sh new file mode 100755 index 0000000..f6c40b2 --- /dev/null +++ b/hypr/scripts/powermenu.sh @@ -0,0 +1,18 @@ +#!/bin/bash +options="Shutdown\nReboot\nLock\nLogout" +selected=$(echo -e $options | fuzzel --dmenu --prompt='Power:') + +case $selected in + "Shutdown") + systemctl poweroff + ;; + "Reboot") + systemctl reboot + ;; + "Lock") + hyprlock + ;; + "Logout") + hyprctl dispatch exit + ;; +esac diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..8f7fd88 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,380 @@ +vim.o.number = true +vim.o.wrap = false +vim.o.tabstop = 4 +vim.o.shiftwidth = 4 +vim.o.smartcase = true +vim.o.ignorecase = true +vim.o.hlsearch = false +vim.o.signcolumn = 'yes' + +vim.g.mapleader = ',' + +-- Set up 'mini.deps' (customize to your liking) +require('mini.deps').setup() + +local add = MiniDeps.add + +add({ + source = 'williamboman/mason.nvim' +}) + +add({ + source = 'stevearc/conform.nvim' +}) + +add({ + source = 'williamboman/mason-lspconfig.nvim' +}) + +add({ + source = 'mhartington/formatter.nvim' +}) + +add({ + source = 'mfussenegger/nvim-lint' +}) + +add({ + source = 'akinsho/toggleterm.nvim' +}) + +-- Add to current session (install if absent) +add({ + source = 'neovim/nvim-lspconfig', + -- Supply dependencies near target plugin + depends = { 'williamboman/mason.nvim' }, +}) + +add({ + source = 'seblyng/roslyn.nvim', +}) + +add({ + source = 'tris203/rzls.nvim', +}) + +add({ + source = 'nvim-treesitter/nvim-treesitter', + -- Use 'master' while monitoring updates in 'main' + checkout = 'master', + monitor = 'main', + -- Perform action after every checkout + hooks = { post_checkout = function() vim.cmd('TSUpdate') end }, +}) + +add({ + source = 'simrat39/rust-tools.nvim' +}) + +add({ + -- Completion framework: + source = 'hrsh7th/nvim-cmp', + + -- LSP completion source: + depends = {'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-nvim-lua', + 'hrsh7th/cmp-nvim-lsp-signature-help', + 'hrsh7th/cmp-vsnip', + 'hrsh7th/cmp-path', + 'hrsh7th/cmp-buffer', + 'hrsh7th/vim-vsnip', + }, +}) + +add({ source = "catppuccin/nvim", name = "catppuccin" }) + +require('mini.files').setup({ + mappings = { + show_help = 'gh', + }, +}) +require('mini.icons').setup({style = 'ascii'}) +require('mini.pick').setup({}) +require('mini.snippets').setup({}) +require('mini.notify').setup({}) +require('mini.statusline').setup({}) +require('mini.tabline').setup({}) +require('mini.git').setup({}) +local imap_expr = function(lhs, rhs) +vim.keymap.set('i', lhs, rhs, { expr = true }) +end +imap_expr('', [[pumvisible() ? "\" : "\"]]) +imap_expr('', [[pumvisible() ? "\" : "\"]]) +_G.cr_action = function() +-- If there is selected item in popup, accept it with +if vim.fn.complete_info()['selected'] ~= -1 then return '\25' end +-- Fall back to plain ``. You might want to customize according +-- to other plugins. For example if 'mini.pairs' is set up, replace +-- next line with `return MiniPairs.cr()` +return '\r' +end + +vim.keymap.set('i', '', 'v:lua.cr_action()', { expr = true }) +require("toggleterm").setup{ + size = function(term) + if term.direction == "horizontal" then + return 30 + elseif term.direction == "vertical" then + return 69 + end + end, + open_mapping = [[]], + hide_numbers = true, + shade_terminals = true, + persist_size = true, + direction = 'float', + close_on_exit = true, + shell = vim.o.shell, +} + +require('nvim-treesitter.configs').setup { + ensure_installed = { "lua", "rust", "toml", "c_sharp" }, + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting=false, + }, + ident = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + } +} +require("mason").setup({ + registries = { + "github:mason-org/mason-registry", + "github:Crashdummyy/mason-registry", + }, + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } +}) +require("mason-lspconfig").setup() +vim.lsp.config('rust_analyzer', { + -- Server-specific settings. See `:help lsp-quickstart` + settings = { + ['rust-analyzer'] = {}, + }, +}) +local mason_registry = require("mason-registry") +local cmd = {} +vim.list_extend(cmd, { + "dotnet", + vim.fs.joinpath("/home/narl/.local/share/nvim/mason/packages/roslyn", "libexec", "Microsoft.CodeAnalysis.LanguageServer.dll"), + "--stdio", + "--logLevel=Information", + "--extensionLogDirectory=" .. vim.fs.dirname(vim.lsp.get_log_path()), +}) + +local rzls_path = vim.fs.joinpath("/home/narl/.local/share/nvim/mason/packages/rzls", "libexec") +table.insert( + cmd, + "--razorSourceGenerator=" .. vim.fs.joinpath(rzls_path, "Microsoft.CodeAnalysis.Razor.Compiler.dll") +) +table.insert( + cmd, + "--razorDesignTimePath=" + .. vim.fs.joinpath(rzls_path, "Targets", "Microsoft.NET.Sdk.Razor.DesignTime.targets") +) + +require('roslyn').setup({ + cmd = cmd, + config = { + -- the rest of your Roslyn configuration + handlers = require("rzls.roslyn_handlers"), + }, +}) +require('nvim-treesitter.configs').setup({ + highlight = { enable = true }, +}) + +require("catppuccin").setup({ + flavour = "auto", -- latte, frappe, macchiato, mocha + background = { -- :h background + light = "latte", + dark = "mocha", + }, + transparent_background = false, -- disables setting the background color. + show_end_of_buffer = false, -- shows the '~' characters after the end of buffers + term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`) + dim_inactive = { + enabled = false, -- dims the background color of inactive window + shade = "dark", + percentage = 0.15, -- percentage of the shade to apply to the inactive window + }, + no_italic = false, -- Force no italic + no_bold = false, -- Force no bold + no_underline = false, -- Force no underline + styles = { -- Handles the styles of general hi groups (see `:h highlight-args`): + comments = { "italic" }, -- Change the style of comments + conditionals = { "italic" }, + loops = {}, + functions = {}, + keywords = {}, + strings = {}, + variables = {}, + numbers = {}, + booleans = {}, + properties = {}, + types = {}, + operators = {}, + -- miscs = {}, -- Uncomment to turn off hard-coded styles + }, + color_overrides = {}, + custom_highlights = {}, + default_integrations = true, + integrations = { + cmp = true, + gitsigns = true, + nvimtree = true, + treesitter = true, + notify = false, + mini = { + enabled = true, + indentscope_color = "", + }, + -- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations) + }, +}) + +local sign = function(opts) + vim.fn.sign_define(opts.name, { + texthl = opts.name, + text = opts.text, + numhl = '' + }) +end + +sign({name = 'DiagnosticSignError', text = ''}) +sign({name = 'DiagnosticSignWarn', text = ''}) +sign({name = 'DiagnosticSignHint', text = ''}) +sign({name = 'DiagnosticSignInfo', text = ''}) +--Set completeopt to have a better completion experience +-- :help completeopt +-- menuone: popup even when there's only one match +-- noinsert: Do not insert text until a selection is made +-- noselect: Do not select, force to select one from the menu +-- shortness: avoid showing extra messages when using completion +-- updatetime: set updatetime for CursorHold +vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'} +vim.opt.shortmess = vim.opt.shortmess + { c = true} +vim.api.nvim_set_option('updatetime', 300) + +-- Fixed column for diagnostics to appear +-- Show autodiagnostic popup on cursor hover_range +-- Goto previous / next diagnostic warning / error +-- Show inlay_hints more frequently +vim.cmd([[ +set signcolumn=yes +autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) +]]) + +vim.diagnostic.config({ + virtual_text = false, + signs = true, + update_in_insert = true, + underline = true, + severity_sort = false, + float = { + border = 'rounded', + source = 'always', + header = '', + prefix = '', + }, +}) + +vim.cmd([[ +set signcolumn=yes +autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) +]]) + +-- setup must be called before loading +vim.cmd.colorscheme "catppuccin" + +vim.keymap.set('n', 'w', 'write', {desc = 'Save file'}) +vim.keymap.set('n', 'q', 'quitall', {desc = 'Exit vim'}) + +vim.keymap.set({'n', 'x', 'o'}, 'gy', '"+y', {desc = 'Copy to clipboard'}) +vim.keymap.set({'n', 'x', 'o'}, 'gp', '"+p', {desc = 'Paste clipboard text'}) +vim.keymap.set('n', 'e', 'lua MiniFiles.open()', {desc = 'File explorer'}) +vim.keymap.set('n', '', 'Pick buffers', {desc = 'Search open files'}) +vim.keymap.set('n', 'ff', 'Pick files', {desc = 'Search all files'}) +vim.keymap.set('n', 'fh', 'Pick help', {desc = 'Search help tags'}) + +vim.keymap.set('n', 'h', 'wincmd h') +vim.keymap.set('n', 'l', 'wincmd l') +vim.keymap.set('n', 'j', 'wincmd j') +vim.keymap.set('n', 'k', 'wincmd k') + +-- Rust +-- + +local rt = require("rust-tools") + +rt.setup({ + server = { + on_attach = function(_, bufnr) + -- Hover actions + vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) + -- Code action groups + vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) + end, + }, +}) + +local cmp = require'cmp' +cmp.setup({ + -- Enable LSP snippets + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + -- Add tab support + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }) + }, + -- Installed sources: + sources = { + { name = 'path' }, -- file paths + { name = 'nvim_lsp', keyword_length = 3 }, -- from language server + { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized + { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* + { name = 'buffer', keyword_length = 2 }, -- source current buffer + { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip + { name = 'calc'}, -- source for math calculation + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + formatting = { + fields = {'menu', 'abbr', 'kind'}, + format = function(entry, item) + local menu_icon ={ + nvim_lsp = 'λ', + vsnip = '⋗', + buffer = 'Ω', + path = '🖫', + } + item.menu = menu_icon[entry.source.name] + return item + end, + }, +}) diff --git a/nvim/pack/nvim/start/mini.nvim b/nvim/pack/nvim/start/mini.nvim new file mode 160000 index 0000000..ae198e5 --- /dev/null +++ b/nvim/pack/nvim/start/mini.nvim @@ -0,0 +1 @@ +Subproject commit ae198e51b90d3bf930a1b0137642cdf7432f55d1 diff --git a/nvim/pack/nvim/start/nvim-lspconfig b/nvim/pack/nvim/start/nvim-lspconfig new file mode 160000 index 0000000..dbdb80d --- /dev/null +++ b/nvim/pack/nvim/start/nvim-lspconfig @@ -0,0 +1 @@ +Subproject commit dbdb80d3bd311989d21029c63918d67a786d5013 diff --git a/nvim/pack/vendor/start/setup_nvim.sh b/nvim/pack/vendor/start/setup_nvim.sh new file mode 100644 index 0000000..327e885 --- /dev/null +++ b/nvim/pack/vendor/start/setup_nvim.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +rm -rf ~/.config/nvim +cp -r nvim ~/.config/ +git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/vendor/start/nvim-lspconfig +git clone https://github.com/echasnovski/mini.nvim ~/.config/nvim/pack/vendor/start/mini.nvim diff --git a/waybar/catppuccin-waybar b/waybar/catppuccin-waybar new file mode 160000 index 0000000..ee8ed32 --- /dev/null +++ b/waybar/catppuccin-waybar @@ -0,0 +1 @@ +Subproject commit ee8ed32b4f63e9c417249c109818dcc05a2e25da diff --git a/waybar/config.jsonc b/waybar/config.jsonc new file mode 100644 index 0000000..34b8002 --- /dev/null +++ b/waybar/config.jsonc @@ -0,0 +1,77 @@ +// ~/.config/waybar/config.jsonc +{ + "layer": "top", + "position": "top", + "height": 35, + "modules-left": ["hyprland/workspaces", "hyprland/window"], + "modules-center": ["clock"], + "modules-right": ["tray", "pulseaudio", "network", "cpu", "memory", "custom/tlp", "battery", "custom/power"], + + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate" + }, + "hyprland/window": { + "format": "{}", + "max-length": 35 + }, + "clock": { + "format": "{:%I:%M %p}", + "format-alt": "{:%a, %b %d}", + "tooltip-format": "{:%Y %B}\n{calendar}" + }, + "cpu": { + "format": "CPU:{usage}%", + "tooltip": true + }, + "memory": { + "format": "MEM:{}%" + }, + "network": { + "format-wifi": "{essid} ({signalStrength}): {ipaddr}", + "format-ethernet": "{ifname}: {ipaddr}", + "format-disconnected": "Disconnected", + "tooltip-format": "{ifname} via {gwaddr}", + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": " Muted", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", ""] + }, + "on-click": "pavucontrol" + }, + "tray": { + "icon-size": 18, + "spacing": 10 + }, + "custom/power": { + "format": "", + "tooltip": false, + "on-click": "~/.config/hypr/scripts/powermenu.sh" + }, + "custom/tlp": { + "format": "{}", + "exec": "~/.config/waybar/scripts/tlp-profile.sh", + "return-type": "json", + "interval": 10 + }, + "battery": { + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{capacity}%", + "format-charging": "{capacity}%", + "format-plugged": "{capacity}%", + "format-alt": "{time} {icon}", + "format-full": "{capacity}%", + "format-icons": ["", "", "", "", ""] + }, +} diff --git a/waybar/scripts/power.sh b/waybar/scripts/power.sh new file mode 100755 index 0000000..b567daa --- /dev/null +++ b/waybar/scripts/power.sh @@ -0,0 +1,2 @@ +#!/bin/bash +wlogout -p layer-shell diff --git a/waybar/scripts/tlp-profile.sh b/waybar/scripts/tlp-profile.sh new file mode 100755 index 0000000..7f4158c --- /dev/null +++ b/waybar/scripts/tlp-profile.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Get the current power source from tlp-stat +power_source=$(tlp-stat -s | grep -i "power source" | awk '{print $4}') + +if [ "$power_source" == "AC" ]; then + # On AC power + icon="" + tooltip="TLP Profile: AC" + class="ac" +elif [ "$power_source" == "battery" ]; then + # On Battery power + icon="" + tooltip="TLP Profile: Battery" + class="bat" +else + # Fallback for unknown state + icon="" + tooltip="TLP Profile: Unknown" + class="unknown" +fi + +# Output in JSON format for Waybar +printf '{"text": "%s", "tooltip": "%s", "class": "%s"}\n' "$icon" "$tooltip" "$class" diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..f5a09ce --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,81 @@ +/* ~/.config/waybar/style.css */ +@import "./catppuccin-waybar/themes/mocha.css"; + +* { + font-family: "0xProto Nerd Font", FontAwesome, sans-serif; + font-size: 14px; + padding: 0 5px; +} + +window#waybar { + background-color: alpha(@base, 0.9); + border-bottom: 3px solid @mauve; + color: @text; +} + +#workspaces { + margin-bottom: 5px; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: @surface2; +} + +#workspaces button.active { + color: @mauve; + border-bottom: 3px solid @pink; +} + +#workspaces button:hover { + background: @surface0; + box-shadow: inherit; + text-shadow: inherit; +} + +#custom-power { + color: @red; + padding: 0 10px; +} + +#custom-tlp { + padding: 0 10px; +} + +#custom-tlp.ac { + color: @green; /* Catppuccin Green for AC power */ +} + +#custom-tlp.bat { + color: @yellow; /* Catppuccin Yellow for Battery power */ +} + +#battery { + color: @text; + padding: 0 10px; + padding-left: 0; +} + +#battery.charging, #battery.plugged { + color: @green; +} + +#battery.warning { + color: @yellow; +} + +#battery.critical { + color: @red; + animation-name: blink; + animation-duration: 0.8s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +@keyframes blink { + to { + color: @text; + } +}