├── .gitignore ├── nvim ├── init.lua ├── lua │ ├── plugins │ │ ├── disable.lua │ │ ├── lsp.lua │ │ ├── colorscheme.lua │ │ ├── treesitter.lua │ │ ├── ui.lua │ │ └── example.lua │ └── config │ │ ├── autocmds.lua │ │ ├── options.lua │ │ ├── keymaps.lua │ │ └── lazy.lua ├── .gitignore └── lazyvim.json ├── hypr ├── assets │ ├── _dark.png │ ├── _light.png │ ├── yorha.png │ ├── screenshot_dark.png │ └── screenshot_light.png ├── hyprpaper.conf ├── nvidia.conf ├── script │ ├── resetxdgportal.sh │ ├── rofi-app-launcher.sh │ ├── bg-battery-check.sh │ ├── rofi-powermenu.sh │ ├── toggle-theme.sh │ ├── screenshot.sh │ └── rofi-clipboard.sh ├── themes │ ├── _dark.conf │ ├── _light.conf │ └── theme.conf ├── animations.conf ├── hyprlock.conf ├── hyprland.conf ├── windowrules.conf └── keybindings.conf ├── fastfetch ├── pngs │ └── yorha.png └── config.jsonc ├── zathura ├── zathurarc ├── _light └── _dark ├── Code └── User │ ├── keybindings.json │ └── settings.json ├── kitty ├── kitty.conf ├── _dark.conf └── _light.conf ├── rofi ├── _dark.rasi ├── _light.rasi ├── wallpaper-selector.rasi ├── clipboard.rasi ├── powermenu.rasi └── app-launcher.rasi ├── waybar ├── _dark.css ├── _light.css ├── style.css └── config.jsonc ├── tmux ├── tmux.conf └── statusline.conf ├── starship └── starship.toml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | * -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("config.lazy") -------------------------------------------------------------------------------- /hypr/assets/_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/hypr/assets/_dark.png -------------------------------------------------------------------------------- /hypr/assets/_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/hypr/assets/_light.png -------------------------------------------------------------------------------- /hypr/assets/yorha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/hypr/assets/yorha.png -------------------------------------------------------------------------------- /fastfetch/pngs/yorha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/fastfetch/pngs/yorha.png -------------------------------------------------------------------------------- /nvim/lua/plugins/disable.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "echasnovski/mini.pairs", enabled = false }, 3 | } 4 | -------------------------------------------------------------------------------- /zathura/zathurarc: -------------------------------------------------------------------------------- 1 | include _dark 2 | 3 | map toggle_statusbar 4 | map toggle_page_mode 5 | -------------------------------------------------------------------------------- /hypr/assets/screenshot_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/hypr/assets/screenshot_dark.png -------------------------------------------------------------------------------- /hypr/assets/screenshot_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khiem2794/dotfiles/HEAD/hypr/assets/screenshot_light.png -------------------------------------------------------------------------------- /nvim/.gitignore: -------------------------------------------------------------------------------- 1 | tt.* 2 | .tests 3 | doc/tags 4 | debug 5 | .repro 6 | foo.* 7 | *.log 8 | data 9 | lazy-lock.json 10 | -------------------------------------------------------------------------------- /nvim/lazyvim.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": [ 3 | 4 | ], 5 | "news": { 6 | "NEWS.md": "10960" 7 | }, 8 | "version": 7 9 | } -------------------------------------------------------------------------------- /hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | preload = ~/.config/hypr/assets/_dark.png 2 | preload = ~/.config/hypr/assets/_light.png 3 | wallpaper = , ~/.config/hypr/assets/_dark.png -------------------------------------------------------------------------------- /hypr/nvidia.conf: -------------------------------------------------------------------------------- 1 | env = LIBVA_DRVER_NAME,nvidia 2 | env = GBM_BACKEND,nvidia-drm 3 | env = __GLX_VENDOR_LIBRARY_NAME,nvidia 4 | 5 | cursor { 6 | no_hardware_cursors = true 7 | } 8 | -------------------------------------------------------------------------------- /Code/User/keybindings.json: -------------------------------------------------------------------------------- 1 | // Place your key bindings in this file to override the defaults 2 | [ 3 | { 4 | "key": "ctrl+shift+s", 5 | "command": "saveAll", 6 | "when": "" 7 | } 8 | ] -------------------------------------------------------------------------------- /nvim/lua/config/autocmds.lua: -------------------------------------------------------------------------------- 1 | -- Autocmds are automatically loaded on the VeryLazy event 2 | -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua 3 | -- Add any additional autocmds here 4 | -------------------------------------------------------------------------------- /kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | font_family JetBrainsMono Nerd Font 2 | bold_font auto 3 | italic_font auto 4 | bold_italic_font auto 5 | 6 | font_size 10.0 7 | window_padding_width 0 0 0 5 8 | window_margin_width 0 9 | 10 | include _dark.conf 11 | -------------------------------------------------------------------------------- /rofi/_dark.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg: #282828; 3 | fg: #ebdbb2; 4 | red: #cc241d; 5 | green: #98971a; 6 | yellow: #d79921; 7 | blue: #458588; 8 | purple: #b16286; 9 | aqua: #689d6a; 10 | gray: #a89984; 11 | } 12 | -------------------------------------------------------------------------------- /rofi/_light.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg: #fbf1c7; 3 | fg: #32302f; 4 | red: #9d0006; 5 | green: #79740e; 6 | yellow: #b57614; 7 | blue: #076678; 8 | purple: #8f3f71; 9 | aqua: #427b58; 10 | gray: #3c3836; 11 | } 12 | -------------------------------------------------------------------------------- /nvim/lua/config/options.lua: -------------------------------------------------------------------------------- 1 | -- 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 2 | -- Add any additional options here 3 | vim.opt.encoding = "utf-8" 4 | vim.opt.fileencoding = "utf-8" 5 | vim.opt.scrolloff = 10 6 | -------------------------------------------------------------------------------- /waybar/_dark.css: -------------------------------------------------------------------------------- 1 | @define-color black #000000; 2 | @define-color white #ffffff; 3 | @define-color bg #282828; 4 | @define-color fg #ebdbb2; 5 | @define-color red #cc241d; 6 | @define-color green #98971a; 7 | @define-color yellow #d79921; 8 | @define-color blue #458588; 9 | @define-color purple #b16286; 10 | @define-color aqua #689d6a; 11 | @define-color gray #a89984; 12 | -------------------------------------------------------------------------------- /hypr/script/resetxdgportal.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | sleep 1 3 | killall xdg-desktop-portal-hyprland 4 | killall xdg-desktop-portal-gnome 5 | killall xdg-desktop-portal-kde 6 | killall xdg-desktop-portal-lxqt 7 | killall xdg-desktop-portal-wlr 8 | killall xdg-desktop-portal 9 | sleep 1 10 | 11 | /usr/lib/xdg-desktop-portal-hyprland & 12 | sleep 2 13 | /usr/lib/xdg-desktop-portal & 14 | -------------------------------------------------------------------------------- /waybar/_light.css: -------------------------------------------------------------------------------- 1 | @define-color black #000000; 2 | @define-color white #ffffff; 3 | @define-color bg #f9f5d7; 4 | @define-color fg #1d2021; 5 | @define-color red #9d0006; 6 | @define-color green #79740e; 7 | @define-color yellow #b57614; 8 | @define-color blue #076678; 9 | @define-color purple #8f3f71; 10 | @define-color aqua #427b58; 11 | @define-color gray #3c3836; 12 | -------------------------------------------------------------------------------- /hypr/themes/_dark.conf: -------------------------------------------------------------------------------- 1 | $black = rgb(000000) 2 | $white = rgb(ffffff) 3 | $bg = rgb(282828) 4 | $fg = rgb(ebdbb2) 5 | $red = rgb(cc241d) 6 | $green = rgb(98971a) 7 | $yellow = rgb(d79921) 8 | $blue = rgb(458588) 9 | $purple = rgb(b16286) 10 | $aqua = rgb(689d6a) 11 | $gray = rgb(a89984) 12 | 13 | $wallpaper = $HOME/.config/hypr/assets/_dark.png 14 | $bg-lock = $HOME/.config/hypr/assets/_dark.png -------------------------------------------------------------------------------- /hypr/themes/_light.conf: -------------------------------------------------------------------------------- 1 | $black = rgb(000000) 2 | $white = rgb(ffffff) 3 | $bg = rgb(f9f5d7) 4 | $fg = rgb(1d2021) 5 | $red = rgb(9d0006) 6 | $green = rgb(79740e) 7 | $yellow = rgb(b57614) 8 | $blue = rgb(076678) 9 | $purple = rgb(8f3f71) 10 | $aqua = rgb(427b58) 11 | $gray = rgb(3c3836) 12 | 13 | $wallpaper = $HOME/.config/hypr/assets/_light.png 14 | $bg-lock = $HOME/.config/hypr/assets/_light.png -------------------------------------------------------------------------------- /nvim/lua/plugins/lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "williamboman/mason.nvim", 3 | opts = function(_, opts) 4 | vim.list_extend(opts.ensure_installed, { 5 | "stylua", 6 | "selene", 7 | "shfmt", 8 | "shellcheck", 9 | "luacheck", 10 | "rust-analyzer", 11 | "tailwindcss-language-server", 12 | "typescript-language-server", 13 | "css-lsp", 14 | }) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /hypr/animations.conf: -------------------------------------------------------------------------------- 1 | 2 | # ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ 3 | # █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ 4 | 5 | # See https://wiki.hyprland.org/Configuring/Animations/ 6 | 7 | animations { 8 | bezier = in-out,.65,-0.01,0,.95 9 | bezier = woa,0,0,0,1 10 | animation=windows,1,2,woa,popin 11 | animation=border,1,10,default 12 | animation=fade,1,10,default 13 | animation=workspaces,1,2,in-out,slide 14 | } 15 | -------------------------------------------------------------------------------- /nvim/lua/plugins/colorscheme.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | { 4 | "sainnhe/gruvbox-material", 5 | priority = 100, 6 | config = function() 7 | vim.cmd("colorscheme gruvbox-material") 8 | vim.g.gruvbox_material_background = "hard" 9 | vim.g.gruvbox_material_enable_italic = true 10 | vim.g.gruvbox_material_enable_bold = true 11 | vim.opt.background = "dark" 12 | end 13 | }, 14 | { "LazyVim/LazyVim", opts = { 15 | colorscheme = "gruvbox-material", 16 | } }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /hypr/script/rofi-app-launcher.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | roconf="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/app-launcher.rasi" 4 | 5 | case "${1}" in 6 | d|--drun) r_mode="drun" ;; 7 | w|--window) r_mode="window" ;; 8 | f|--filebrowser) r_mode="filebrowser" ;; 9 | h|--help) echo -e "$(basename "${0}") [action]" 10 | echo "d : drun mode" 11 | echo "w : window mode" 12 | echo "f : filebrowser mode," 13 | exit 0 ;; 14 | *) r_mode="drun" ;; 15 | esac 16 | 17 | rofi -show "${r_mode}" -config "${roconf}" 18 | -------------------------------------------------------------------------------- /nvim/lua/config/keymaps.lua: -------------------------------------------------------------------------------- 1 | -- 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 2 | -- Add any additional keymaps here 3 | local keymap = vim.keymap 4 | local opts = { noremap = true, silent = true } 5 | 6 | -- Increment/Decrement number under the cursor 7 | keymap.set("n", "+", "") 8 | keymap.set("n", "-", "") 9 | 10 | -- Select all 11 | keymap.set("n", "", "ggG") 12 | 13 | keymap.set("n", "", function() 14 | vim.diagnostic.goto_next() 15 | end, opts) 16 | -------------------------------------------------------------------------------- /hypr/script/bg-battery-check.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | is_laptop() { 4 | if grep -q "Battery" /sys/class/power_supply/BAT*/type; then 5 | return 0 6 | else 7 | echo "No battery detected." 8 | exit 0 9 | fi 10 | } 11 | is_laptop 12 | 13 | while true; do 14 | battery_status=$(cat /sys/class/power_supply/BAT0/status) 15 | battery_capacity=$(cat /sys/class/power_supply/BAT0/capacity) 16 | 17 | if [ $battery_capacity -le 10 ] && [ $battery_status == "Discharging" ]; then 18 | notify-send -a "Power" "Battery Low" -u critical "Battery is at $battery_capacity%." 19 | brightnessctl set 10% 20 | fi 21 | sleep 60 22 | done 23 | -------------------------------------------------------------------------------- /nvim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | opts = { 5 | ensure_installed = { 6 | "rust", 7 | "css", 8 | "gitignore", 9 | "python", 10 | "regex", 11 | "vim", 12 | "bash", 13 | "vimdoc", 14 | "html", 15 | "http", 16 | }, 17 | }, 18 | config = function(_, opts) 19 | require("nvim-treesitter.configs").setup(opts) 20 | 21 | -- MDX 22 | vim.filetype.add({ 23 | extension = { 24 | mdx = "mdx", 25 | }, 26 | }) 27 | vim.treesitter.language.register("markdown", "mdx") 28 | end, 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | set-option -g history-limit 25000 2 | set -g mouse on 3 | set -g base-index 1 4 | set -g pane-base-index 1 5 | set-window-option -g pane-base-index 1 6 | 7 | setw -g mode-keys vi 8 | set -sg escape-time 10 #fix: is not instant in nvim 9 | set-option -g repeat-time 0 10 | set-option -g renumber-windows on 11 | 12 | # switch panes using Alt-arrow without prefix 13 | bind -n M-Left select-pane -L 14 | bind -n M-Right select-pane -R 15 | bind -n M-Up select-pane -U 16 | bind -n M-Down select-pane -D 17 | 18 | # Resizing pane 19 | bind -r C-k resize-pane -U 5 20 | bind -r C-j resize-pane -D 5 21 | bind -r C-h resize-pane -L 5 22 | bind -r C-l resize-pane -R 5 23 | 24 | # Split pane 25 | bind | split-window -h 26 | bind - split-window -v 27 | unbind '"' 28 | unbind % 29 | 30 | source ~/.config/tmux/statusline.conf 31 | -------------------------------------------------------------------------------- /hypr/script/rofi-powermenu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | roconf="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/powermenu.rasi" 4 | 5 | uptime="`uptime -p | sed -e 's/up //g'`" 6 | host=`hostname` 7 | 8 | shutdown='' 9 | reboot='' 10 | lock='' 11 | suspend='󰤄' 12 | logout='󰍃' 13 | 14 | rofi_cmd() { 15 | rofi -dmenu \ 16 | -p "Uptime: $uptime" \ 17 | -mesg "Uptime: $uptime" \ 18 | -theme ${roconf} 19 | } 20 | 21 | run_rofi() { 22 | echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd 23 | } 24 | 25 | chosen="$(run_rofi)" 26 | case ${chosen} in 27 | $shutdown) 28 | systemctl poweroff 29 | ;; 30 | $reboot) 31 | systemctl reboot 32 | ;; 33 | $lock) 34 | hyprlock 35 | ;; 36 | $suspend) 37 | systemctl suspend 38 | ;; 39 | $logout) 40 | hyprctl dispatch exit 0 41 | ;; 42 | esac -------------------------------------------------------------------------------- /nvim/lua/plugins/ui.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "folke/noice.nvim", 4 | opts = function(_, opts) 5 | table.insert(opts.routes, { 6 | filter = { 7 | event = "notify", 8 | find = "No information available", 9 | }, 10 | opts = { skip = true }, 11 | }) 12 | opts.presets.lsp_doc_border = true 13 | end, 14 | }, 15 | { 16 | "folke/snacks.nvim", 17 | opts = { 18 | dashboard = { 19 | preset = { 20 | header = [[ 21 | ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ 22 | ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ 23 | ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ 24 | ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ 25 | ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ 26 | ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ 27 | 28 | 29 | [ @khiem2794 ] 30 | ]] 31 | }, 32 | }, 33 | }, 34 | }, 35 | } 36 | -------------------------------------------------------------------------------- /Code/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "window.menuBarVisibility": "toggle", 3 | "security.workspace.trust.untrustedFiles": "newWindow", 4 | "security.workspace.trust.startupPrompt": "never", 5 | "security.workspace.trust.enabled": false, 6 | "editor.fontFamily": "\"Maple Mono\", \"JetBrainsMono Nerd Font\"", 7 | "extensions.autoUpdate": false, 8 | "terminal.external.linuxExec": "kitty", 9 | "terminal.explorerKind": "both", 10 | "terminal.sourceControlRepositoriesKind": "both", 11 | "telemetry.telemetryLevel": "off", 12 | "explorer.confirmDelete": false, 13 | "explorer.confirmDragAndDrop": false, 14 | "workbench.startupEditor": "none", 15 | "workbench.colorTheme": "Gruvbox Dark Medium", 16 | "extensions.ignoreRecommendations": true, 17 | "editor.minimap.enabled": false, 18 | "explorer.confirmPasteNative": false, 19 | "git.openRepositoryInParentFolders": "prompt", 20 | "typescript.updateImportsOnFileMove.enabled": "always", 21 | "javascript.updateImportsOnFileMove.enabled": "always" 22 | } -------------------------------------------------------------------------------- /kitty/_dark.conf: -------------------------------------------------------------------------------- 1 | # gruvbox dark by morhetz, https://github.com/morhetz/gruvbox 2 | # This work is licensed under the terms of the MIT license. 3 | # For a copy, see https://opensource.org/licenses/MIT. 4 | 5 | background #282828 6 | foreground #ebdbb2 7 | 8 | cursor #928374 9 | 10 | selection_foreground #928374 11 | selection_background #3c3836 12 | 13 | color0 #282828 14 | color8 #928374 15 | 16 | # red 17 | color1 #cc241d 18 | # light red 19 | color9 #fb4934 20 | 21 | # green 22 | color2 #98971a 23 | # light green 24 | color10 #b8bb26 25 | 26 | # yellow 27 | color3 #d79921 28 | # light yellow 29 | color11 #fabd2d 30 | 31 | # blue 32 | color4 #458588 33 | # light blue 34 | color12 #83a598 35 | 36 | # magenta 37 | color5 #b16286 38 | # light magenta 39 | color13 #d3869b 40 | 41 | # cyan 42 | color6 #689d6a 43 | # lighy cyan 44 | color14 #8ec07c 45 | 46 | # light gray 47 | color7 #a89984 48 | # dark gray 49 | color15 #928374 -------------------------------------------------------------------------------- /hypr/script/toggle-theme.sh: -------------------------------------------------------------------------------- 1 | !/bin/sh 2 | 3 | current=$(grep -o -E 'themes/\w+' ~/.config/hypr/themes/theme.conf | cut -d '_' -f2) 4 | new="light" 5 | 6 | if [ $current = "light" ]; then 7 | new="dark" 8 | vscode_theme="Gruvbox Dark Medium" 9 | hyprctl hyprpaper wallpaper ",~/.config/hypr/assets/_dark.png" 10 | else 11 | new="light" 12 | vscode_theme="Gruvbox Light Hard" 13 | hyprctl hyprpaper wallpaper ",~/.config/hypr/assets/_light.png" 14 | fi 15 | 16 | 17 | sed -i "s/_$current/_$new/g" ~/.config/hypr/themes/theme.conf 18 | sed -i "s/_$current/_$new/g" ~/.config/kitty/kitty.conf 19 | sed -i "s/_$current/_$new/g" ~/.config/rofi/app-launcher.rasi 20 | sed -i "s/_$current/_$new/g" ~/.config/rofi/clipboard.rasi 21 | sed -i "s/_$current/_$new/g" ~/.config/rofi/powermenu.rasi 22 | sed -i "s/_$current/_$new/g" ~/.config/waybar/style.css 23 | sed -i "s/_$current/_$new/g" ~/.config/zathura/zathurarc 24 | 25 | sed -i "s/\"$current\"/\"$new\"/g" ~/.config/nvim/lua/plugins/colorscheme.lua 26 | sed -i -e "s/\"workbench.colorTheme\": \".*\"/\"workbench.colorTheme\": \"$vscode_theme\"/g" ~/.config/Code/User/settings.json 27 | 28 | #restart 29 | killall -SIGUSR2 waybar 30 | killall -SIGUSR1 kitty 31 | -------------------------------------------------------------------------------- /kitty/_light.conf: -------------------------------------------------------------------------------- 1 | # gruvbox light by morhetz, https://github.com/morhetz/gruvbox 2 | # This work is licensed under the terms of the MIT license. 3 | # For a copy, see https://opensource.org/licenses/MIT. 4 | 5 | background #f9f5d7 6 | foreground #1d2021 7 | 8 | cursor #928374 9 | 10 | selection_foreground #fbf1c7 11 | selection_background #928374 12 | 13 | color0 #f9f5d7 14 | color8 #282828 15 | 16 | # red 17 | color1 #9d0006 18 | # light red 19 | color9 #cc241d 20 | 21 | # green 22 | color2 #79740e 23 | # light green 24 | color10 #98971a 25 | 26 | # yellow 27 | color3 #b57614 28 | # light yellow 29 | color11 #d79921 30 | 31 | # blue 32 | color4 #076678 33 | # light blue 34 | color12 #458588 35 | 36 | # magenta 37 | color5 #8f3f71 38 | # light magenta 39 | color13 #b16286 40 | 41 | # cyan 42 | color6 #427b58 43 | # lighy cyan 44 | color14 #689d6a 45 | 46 | # light gray 47 | color7 #928374 48 | # dark gray 49 | color15 #7c6f64 50 | -------------------------------------------------------------------------------- /tmux/statusline.conf: -------------------------------------------------------------------------------- 1 | set -g mode-style "fg=#eee8d5,bg=#073642" 2 | 3 | set -g message-style "fg=#eee8d5,bg=#073642" 4 | set -g message-command-style "fg=#eee8d5,bg=#073642" 5 | 6 | set -g pane-border-style "fg=#073642" 7 | set -g pane-active-border-style "fg=#eee8d5" 8 | 9 | set -g status "on" 10 | set -g status-interval 1 11 | set -g status-justify "left" 12 | 13 | set -g status-style "fg=#586e75,bg=#073642" 14 | 15 | set -g status-bg "#002b36" 16 | 17 | set -g status-left-length "100" 18 | set -g status-right-length "100" 19 | 20 | set -g status-left-style NONE 21 | set -g status-right-style NONE 22 | 23 | set -g status-left "#[fg=#15161E,bg=#93a1a1,bold] #[fg=#93a1a1,bg=#002b36]" 24 | set -g status-right "#[fg=#93a1a1]#[fg=#15161E,bg=#93a1a1,bold] #(whoami)@#h " 25 | 26 | setw -g window-status-activity-style "underscore,fg=#839496,bg=#002b36" 27 | setw -g window-status-separator "" 28 | setw -g window-status-style "NONE,fg=#839496,bg=#002b36" 29 | setw -g window-status-format '#[fg=#002b36,bg=#002b36]#[default] #I  #{b:pane_current_path} #[fg=#002b36,bg=#002b36,nobold,nounderscore,noitalics]' 30 | setw -g window-status-current-format '#[fg=#002b36,bg=#eee8d5]#[fg=#b58900,bg=#eee8d5] #I #[fg=#eee8d5,bg=#b58900] #{b:pane_current_path} #[fg=#b58900,bg=#002b36,nobold]' 31 | -------------------------------------------------------------------------------- /hypr/script/screenshot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | if [ -z "$XDG_PICTURES_DIR" ]; then 4 | XDG_PICTURES_DIR="$HOME/Pictures" 5 | fi 6 | 7 | swpy_dir="${XDG_CONFIG_HOME:-$HOME/.config}/swappy" 8 | save_dir="${2:-$XDG_PICTURES_DIR/Screenshots}" 9 | save_file=$(date +'%y%m%d_%Hh%Mm%Ss_screenshot.png') 10 | temp_screenshot="/tmp/screenshot.png" 11 | 12 | mkdir -p $save_dir 13 | mkdir -p $swpy_dir 14 | echo -e "[Default]\nsave_dir=$save_dir\nsave_filename_format=$save_file" >$swpy_dir/config 15 | 16 | function print_error 17 | { 18 | cat <<"EOF" 19 | ./screenshot.sh 20 | ...valid actions are... 21 | p : print all screens 22 | s : snip current screen 23 | sf : snip current screen (frozen) 24 | m : print focused monitor 25 | EOF 26 | } 27 | 28 | case $1 in 29 | p) # print all outputs 30 | grimblast copysave screen $temp_screenshot && swappy -f $temp_screenshot ;; 31 | s) # drag to manually snip an area / click on a window to print it 32 | grimblast copysave area $temp_screenshot && swappy -f $temp_screenshot ;; 33 | sf) # frozen screen, drag to manually snip an area / click on a window to print it 34 | grimblast --freeze copysave area $temp_screenshot && swappy -f $temp_screenshot ;; 35 | m) # print focused monitor 36 | grimblast copysave output $temp_screenshot && swappy -f $temp_screenshot ;; 37 | *) # invalid option 38 | print_error ;; 39 | esac 40 | 41 | rm "$temp_screenshot" 42 | 43 | if [ -f "${save_dir}/${save_file}" ]; then 44 | notify-send -a "t1" -i "${save_dir}/${save_file}" "saved in ${save_dir}" 45 | fi 46 | -------------------------------------------------------------------------------- /hypr/themes/theme.conf: -------------------------------------------------------------------------------- 1 | source = ~/.config/hypr/themes/_dark.conf 2 | 3 | # █▀▀ █░█ █▀█ █▀ █▀█ █▀█ 4 | # █▄▄ █▄█ █▀▄ ▄█ █▄█ █▀▄ 5 | 6 | exec-once = hyprctl setcursor Bibata-Modern-Amber 14 7 | exec-once = gsettings set org.gnome.desktop.interface cursor-size 14 8 | exec-once = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Amber' 9 | exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'Gruvbox-Material-Dark' 10 | exec-once = gsettings set org.gnome.desktop.interface color-scheme 'Default' 11 | 12 | 13 | # █▀▀ █▀█ █▄░█ ▀█▀ 14 | # █▀░ █▄█ █░▀█ ░█░ 15 | 16 | exec-once = gsettings set org.gnome.desktop.interface font-name 'Cantarell 10' 17 | exec-once = gsettings set org.gnome.desktop.interface document-font-name 'Cantarell 10' 18 | exec-once = gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font 9' 19 | exec-once = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba' 20 | exec-once = gsettings set org.gnome.desktop.interface font-hinting 'full' 21 | 22 | 23 | # █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░ 24 | # ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄ 25 | 26 | decoration { 27 | dim_special = 0.3 28 | blur { 29 | special = true 30 | } 31 | } 32 | 33 | general { 34 | gaps_in = 5 35 | gaps_out = 10 36 | border_size = 3 37 | layout = dwindle 38 | resize_on_border = true 39 | 40 | col.active_border = $red 41 | col.inactive_border = $bg 42 | } 43 | 44 | decoration { 45 | rounding = 0 46 | 47 | blur { 48 | enabled = yes 49 | size = 6 50 | passes = 3 51 | new_optimizations = on 52 | ignore_opacity = on 53 | xray = false 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /zathura/_light: -------------------------------------------------------------------------------- 1 | set notification-error-bg "#fbf1c7" # bg 2 | set notification-error-fg "#cc241d" # red 3 | set notification-warning-bg "#fbf1c7" # bg 4 | set notification-warning-fg "#d79921" # yellow 5 | set notification-bg "#fbf1c7" # bg 6 | set notification-fg "#98971a" # green 7 | 8 | set completion-bg "#e4d3b5" # light bg 9 | set completion-fg "#3c3836" # fg 10 | set completion-group-bg "#d5c5a9" # light bg1 11 | set completion-group-fg "#7c6f64" # gray 12 | set completion-highlight-bg "#458588" # blue 13 | set completion-highlight-fg "#e4d3b5" # light bg 14 | 15 | # Define the color in index mode 16 | set index-bg "#e4d3b5" # light bg2 17 | set index-fg "#3c3836" # fg 18 | set index-active-bg "#458588" # blue 19 | set index-active-fg "#e4d3b5" # light bg2 20 | 21 | set inputbar-bg "#fbf1c7" # bg 22 | set inputbar-fg "#3c3836" # fg 23 | 24 | set statusbar-bg "#e4d3b5" # light bg2 25 | set statusbar-fg "#3c3836" # fg 26 | 27 | set highlight-color "#d79921" # yellow 28 | set highlight-active-color "#d65d0e" # orange 29 | 30 | set default-bg "#fbf1c7" # bg 31 | set default-fg "#3c3836" # fg 32 | set render-loading true 33 | set render-loading-bg "#fbf1c7" # bg 34 | set render-loading-fg "#3c3836" # fg 35 | 36 | # Recolor book content's color 37 | set recolor-lightcolor "#fbf1c7" # bg 38 | set recolor-darkcolor "#3c3836" # fg 39 | set recolor "true" 40 | set recolor-keephue "true" # keep original color 41 | -------------------------------------------------------------------------------- /zathura/_dark: -------------------------------------------------------------------------------- 1 | set notification-error-bg "#282828" # bg 2 | set notification-error-fg "#fb4934" # bright:red 3 | set notification-warning-bg "#282828" # bg 4 | set notification-warning-fg "#fabd2f" # bright:yellow 5 | set notification-bg "#282828" # bg 6 | set notification-fg "#b8bb26" # bright:green 7 | 8 | set completion-bg "#504945" # bg2 9 | set completion-fg "#ebdbb2" # fg 10 | set completion-group-bg "#3c3836" # bg1 11 | set completion-group-fg "#928374" # gray 12 | set completion-highlight-bg "#83a598" # bright:blue 13 | set completion-highlight-fg "#504945" # bg2 14 | 15 | # Define the color in index mode 16 | set index-bg "#504945" # bg2 17 | set index-fg "#ebdbb2" # fg 18 | set index-active-bg "#83a598" # bright:blue 19 | set index-active-fg "#504945" # bg2 20 | 21 | set inputbar-bg "#282828" # bg 22 | set inputbar-fg "#ebdbb2" # fg 23 | 24 | set statusbar-bg "#504945" # bg2 25 | set statusbar-fg "#ebdbb2" # fg 26 | 27 | set highlight-color "#fabd2f" # bright:yellow 28 | set highlight-active-color "#fe8019" # bright:orange 29 | 30 | set default-bg "#282828" # bg 31 | set default-fg "#ebdbb2" # fg 32 | set render-loading true 33 | set render-loading-bg "#282828" # bg 34 | set render-loading-fg "#ebdbb2" # fg 35 | 36 | # Recolor book content's color 37 | set recolor-lightcolor "#282828" # bg 38 | set recolor-darkcolor "#ebdbb2" # fg 39 | set recolor "true" 40 | set recolor-keephue "true" # keep original color 41 | -------------------------------------------------------------------------------- /nvim/lua/config/lazy.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | 3 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 4 | -- bootstrap lazy.nvim 5 | -- stylua: ignore 6 | vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) 7 | end 8 | vim.opt.rtp:prepend(vim.env.LAZY or lazypath) 9 | 10 | require("lazy").setup({ 11 | spec = { 12 | -- add LazyVim and import it's plugins 13 | { "LazyVim/LazyVim", import = "lazyvim.plugins" }, 14 | 15 | -- import any extras modules here 16 | { import = "lazyvim.plugins.extras.lang.typescript" }, 17 | { import = "lazyvim.plugins.extras.lang.tailwind" }, 18 | { import = "lazyvim.plugins.extras.lang.json" }, 19 | { import = "lazyvim.plugins.extras.lang.rust" }, 20 | { import = "lazyvim.plugins.extras.formatting.prettier" }, 21 | { import = "lazyvim.plugins.extras.linting.eslint" }, 22 | 23 | -- import/override with your plugins 24 | { import = "plugins" }, 25 | }, 26 | defaults = { 27 | -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. 28 | -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. 29 | lazy = false, 30 | -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, 31 | -- have outdated releases, which may break your Neovim install. 32 | version = false, -- always use the latest git commit 33 | -- version = "*", -- try installing the latest stable version for plugins that support semver 34 | }, 35 | install = { colorscheme = { "tokyonight", "habamax" } }, 36 | checker = { enabled = true }, -- automatically check for plugin updates 37 | performance = { 38 | rtp = { 39 | -- disable some rtp plugins 40 | disabled_plugins = { 41 | "gzip", 42 | -- "matchit", 43 | -- "matchparen", 44 | -- "netrwPlugin", 45 | "tarPlugin", 46 | "tohtml", 47 | "tutor", 48 | "zipPlugin", 49 | }, 50 | }, 51 | }, 52 | }) 53 | -------------------------------------------------------------------------------- /hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | # _ _ _ 2 | # | |__ _ _ _ __ _ __| | ___ ___| | __ 3 | # | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ / 4 | # | | | | |_| | |_) | | | | (_) | (__| < 5 | # |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\ 6 | # |___/|_| 7 | # 8 | 9 | source = ~/.config/hypr/themes/_dark.conf 10 | 11 | background { 12 | monitor = 13 | path = $bg-lock # only png supported for now 14 | } 15 | 16 | input-field { 17 | check_color = $yellow 18 | fail_color = $red 19 | inner_color = $bg 20 | font_color = $fg 21 | outer_color = $gray 22 | monitor = 23 | size = 300, 30 24 | outline_thickness = 3 25 | dots_size = 0.25 # Scale of input-field height, 0.2 - 0.8 26 | dots_spacing = 0.5 # Scale of dots' absolute size, 0.0 - 1.0 27 | dots_center = true 28 | dots_rounding = -1 # -1 default circle, -2 follow input-field rounding 29 | fade_on_empty = false 30 | fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. 31 | placeholder_text = # Text rendered in the input box when it's empty. 32 | hide_input = false 33 | rounding = 0 # -1 means complete rounding (circle/oval) 34 | fail_text = # can be set to empty 35 | fail_transition = 100 # transition time in ms between normal outer_color and fail_color 36 | fail_timeout = 500 37 | capslock_color = -1 38 | numlock_color = -1 39 | bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) 40 | invert_numlock = false # change color if numlock is off 41 | swap_font_color = false # see below 42 | position = 20, 50 43 | halign = left 44 | valign = bottom 45 | } 46 | 47 | label { 48 | monitor = 49 | color = $fg 50 | font_size = 50 51 | position = 0, 0 52 | text = cmd[update:1000] echo "$TIME" 53 | font_family = JetBrainsMono Nerd Font 54 | halign = center 55 | valign = center 56 | } 57 | 58 | label { 59 | monitor = 60 | color = $fg 61 | font_size = 20 62 | position = 20, 80 63 | text = $USER 64 | font_family = JetBrainsMono Nerd Font 65 | halign = left 66 | valign = bottom 67 | } 68 | -------------------------------------------------------------------------------- /hypr/script/rofi-clipboard.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | #// evaluate spawn position 4 | readarray -t curPos < <(hyprctl cursorpos -j | jq -r '.x,.y') 5 | readarray -t monRes < <(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width,.height,.scale,.x,.y') 6 | readarray -t offRes < <(hyprctl -j monitors | jq -r '.[] | select(.focused==true).reserved | map(tostring) | join("\n")') 7 | monRes[2]="$(echo "${monRes[2]}" | sed "s/\.//")" 8 | monRes[0]="$(( ${monRes[0]} * 100 / ${monRes[2]} ))" 9 | monRes[1]="$(( ${monRes[1]} * 100 / ${monRes[2]} ))" 10 | curPos[0]="$(( ${curPos[0]} - ${monRes[3]} ))" 11 | curPos[1]="$(( ${curPos[1]} - ${monRes[4]} ))" 12 | 13 | if [ "${curPos[0]}" -ge "$((${monRes[0]} / 2))" ] ; then 14 | x_pos="east" 15 | x_off="-$(( ${monRes[0]} - ${curPos[0]} - ${offRes[2]} ))" 16 | else 17 | x_pos="west" 18 | x_off="$(( ${curPos[0]} - ${offRes[0]} ))" 19 | fi 20 | 21 | if [ "${curPos[1]}" -ge "$((${monRes[1]} / 2))" ] ; then 22 | y_pos="south" 23 | y_off="-$(( ${monRes[1]} - ${curPos[1]} - ${offRes[3]} ))" 24 | else 25 | y_pos="north" 26 | y_off="$(( ${curPos[1]} - ${offRes[1]} ))" 27 | fi 28 | 29 | r_override="window{location:${x_pos} ${y_pos};anchor:${x_pos} ${y_pos};x-offset:${x_off}px;y-offset:${y_off}px;}" 30 | roconf="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/clipboard.rasi" 31 | 32 | #// clipboard action 33 | case "${1}" in 34 | c|-c|--copy) 35 | cliphist list | rofi -dmenu -theme-str "${r_override}" -config "${roconf}" | cliphist decode | wl-copy 36 | ;; 37 | d|-d|--delete) 38 | cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Delete...\";}" -theme-str "${r_override}" -config "${roconf}" | cliphist delete 39 | ;; 40 | w|-w|--wipe) 41 | if [ $(echo -e "Yes\nNo" | rofi -dmenu -theme-str "entry { placeholder: \"Clear Clipboard History?\";}" -theme-str "${r_override}" -config "${roconf}") == "Yes" ] ; then 42 | cliphist wipe 43 | fi 44 | ;; 45 | *) 46 | echo -e "cliphist.sh [action]" 47 | echo "c -c --copy : cliphist list and copy selected" 48 | echo "d -d --delete : cliphist list and delete selected" 49 | echo "w -w --wipe : cliphist wipe database" 50 | exit 1 51 | ;; 52 | esac 53 | -------------------------------------------------------------------------------- /fastfetch/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "logo": { 3 | "source": "$(find \"${XDG_CONFIG_HOME:-$HOME/.config}/fastfetch/pngs/\" -name \"*.png\" | sort -R | head -1)", 4 | "height": 10, 5 | "padding": { "top": 3, "left": 5 }, 6 | }, 7 | "display": { "separator": " : " }, 8 | "modules": [ 9 | "break", 10 | { 11 | "type": "os", 12 | "key": "  OS", 13 | "keyColor": "red" 14 | }, 15 | { 16 | "type": "kernel", 17 | "key": "  Kernel", 18 | "keyColor": "red" 19 | }, 20 | { 21 | "type": "packages", 22 | "key": "  Packages", 23 | "keyColor": "green" 24 | }, 25 | { 26 | "type": "display", 27 | "key": "  Display", 28 | "keyColor": "green" 29 | }, 30 | { 31 | "type": "wm", 32 | "key": "  WM", 33 | "keyColor": "yellow" 34 | }, 35 | { 36 | "type": "terminal", 37 | "key": "  Terminal", 38 | "keyColor": "yellow" 39 | }, 40 | { 41 | "type": "uptime", 42 | "key": " 󰥔 UpTime", 43 | "keyColor": "yellow" 44 | }, 45 | { 46 | "type": "custom", 47 | "format": " ──────────────────────────────── " 48 | }, 49 | { 50 | "type": "cpu", 51 | "format": "{1}", 52 | "key": "  CPU", 53 | "keyColor": "blue" 54 | }, 55 | { 56 | "type": "gpu", 57 | "key": "  GPU", 58 | "keyColor": "blue" 59 | }, 60 | { 61 | "type": "gpu", 62 | "format": "{3}", 63 | "key": "  GPU Driver", 64 | "keyColor": "magenta" 65 | }, 66 | { 67 | "type": "memory", 68 | "key": " 󰍛 Memory", 69 | "keyColor": "magenta" 70 | }, 71 | { 72 | "type": "disk", 73 | "format": "{1} / {2} ({3})", 74 | "key": "  Disk", 75 | "keyColor": "red" 76 | }, 77 | "break", 78 | { 79 | "type": "colors", 80 | "paddingLeft": 15, 81 | "symbol": "circle" 82 | } 83 | ] 84 | } 85 | -------------------------------------------------------------------------------- /rofi/wallpaper-selector.rasi: -------------------------------------------------------------------------------- 1 | @theme "~/.config/rofi/_light.rasi" 2 | 3 | // Config // 4 | configuration { 5 | modi: "drun"; 6 | show-icons: true; 7 | drun-display-format: "{name}"; 8 | font: "JetBrainsMono Nerd Font 10"; 9 | } 10 | 11 | // Main // 12 | window { 13 | enabled: true; 14 | fullscreen: false; 15 | transparency: "real"; 16 | cursor: "default"; 17 | spacing: 0em; 18 | padding: 0em; 19 | border-color: @red; 20 | background-color: @bg; 21 | border-radius: 0em; 22 | border: 0.2em; 23 | } 24 | 25 | mainbox { 26 | enabled: true; 27 | orientation: horizontal; 28 | children: [ "frame" ]; 29 | background-color: transparent; 30 | } 31 | 32 | frame { 33 | children: [ "listview" ]; 34 | background-color: transparent; 35 | padding: 0em; 36 | } 37 | 38 | // Lists // 39 | listview { 40 | enabled: true; 41 | spacing: 2.5em; 42 | padding: 2.5em; 43 | columns: 4; 44 | lines: 3; 45 | dynamic: false; 46 | fixed-height: false; 47 | fixed-columns: true; 48 | reverse: false; 49 | cursor: "default"; 50 | background-color: transparent; 51 | text-color: @fg; 52 | } 53 | 54 | // Elements // 55 | element { 56 | background-color: transparent; 57 | border-color: transparent; 58 | enabled: true; 59 | cursor: pointer; 60 | padding: -5em; 61 | border: 0em; 62 | orientation: vertical; 63 | } 64 | 65 | element selected { 66 | border-color: @red; 67 | border: 0.2em; 68 | } 69 | 70 | element-icon { 71 | cursor: inherit; 72 | size: 15em; 73 | background-color: transparent; 74 | expand: false; 75 | } 76 | -------------------------------------------------------------------------------- /waybar/style.css: -------------------------------------------------------------------------------- 1 | @import "_dark.css"; 2 | 3 | * { 4 | padding: 0; 5 | margin: 0; 6 | font-family: "JetBrains Mono Nerd Font"; 7 | font-size: 12px; 8 | margin-top: 1px; 9 | } 10 | 11 | /* ------ Cpu Usage, Temperature, and Memory ------ */ 12 | #cpu, 13 | #temperature, 14 | #memory { 15 | background-color: @bg; 16 | } 17 | 18 | #cpu { 19 | color: @fg; 20 | } 21 | 22 | #memory { 23 | color: @fg; 24 | } 25 | 26 | #temperature { 27 | color: @fg; 28 | } 29 | 30 | /* ------ Window Title ------ */ 31 | #window { 32 | color: @fg; 33 | background-color: @bg; 34 | border-radius: 0px; 35 | padding-right: 4px; 36 | } 37 | 38 | window#waybar { 39 | background-color: rgba(0, 0, 0, 0); 40 | border-bottom: 0px solid #ffffff; 41 | background: transparent; 42 | transition-property: background-color; 43 | transition-duration: .5s; 44 | } 45 | 46 | /* ----------------------------------------------------- 47 | * Workspaces 48 | * ----------------------------------------------------- */ 49 | 50 | #workspaces button.empty { 51 | color: @fg; 52 | } 53 | #workspaces button { 54 | border-radius: 0px; 55 | padding: 0; 56 | margin: 0; 57 | background-color: @bg; 58 | color: @fg; 59 | } 60 | 61 | #workspaces button:hover { 62 | text-decoration: underline; 63 | color: @red; 64 | } 65 | 66 | /* ------ Pulseaudio ------ */ 67 | #pulseaudio { 68 | color: @fg; 69 | background-color: @bg; 70 | padding: 2px 5px; 71 | } 72 | 73 | /* ------ Backlight ------ */ 74 | #backlight { 75 | color: @fg; 76 | background-color: @bg; 77 | padding: 2px 5px; 78 | } 79 | 80 | /* ------ Network ------ */ 81 | #network { 82 | color: @fg; 83 | background-color: @bg; 84 | padding: 2px 5px; 85 | } 86 | 87 | /* ------ Battery ------ */ 88 | #battery { 89 | color: @fg; 90 | background-color: @bg; 91 | padding: 2px 5px; 92 | } 93 | 94 | /* ------ Clock ------ */ 95 | #clock { 96 | padding-left: 10px; 97 | color: @fg; 98 | border-radius: 0px; 99 | background-color: @bg; 100 | font-weight: bold; 101 | font-size: 12px; 102 | } 103 | 104 | /* ------ System Tray ------ */ 105 | #tray { 106 | background-color: @bg; 107 | padding: 2px 5px; 108 | } 109 | 110 | /* ------ Custom Modules ------ */ 111 | #custom-warp { 112 | color: @fg; 113 | background-color: @bg; 114 | padding: 2px 5px; 115 | } 116 | 117 | #custom-power { 118 | color: @fg; 119 | background-color: @bg; 120 | } 121 | 122 | #custom-arch { 123 | color: @fg; 124 | background-color: @bg; 125 | } 126 | 127 | #custom-arch:hover { 128 | color: @red; 129 | } 130 | 131 | #custom-r_end { 132 | border-radius: 0px; 133 | margin-right: 7px; 134 | padding-right: 0px; 135 | background-color: @bg; 136 | } 137 | 138 | #custom-l_end { 139 | border-radius: 0px; 140 | margin-left: 7px; 141 | padding-left: 0px; 142 | background-color: @bg; 143 | } 144 | -------------------------------------------------------------------------------- /starship/starship.toml: -------------------------------------------------------------------------------- 1 | [line_break] 2 | disabled = true 3 | 4 | [character] 5 | success_symbol = "[ᐉ](green bold)" 6 | error_symbol = "[ᐉ](red)" 7 | vicmd_symbol = "[ᐉ](yellow)" 8 | 9 | [directory] 10 | format = "[▉]($style)[ $path ](inverted)[ ]($style)" 11 | style = "bg:bg fg:none" 12 | truncation_length=1 13 | 14 | [git_branch] 15 | symbol = " " 16 | format = "[ \ue725 $branch ](inverted)($style)" 17 | style = "bg:bg fg:fg" 18 | 19 | [git_status] 20 | disabled = false 21 | format = '[\[$all_status$ahead_behind\]](inverted)($style) ' 22 | style = "bg:bg fg:fg" 23 | 24 | [aws] 25 | symbol = " " 26 | 27 | [buf] 28 | symbol = " " 29 | 30 | [c] 31 | symbol = " " 32 | 33 | [conda] 34 | symbol = " " 35 | 36 | [crystal] 37 | symbol = " " 38 | 39 | [dart] 40 | symbol = " " 41 | 42 | [docker_context] 43 | symbol = " " 44 | 45 | [elixir] 46 | symbol = " " 47 | 48 | [elm] 49 | symbol = " " 50 | 51 | [fennel] 52 | symbol = " " 53 | 54 | [fossil_branch] 55 | symbol = " " 56 | 57 | [golang] 58 | symbol = " " 59 | 60 | [guix_shell] 61 | symbol = " " 62 | 63 | [haskell] 64 | symbol = " " 65 | 66 | [haxe] 67 | symbol = " " 68 | 69 | [hg_branch] 70 | symbol = " " 71 | 72 | [hostname] 73 | ssh_symbol = " " 74 | 75 | [java] 76 | symbol = " " 77 | 78 | [julia] 79 | symbol = " " 80 | 81 | [kotlin] 82 | symbol = " " 83 | 84 | [lua] 85 | symbol = " " 86 | 87 | [memory_usage] 88 | symbol = "󰍛 " 89 | 90 | [meson] 91 | symbol = "󰔷 " 92 | 93 | [nim] 94 | symbol = "󰆥 " 95 | 96 | [nix_shell] 97 | symbol = " " 98 | 99 | [nodejs] 100 | symbol = " " 101 | format = "[$symbol($version )]($style)" 102 | 103 | [ocaml] 104 | symbol = " " 105 | 106 | [os.symbols] 107 | Alpaquita = " " 108 | Alpine = " " 109 | AlmaLinux = " " 110 | Amazon = " " 111 | Android = " " 112 | Arch = " " 113 | Artix = " " 114 | CentOS = " " 115 | Debian = " " 116 | DragonFly = " " 117 | Emscripten = " " 118 | EndeavourOS = " " 119 | Fedora = " " 120 | FreeBSD = " " 121 | Garuda = "󰛓 " 122 | Gentoo = " " 123 | HardenedBSD = "󰞌 " 124 | Illumos = "󰈸 " 125 | Kali = " " 126 | Linux = " " 127 | Mabox = " " 128 | Macos = " " 129 | Manjaro = " " 130 | Mariner = " " 131 | MidnightBSD = " " 132 | Mint = " " 133 | NetBSD = " " 134 | NixOS = " " 135 | OpenBSD = "󰈺 " 136 | openSUSE = " " 137 | OracleLinux = "󰌷 " 138 | Pop = " " 139 | Raspbian = " " 140 | Redhat = " " 141 | RedHatEnterprise = " " 142 | RockyLinux = " " 143 | Redox = "󰀘 " 144 | Solus = "󰠳 " 145 | SUSE = " " 146 | Ubuntu = " " 147 | Unknown = " " 148 | Void = " " 149 | Windows = "󰍲 " 150 | 151 | [package] 152 | symbol = "󰏗 " 153 | format = "" 154 | 155 | [perl] 156 | symbol = " " 157 | 158 | [php] 159 | symbol = " " 160 | 161 | [pijul_channel] 162 | symbol = " " 163 | 164 | [python] 165 | symbol = " " 166 | 167 | [rlang] 168 | symbol = "󰟔 " 169 | 170 | [ruby] 171 | symbol = " " 172 | 173 | [rust] 174 | symbol = " " 175 | format = '[$symbol($version )]($style)' 176 | 177 | [scala] 178 | symbol = " " 179 | 180 | [swift] 181 | symbol = " " 182 | 183 | [zig] 184 | symbol = " " -------------------------------------------------------------------------------- /rofi/clipboard.rasi: -------------------------------------------------------------------------------- 1 | @theme "~/.config/rofi/_dark.rasi" 2 | 3 | // Config // 4 | configuration { 5 | modi: "drun"; 6 | show-icons: false; 7 | font: "JetBrainsMono Nerd Font 10"; 8 | } 9 | 10 | // Main // 11 | window { 12 | width: 25em; 13 | height: 28em; 14 | transparency: "real"; 15 | fullscreen: false; 16 | enabled: true; 17 | cursor: "default"; 18 | spacing: 0em; 19 | padding: 0em; 20 | border-color: @red; 21 | background-color: @bg; 22 | border-radius: 0em; 23 | border: 0.2em; 24 | } 25 | 26 | mainbox { 27 | enabled: true; 28 | spacing: 0em; 29 | padding: 0.5em; 30 | orientation: vertical; 31 | children: [ "inputbar" , "listbox" ]; 32 | background-color: transparent; 33 | } 34 | 35 | // Inputs // 36 | inputbar { 37 | enabled: true; 38 | padding: 0.5em; 39 | children: [ "entry" ]; 40 | background-color: @bg; 41 | expand: false; 42 | } 43 | 44 | entry { 45 | enabled: true; 46 | padding: 0.5em; 47 | text-color: @bg; 48 | background-color: @green; 49 | placeholder: "Search clipboard..."; 50 | } 51 | 52 | // Lists // 53 | listbox { 54 | spacing: 0em; 55 | padding: 0em; 56 | orientation: vertical; 57 | children: [ "dummy" , "listview" , "dummy" ]; 58 | background-color: transparent; 59 | } 60 | 61 | listview { 62 | enabled: true; 63 | padding: 0.5em; 64 | columns: 1; 65 | lines: 10; 66 | cycle: true; 67 | fixed-height: true; 68 | fixed-columns: false; 69 | expand: false; 70 | cursor: "default"; 71 | background-color: transparent; 72 | text-color: @fg; 73 | } 74 | 75 | dummy { 76 | spacing: 0em; 77 | padding: 0em; 78 | background-color: transparent; 79 | } 80 | 81 | // Elements // 82 | element { 83 | enabled: true; 84 | padding: 0.5em; 85 | cursor: pointer; 86 | background-color: transparent; 87 | text-color: @fg; 88 | } 89 | 90 | element selected.normal { 91 | background-color: @fg; 92 | text-color: @bg; 93 | border-radius: 0em; 94 | } 95 | 96 | element-text { 97 | vertical-align: 0.0; 98 | horizontal-align: 0.0; 99 | cursor: inherit; 100 | background-color: transparent; 101 | text-color: inherit; 102 | } 103 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Arch Linux Dotfiles

2 | 3 |
4 | Starter - Essential - Issues 5 |
6 | 7 | 8 |

Themes

9 | 10 | - **Dark** 11 | 12 | img 13 | 14 | - **Light** 15 | 16 | img 17 | 18 | 19 | --- 20 | 21 |

1. Starting packages

22 | 23 | ```bash 24 | # Installing essential packages 25 | sudo pacman -S wget unzip polkit-gnome pacman-contrib git neovim 26 | sudo pacman -S udiskie 27 | sudo pacman -S brightnessctl 28 | sudo pacman -S pavucontrol pamixer 29 | sudo pacman -S network-manager-applet nm-connection-editor 30 | sudo pacman -S bluez bluez-utils blueman 31 | 32 | # Installing yay 33 | mkdir Repos && cd Repos 34 | git clone https://aur.archlinux.org/yay.git 35 | cd yay 36 | makepkg -si 37 | 38 | # Installing hyprland & fonts, themes 39 | yay -S bibata-cursor-theme-bin ttf-maple 40 | sudo pacman -S hyprland hyprlock hyprpaper kitty ttf-jetbrains-mono-nerd xdg-desktop-portal-hyprland 41 | ``` 42 | 43 |

2. Setting up essential packages & softwares

44 | 45 | 46 | ```bash 47 | sudo pacman -S lazygit 48 | 49 | sudo pacman -S fastfetch imagemagick 50 | 51 | sudo pacman -S thunar gvfs tumbler ffmpegthumbnailer 52 | 53 | yay -S visual-studio-code-bin 54 | code --install-extension jdinhlife.gruvbox 55 | 56 | sudo pacman -S firefox #https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/autohide_bookmarks_and_main_toolbars.css 57 | 58 | sudo pacman -S waybar 59 | 60 | yay -S rofi-lbonn-wayland-git 61 | 62 | sudo pacman -S starship 63 | echo "export STARSHIP_CONFIG=~/.config/starship/starship.toml" >> ~/.bashrc 64 | echo "eval \"\$(starship init bash)\"" >> ~/.bashrc 65 | rm ~/.config/starship.toml 66 | 67 | sudo pacman -S tmux 68 | 69 | sudo pacman -S slurp swappy cliphist 70 | yay -S grimblast-git 71 | 72 | sudo pacman -S nwg-look 73 | 74 | sudo pacman -S timeshift 75 | sudo -E timeshift-launcher 76 | sudo nvim /usr/share/applications/timeshift-gtk.desktop #fixing launcher 77 | 78 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 79 | 80 | yay -S zathura-git zathura-pdf-mupdf-git 81 | 82 | sudo pacman -S imv mpv 83 | ``` 84 | 85 |
86 | Setting up Warp VPN 87 | 88 | ```bash 89 | yay -S cloudflare-warp-bin 90 | sudo systemctl enable warp-svc 91 | sudo systemctl start warp-svc 92 | warp-cli register 93 | warp-cli connect 94 | ``` 95 | 96 |
97 | 98 | 99 |

3. Resolve issues might happen

100 | 101 |
102 | NVIDIA gpu 103 | 104 | - Checking out . 105 | - Modify "MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)" in /etc/mkinitcpio.conf. 106 | - Add "nvidia_drm.modeset=1" in GRUB_CMDLINE_LINUX_DEFAULT and run grub-mkconfig. 107 | - Add "source = ~/.config/hypr/nvidia.conf" in hyprland.conf 108 | ```bash 109 | yay -S linux-headers nvidia-dkms qt5-wayland qt5ct libva libva-nvidia-driver-git 110 | 111 | ``` 112 | 113 |
114 | 115 |
116 | Cursor theme not consistent 117 | 118 | Checking and apply system-wide change. 119 | ```bash 120 | mkdir ~/.local/share/icons 121 | ln --symbolic /usr/share/icons/Bibata-Modern-Ice/ ~/.local/share/icons/default 122 | ``` 123 | 124 |
125 | -------------------------------------------------------------------------------- /hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | 2 | #   ░▒▒▒░░░░░▓▓          ___________ 3 | # ░░▒▒▒░░░░░▓▓        //___________/ 4 | # ░░▒▒▒░░░░░▓▓     _   _ _    _ _____ 5 | # ░░▒▒░░░░░▓▓▓▓▓▓ | | | | |  | |  __/ 6 | # ░▒▒░░░░▓▓   ▓▓ | |_| | |_/ /| |___ 7 | #  ░▒▒░░▓▓   ▓▓   \__  |____/ |____/ 8 | #    ░▒▓▓   ▓▓  //____/ 9 | 10 | 11 | $scriptPath = $HOME/.config/hypr/script # set scripts path 12 | 13 | 14 | # █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ 15 | # █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ 16 | 17 | # See https://wiki.hyprland.org/Configuring/Monitors/ 18 | 19 | # monitor = HDMI-A-1,1920x1080@60,0x0,1 20 | monitor = ,preferred,auto,1 21 | 22 | 23 | # █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█ 24 | # █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█ 25 | 26 | # See https://wiki.hyprland.org/Configuring/Keywords/ 27 | 28 | exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & # authentication dialogue for GUI apps 29 | exec-once = $scriptPath/resetxdgportal.sh # reset XDPH for screenshare 30 | exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH 31 | exec-once = dbus-update-activation-environment --systemd --all # for XDPH 32 | exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH 33 | exec-once = blueman-applet # systray app for Bluetooth 34 | exec-once = udiskie --no-automount --smart-tray # front-end that allows to manage removable media 35 | exec-once = nm-applet --indicator # systray app for Network/Wifi 36 | # exec-once = dunst # start notification demon 37 | exec-once = wl-paste --type text --watch cliphist store # clipboard store text data 38 | exec-once = wl-paste --type image --watch cliphist store # clipboard store image data 39 | # exec-once = swww-daemon # start wallpaper daemon 40 | exec-once = hyprpaper 41 | # exec-once = ags & 42 | exec-once = waybar 43 | 44 | exec-once = $scriptPath/bg-battery-check.sh 45 | 46 | # █▀▀ █▄░█ █░█ 47 | # ██▄ █░▀█ ▀▄▀ 48 | 49 | # See https://wiki.hyprland.org/Configuring/Environment-variables/ 50 | 51 | env = PATH,$PATH:$HOME/.bun/bin:$scriptPath 52 | env = XDG_CURRENT_DESKTOP,Hyprland 53 | env = XDG_SESSION_TYPE,wayland 54 | env = XDG_SESSION_DESKTOP,Hyprland 55 | env = QT_QPA_PLATFORM,wayland 56 | env = QT_QPA_PLATFORMTHEME,qt6ct 57 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 58 | env = QT_AUTO_SCREEN_SCALE_FACTOR,1 59 | env = MOZ_ENABLE_WAYLAND,1 60 | env = GDK_SCALE,1 61 | env = XCURSOR_SIZE,14 62 | env = ELECTRON_OZONE_PLATFORM_HINT,auto 63 | 64 | # env = GTK_IM_MODULE,fcitx 65 | # env = QT_IM_MODULE,fcitx 66 | 67 | # █ █▄░█ █▀█ █░█ ▀█▀ 68 | # █ █░▀█ █▀▀ █▄█ ░█░ 69 | 70 | # See https://wiki.hyprland.org/Configuring/Variables/ 71 | 72 | input { 73 | kb_layout = us 74 | follow_mouse = 1 75 | 76 | touchpad { 77 | natural_scroll = yes 78 | } 79 | 80 | sensitivity = 0 81 | force_no_accel = 1 82 | } 83 | 84 | # See https://wiki.hyprland.org/Configuring/Keywords/#executing 85 | 86 | device { 87 | name = epic mouse V1 88 | sensitivity = -0.5 89 | } 90 | 91 | # See https://wiki.hyprland.org/Configuring/Variables/ 92 | 93 | gestures { 94 | workspace_swipe = true 95 | workspace_swipe_fingers = 3 96 | } 97 | 98 | 99 | # █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀ 100 | # █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█ 101 | 102 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ 103 | 104 | dwindle { 105 | pseudotile = yes 106 | preserve_split = yes 107 | force_split = 2 108 | } 109 | 110 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ 111 | 112 | master { 113 | new_status = master 114 | } 115 | 116 | 117 | # █▀▄▀█ █ █▀ █▀▀ 118 | # █░▀░█ █ ▄█ █▄▄ 119 | 120 | # See https://wiki.hyprland.org/Configuring/Variables/ 121 | 122 | misc { 123 | vrr = 0 124 | disable_hyprland_logo = true 125 | disable_splash_rendering = true 126 | force_default_wallpaper = 0 127 | } 128 | 129 | xwayland { 130 | force_zero_scaling = true 131 | } 132 | 133 | 134 | # █▀ █▀█ █░█ █▀█ █▀▀ █▀▀ 135 | # ▄█ █▄█ █▄█ █▀▄ █▄▄ ██▄ 136 | 137 | source = ~/.config/hypr/nvidia.conf 138 | source = ~/.config/hypr/animations.conf 139 | source = ~/.config/hypr/keybindings.conf 140 | source = ~/.config/hypr/windowrules.conf 141 | source = ~/.config/hypr/themes/theme.conf 142 | -------------------------------------------------------------------------------- /rofi/powermenu.rasi: -------------------------------------------------------------------------------- 1 | @import "_dark.rasi" 2 | 3 | * { 4 | font: "JetBrains Mono Nerd Font 10"; 5 | } 6 | 7 | configuration { 8 | show-icons: false; 9 | } 10 | 11 | /*****----- Main Window -----*****/ 12 | window { 13 | width: 800px; 14 | x-offset: 0px; 15 | y-offset: 0px; 16 | enabled: true; 17 | margin: 0px; 18 | padding: 0px; 19 | border: 0.1em solid; 20 | border-radius: 0px; 21 | border-color: @red; 22 | background-color: @bg; 23 | } 24 | 25 | /*****----- Main Box -----*****/ 26 | mainbox { 27 | enabled: true; 28 | spacing: 15px; 29 | margin: 0px; 30 | padding: 30px; 31 | border: 0px solid; 32 | border-radius: 0px; 33 | border-color: @red; 34 | background-color: transparent; 35 | children: [ "inputbar", "listview" ]; 36 | } 37 | 38 | /*****----- Inputbar -----*****/ 39 | inputbar { 40 | enabled: true; 41 | spacing: 15px; 42 | margin: 0px; 43 | padding: 0px; 44 | border: 0px; 45 | border-radius: 0px; 46 | border-color: @red; 47 | background-color: transparent; 48 | text-color: @fg; 49 | children: [ "textbox-prompt-colon", "prompt"]; 50 | } 51 | 52 | dummy { 53 | background-color: transparent; 54 | } 55 | 56 | textbox-prompt-colon { 57 | enabled: true; 58 | expand: false; 59 | str: ""; 60 | padding: 12px 16px; 61 | border-radius: 0px; 62 | background-color: @red; 63 | text-color: @bg; 64 | } 65 | prompt { 66 | enabled: true; 67 | padding: 12px; 68 | border-radius: 0px; 69 | background-color: @green; 70 | text-color: @bg; 71 | } 72 | 73 | /*****----- Message -----*****/ 74 | message { 75 | enabled: true; 76 | margin: 0px; 77 | padding: 12px; 78 | border: 0px solid; 79 | border-radius: 0px; 80 | border-color: @red; 81 | background-color: @bg; 82 | text-color: @fg; 83 | } 84 | textbox { 85 | background-color: inherit; 86 | text-color: inherit; 87 | vertical-align: 0.5; 88 | horizontal-align: 0.5; 89 | placeholder-color: @fg; 90 | blink: true; 91 | markup: true; 92 | } 93 | error-message { 94 | padding: 12px; 95 | border: 0px solid; 96 | border-radius: 0px; 97 | border-color: @red; 98 | background-color: @bg; 99 | text-color: @fg; 100 | } 101 | 102 | /*****----- Listview -----*****/ 103 | listview { 104 | enabled: true; 105 | columns: 5; 106 | lines: 1; 107 | cycle: true; 108 | dynamic: true; 109 | scrollbar: false; 110 | layout: vertical; 111 | reverse: false; 112 | fixed-height: true; 113 | fixed-columns: true; 114 | 115 | spacing: 15px; 116 | margin: 0px; 117 | padding: 0px; 118 | border: 0px solid; 119 | border-radius: 0px; 120 | border-color: @red; 121 | background-color: transparent; 122 | text-color: @fg; 123 | cursor: "default"; 124 | } 125 | 126 | /*****----- Elements -----*****/ 127 | element { 128 | enabled: true; 129 | spacing: 0px; 130 | margin: 0px; 131 | padding: 40px 10px; 132 | border: 0px solid; 133 | border-radius: 0px; 134 | border-color: @red; 135 | background-color: @purple; 136 | text-color: @fg; 137 | cursor: pointer; 138 | } 139 | element-text { 140 | font: "feather bold 32"; 141 | background-color: transparent; 142 | text-color: inherit; 143 | cursor: inherit; 144 | vertical-align: 0.5; 145 | horizontal-align: 0.5; 146 | } 147 | element selected.normal { 148 | background-color: @fg; 149 | text-color: @bg; 150 | } -------------------------------------------------------------------------------- /rofi/app-launcher.rasi: -------------------------------------------------------------------------------- 1 | @theme "~/.config/rofi/_dark.rasi" 2 | 3 | // Config // 4 | configuration { 5 | modi: "drun,filebrowser,window,run"; 6 | show-icons: true; 7 | display-drun: " "; 8 | display-run: " "; 9 | display-filebrowser: " "; 10 | display-window: " "; 11 | drun-display-format: "{name}"; 12 | window-format: "{w}{t}"; 13 | font: "JetBrainsMono Nerd Font 12"; 14 | } 15 | 16 | // Main // 17 | window { 18 | height: 20em; 19 | width: 35em; 20 | transparency: "real"; 21 | fullscreen: false; 22 | enabled: true; 23 | cursor: "default"; 24 | spacing: 0em; 25 | padding: 0em; 26 | border-color: @red; 27 | background-color: @bg; 28 | border-radius: 0em; 29 | border: 0.1em; 30 | } 31 | mainbox { 32 | enabled: true; 33 | spacing: 0em; 34 | padding: 0em; 35 | orientation: vertical; 36 | children: [ "choicebox" , "listbox" ]; 37 | background-color: @bg; 38 | } 39 | 40 | choicebox { 41 | enabled: true; 42 | spacing: 0em; 43 | padding: 0em; 44 | orientation: horizontal; 45 | children: [ "inputbar", "mode-switcher" ]; 46 | background-color: transparent; 47 | expand: false; 48 | } 49 | 50 | // Inputs // 51 | inputbar { 52 | enabled: true; 53 | width: 18.5em; 54 | padding: 1em; 55 | spacing: 0em; 56 | children: [ "entry" ]; 57 | background-color: transparent; 58 | expand: false; 59 | } 60 | 61 | entry { 62 | enabled: true; 63 | padding: 0.5em; 64 | text-color: @bg; 65 | background-color: @green; 66 | vertical-align: 0.5; 67 | placeholder: ""; 68 | } 69 | 70 | // Modes // 71 | mode-switcher { 72 | width: 15em; 73 | orientation: horizontal; 74 | enabled: true; 75 | padding: 1em; 76 | spacing: 0em; 77 | background-color: transparent; 78 | expand: false; 79 | } 80 | button { 81 | padding: 0em; 82 | cursor: pointer; 83 | border-radius: 0em; 84 | background-color: @bg; 85 | text-color: @fg; 86 | } 87 | button selected { 88 | background-color: @fg; 89 | text-color: @bg; 90 | border: 0 0 0.1em 0; 91 | border-color: @red; 92 | border-radius: 0; 93 | } 94 | 95 | 96 | // Lists // 97 | listbox { 98 | padding: 0em; 99 | spacing: 0em; 100 | orientation: vertical; 101 | children: [ "dummy" , "listview" , "dummy" ]; 102 | background-color: transparent; 103 | } 104 | listview { 105 | padding: 1em; 106 | spacing: 0em; 107 | enabled: true; 108 | columns: 2; 109 | lines: 7; 110 | cycle: true; 111 | dynamic: true; 112 | scrollbar: false; 113 | layout: vertical; 114 | reverse: false; 115 | expand: false; 116 | fixed-height: true; 117 | fixed-columns: true; 118 | cursor: "default"; 119 | background-color: transparent; 120 | text-color: @fg; 121 | } 122 | dummy { 123 | background-color: transparent; 124 | } 125 | 126 | 127 | // Elements // 128 | element { 129 | orientation: horizontal; 130 | enabled: true; 131 | spacing: 2.5em; 132 | padding: 0.5em; 133 | cursor: pointer; 134 | background-color: transparent; 135 | text-color: @fg; 136 | orientation: horizontal; 137 | } 138 | element selected.normal { 139 | background-color: @fg; 140 | text-color: @bg; 141 | border-radius: 0em; 142 | } 143 | element-icon { 144 | size: 1em; 145 | cursor: inherit; 146 | background-color: transparent; 147 | } 148 | element-text { 149 | vertical-align: 0.5; 150 | horizontal-align: 0; 151 | cursor: inherit; 152 | text-color: inherit; 153 | background-color: transparent; 154 | } 155 | -------------------------------------------------------------------------------- /hypr/windowrules.conf: -------------------------------------------------------------------------------- 1 | 2 | # █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀ 3 | # ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█ 4 | 5 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ 6 | 7 | $active_opa = 1.0 8 | $inactive_opa = 1.0 9 | $fullscreen_opa = 1.0 10 | $floating_opa = 1.0 11 | 12 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:(.*) 13 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,floating:1 14 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(firefox)$ 15 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Brave)$ 16 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Brave-browser)$ 17 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Steam)$ 18 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(steam)$ 19 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(steamwebhelper)$ 20 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Spotify)$ 21 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,initialTitle:^(Spotify Free)$ 22 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(code-oss)$ 23 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Code)$ 24 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(code-url-handler)$ 25 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(code-insiders-url-handler)$ 26 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(kitty)$ 27 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(org.kde.dolphin)$ 28 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(org.kde.ark)$ 29 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(nwg-look)$ 30 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(qt5ct)$ 31 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(qt6ct)$ 32 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(.hunar)(.*)$ 33 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,title:^(.hunar)(.*)$ 34 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Chromium)$ 35 | 36 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk 37 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(com.obsproject.Studio)$ # Obs-Qt 38 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(gnome-boxes)$ # Boxes-Gtk 39 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(discord)$ # Discord-Electron 40 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(WebCord)$ # WebCord-Electron 41 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(ArmCord)$ # ArmCord-Electron 42 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(yad)$ # Protontricks-Gtk 43 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(Signal)$ # Signal-Gtk 44 | 45 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(pavucontrol)$ 46 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(blueman-manager)$ 47 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(nm-applet)$ 48 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(nm-connection-editor)$ 49 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(org.kde.polkit-kde-authentication-agent-1)$ 50 | 51 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(org.freedesktop.impl.portal.desktop.gtk)$ 52 | windowrulev2 = opacity $active_opa $inactive_opa $fullscreen_opa,class:^(org.freedesktop.impl.portal.desktop.hyprland)$ 53 | 54 | windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$ 55 | windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$ 56 | windowrulev2 = float,title:^(Picture-in-Picture)$ 57 | windowrulev2 = float,class:^(firefox)$,title:^(Library)$ 58 | windowrulev2 = float,class:^(vlc)$ 59 | windowrulev2 = float,class:^(qt5ct)$ 60 | windowrulev2 = float,class:^(qt6ct)$ 61 | windowrulev2 = float,class:^(nwg-look)$ 62 | windowrulev2 = float,class:^(org.kde.ark)$ 63 | windowrulev2 = float,class:^(Signal)$ # Signal-Gtk 64 | windowrulev2 = float,class:^(yad)$ # Protontricks-Gtk 65 | windowrulev2 = float,class:^(eog)$ # Imageviewer-Gtk 66 | windowrulev2 = float,class:^(pavucontrol)$ 67 | windowrulev2 = float,class:^(blueman-manager)$ 68 | windowrulev2 = float,class:^(nm-applet)$ 69 | windowrulev2 = float,class:^(nm-connection-editor)$ 70 | windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ 71 | windowrulev2 = float,class:^(mpv)$ 72 | windowrulev2 = float,class:^(imv)$ 73 | windowrulev2 = float,class:^(timeshift)(.*)$ 74 | windowrulev2 = float,title:^(timeshift)$ 75 | windowrulev2 = float,class:^(Neovide)$ 76 | windowrulev2 = float,class:(.*)(zathura)$ 77 | windowrulev2 = float,class:^(calibre-ebook-viewer)$ 78 | windowrulev2 = float,class:^(.*steam.*)$ 79 | windowrulev2 = float,class:^(agscomp)$ 80 | 81 | windowrulev2 = center(1),class:(.*) 82 | 83 | windowrulev2 = size 50% 50%, floating:1 84 | windowrulev2 = size 50% 50%,class:^(nwg-look)$ 85 | windowrulev2 = size 50% 90%,class:(.*)(zathura)$ 86 | windowrulev2 = size 50% 90%,class:^(calibre-ebook-viewer)$ 87 | 88 | # █░░ ▄▀█ █▄█ █▀▀ █▀█   █▀█ █░█ █░░ █▀▀ █▀ 89 | # █▄▄ █▀█ ░█░ ██▄ █▀▄   █▀▄ █▄█ █▄▄ ██▄ ▄█ 90 | 91 | layerrule = blur,rofi 92 | layerrule = ignorezero,rofi 93 | layerrule = blur,notifications 94 | layerrule = ignorezero,notifications 95 | layerrule = blur,logout_dialog 96 | -------------------------------------------------------------------------------- /hypr/keybindings.conf: -------------------------------------------------------------------------------- 1 | 2 | # █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀ 3 | # █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█ 4 | 5 | # See https://wiki.hyprland.org/Configuring/Keywords/ 6 | # & https://wiki.hyprland.org/Configuring/Binds/ 7 | 8 | # Main modifier 9 | $mainMod = Super # super / meta / windows key 10 | 11 | # Assign apps 12 | $term = kitty 13 | $editor = code --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform-hint=auto --enable-wayland-ime 14 | $file = thunar 15 | $browser = firefox 16 | 17 | # Window/Session actions 18 | bind = $mainMod, Q, killactive, # kill active windows 19 | bind = $mainMod, Delete, exit, # kill hyprland session 20 | bind = $mainMod, W, togglefloating, # toggle the window between focus and float 21 | bind = $mainMod, W, centerwindow, # center window after toggle to float 22 | bind = $mainMod, D, centerwindow, # center window 23 | bind = $mainMod, G, togglegroup, # toggle the window between focus and group 24 | bind = , F11, fullscreen, # toggle the window between focus and fullscreen 25 | bind = $mainMod, Backspace, exec, $scriptPath/rofi-powermenu.sh# launch logout menu 26 | bind = Ctrl, Escape, exec, killall waybar || waybar # toggle waybar 27 | # bind = Shift, Escape, exec, ags -q; ags # toggle ags 28 | 29 | # Application shortcuts 30 | bind = $mainMod, R, exec, $term # launch terminal emulator 31 | bind = $mainMod, E, exec, $file # launch file manager 32 | bind = $mainMod, C, exec, $editor # launch text editor 33 | bind = $mainMod, F, exec, $browser # launch web browser 34 | 35 | # Rofi menus 36 | bind = $mainMod, A, exec, pkill -x rofi || $scriptPath/rofi-app-launcher.sh d # launch application launcher 37 | bind = $mainMod, Tab, exec, pkill -x rofi || $scriptPath/rofi-app-launcher.sh w # launch window switcher 38 | bind = $mainMod+Shift, E, exec, pkill -x rofi || $scriptPath/rofi-app-launcher.sh f # launch file explorer 39 | 40 | # Fn key 41 | bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% 42 | bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- 43 | bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% 44 | bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% 45 | bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle 46 | bind = , XF86AudioPlay, exec, playerctl play-pause 47 | bind = , XF86AudioPause, exec, playerctl pause 48 | bind = , XF86AudioNext, exec, playerctl next 49 | bind = , XF86AudioPrev, exec, playerctl previous 50 | bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle 51 | 52 | # Custom scripts 53 | bind = $mainMod, P, exec, $scriptPath/screenshot.sh s # partial screenshot capture 54 | bind = $mainMod+Ctrl, P, exec, $scriptPath/screenshot.sh sf # partial screenshot capture (frozen screen) 55 | bind = $mainMod+Shift, P, exec, $scriptPath/screenshot.sh m # monitor screenshot capture 56 | bind = , Print, exec, $scriptPath/screenshot.sh p # all monitors screenshot capture 57 | bind = $mainMod, V, exec, pkill -x rofi || $scriptPath/rofi-clipboard.sh c # launch clipboard 58 | 59 | # Move/Change window focus 60 | bind = $mainMod, H, movefocus, l 61 | bind = $mainMod, L, movefocus, r 62 | bind = $mainMod, K, movefocus, u 63 | bind = $mainMod, J, movefocus, d 64 | bind = Alt, Tab, movefocus, d 65 | 66 | # Switch workspaces 67 | bind = $mainMod, 1, workspace, 1 68 | bind = $mainMod, 2, workspace, 2 69 | bind = $mainMod, 3, workspace, 3 70 | bind = $mainMod, 4, workspace, 4 71 | bind = $mainMod, 5, workspace, 5 72 | bind = $mainMod, 6, workspace, 6 73 | bind = $mainMod, 7, workspace, 7 74 | bind = $mainMod, 8, workspace, 8 75 | bind = $mainMod, 9, workspace, 9 76 | 77 | # Switch workspaces to a relative workspace 78 | bind = $mainMod+Ctrl, Right, workspace, r+1 79 | bind = $mainMod+Ctrl, Left, workspace, r-1 80 | bind = $mainMod+Ctrl, Down, workspace, empty # Move to the first empty workspace 81 | 82 | # Resize windows 83 | binde = $mainMod+Shift, L, resizeactive, 30 0 84 | binde = $mainMod+Shift, H, resizeactive, -30 0 85 | binde = $mainMod+Shift, K, resizeactive, 0 -30 86 | binde = $mainMod+Shift, J, resizeactive, 0 30 87 | 88 | # Move focused window to a workspace 89 | bind = $mainMod+Shift, 1, movetoworkspace, 1 90 | bind = $mainMod+Shift, 2, movetoworkspace, 2 91 | bind = $mainMod+Shift, 3, movetoworkspace, 3 92 | bind = $mainMod+Shift, 4, movetoworkspace, 4 93 | bind = $mainMod+Shift, 5, movetoworkspace, 5 94 | bind = $mainMod+Shift, 6, movetoworkspace, 6 95 | bind = $mainMod+Shift, 7, movetoworkspace, 7 96 | bind = $mainMod+Shift, 8, movetoworkspace, 8 97 | bind = $mainMod+Shift, 9, movetoworkspace, 9 98 | bind = $mainMod+Shift, 0, movetoworkspace, 10 99 | 100 | # Move focused window to a relative workspace 101 | bind = $mainMod+Ctrl+Alt, Right, movetoworkspace, r+1 102 | bind = $mainMod+Ctrl+Alt, Left, movetoworkspace, r-1 103 | 104 | # Move focused window around the current workspace 105 | bind = $mainMod+Shift+Ctrl, Left, movewindow, l 106 | bind = $mainMod+Shift+Ctrl, Right, movewindow, r 107 | bind = $mainMod+Shift+Ctrl, Up, movewindow, u 108 | bind = $mainMod+Shift+Ctrl, Down, movewindow, d 109 | 110 | # Scroll through existing workspaces 111 | bind = $mainMod, mouse_down, workspace, e+1 112 | bind = $mainMod, mouse_up, workspace, e-1 113 | 114 | # Move/Resize focused window 115 | bindm = $mainMod, mouse:272, movewindow 116 | bindm = $mainMod, mouse:273, resizewindow 117 | bindm = $mainMod, Z, movewindow 118 | bindm = $mainMod, X, resizewindow 119 | 120 | # Move/Switch to special workspace (scratchpad) 121 | # bind = $mainMod+Alt, Grave, movetoworkspacesilent, special 122 | # bind = $mainMod+Shift, Grave, movetoworkspace, special 123 | bind = $mainMod, Grave, togglespecialworkspace, 124 | 125 | # Toggle focused window split 126 | bind = $mainMod, T, togglesplit 127 | 128 | # Move focused window to a workspace silently 129 | bind = $mainMod+Alt, 1, movetoworkspacesilent, 1 130 | bind = $mainMod+Alt, 2, movetoworkspacesilent, 2 131 | bind = $mainMod+Alt, 3, movetoworkspacesilent, 3 132 | bind = $mainMod+Alt, 4, movetoworkspacesilent, 4 133 | bind = $mainMod+Alt, 5, movetoworkspacesilent, 5 134 | bind = $mainMod+Alt, 6, movetoworkspacesilent, 6 135 | bind = $mainMod+Alt, 7, movetoworkspacesilent, 7 136 | bind = $mainMod+Alt, 8, movetoworkspacesilent, 8 137 | bind = $mainMod+Alt, 9, movetoworkspacesilent, 9 138 | bind = $mainMod+Alt, 0, movetoworkspacesilent, 10 139 | -------------------------------------------------------------------------------- /nvim/lua/plugins/example.lua: -------------------------------------------------------------------------------- 1 | -- since this is just an example spec, don't actually load anything here and return an empty spec 2 | -- stylua: ignore 3 | if true then return {} end 4 | 5 | -- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim 6 | -- 7 | -- In your plugin files, you can: 8 | -- * add extra plugins 9 | -- * disable/enabled LazyVim plugins 10 | -- * override the configuration of LazyVim plugins 11 | return { 12 | -- add gruvbox 13 | { "ellisonleao/gruvbox.nvim" }, 14 | 15 | -- Configure LazyVim to load gruvbox 16 | { 17 | "LazyVim/LazyVim", 18 | opts = { 19 | colorscheme = "gruvbox", 20 | }, 21 | }, 22 | 23 | -- change trouble config 24 | { 25 | "folke/trouble.nvim", 26 | -- opts will be merged with the parent spec 27 | opts = { use_diagnostic_signs = true }, 28 | }, 29 | 30 | -- disable trouble 31 | { "folke/trouble.nvim", enabled = false }, 32 | 33 | -- override nvim-cmp and add cmp-emoji 34 | { 35 | "hrsh7th/nvim-cmp", 36 | dependencies = { "hrsh7th/cmp-emoji" }, 37 | ---@param opts cmp.ConfigSchema 38 | opts = function(_, opts) 39 | table.insert(opts.sources, { name = "emoji" }) 40 | end, 41 | }, 42 | 43 | -- change some telescope options and a keymap to browse plugin files 44 | { 45 | "nvim-telescope/telescope.nvim", 46 | keys = { 47 | -- add a keymap to browse plugin files 48 | -- stylua: ignore 49 | { 50 | "fp", 51 | function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, 52 | desc = "Find Plugin File", 53 | }, 54 | }, 55 | -- change some options 56 | opts = { 57 | defaults = { 58 | layout_strategy = "horizontal", 59 | layout_config = { prompt_position = "top" }, 60 | sorting_strategy = "ascending", 61 | winblend = 0, 62 | }, 63 | }, 64 | }, 65 | 66 | -- add pyright to lspconfig 67 | { 68 | "neovim/nvim-lspconfig", 69 | ---@class PluginLspOpts 70 | opts = { 71 | ---@type lspconfig.options 72 | servers = { 73 | -- pyright will be automatically installed with mason and loaded with lspconfig 74 | pyright = {}, 75 | }, 76 | }, 77 | }, 78 | 79 | -- add tsserver and setup with typescript.nvim instead of lspconfig 80 | { 81 | "neovim/nvim-lspconfig", 82 | dependencies = { 83 | "jose-elias-alvarez/typescript.nvim", 84 | init = function() 85 | require("lazyvim.util").lsp.on_attach(function(_, buffer) 86 | -- stylua: ignore 87 | vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) 88 | vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) 89 | end) 90 | end, 91 | }, 92 | ---@class PluginLspOpts 93 | opts = { 94 | ---@type lspconfig.options 95 | servers = { 96 | -- tsserver will be automatically installed with mason and loaded with lspconfig 97 | tsserver = {}, 98 | }, 99 | -- you can do any additional lsp server setup here 100 | -- return true if you don't want this server to be setup with lspconfig 101 | ---@type table 102 | setup = { 103 | -- example to setup with typescript.nvim 104 | tsserver = function(_, opts) 105 | require("typescript").setup({ server = opts }) 106 | return true 107 | end, 108 | -- Specify * to use this function as a fallback for any server 109 | -- ["*"] = function(server, opts) end, 110 | }, 111 | }, 112 | }, 113 | 114 | -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, 115 | -- treesitter, mason and typescript.nvim. So instead of the above, you can use: 116 | { import = "lazyvim.plugins.extras.lang.typescript" }, 117 | 118 | -- add more treesitter parsers 119 | { 120 | "nvim-treesitter/nvim-treesitter", 121 | opts = { 122 | ensure_installed = { 123 | "bash", 124 | "html", 125 | "javascript", 126 | "json", 127 | "lua", 128 | "markdown", 129 | "markdown_inline", 130 | "python", 131 | "query", 132 | "regex", 133 | "tsx", 134 | "typescript", 135 | "vim", 136 | "yaml", 137 | }, 138 | }, 139 | }, 140 | 141 | -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above 142 | -- would overwrite `ensure_installed` with the new value. 143 | -- If you'd rather extend the default config, use the code below instead: 144 | { 145 | "nvim-treesitter/nvim-treesitter", 146 | opts = function(_, opts) 147 | -- add tsx and treesitter 148 | vim.list_extend(opts.ensure_installed, { 149 | "tsx", 150 | "typescript", 151 | }) 152 | end, 153 | }, 154 | 155 | -- the opts function can also be used to change the default opts: 156 | { 157 | "nvim-lualine/lualine.nvim", 158 | event = "VeryLazy", 159 | opts = function(_, opts) 160 | table.insert(opts.sections.lualine_x, "😄") 161 | end, 162 | }, 163 | 164 | -- or you can return new options to override all the defaults 165 | { 166 | "nvim-lualine/lualine.nvim", 167 | event = "VeryLazy", 168 | opts = function() 169 | return { 170 | --[[add your custom lualine config here]] 171 | } 172 | end, 173 | }, 174 | 175 | -- use mini.starter instead of alpha 176 | { import = "lazyvim.plugins.extras.ui.mini-starter" }, 177 | 178 | -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc 179 | { import = "lazyvim.plugins.extras.lang.json" }, 180 | 181 | -- add any tools you want to have installed below 182 | { 183 | "williamboman/mason.nvim", 184 | opts = { 185 | ensure_installed = { 186 | "stylua", 187 | "shellcheck", 188 | "shfmt", 189 | "flake8", 190 | }, 191 | }, 192 | }, 193 | 194 | -- Use for completion and snippets (supertab) 195 | -- first: disable default and behavior in LuaSnip 196 | { 197 | "L3MON4D3/LuaSnip", 198 | keys = function() 199 | return {} 200 | end, 201 | }, 202 | -- then: setup supertab in cmp 203 | { 204 | "hrsh7th/nvim-cmp", 205 | dependencies = { 206 | "hrsh7th/cmp-emoji", 207 | }, 208 | ---@param opts cmp.ConfigSchema 209 | opts = function(_, opts) 210 | local has_words_before = function() 211 | unpack = unpack or table.unpack 212 | local line, col = unpack(vim.api.nvim_win_get_cursor(0)) 213 | return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil 214 | end 215 | 216 | local luasnip = require("luasnip") 217 | local cmp = require("cmp") 218 | 219 | opts.mapping = vim.tbl_extend("force", opts.mapping, { 220 | [""] = cmp.mapping(function(fallback) 221 | if cmp.visible() then 222 | cmp.select_next_item() 223 | -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() 224 | -- this way you will only jump inside the snippet region 225 | elseif luasnip.expand_or_jumpable() then 226 | luasnip.expand_or_jump() 227 | elseif has_words_before() then 228 | cmp.complete() 229 | else 230 | fallback() 231 | end 232 | end, { "i", "s" }), 233 | [""] = cmp.mapping(function(fallback) 234 | if cmp.visible() then 235 | cmp.select_prev_item() 236 | elseif luasnip.jumpable(-1) then 237 | luasnip.jump(-1) 238 | else 239 | fallback() 240 | end 241 | end, { "i", "s" }), 242 | }) 243 | end, 244 | }, 245 | } 246 | -------------------------------------------------------------------------------- /waybar/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "position": "top", 4 | "mod": "dock", 5 | "height": 15, 6 | "exclusive": true, 7 | "passthrough": false, 8 | "gtk-layer-shell": true, 9 | "reload_style_on_change": true, 10 | 11 | "modules-left": [ 12 | "custom/l_end", "custom/arch", "custom/r_end", 13 | "custom/l_end", 14 | "hyprland/workspaces", 15 | "hyprland/window", 16 | "custom/r_end" 17 | ], 18 | 19 | "modules-center": [ 20 | "custom/padd", 21 | "custom/l_end", 22 | "clock", 23 | "custom/r_end", 24 | "custom/padd" 25 | ], 26 | 27 | "modules-right": [ 28 | "custom/padd", 29 | "custom/l_end", 30 | "custom/warp", 31 | "custom/r_end", 32 | "custom/l_end", 33 | "backlight", 34 | "pulseaudio", 35 | "pulseaudio#microphone", 36 | "custom/r_end", 37 | "custom/l_end", 38 | "cpu", 39 | "memory", 40 | "battery", 41 | "custom/r_end", 42 | "custom/l_end", 43 | "network", 44 | "tray", 45 | "custom/power", 46 | "custom/r_end", 47 | "custom/padd" 48 | ], 49 | 50 | "custom/arch": { 51 | "format": " ", 52 | "on-click": "toggle-theme.sh", 53 | "tooltip": false, 54 | "on-click-right": "code ~/.config/hypr/script/toggle-theme.sh" 55 | }, 56 | 57 | "hyprland/workspaces": { 58 | "rotate": 0, 59 | "all-outputs": true, 60 | "active-only": false, 61 | "on-click": "activate", 62 | "disable-scroll": false, 63 | "on-scroll-up": "hyprctl dispatch workspace -1", 64 | "on-scroll-down": "hyprctl dispatch workspace +1", 65 | "persistent-workspaces": {} 66 | }, 67 | "hyprland/window": { 68 | "format": " | {}", 69 | "rotate": 0, 70 | "separate-outputs": true, 71 | "rewrite": { 72 | "(.*) — Mozilla Firefox": "$1 󰈹", 73 | "(.*)Mozilla Firefox": "Firefox 󰈹", 74 | "(.*) - Visual Studio Code": "$1 󰨞", 75 | "(.*)Visual Studio Code": "Code 󰨞", 76 | "(.*) - Thunar": "$1 󰉋", 77 | "(.*)Spotify": "Spotify 󰓇", 78 | "(.*)Steam": "Steam 󰓓" 79 | }, 80 | "max-length": 1000 81 | }, 82 | "clock": { 83 | "format": "{:%R, %d %B %Y} ", 84 | "rotate": 0, 85 | "format-alt": "{:%I:%M %p} ", 86 | "tooltip-format": "{calendar}", 87 | "calendar": { 88 | "mode": "month", 89 | "mode-mon-col": 3, 90 | "on-scroll": 1, 91 | "format": { 92 | "months": "{}", 93 | "days": "{}", 94 | "weeks": "W{}", 95 | "weekdays": "{}", 96 | "today": "{}" 97 | } 98 | }, 99 | "actions": { 100 | "on-click-right": "mode", 101 | "on-click-forward": "tz_up", 102 | "on-click-backward": "tz_down", 103 | "on-scroll-up": "shift_up", 104 | "on-scroll-down": "shift_down" 105 | } 106 | }, 107 | "cpu": { 108 | "interval": 10, 109 | "format": "󰍛 {usage}% ", 110 | "rotate": 0, 111 | "format-alt": "{icon0}{icon1}{icon2}{icon3}", 112 | "format-icons": [ 113 | "▁", 114 | "▂", 115 | "▃", 116 | "▄", 117 | "▅", 118 | "▆", 119 | "▇", 120 | "█" 121 | ] 122 | }, 123 | "memory": { 124 | "states": { 125 | "c": 90, // critical 126 | "h": 60, // high 127 | "m": 30, // medium 128 | }, 129 | "interval": 30, 130 | "format": "󰾆 {percentage}% ", 131 | "rotate": 0, 132 | "format-m": "󰾅 {percentage}% ", 133 | "format-h": "󰓅 {percentage}% ", 134 | "format-c": " {percentage}% ", 135 | "format-alt": "󰾆 {used}GB ", 136 | "max-length": 10, 137 | "tooltip": true, 138 | "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}GB/{total:0.1f}GB " 139 | }, 140 | "backlight": { 141 | "device": "intel_backlight", 142 | "rotate": 0, 143 | "format": "{icon} {percent}% ", 144 | "format-icons": [ 145 | "", 146 | "", 147 | "", 148 | "", 149 | "", 150 | "", 151 | "", 152 | "", 153 | "" 154 | ], 155 | "on-scroll-up": "brightnessctl set 1%+", 156 | "on-scroll-down": "brightnessctl set 1%-", 157 | "min-length": 6 158 | }, 159 | "network": { 160 | "tooltip": true, 161 | "format-wifi": " ", 162 | "rotate": 0, 163 | "format-ethernet": "󰈀 ", 164 | "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", 165 | "format-linked": "󰈀 {ifname} (No IP) ", 166 | "format-disconnected": "󰖪 ", 167 | "tooltip-format-disconnected": "Disconnected", 168 | "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes} ", 169 | "interval": 5 170 | }, 171 | "pulseaudio": { 172 | "format": "{icon} {volume} ", 173 | "rotate": 0, 174 | "format-muted": " _ ", 175 | "on-click": "pavucontrol -t 3", 176 | "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ -1%", 177 | "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ +1%", 178 | "tooltip-format": "{icon} {desc} // {volume}%", 179 | "scroll-step": 5, 180 | "format-icons": { 181 | "headphone": "", 182 | "hands-free": "", 183 | "headset": "", 184 | "phone": "", 185 | "portable": "", 186 | "car": "", 187 | "default": [ 188 | "", 189 | "", 190 | "" 191 | ] 192 | } 193 | }, 194 | "pulseaudio#microphone": { 195 | "format": "{format_source}", 196 | "rotate": 0, 197 | "format-source": "", 198 | "format-source-muted": "", 199 | "on-click": "pavucontrol -t 4", 200 | "tooltip-format": "{format_source} {source_desc} // {source_volume}%", 201 | "scroll-step": 5 202 | }, 203 | "tray": { 204 | "icon-size": 14, 205 | "rotate": 0, 206 | "spacing": 10 207 | }, 208 | "battery": { 209 | "states": { 210 | "good": 95, 211 | "warning": 30, 212 | "critical": 20 213 | }, 214 | "format": "{icon} {capacity}%", 215 | "rotate": 0, 216 | "format-charging": " {capacity}%", 217 | "format-plugged": " {capacity}%", 218 | "format-alt": "{time} {icon}", 219 | "format-icons": [ 220 | "󰂎", 221 | "󰁺", 222 | "󰁻", 223 | "󰁼", 224 | "󰁽", 225 | "󰁾", 226 | "󰁿", 227 | "󰂀", 228 | "󰂁", 229 | "󰂂", 230 | "󰁹" 231 | ] 232 | }, 233 | "custom/power": { 234 | "format": "  {}", 235 | "rotate": 0, 236 | "exec": "echo ; echo  logout", 237 | "on-click": "rofi-powermenu.sh", 238 | "interval": 86400, // once every day 239 | "tooltip": true 240 | }, 241 | "custom/warp": { 242 | "format": "VPN: {} ", 243 | // "exec": "warp-cli status", 244 | "exec": "status=$(warp-cli status | grep Status | awk '{print $3}' | sed 's/\\.//g'); if [ \"$status\" = \"Connected\" ]; then echo 󰅠; else if [ \"$status\" = \"Disconnected\" ]; then echo ; else if [ \"$status\" = \"Connecting\" ]; then echo 󱋖; else echo ?; fi; fi; fi;", 245 | "on-click": "warp-cli connect", 246 | "on-click-right": "warp-cli disconnect", 247 | "interval": 5, 248 | "tooltip": false 249 | }, 250 | // modules for padding // 251 | "custom/l_end": { 252 | "format": " ", 253 | "interval": "once", 254 | "tooltip": false 255 | }, 256 | "custom/r_end": { 257 | "format": " ", 258 | "interval": "once", 259 | "tooltip": false 260 | }, 261 | "custom/sl_end": { 262 | "format": " ", 263 | "interval": "once", 264 | "tooltip": false 265 | }, 266 | "custom/sr_end": { 267 | "format": " ", 268 | "interval": "once", 269 | "tooltip": false 270 | }, 271 | "custom/rl_end": { 272 | "format": " ", 273 | "interval": "once", 274 | "tooltip": false 275 | }, 276 | "custom/rr_end": { 277 | "format": " ", 278 | "interval": "once", 279 | "tooltip": false 280 | }, 281 | "custom/padd": { 282 | "format": "", 283 | "interval": "once", 284 | "tooltip": false 285 | } 286 | } --------------------------------------------------------------------------------