├── .config ├── hypr │ ├── mako │ │ ├── config │ │ ├── icons │ │ │ ├── vpn.png │ │ │ ├── backup.png │ │ │ ├── music.png │ │ │ ├── timer.png │ │ │ ├── uptime.png │ │ │ ├── dropper.png │ │ │ ├── palette.png │ │ │ ├── picture.png │ │ │ ├── microphone.png │ │ │ ├── volume-high.png │ │ │ ├── volume-low.png │ │ │ ├── volume-mid.png │ │ │ ├── volume-mute.png │ │ │ ├── battery-status.png │ │ │ ├── brightness-100.png │ │ │ ├── brightness-20.png │ │ │ ├── brightness-40.png │ │ │ ├── brightness-60.png │ │ │ ├── brightness-80.png │ │ │ ├── microphone-mute.png │ │ │ └── battery-quarter-solid.svg │ │ └── styles │ │ │ ├── config-light │ │ │ └── config-dark │ ├── wofi │ │ ├── config │ │ ├── colors │ │ ├── WofiBig │ │ │ └── config │ │ ├── configs │ │ │ ├── config-default │ │ │ ├── config-plasma │ │ │ └── config-gnome │ │ └── style.css │ ├── scripts │ │ ├── Help.sh │ │ ├── LockScreen.sh │ │ ├── Mako.sh │ │ ├── PortalHyprlandArch.sh │ │ ├── Waybar.sh │ │ ├── LidSwitch.sh │ │ ├── AirplaneMode.sh │ │ ├── Wofi.sh │ │ ├── WofiBig.sh │ │ ├── Startup.sh │ │ ├── ChangeBlur.sh │ │ ├── ClipManager.sh │ │ ├── GameMode.sh │ │ ├── ChangeLayout.sh │ │ ├── TouchPad.sh │ │ ├── Wallpaper.sh │ │ ├── WaybarStyles.sh │ │ ├── Brightness.sh │ │ ├── BrightnessKbd.sh │ │ ├── ScreenShot.sh │ │ ├── DarkLight-swaybg.sh │ │ ├── WallpaperSelect.sh │ │ ├── WofiBeats.sh │ │ ├── ChangeLayoutMenu.sh │ │ ├── DarkLight.sh │ │ ├── Weather.sh │ │ ├── Volume.sh │ │ ├── Weather.py │ │ └── mediaplayer.py │ ├── waybar │ │ ├── configs │ │ │ ├── config-simple │ │ │ ├── config-default │ │ │ ├── config-gnome │ │ │ ├── config-plasma │ │ │ └── config-dual │ │ ├── config │ │ ├── style.css │ │ └── modules │ ├── configs │ │ ├── ENVariables.conf │ │ ├── Monitors.conf │ │ ├── Execs.conf │ │ ├── WindowRules.conf │ │ └── Keybinds.conf │ ├── swaylock │ │ └── config │ ├── themes │ │ ├── frappe.conf │ │ ├── latte.conf │ │ ├── mocha.conf │ │ └── macchiato.conf │ ├── hyprland.conf │ └── HelpFile.md ├── cava │ ├── shaders │ │ ├── pass_through.vert │ │ ├── normalized_bars.frag │ │ └── bar_spectrum.frag │ └── config ├── kitty │ ├── diff.conf │ ├── kitty.conf │ └── tab_bar.py ├── wlogout │ ├── layout │ └── style.css ├── nvim │ └── init.lua └── lvim │ └── config.lua ├── .pam_enviroment ├── Pictures └── wallpapers │ ├── Beach-Rock.jpg │ ├── AnimeWaiting.png │ ├── Dessert_light.jpg │ └── Mizuri-Jett-Logo.png ├── .zshrc ├── .latexmkrc ├── .zshrc.mac ├── README.md ├── .vimrc ├── .yabairc └── .tmux.conf /.config/hypr/mako/config: -------------------------------------------------------------------------------- 1 | /home/runfunrun/.config/hypr/mako/styles/config-dark -------------------------------------------------------------------------------- /.config/hypr/wofi/config: -------------------------------------------------------------------------------- 1 | /home/runfunrun/.config/hypr/wofi/configs/config-default -------------------------------------------------------------------------------- /.config/hypr/scripts/Help.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | foot -e micro ~/.config/hypr/HelpFile.md 3 | -------------------------------------------------------------------------------- /.config/hypr/wofi/colors: -------------------------------------------------------------------------------- 1 | #2F3741 2 | #2F3741 3 | #d9e0ee 4 | #4B87CD 5 | #f38ba8 6 | #cba6f7 7 | -------------------------------------------------------------------------------- /.pam_enviroment: -------------------------------------------------------------------------------- 1 | GTK_IM_MODULE DEFAULT=fcitx 2 | QT_IM_MODULE DEFAULT=fcitx 3 | XMODIFIRS DEFAULT=fcitx 4 | -------------------------------------------------------------------------------- /.config/hypr/mako/icons/vpn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/vpn.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/backup.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/music.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/timer.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/uptime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/uptime.png -------------------------------------------------------------------------------- /Pictures/wallpapers/Beach-Rock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/Pictures/wallpapers/Beach-Rock.jpg -------------------------------------------------------------------------------- /.config/hypr/mako/icons/dropper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/dropper.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/palette.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/picture.png -------------------------------------------------------------------------------- /Pictures/wallpapers/AnimeWaiting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/Pictures/wallpapers/AnimeWaiting.png -------------------------------------------------------------------------------- /Pictures/wallpapers/Dessert_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/Pictures/wallpapers/Dessert_light.jpg -------------------------------------------------------------------------------- /.config/hypr/mako/icons/microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/microphone.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/volume-high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/volume-high.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/volume-low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/volume-low.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/volume-mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/volume-mid.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/volume-mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/volume-mute.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/battery-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/battery-status.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/brightness-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/brightness-100.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/brightness-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/brightness-20.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/brightness-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/brightness-40.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/brightness-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/brightness-60.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/brightness-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/brightness-80.png -------------------------------------------------------------------------------- /Pictures/wallpapers/Mizuri-Jett-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/Pictures/wallpapers/Mizuri-Jett-Logo.png -------------------------------------------------------------------------------- /.config/hypr/mako/icons/microphone-mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RUNFUNRUN/dotfiles/HEAD/.config/hypr/mako/icons/microphone-mute.png -------------------------------------------------------------------------------- /.config/hypr/scripts/LockScreen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG="$HOME/.config/hypr/swaylock/config" 4 | 5 | sleep 0.5s; swaylock --config ${CONFIG} & disown 6 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Mako.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG="$HOME/.config/hypr/mako/config" 4 | 5 | if [[ ! $(pidof mako) ]]; then 6 | mako --config ${CONFIG} 7 | fi 8 | -------------------------------------------------------------------------------- /.config/hypr/scripts/PortalHyprlandArch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sleep 1 3 | killall xdg-desktop-portal-hyprland 4 | killall xdg-desktop-portal-wlr 5 | killall xdg-desktop-portal 6 | /usr/lib/xdg-desktop-portal-hyprland & 7 | sleep 2 8 | /usr/lib/xdg-desktop-portal & 9 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Waybar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG="$HOME/.config/hypr/waybar/config" 4 | STYLE="$HOME/.config/hypr/waybar/style.css" 5 | 6 | if [[ ! $(pidof waybar) ]]; then 7 | waybar --bar main-bar --log-level error --config ${CONFIG} --style ${STYLE} 8 | fi 9 | -------------------------------------------------------------------------------- /.config/hypr/scripts/LidSwitch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if grep open /proc/acpi/button/lid/LID/state; then 4 | hyprctl keyword monitor "eDP-1, preferred, auto, 1" 5 | else 6 | if [[ `hyprctl monitors | grep "Monitor" | wc -l` != 1 ]]; then 7 | hyprctl keyword monitor "eDP-1, disable" 8 | fi 9 | fi -------------------------------------------------------------------------------- /.config/hypr/scripts/AirplaneMode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | wifi="$(nmcli r wifi | awk 'FNR = 2 {print $1}')" 3 | if [ "$wifi" == "enabled" ]; then 4 | rfkill block all & 5 | notify-send -t 1000 'airplane mode: active' 6 | else 7 | rfkill unblock all & 8 | notify-send -t 1000 'airplane mode: inactive' 9 | fi 10 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Wofi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG="$HOME/.config/hypr/wofi/config" 4 | STYLE="$HOME/.config/hypr/wofi/style.css" 5 | COLORS="$HOME/.config/hypr/wofi/colors" 6 | 7 | if [[ ! $(pidof wofi) ]]; then 8 | wofi --show drun --prompt 'Search...' --conf ${CONFIG} --style ${STYLE} --color ${COLORS} 9 | else 10 | pkill wofi 11 | fi 12 | -------------------------------------------------------------------------------- /.config/hypr/scripts/WofiBig.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG="$HOME/.config/hypr/wofi/WofiBig/config" 4 | STYLE="$HOME/.config/hypr/wofi/style.css" 5 | COLORS="$HOME/.config/hypr/wofi/colors" 6 | 7 | if [[ ! $(pidof wofi) ]]; then 8 | wofi --show drun --prompt 'Search...' --conf ${CONFIG} --style ${STYLE} --color ${COLORS} 9 | else 10 | pkill wofi 11 | fi 12 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPTSDIR=$HOME/.config/hypr/scripts 4 | 5 | # Kill already running process 6 | _ps=(waybar mako) 7 | for _prs in "${_ps[@]}"; do 8 | if [[ $(pidof ${_prs}) ]]; then 9 | killall -9 ${_prs} 10 | fi 11 | done 12 | 13 | # Lauch notification daemon (mako) 14 | ${SCRIPTSDIR}/Mako.sh & 15 | 16 | # Lauch statusbar (waybar) 17 | ${SCRIPTSDIR}/Waybar.sh & 18 | -------------------------------------------------------------------------------- /.config/hypr/scripts/ChangeBlur.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | STATE=$(hyprctl -j getoption decoration:blur_passes | jq ".int") 4 | 5 | if [ "${STATE}" == "2" ]; then 6 | hyprctl keyword decoration:blur_size 3 7 | hyprctl keyword decoration:blur_passes 1 8 | notify-send "Less blur" 9 | else 10 | hyprctl keyword decoration:blur_size 7.8 11 | hyprctl keyword decoration:blur_passes 2 12 | notify-send "Normal blur" 13 | fi 14 | -------------------------------------------------------------------------------- /.config/cava/shaders/pass_through.vert: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | 4 | // Input vertex data, different for all executions of this shader. 5 | layout(location = 0) in vec3 vertexPosition_modelspace; 6 | 7 | // Output data ; will be interpolated for each fragment. 8 | out vec2 fragCoord; 9 | 10 | void main() 11 | { 12 | gl_Position = vec4(vertexPosition_modelspace,1); 13 | fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; 14 | } 15 | -------------------------------------------------------------------------------- /.config/hypr/scripts/ClipManager.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # WOFI STYLES 4 | CONFIG="$HOME/.config/hypr/wofi/WofiBig/config" 5 | STYLE="$HOME/.config/hypr/wofi/style.css" 6 | COLORS="$HOME/.config/hypr/wofi/colors" 7 | 8 | if [[ ! $(pidof wofi) ]]; then 9 | cliphist list | wofi --show dmenu --prompt 'Search...' \ 10 | --conf ${CONFIG} --style ${STYLE} --color ${COLORS} \ 11 | --width=600 --height=400 | cliphist decode | wl-copy 12 | else 13 | pkill wofi 14 | fi -------------------------------------------------------------------------------- /.config/hypr/mako/icons/battery-quarter-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/kitty/diff.conf: -------------------------------------------------------------------------------- 1 | pygments_style github-dark 2 | 3 | background #222436 4 | foreground #c8d3f5 5 | 6 | title_fg #c8d3f5 7 | title_bg #222436 8 | 9 | margin_bg #222436 10 | margin_fg #c8d3f5 11 | 12 | removed_bg #502436 13 | highlight_removed_bg #502436 14 | removed_margin_bg #c82c45 15 | 16 | added_bg #223c36 17 | highlight_added_bg #223c36 18 | added_margin_bg #22783a 19 | 20 | filler_bg #2f334d 21 | 22 | margin_filler_bg none 23 | 24 | hunk_margin_bg #1e2030 25 | hunk_bg #1e2030 26 | 27 | search_bg #444 28 | search_fg white 29 | select_bg #b4d5fe 30 | select_fg black 31 | -------------------------------------------------------------------------------- /.config/hypr/scripts/GameMode.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==2{print $2}') 3 | if [ "$HYPRGAMEMODE" = 1 ] ; then 4 | hyprctl --batch "\ 5 | keyword animations:enabled 0;\ 6 | keyword decoration:drop_shadow 0;\ 7 | keyword decoration:blur 0;\ 8 | keyword general:gaps_in 0;\ 9 | keyword general:gaps_out 0;\ 10 | keyword general:border_size 1;\ 11 | keyword decoration:rounding 0" 12 | swww kill 13 | notify-send "animations off" 14 | exit 15 | fi 16 | hyprctl reload 17 | -------------------------------------------------------------------------------- /.config/hypr/waybar/configs/config-simple: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "include": "~/.config/hypr/waybar/modules", 4 | "layer": "top", 5 | //"mode": "dock", 6 | "exclusive": true, 7 | "passthrough": false, 8 | "position": "top", 9 | "spacing": 3, 10 | "fixed-center": true, 11 | "ipc": true, 12 | "margin-top": 6, 13 | "margin-left": 8, 14 | "margin-right": 8, 15 | 16 | "modules-left": [ 17 | "custom/menu", 18 | "wlr/workspaces" 19 | ], 20 | "modules-center": [ 21 | "clock", 22 | "custom/light_dark" 23 | ], 24 | "modules-right": [ 25 | "backlight", 26 | "pulseaudio", 27 | "bluetooth", 28 | "network", 29 | "battery" 30 | ], 31 | 32 | 33 | } -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | export TERM="xterm-256color" 2 | export EDITOR="nvim" 3 | export VOLTA_HOME="$HOME/.volta" 4 | export PATH="$VOLTA_HOME/bin:$PATH" 5 | export PATH="$HOME/.commands:$PATH" 6 | export PATH="$HOME/.bin:$PATH" 7 | export PATH="$HOME/.bun/bin:$PATH" 8 | export PATH="$HOME/.cargo/bin:$PATH" 9 | export GPG_TTY=$(tty) 10 | export ZSH="$HOME/.oh-my-zsh" 11 | 12 | ZSH_THEME="" 13 | plugins=(git zsh-autosuggestions zsh-syntax-highlighting) 14 | source $ZSH/oh-my-zsh.sh 15 | eval "$(starship init zsh)" 16 | 17 | eval "$(github-copilot-cli alias -- "$0")" 18 | 19 | alias clock="tty-clock -sc -C4" 20 | 21 | export COMMANDS_INSTALL="/home/runfunrun/projects/buntin/commands" 22 | -------------------------------------------------------------------------------- /.config/hypr/wofi/WofiBig/config: -------------------------------------------------------------------------------- 1 | ## Wofi Config 2 | 3 | ## General 4 | show=drun 5 | prompt=Apps 6 | normal_window=true 7 | layer=overlay 8 | term=foot 9 | columns=5 10 | 11 | ## Geometry 12 | width=60% 13 | height=40% 14 | location=bottom_left 15 | orientation=vertical 16 | halign=fill 17 | line_wrap=off 18 | dynamic_lines=false 19 | 20 | ## Images 21 | allow_markup=true 22 | allow_images=true 23 | image_size=24 24 | 25 | ## Search 26 | exec_search=false 27 | hide_search=false 28 | parse_search=false 29 | insensitive=false 30 | 31 | ## Other 32 | hide_scroll=true 33 | no_actions=true 34 | sort_order=default 35 | gtk_dark=true 36 | filter_rate=100 37 | 38 | ## Keys 39 | key_expand=Tab 40 | key_exit=Escape 41 | -------------------------------------------------------------------------------- /.config/hypr/wofi/configs/config-default: -------------------------------------------------------------------------------- 1 | ## Wofi Config 2 | 3 | ## General 4 | show=drun 5 | prompt=Apps 6 | normal_window=true 7 | layer=overlay 8 | term=foot 9 | columns=2 10 | 11 | ## Geometry 12 | width=30% 13 | height=30% 14 | location=top_left 15 | orientation=vertical 16 | halign=fill 17 | line_wrap=off 18 | dynamic_lines=false 19 | 20 | ## Images 21 | allow_markup=true 22 | allow_images=true 23 | image_size=24 24 | 25 | ## Search 26 | exec_search=false 27 | hide_search=false 28 | parse_search=false 29 | insensitive=false 30 | 31 | ## Other 32 | hide_scroll=true 33 | no_actions=true 34 | sort_order=default 35 | gtk_dark=true 36 | filter_rate=100 37 | 38 | ## Keys 39 | key_expand=Tab 40 | key_exit=Escape 41 | -------------------------------------------------------------------------------- /.config/hypr/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "include": "~/.config/hypr/waybar/modules", 4 | "layer": "top", 5 | //"mode": "dock", 6 | "exclusive": true, 7 | "passthrough": false, 8 | "position": "top", 9 | "spacing": 3, 10 | "fixed-center": true, 11 | "ipc": true, 12 | 13 | "modules-left": [ 14 | "custom/menu", 15 | "wlr/workspaces", 16 | "cpu", 17 | "memory", 18 | //"temperature", 19 | //"disk", 20 | "custom/weather", 21 | "network", 22 | "cava", 23 | ], 24 | 25 | "modules-center": [ 26 | "custom/media", 27 | ], 28 | 29 | "modules-right": [ 30 | //"hyprland/window", 31 | "tray", 32 | "battery", 33 | "backlight", 34 | "pulseaudio", 35 | "pulseaudio#microphone", 36 | "clock", 37 | "custom/lock", 38 | "custom/power", 39 | ], 40 | } 41 | -------------------------------------------------------------------------------- /.config/hypr/waybar/configs/config-default: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "include": "~/.config/hypr/waybar/modules", 4 | "layer": "top", 5 | //"mode": "dock", 6 | "exclusive": true, 7 | "passthrough": false, 8 | "position": "top", 9 | "spacing": 3, 10 | "fixed-center": true, 11 | "ipc": true, 12 | 13 | "modules-left": [ 14 | "custom/menu", 15 | "wlr/workspaces", 16 | "cpu", 17 | "memory", 18 | //"temperature", 19 | //"disk", 20 | "custom/weather", 21 | "network", 22 | "cava", 23 | ], 24 | 25 | "modules-center": [ 26 | "custom/media", 27 | ], 28 | 29 | "modules-right": [ 30 | //"hyprland/window", 31 | "tray", 32 | "battery", 33 | "backlight", 34 | "pulseaudio", 35 | "pulseaudio#microphone", 36 | "clock", 37 | "custom/lock", 38 | "custom/power", 39 | ], 40 | } 41 | -------------------------------------------------------------------------------- /.config/hypr/scripts/ChangeLayout.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') 4 | 5 | case $LAYOUT in 6 | "master") 7 | hyprctl keyword general:layout dwindle 8 | hyprctl keyword unbind SUPER,J 9 | hyprctl keyword unbind SUPER,K 10 | hyprctl keyword bind SUPER,J,cyclenext 11 | hyprctl keyword bind SUPER,K,cyclenext,prev 12 | hyprctl keyword bind SUPER,O,togglesplit 13 | notify-send "Master Layout" 14 | ;; 15 | "dwindle") 16 | hyprctl keyword general:layout master 17 | hyprctl keyword unbind SUPER,J 18 | hyprctl keyword unbind SUPER,K 19 | hyprctl keyword unbind SUPER,O 20 | hyprctl keyword bind SUPER,J,layoutmsg,cyclenext 21 | hyprctl keyword bind SUPER,K,layoutmsg,cycleprev 22 | notify-send "Dwindle Layout" 23 | ;; 24 | *) ;; 25 | 26 | esac 27 | -------------------------------------------------------------------------------- /.config/hypr/wofi/configs/config-plasma: -------------------------------------------------------------------------------- 1 | ## Wofi Config 2 | 3 | ## General 4 | mode=drun,run 5 | run-always_parse_args=true 6 | show=drun 7 | prompt=Apps 8 | #normal_window=true 9 | #layer=overlay 10 | term=foot 11 | columns=1 12 | lines=15 13 | 14 | ## Geometry 15 | height=20% 16 | width=14% 17 | xoffset=10 18 | yoffset=-40 19 | location=bottom_left 20 | orientation=vertical 21 | halign=fill 22 | line_wrap=off 23 | dynamic_lines=false 24 | 25 | ## Images 26 | allow_markup=true 27 | allow_images=true 28 | image_size=24 29 | 30 | ## Search 31 | exec_search=false 32 | hide_search=false 33 | parse_search=false 34 | insensitive=false 35 | 36 | ## Other 37 | hide_scroll=false 38 | no_actions=true 39 | sort_order=default 40 | gtk_dark=true 41 | filter_rate=100 42 | 43 | ## Keys 44 | key_expand=Tab 45 | key_exit=Escape 46 | 47 | -------------------------------------------------------------------------------- /.config/hypr/wofi/configs/config-gnome: -------------------------------------------------------------------------------- 1 | ## Wofi Config - Plasma 2 | 3 | ## General 4 | mode=drun,run 5 | run-always_parse_args=true 6 | show=drun 7 | prompt=Apps 8 | #normal_window=true 9 | layer=overlay 10 | term=foot 11 | columns=1 12 | lines=15 13 | 14 | ## Geometry 15 | height=20% 16 | width=12% 17 | location=top_left 18 | xoffset=4 19 | yoffset=10 20 | orientation=vertical 21 | halign=fill 22 | line_wrap=off 23 | dynamic_lines=false 24 | 25 | ## Images 26 | allow_markup=true 27 | allow_images=true 28 | image_size=24 29 | 30 | ## Search 31 | exec_search=false 32 | hide_search=false 33 | parse_search=false 34 | insensitive=false 35 | 36 | ## Other 37 | hide_scroll=false 38 | no_actions=true 39 | sort_order=default 40 | gtk_dark=true 41 | filter_rate=100 42 | 43 | ## Keys 44 | key_expand=Tab 45 | key_exit=Escape 46 | 47 | -------------------------------------------------------------------------------- /.config/wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "logout", 3 | "action" : "hyprctl dispatch exit 0", 4 | "text" : "Logout", 5 | "keybind" : "e" 6 | } 7 | { 8 | "label" : "hibernate", 9 | "action" : "systemctl hibernate", 10 | "text" : "Hibernate", 11 | "keybind" : "h" 12 | } 13 | { 14 | "label" : "reboot", 15 | "action" : "systemctl reboot", 16 | "text" : "Reboot", 17 | "keybind" : "r" 18 | } 19 | { 20 | "label" : "lock", 21 | "action" : "~/.config/hypr/scripts/LockScreen.sh", 22 | "text" : "Lock", 23 | "keybind" : "l" 24 | } 25 | { 26 | "label" : "shutdown", 27 | "action" : "systemctl poweroff", 28 | "text" : "Shutdown", 29 | "keybind" : "s" 30 | } 31 | { 32 | "label" : "suspend", 33 | "action" : "systemctl suspend", 34 | "text" : "Suspend", 35 | "keybind" : "u" 36 | } 37 | -------------------------------------------------------------------------------- /.config/hypr/waybar/configs/config-gnome: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "include": "~/.config/hypr/waybar/modules", 4 | "layer": "top", 5 | //"mode": "dock", 6 | "exclusive": true, 7 | "passthrough": false, 8 | "position": "top", 9 | "spacing": 3, 10 | "fixed-center": true, 11 | "ipc": true, 12 | "margin-left": 10, 13 | "margin-right": 10, 14 | "margin-top": 6, 15 | 16 | "modules-left": [ 17 | "custom/menu", 18 | "wlr/workspaces", 19 | "custom/updater", 20 | "hyprland/window", 21 | ], 22 | 23 | "modules-center": [ 24 | "clock", 25 | "custom/light_dark", 26 | "custom/weather", 27 | ], 28 | 29 | "modules-right": [ 30 | "tray", 31 | "network", 32 | "bluetooth", 33 | "cpu", 34 | "temperature", 35 | "memory", 36 | "battery", 37 | "backlight", 38 | "pulseaudio", 39 | //"wireplumber", 40 | "pulseaudio#microphone", 41 | "custom/cycle_wall", 42 | "custom/power", 43 | ], 44 | } 45 | -------------------------------------------------------------------------------- /.config/hypr/waybar/configs/config-plasma: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "include": "~/.config/hypr/waybar/modules", 4 | "layer": "top", 5 | //"mode": "dock", 6 | "exclusive": true, 7 | "passthrough": false, 8 | "position": "bottom", 9 | "spacing": 3, 10 | "fixed-center": true, 11 | "ipc": true, 12 | "margin-left": 10, 13 | "margin-right": 10, 14 | "margin-bottom": 6, 15 | 16 | "modules-left": [ 17 | "custom/menu", 18 | "wlr/workspaces", 19 | //"custom/updater", 20 | "wlr/taskbar", 21 | ], 22 | 23 | "modules-center": [ 24 | "hyprland/window", 25 | "custom/light_dark", 26 | ], 27 | 28 | "modules-right": [ 29 | "tray", 30 | "custom/weather", 31 | "clock", 32 | "cpu", 33 | "temperature", 34 | "memory", 35 | "backlight", 36 | "battery", 37 | "pulseaudio", 38 | //"wireplumber", 39 | "pulseaudio#microphone", 40 | "custom/updater", 41 | "custom/cycle_wall", 42 | "custom/power", 43 | ], 44 | } 45 | -------------------------------------------------------------------------------- /.latexmkrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | 3 | # LaTeX 4 | $latex = 'platex -synctex=1 -halt-on-error -file-line-error %O %S'; 5 | $max_repeat = 5; 6 | 7 | # BibTeX 8 | $bibtex = 'pbibtex %O %S'; 9 | $biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S'; 10 | 11 | # index 12 | $makeindex = 'mendex %O -o %D %S'; 13 | 14 | # DVI / PDF 15 | $dvipdf = 'dvipdfmx %O -o %D %S'; 16 | $pdf_mode = 3; 17 | 18 | # preview 19 | $pvc_view_file_via_temporary = 0; 20 | if ($^O eq 'linux') { 21 | $dvi_previewer = "xdg-open %S"; 22 | $pdf_previewer = "xdg-open %S"; 23 | $out_dir = 'out'; 24 | } elsif ($^O eq 'darwin') { 25 | $dvi_previewer = "open %S"; 26 | $pdf_previewer = "open %S"; 27 | $out_dir = 'out'; 28 | } else { 29 | $dvi_previewer = "start %S"; 30 | $pdf_previewer = "start %S"; 31 | $out_dir = 'out'; 32 | } 33 | 34 | # clean up 35 | $clean_full_ext = "%R.synctex.gz" 36 | 37 | -------------------------------------------------------------------------------- /.zshrc.mac: -------------------------------------------------------------------------------- 1 | export TERM="xterm-kitty" 2 | export EDITOR="nvim" 3 | export VOLTA_HOME="$HOME/.volta" 4 | export PATH="$VOLTA_HOME/bin:$PATH" 5 | export PATH="$HOME/.commands:$PATH" 6 | export PATH="$HOME/.bin:$PATH" 7 | export PATH="$HOME/.bun/bin:$PATH" 8 | export PATH="$HOME/.cargo/bin:$PATH" 9 | export PATH="$HOME/.local/nvim-macos/bin:$PATH" 10 | export DYLD_LIBRARY_PATH="$(brew --prefix)/lib:$DYLD_LIBRARY_PATH" 11 | export GPG_TTY=$(tty) 12 | export DISPLAY=:0 13 | export PATH="$HOME/.jenv/bin:$PATH" 14 | 15 | export ZSH="$HOME/.oh-my-zsh" 16 | ZSH_THEME="" 17 | plugins=(git zsh-autosuggestions zsh-syntax-highlighting) 18 | source $ZSH/oh-my-zsh.sh 19 | eval "$(starship init zsh)" 20 | 21 | eval "$(jenv init -)" 22 | 23 | alias python="python3" 24 | alias pip="pip3" 25 | alias pydoc="pydoc3" 26 | alias icat="kitten icat" 27 | alias gd="git difftool --no-symlinks --dir-diff" 28 | alias clock="tty-clock -sc -C4" 29 | 30 | DISABLE_AUTO_TITLE="true" 31 | -------------------------------------------------------------------------------- /.config/hypr/configs/ENVariables.conf: -------------------------------------------------------------------------------- 1 | #environment-variables 2 | env = QT_QPA_PLATFORMTHEME,qt5ct #necessary to run qt5ct properly 3 | env = GDK_BACKEND,wayland,x11 4 | env = QT_QPA_PLATFORM,wayland;xcb 5 | env = CLUTTER_BACKEND,wayland 6 | env = XDG_CURRENT_DESKTOP,Hyprland 7 | env = XDG_SESSION_DESKTOP,Hyprland 8 | env = QT_AUTO_SCREEN_SCALE_FACTOR,1 9 | env = XDG_SESSION_TYPE,wayland 10 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 11 | 12 | # NVIDIA 13 | # This is from Hyprland Wiki but my Hyprland keeps crashing when I enabled this variables 14 | env = WLR_NO_HARDWARE_CURSORS,1 15 | #env = LIBVA_DRIVER_NAME,nvidia 16 | #env = MOZ_ENABLE_WAYLAND,1 17 | #env = XDG_SESSION_TYPE,wayland 18 | #env = __GLX_VENDOR_LIBRARY_NAME,nvidia 19 | #env = GBM_BACKEND,nvidia-drm ## it causes issues like Hyprland crashing so care 20 | #env = __NV_PRIME_RENDER_OFFLOAD,1 21 | #env = __VK_LAYER_NV_optimus,NVIDIA_only 22 | #env = WLR_DRM_NO_ATOMIC,1 23 | #env = NVD_BACKEND,direct -------------------------------------------------------------------------------- /.config/hypr/configs/Monitors.conf: -------------------------------------------------------------------------------- 1 | # Monitor Configuration 2 | # Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info. 3 | 4 | # Monitors 5 | 6 | monitor = DP-2,1920x1080@240,0x1440,1 7 | monitor = DP-3,2560x1440@120,1920x0,1,transform,3 8 | workspace = DP-3,10 9 | 10 | #monitor=,preferred,auto,1 11 | 12 | # my G15 Laptop 13 | # monitor = eDP-1, preferred, auto, 1 14 | #monitor = eDP-1, 2560x1440@165, 0x0, 1 #own screen 15 | #monitor = DP-2, preferred, auto, 1 #my Samsung Odyssey-G7 16 | #monitor = DP-1, preferred, auto, 1 17 | #monitor = HDMI-A-1, preferred,auto,1 18 | 19 | # QEMU 20 | monitor = Virtual-1, 1920x1080@60,auto,1 21 | 22 | # Example : 23 | #monitor=eDP-1,2560x1440@165,0x0,1 24 | #workspace=HDMI-A-1,1 25 | #monitor=HDMI-A-1,2560x1440@144,0x0,1,mirror,eDP-1 26 | #workspace=HDMI-A-2,2 27 | 28 | #monitor=eDP-1,transform,0 29 | #monitor=eDP-1,addreserved,10,10,10,49 30 | #workspace=eDP-1,1 31 | 32 | -------------------------------------------------------------------------------- /.config/hypr/scripts/TouchPad.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # NOTE: find the right device using hyprctl devices 4 | 5 | HYPRLAND_DEVICE="asue1209:00-04f3:319f-touchpad" 6 | 7 | if [ -z "$XDG_RUNTIME_DIR" ]; then 8 | export XDG_RUNTIME_DIR=/run/user/$(id -u) 9 | fi 10 | 11 | export STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status" 12 | 13 | enable_touchpad() { 14 | printf "true" > "$STATUS_FILE" 15 | 16 | notify-send -u normal "Enabling Touchpad" 17 | 18 | hyprctl keyword "device:$HYPRLAND_DEVICE:enabled" true 19 | } 20 | 21 | disable_touchpad() { 22 | printf "false" > "$STATUS_FILE" 23 | 24 | notify-send -u normal "Disabling Touchpad" 25 | 26 | hyprctl keyword "device:$HYPRLAND_DEVICE:enabled" false 27 | } 28 | 29 | if ! [ -f "$STATUS_FILE" ]; then 30 | enable_touchpad 31 | else 32 | if [ $(cat "$STATUS_FILE") = "true" ]; then 33 | disable_touchpad 34 | elif [ $(cat "$STATUS_FILE") = "false" ]; then 35 | enable_touchpad 36 | fi 37 | fi 38 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Wallpaper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR=$HOME/Pictures/wallpapers/ 4 | PICS=($(find ${DIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \))) 5 | RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]} 6 | 7 | change_swaybg(){ 8 | pkill swww 9 | pkill swaybg 10 | swaybg -m fill -i ${RANDOMPICS} 11 | } 12 | 13 | change_swww(){ 14 | pkill swaybg 15 | swww query || swww init 16 | swww img ${RANDOMPICS} --transition-fps 30 --transition-type any --transition-duration 3 17 | } 18 | 19 | change_current(){ 20 | if pidof swaybg >/dev/null; then 21 | change_swaybg 22 | else 23 | change_swww 24 | fi 25 | } 26 | 27 | switch(){ 28 | if pidof swaybg >/dev/null; then 29 | change_swww 30 | else 31 | change_swaybg 32 | fi 33 | } 34 | 35 | case "$1" in 36 | "swaybg") 37 | change_swaybg 38 | ;; 39 | "swww") 40 | change_swww 41 | ;; 42 | "s") 43 | switch 44 | ;; 45 | *) 46 | change_current 47 | ;; 48 | esac -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dotfiles 2 | 3 | My desktop(Arch Linux + Hyprland) and laptop(MacOS) configs 4 | 5 | Font: `JetBrainsMono Nerd Font` 6 | 7 | Arch Linux + Hyprland based by [https://github.com/JaKooLit/Hyprland-v3](https://github.com/JaKooLit/Hyprland-v3) 8 | 9 | ![swappy-20230706-024705](https://github.com/RUNFUNRUN/dotfiles/assets/90281553/190a8838-b5fb-42c9-b021-54cf3de81f0d) 10 | 11 | Hyprland wallpaper 12 | ``` 13 | cp -r ./Pictures ~/ 14 | ``` 15 | 16 | ``` 17 | volta list 18 | ⚡️ Currently active tools: 19 | 20 | Node: v20.3.1 (default) 21 | Tool binaries available: 22 | github-copilot-cli (default) 23 | nest (default) 24 | corepack, pnpm, pnpx, yarn, yarnpkg (default) 25 | create-next-app (default) 26 | firebase (default) 27 | instant-markdown-d (default) 28 | live-server (default) 29 | neovim-node-host (default) 30 | prettier (default) 31 | tree-sitter (default) 32 | tsc, tsserver (default) 33 | ``` 34 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | syntax on 2 | set number 3 | set clipboard+=unnamed 4 | set tabstop=2 5 | set shiftwidth=2 6 | set smartindent 7 | set expandtab 8 | set incsearch 9 | set hlsearch 10 | set autoindent 11 | set encoding=utf-8 12 | set autoread 13 | set nobackup 14 | set nowritebackup 15 | set noswapfile 16 | set cursorline 17 | set laststatus=2 18 | set mouse=a 19 | set nowrap 20 | inoremap jj 21 | nnoremap :noh 22 | highlight Normal ctermfg=white ctermbg=16 23 | highlight Comment ctermfg=lightblue ctermbg=16 24 | highlight Constant ctermfg=lightyellow ctermbg=16 25 | highlight Identifier ctermfg=lightcyan ctermbg=16 26 | highlight Statement ctermfg=lightmagenta ctermbg=16 27 | highlight PreProc ctermfg=lightgreen ctermbg=16 28 | highlight Type ctermfg=lightred ctermbg=16 29 | highlight Special ctermfg=lightmagenta ctermbg=16 30 | highlight Underlined ctermfg=white ctermbg=16 31 | highlight CursorLine cterm=NONE ctermbg=234 32 | highlight LineNr ctermfg=240 33 | highlight CursorLineNr ctermfg=250 34 | -------------------------------------------------------------------------------- /.config/hypr/scripts/WaybarStyles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check which waybar theme is set 4 | THEMEIS=$(realpath ~/.config/hypr/waybar/style.css | sed 's/.*-\(.*\)\.css/\1/') 5 | 6 | # Change theme 7 | if [ "$THEMEIS" == "default" ]; then 8 | SWITCHTO="-b&w" 9 | elif [ "$THEMEIS" == "b&w" ]; then 10 | SWITCHTO="-rgb" 11 | elif [ "$THEMEIS" == "rgb" ]; then 12 | SWITCHTO="-default_alter" 13 | elif [ "$THEMEIS" == "default_alter" ]; then 14 | SWITCHTO="-mauve" 15 | elif [ "$THEMEIS" == "mauve" ]; then 16 | SWITCHTO="-light" 17 | elif [ "$THEMEIS" == "light" ]; then 18 | SWITCHTO="-dark" 19 | else 20 | SWITCHTO="-default" 21 | fi 22 | 23 | # Set the waybar theme 24 | THEMEFILE="$HOME/.config/hypr/waybar/style/style${SWITCHTO}.css" 25 | if [ -f "$THEMEFILE" ]; then 26 | ln -sf "$THEMEFILE" "$HOME/.config/hypr/waybar/style.css" 27 | 28 | else 29 | echo "Error: $THEMEFILE not found" 30 | exit 1 31 | fi 32 | 33 | # Restart waybar 34 | killall waybar 35 | exec ~/.config/hypr/scripts/Waybar.sh 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- for VSCode Neovim plugin 2 | 3 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 4 | if not vim.loop.fs_stat(lazypath) then 5 | vim.fn.system({ 6 | "git", 7 | "clone", 8 | "--filter=blob:none", 9 | "https://github.com/folke/lazy.nvim.git", 10 | "--branch=stable", -- latest stable release 11 | lazypath, 12 | }) 13 | end 14 | vim.opt.rtp:prepend(lazypath) 15 | 16 | require("lazy").setup({ 'machakann/vim-sandwich' }) 17 | 18 | vim.opt.clipboard = 'unnamedplus' 19 | 20 | local opts = { noremap = true, silent = true } 21 | 22 | vim.keymap.set('n', '', 'nohlsearch', opts) 23 | vim.keymap.set('n', 's', '', opts) 24 | 25 | -- only wsl 26 | -- vim.g.clipboard = { 27 | -- name = 'myClipboard', 28 | -- copy = { 29 | -- ['+'] = 'win32yank.exe -i --crlf', 30 | -- ['*'] = 'win32yank.exe -i --crlf' 31 | -- }, 32 | -- paste = { 33 | -- ['+'] = 'win32yank.exe -o --lf', 34 | -- ['*'] = 'win32yank.exe -o --lf' 35 | -- }, 36 | -- cache_enabled = 1 37 | -- } 38 | -------------------------------------------------------------------------------- /.config/hypr/swaylock/config: -------------------------------------------------------------------------------- 1 | daemonize 2 | show-failed-attempts 3 | clock 4 | screenshot 5 | effect-blur=9x5 6 | effect-vignette=0.5:0.5 7 | color=1f1d2e80 8 | font="Inter" 9 | indicator 10 | indicator-radius=200 11 | indicator-thickness=20 12 | line-color=1f1d2e 13 | ring-color=191724 14 | inside-color=1f1d2e 15 | key-hl-color=eb6f92 16 | separator-color=00000000 17 | text-color=e0def4 18 | text-caps-lock-color="" 19 | line-ver-color=eb6f92 20 | ring-ver-color=eb6f92 21 | inside-ver-color=1f1d2e 22 | text-ver-color=e0def4 23 | ring-wrong-color=31748f 24 | text-wrong-color=31748f 25 | inside-wrong-color=1f1d2e 26 | inside-clear-color=1f1d2e 27 | text-clear-color=e0def4 28 | ring-clear-color=9ccfd8 29 | line-clear-color=1f1d2e 30 | line-wrong-color=1f1d2e 31 | bs-hl-color=31748f 32 | grace=1 33 | grace-no-mouse 34 | grace-no-touch 35 | fade-in=0.2 36 | ignore-empty-password 37 | 38 | # AM/PM formats (American Format) 39 | #datestr=%a, %B %e 40 | #timestr=%I:%M %p 41 | 42 | #24 HRS clock format and standard Europe Date Format 43 | timestr=%H:%M:%S 44 | datestr=%d %B, %a 45 | -------------------------------------------------------------------------------- /.config/hypr/mako/styles/config-light: -------------------------------------------------------------------------------- 1 | # GLOBAL 2 | max-history=100 3 | sort=-time 4 | 5 | # BINDING OPTIONS 6 | on-button-left=dismiss 7 | on-button-middle=none 8 | on-button-right=dismiss-all 9 | on-touch=dismiss 10 | #on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga 11 | 12 | # STYLE OPTIONS 13 | font="Fantasque Sans Mono", 13 14 | width=300 15 | height=100 16 | margin=10 17 | padding=15 18 | border-size=1 19 | border-radius=12 20 | icons=1 21 | max-icon-size=48 22 | icon-location=left 23 | markup=1 24 | actions=1 25 | history=1 26 | text-alignment=center 27 | default-timeout=5000 28 | ignore-timeout=0 29 | max-visible=5 30 | layer=overlay 31 | anchor=top-center 32 | 33 | background-color=#e7e7ec 34 | text-color=#1e1e2e 35 | border-color=#313244 36 | progress-color=over #89b4fa 37 | 38 | [urgency=low] 39 | border-color=#313244 40 | default-timeout=2000 41 | 42 | [urgency=normal] 43 | border-color=#313244 44 | default-timeout=5000 45 | 46 | [urgency=high] 47 | border-color=#f38ba8 48 | text-color=#f38ba8 49 | default-timeout=0 50 | 51 | [category=mpd] 52 | border-color=#f9e2af 53 | default-timeout=2000 54 | group-by=category -------------------------------------------------------------------------------- /.config/hypr/mako/styles/config-dark: -------------------------------------------------------------------------------- 1 | # GLOBAL 2 | max-history=100 3 | sort=-time 4 | 5 | # BINDING OPTIONS 6 | on-button-left=dismiss 7 | on-button-middle=none 8 | on-button-right=dismiss-all 9 | on-touch=dismiss 10 | #on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga 11 | 12 | # STYLE OPTIONS 13 | font="JetBrainsMono Nerd Font", 12 14 | width=300 15 | height=100 16 | margin=10 17 | padding=15 18 | border-size=1 19 | border-radius=10 20 | icons=1 21 | max-icon-size=48 22 | icon-location=left 23 | markup=1 24 | actions=1 25 | history=1 26 | text-alignment=left 27 | default-timeout=5000 28 | ignore-timeout=0 29 | max-visible=3 30 | layer=overlay 31 | anchor=top-right 32 | 33 | background-color=#1e1e2e 34 | text-color=#cdd6f4 35 | border-color=#86AAEC 36 | progress-color=over #89b4fa 37 | 38 | [urgency=low] 39 | border-color=#86AAEC 40 | default-timeout=2000 41 | 42 | [urgency=normal] 43 | border-color=#86AAEC 44 | default-timeout=5000 45 | 46 | [urgency=high] 47 | border-color=#f38ba8 48 | text-color=#f38ba8 49 | default-timeout=0 50 | 51 | [category=mpd] 52 | border-color=#f9e2af 53 | default-timeout=2000 54 | group-by=category 55 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Brightness.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | iDIR="$HOME/.config/hypr/mako/icons" 4 | 5 | # Get brightness 6 | get_backlight() { 7 | echo $(brightnessctl -m | cut -d, -f4) 8 | } 9 | 10 | # Get icons 11 | get_icon() { 12 | current=$(get_backlight | sed 's/%//') 13 | if [ "$current" -le "20" ]; then 14 | icon="$iDIR/brightness-20.png" 15 | elif [ "$current" -le "40" ]; then 16 | icon="$iDIR/brightness-40.png" 17 | elif [ "$current" -le "60" ]; then 18 | icon="$iDIR/brightness-60.png" 19 | elif [ "$current" -le "80" ]; then 20 | icon="$iDIR/brightness-80.png" 21 | else 22 | icon="$iDIR/brightness-100.png" 23 | fi 24 | } 25 | 26 | # Notify 27 | notify_user() { 28 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Brightness : $current%" 29 | } 30 | 31 | # Change brightness 32 | change_backlight() { 33 | brightnessctl set "$1" && get_icon && notify_user 34 | } 35 | 36 | # Execute accordingly 37 | case "$1" in 38 | "--get") 39 | get_backlight 40 | ;; 41 | "--inc") 42 | change_backlight "+10%" 43 | ;; 44 | "--dec") 45 | change_backlight "10%-" 46 | ;; 47 | *) 48 | get_backlight 49 | ;; 50 | esac -------------------------------------------------------------------------------- /.config/cava/shaders/normalized_bars.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | in vec2 fragCoord; 4 | out vec4 fragColor; 5 | 6 | // bar values. defaults to left channels first (low to high), then right (high to low). 7 | uniform float bars[512]; 8 | 9 | uniform int bars_count; // number of bars (left + right) (configurable) 10 | 11 | uniform vec3 u_resolution; // window resolution, not used here 12 | 13 | //colors, configurable in cava config file 14 | uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here 15 | uniform vec3 fg_color; // foreground color, not used here 16 | 17 | float normalize_C(float x, float x_min, float x_max, float r_min, float r_max ) 18 | { 19 | float xr; 20 | xr = (r_max-r_min) * (x - x_min) / (x_max - x_min) + r_min; 21 | return xr; 22 | } 23 | 24 | void main() 25 | { 26 | // find which bar to use based on where we are on the x axis 27 | int bar = int(bars_count * fragCoord.x); 28 | 29 | // create a normal along the y axis based on the bar height 30 | float x = normalize_C(fragCoord.y, 1.0, 0.0, 0.0, bars[bar]); 31 | 32 | // set color 33 | fragColor.r=fg_color.x*x; 34 | fragColor.g=fg_color.y*x; 35 | fragColor.b=fg_color.z*x; 36 | fragColor.a=1.0; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /.config/hypr/scripts/BrightnessKbd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | iDIR="$HOME/.config/hypr/mako/icons" 4 | 5 | # Get keyboard brightness 6 | get_kbd_backlight() { 7 | echo $(brightnessctl -d '*::kbd_backlight' -m | cut -d, -f4) 8 | } 9 | 10 | # Get icons 11 | get_icon() { 12 | current=$(get_kbd_backlight | sed 's/%//') 13 | if [ "$current" -le "20" ]; then 14 | icon="$iDIR/brightness-20.png" 15 | elif [ "$current" -le "40" ]; then 16 | icon="$iDIR/brightness-40.png" 17 | elif [ "$current" -le "60" ]; then 18 | icon="$iDIR/brightness-60.png" 19 | elif [ "$current" -le "80" ]; then 20 | icon="$iDIR/brightness-80.png" 21 | else 22 | icon="$iDIR/brightness-100.png" 23 | fi 24 | } 25 | # Notify 26 | notify_user() { 27 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Keyboard Brightness : $current%" 28 | } 29 | 30 | # Change brightness 31 | change_kbd_backlight() { 32 | brightnessctl -d *::kbd_backlight set "$1" && get_icon && notify_user 33 | } 34 | 35 | # Execute accordingly 36 | case "$1" in 37 | "--get") 38 | get_kbd_backlight 39 | ;; 40 | "--inc") 41 | change_kbd_backlight "+30%" 42 | ;; 43 | "--dec") 44 | change_kbd_backlight "30%-" 45 | ;; 46 | *) 47 | get_kbd_backlight 48 | ;; 49 | esac 50 | -------------------------------------------------------------------------------- /.config/hypr/wofi/style.css: -------------------------------------------------------------------------------- 1 | *{ 2 | font-family: "JetBrainsMono Nerd Font"; 3 | min-height: 0; 4 | font-size: 100%; 5 | font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; 6 | padding: 0px; 7 | margin-top: 1px; 8 | margin-bottom: 1px; 9 | } 10 | 11 | 12 | #window { 13 | /*background-color: --wofi-color0;*/ 14 | background-color: rgba(26, 27, 38, 0.5); 15 | color: --wofi-color2; 16 | /*border: 2px solid --wofi-color1;*/ 17 | border-radius: 0px; 18 | } 19 | 20 | #outer-box { 21 | padding: 20px; 22 | } 23 | 24 | #input { 25 | background-color: --wofi-color1; 26 | /*border: 1px solid --wofi-color3;*/ 27 | padding: 8px 12px; 28 | } 29 | 30 | #scroll { 31 | margin-top: 20px; 32 | margin-bottom: 20px; 33 | } 34 | 35 | #inner-box { 36 | } 37 | 38 | #img { 39 | padding-right: 10px; 40 | } 41 | 42 | #text { 43 | color: --wofi-color2; 44 | } 45 | 46 | #text:selected { 47 | color: --wofi-color0; 48 | } 49 | 50 | #entry { 51 | padding: 6px; 52 | } 53 | 54 | #entry:selected { 55 | background-color: --wofi-color3; 56 | background: linear-gradient(90deg, #bbccdd, #cca5dd); 57 | color: --wofi-color0; 58 | } 59 | 60 | #unselected { 61 | } 62 | 63 | #selected { 64 | } 65 | 66 | #input, #entry:selected { 67 | border-radius: 8px; 68 | border: 1px solid #cba6f7; 69 | } 70 | -------------------------------------------------------------------------------- /.config/hypr/waybar/configs/config-dual: -------------------------------------------------------------------------------- 1 | [{ 2 | "include": "~/.config/hypr/waybar/modules", 3 | "layer": "top", 4 | //"mode": "dock", 5 | "exclusive": true, 6 | "passthrough": false, 7 | "position": "top", 8 | "spacing": 3, 9 | "fixed-center": true, 10 | "ipc": true, 11 | "margin-left": 6, 12 | "margin-right": 10, 13 | "margin-top": 10, 14 | 15 | "modules-left": [ 16 | "wlr/workspaces", 17 | "cpu", 18 | "temperature", 19 | "memory", 20 | "disk", 21 | ], 22 | 23 | "modules-center": [ 24 | "idle_inhibitor", 25 | "clock", 26 | "custom/light_dark", 27 | ], 28 | 29 | "modules-right": [ 30 | "custom/weather", 31 | "battery", 32 | "backlight", 33 | "bluetooth", 34 | "network", 35 | "custom/updater", 36 | "custom/cycle_wall", 37 | "custom/lock", 38 | ], 39 | }, 40 | 41 | { 42 | "include": "~/.config/hypr/waybar/modules", 43 | "layer": "top", 44 | "mode": "dock", 45 | "exclusive": true, 46 | "passthrough": false, 47 | "position": "bottom", 48 | "spacing": 3, 49 | "fixed-center": true, 50 | "ipc": true, 51 | "margin-left": 6, 52 | "margin-right": 10, 53 | "margin-bottom": 6, 54 | 55 | "modules-left": [ 56 | "custom/menu", 57 | "wlr/taskbar", 58 | ], 59 | 60 | "modules-center": [ 61 | "cava", 62 | ], 63 | 64 | "modules-right": [ 65 | "hyprland/window", 66 | "tray", 67 | "pulseaudio", 68 | //"wireplumber", 69 | "pulseaudio#microphone", 70 | "custom/power", 71 | ], 72 | 73 | }] -------------------------------------------------------------------------------- /.config/hypr/configs/Execs.conf: -------------------------------------------------------------------------------- 1 | #Commands to be executed at launch 2 | $scriptsDir = $HOME/.config/hypr/scripts 3 | $themes = $HOME/.config/hypr/themes 4 | 5 | # wallpaper stuff 6 | exec-once = swww query || swww init && swww img $HOME/Pictures/wallpapers/AnimeWaiting.png #using swww utility 7 | #exec-once = swww init 8 | #exec-once = swaybg -m fill -i $HOME/Pictures/wallpapers/Beach-Rock.jpg #using swaybg 9 | #exec-once = $scriptsDir/Wallpaper.sh #using swaybg random wallpaper 10 | 11 | # Startup 12 | exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 13 | #exec-once = dbus-update-activation-environment DISPLAY XAUTHORITY WAYLAND_DISPLAY 14 | exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 15 | 16 | exec-once = $scriptsDir/portal-arch-hyprland 17 | exec-once = /usr/lib/polkit-kde-authentication-agent-1 18 | 19 | # apps, blueman, network manager applet and ROG-control-Center 20 | exec-once = $scriptsDir/Startup.sh 21 | exec-once = blueman-applet & 22 | exec-once = nm-applet --indicator & 23 | #exec-once = rog-control-center & 24 | exec-once = fcitx5 & 25 | exec-once = easyeffects --gapplication-service & 26 | 27 | #clipboard manager 28 | exec-once = wl-paste --watch cliphist store 29 | 30 | #Catpuccin Themes 31 | #source = $themes/frappe.conf 32 | #source = $themes/latte.conf 33 | #source = $themes/macchiato.conf 34 | source = $themes/mocha.conf 35 | -------------------------------------------------------------------------------- /.config/hypr/themes/frappe.conf: -------------------------------------------------------------------------------- 1 | $rosewaterAlpha = fff5e0dc 2 | $flamingoAlpha = fff2cdcd 3 | $pinkAlpha = fff5c2e7 4 | $mauveAlpha = ffcba6f7 5 | $redAlpha = fff38ba8 6 | $maroonAlpha = ffeba0ac 7 | $peachAlpha = fffab387 8 | $yellowAlpha = fff9e2af 9 | $greenAlpha = ffa6e3a1 10 | $tealAlpha = ff94e2d5 11 | $skyAlpha = ff89dceb 12 | $sapphireAlpha = ff74c7ec 13 | $blueAlpha = ff89b4fa 14 | $lavenderAlpha = ffb4befe 15 | 16 | $textAlpha = ffcdd6f4 17 | $subtext1Alpha = ffbac2de 18 | $subtext0Alpha = ffa6adc8 19 | 20 | $overlay2Alpha = ff9399b2 21 | $overlay1Alpha = ff7f849c 22 | $overlay0Alpha = ff6c7086 23 | 24 | $surface2Alpha = ff585b70 25 | $surface1Alpha = ff45475a 26 | $surface0Alpha = ff313244 27 | 28 | $baseAlpha = ff1e1e2e 29 | $mantleAlpha = ff181825 30 | $crustAlpha = ff11111b 31 | 32 | $rosewater = 0xfff5e0dc 33 | $flamingo = 0xfff2cdcd 34 | $pink = 0xfff5c2e7 35 | $mauve = 0xffcba6f7 36 | $red = 0xfff38ba8 37 | $maroon = 0xffeba0ac 38 | $peach = 0xfffab387 39 | $yellow = 0xfff9e2af 40 | $green = 0xffa6e3a1 41 | $teal = 0xff94e2d5 42 | $sky = 0xff89dceb 43 | $sapphire = 0xff74c7ec 44 | $blue = 0xff89b4fa 45 | $lavender = 0xffb4befe 46 | 47 | $text = 0xffcdd6f4 48 | $subtext1 = 0xffbac2de 49 | $subtext0 = 0xffa6adc8 50 | 51 | $overlay2 = 0xff9399b2 52 | $overlay1 = 0xff7f849c 53 | $overlay0 = 0xff6c7086 54 | 55 | $surface2 = 0xff585b70 56 | $surface1 = 0xff45475a 57 | $surface0 = 0xff313244 58 | 59 | $base = 0xff1e1e2e 60 | $mantle = 0xff181825 61 | $crust = 0xff11111b 62 | -------------------------------------------------------------------------------- /.config/hypr/themes/latte.conf: -------------------------------------------------------------------------------- 1 | $rosewaterAlpha = fff5e0dc 2 | $flamingoAlpha = fff2cdcd 3 | $pinkAlpha = fff5c2e7 4 | $mauveAlpha = ffcba6f7 5 | $redAlpha = fff38ba8 6 | $maroonAlpha = ffeba0ac 7 | $peachAlpha = fffab387 8 | $yellowAlpha = fff9e2af 9 | $greenAlpha = ffa6e3a1 10 | $tealAlpha = ff94e2d5 11 | $skyAlpha = ff89dceb 12 | $sapphireAlpha = ff74c7ec 13 | $blueAlpha = ff89b4fa 14 | $lavenderAlpha = ffb4befe 15 | 16 | $textAlpha = ffcdd6f4 17 | $subtext1Alpha = ffbac2de 18 | $subtext0Alpha = ffa6adc8 19 | 20 | $overlay2Alpha = ff9399b2 21 | $overlay1Alpha = ff7f849c 22 | $overlay0Alpha = ff6c7086 23 | 24 | $surface2Alpha = ff585b70 25 | $surface1Alpha = ff45475a 26 | $surface0Alpha = ff313244 27 | 28 | $baseAlpha = ff1e1e2e 29 | $mantleAlpha = ff181825 30 | $crustAlpha = ff11111b 31 | 32 | $rosewater = 0xfff5e0dc 33 | $flamingo = 0xfff2cdcd 34 | $pink = 0xfff5c2e7 35 | $mauve = 0xffcba6f7 36 | $red = 0xfff38ba8 37 | $maroon = 0xffeba0ac 38 | $peach = 0xfffab387 39 | $yellow = 0xfff9e2af 40 | $green = 0xffa6e3a1 41 | $teal = 0xff94e2d5 42 | $sky = 0xff89dceb 43 | $sapphire = 0xff74c7ec 44 | $blue = 0xff89b4fa 45 | $lavender = 0xffb4befe 46 | 47 | $text = 0xffcdd6f4 48 | $subtext1 = 0xffbac2de 49 | $subtext0 = 0xffa6adc8 50 | 51 | $overlay2 = 0xff9399b2 52 | $overlay1 = 0xff7f849c 53 | $overlay0 = 0xff6c7086 54 | 55 | $surface2 = 0xff585b70 56 | $surface1 = 0xff45475a 57 | $surface0 = 0xff313244 58 | 59 | $base = 0xff1e1e2e 60 | $mantle = 0xff181825 61 | $crust = 0xff11111b 62 | -------------------------------------------------------------------------------- /.config/hypr/themes/mocha.conf: -------------------------------------------------------------------------------- 1 | $rosewaterAlpha = fff5e0dc 2 | $flamingoAlpha = fff2cdcd 3 | $pinkAlpha = fff5c2e7 4 | $mauveAlpha = ffcba6f7 5 | $redAlpha = fff38ba8 6 | $maroonAlpha = ffeba0ac 7 | $peachAlpha = fffab387 8 | $yellowAlpha = fff9e2af 9 | $greenAlpha = ffa6e3a1 10 | $tealAlpha = ff94e2d5 11 | $skyAlpha = ff89dceb 12 | $sapphireAlpha = ff74c7ec 13 | $blueAlpha = ff89b4fa 14 | $lavenderAlpha = ffb4befe 15 | 16 | $textAlpha = ffcdd6f4 17 | $subtext1Alpha = ffbac2de 18 | $subtext0Alpha = ffa6adc8 19 | 20 | $overlay2Alpha = ff9399b2 21 | $overlay1Alpha = ff7f849c 22 | $overlay0Alpha = ff6c7086 23 | 24 | $surface2Alpha = ff585b70 25 | $surface1Alpha = ff45475a 26 | $surface0Alpha = ff313244 27 | 28 | $baseAlpha = ff1e1e2e 29 | $mantleAlpha = ff181825 30 | $crustAlpha = ff11111b 31 | 32 | $rosewater = 0xfff5e0dc 33 | $flamingo = 0xfff2cdcd 34 | $pink = 0xfff5c2e7 35 | $mauve = 0xffcba6f7 36 | $red = 0xfff38ba8 37 | $maroon = 0xffeba0ac 38 | $peach = 0xfffab387 39 | $yellow = 0xfff9e2af 40 | $green = 0xffa6e3a1 41 | $teal = 0xff94e2d5 42 | $sky = 0xff89dceb 43 | $sapphire = 0xff74c7ec 44 | $blue = 0xff89b4fa 45 | $lavender = 0xffb4befe 46 | 47 | $text = 0xffcdd6f4 48 | $subtext1 = 0xffbac2de 49 | $subtext0 = 0xffa6adc8 50 | 51 | $overlay2 = 0xff9399b2 52 | $overlay1 = 0xff7f849c 53 | $overlay0 = 0xff6c7086 54 | 55 | $surface2 = 0xff585b70 56 | $surface1 = 0xff45475a 57 | $surface0 = 0xff313244 58 | 59 | $base = 0xff1e1e2e 60 | $mantle = 0xff181825 61 | $crust = 0xff11111b 62 | -------------------------------------------------------------------------------- /.config/hypr/themes/macchiato.conf: -------------------------------------------------------------------------------- 1 | $rosewaterAlpha = fff5e0dc 2 | $flamingoAlpha = fff2cdcd 3 | $pinkAlpha = fff5c2e7 4 | $mauveAlpha = ffcba6f7 5 | $redAlpha = fff38ba8 6 | $maroonAlpha = ffeba0ac 7 | $peachAlpha = fffab387 8 | $yellowAlpha = fff9e2af 9 | $greenAlpha = ffa6e3a1 10 | $tealAlpha = ff94e2d5 11 | $skyAlpha = ff89dceb 12 | $sapphireAlpha = ff74c7ec 13 | $blueAlpha = ff89b4fa 14 | $lavenderAlpha = ffb4befe 15 | 16 | $textAlpha = ffcdd6f4 17 | $subtext1Alpha = ffbac2de 18 | $subtext0Alpha = ffa6adc8 19 | 20 | $overlay2Alpha = ff9399b2 21 | $overlay1Alpha = ff7f849c 22 | $overlay0Alpha = ff6c7086 23 | 24 | $surface2Alpha = ff585b70 25 | $surface1Alpha = ff45475a 26 | $surface0Alpha = ff313244 27 | 28 | $baseAlpha = ff1e1e2e 29 | $mantleAlpha = ff181825 30 | $crustAlpha = ff11111b 31 | 32 | $rosewater = 0xfff5e0dc 33 | $flamingo = 0xfff2cdcd 34 | $pink = 0xfff5c2e7 35 | $mauve = 0xffcba6f7 36 | $red = 0xfff38ba8 37 | $maroon = 0xffeba0ac 38 | $peach = 0xfffab387 39 | $yellow = 0xfff9e2af 40 | $green = 0xffa6e3a1 41 | $teal = 0xff94e2d5 42 | $sky = 0xff89dceb 43 | $sapphire = 0xff74c7ec 44 | $blue = 0xff89b4fa 45 | $lavender = 0xffb4befe 46 | 47 | $text = 0xffcdd6f4 48 | $subtext1 = 0xffbac2de 49 | $subtext0 = 0xffa6adc8 50 | 51 | $overlay2 = 0xff9399b2 52 | $overlay1 = 0xff7f849c 53 | $overlay0 = 0xff6c7086 54 | 55 | $surface2 = 0xff585b70 56 | $surface1 = 0xff45475a 57 | $surface0 = 0xff313244 58 | 59 | $base = 0xff1e1e2e 60 | $mantle = 0xff181825 61 | $crust = 0xff11111b 62 | -------------------------------------------------------------------------------- /.yabairc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # global settings 4 | yabai -m config mouse_follows_focus on 5 | yabai -m config focus_follows_mouse autoraise 6 | yabai -m config window_origin_display default 7 | yabai -m config window_placement second_child 8 | yabai -m config window_topmost off 9 | yabai -m config window_shadow on 10 | yabai -m config window_opacity off 11 | yabai -m config window_opacity_duration 0.0 12 | yabai -m config active_window_opacity 1.0 13 | yabai -m config normal_window_opacity 0.90 14 | yabai -m config window_border off 15 | yabai -m config window_border_width 6 16 | yabai -m config active_window_border_color 0xff775759 17 | yabai -m config normal_window_border_color 0xff555555 18 | yabai -m config insert_feedback_color 0xffd75f5f 19 | yabai -m config split_ratio 0.50 20 | yabai -m config auto_balance off 21 | yabai -m config mouse_modifier fn 22 | yabai -m config mouse_action1 move 23 | yabai -m config mouse_action2 resize 24 | yabai -m config mouse_drop_action swap 25 | 26 | # general space settings 27 | yabai -m config layout bsp 28 | yabai -m config top_padding 06 29 | yabai -m config bottom_padding 06 30 | yabai -m config left_padding 06 31 | yabai -m config right_padding 06 32 | yabai -m config window_gap 06 33 | 34 | yabai -m rule --add app="^システム設定$" manage=off 35 | yabai -m rule --add app="^ゴミ箱$" manage=off 36 | yabai -m rule --add app="^Finder$" manage=off 37 | yabai -m rule --add app="^Raycast$" manage=off 38 | 39 | # raycast 40 | yabai -m signal --add event=space_changed action="nohup open -g raycast://extensions/krzysztoff1/yabai/screens-menu-bar?launchType=background > /dev/null 2>&1 &" 41 | 42 | echo "yabai configuration loaded.." 43 | -------------------------------------------------------------------------------- /.config/hypr/configs/WindowRules.conf: -------------------------------------------------------------------------------- 1 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 2 | 3 | windowrule = float, org.kde.polkit-kde-authentication-agent-1 4 | windowrule = float, nm-connection-editor|blueman-manager 5 | windowrule = float, swayimg|vlc|Viewnior|pavucontrol 6 | windowrule = float, nwg-look|qt5ct|mpv 7 | windowrule = float, onedriver|onedriver-launcher 8 | windowrule = float, zoom 9 | windowrule = float, wofi 10 | #windowrule = noblur,gamescope 11 | #windowrule = fullscreen,gamescope 12 | #windowrule = workspace 6 silent,^(gamescope)$ 13 | 14 | # windowrule v2 15 | # windowrulev2 = workspace 2, class:^(firefox)$ 16 | # windowrulev2 = workspace 2, class:^(Microsoft-edge-beta)$ #this is on arch 17 | # windowrulev2 = workspace 3, class:^(thunar)$ 18 | # windowrulev2 = workspace 1, class:^(thunderbird)$ 19 | # windowrulev2 = workspace 4, class:^(com.obsproject.Studio)$ 20 | # windowrulev2 = workspace 5 silent, class:^(Steam)$,title:^(Steam)$ 21 | # windowrulev2 = workspace 5 silent, class:^(lutris)$ 22 | # windowrulev2 = workspace 6, class:^(virt-manager)$ 23 | # windowrulev2 = workspace 7 silent, class:^(discord)$ 24 | # windowrulev2 = workspace 9 silent, class:^(audacious)$ 25 | 26 | #opacity (transparent) #enable as desired 27 | # windowrulev2 = opacity 0.9 0.7, class:^(firefox)$ 28 | #windowrulev2 = opacity 0.9 0.7, class:^(thunar)$ 29 | #windowrulev2 = opacity 0.7 0.7, class:^(foot)$ 30 | #windowrulev2 = opacity 0.9 0.7, class:^(mousepad)$ 31 | # windowrulev2 = opacity 0.9 0.7, class:^(codium-url-handler)$ 32 | # windowrulev2 = opacity 0.9 0.7, class:^(VSCodium)$ 33 | 34 | #windowrulev2 = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 35 | #windowrulev2 = bordercolor rgb(282737) rgb(1E1D2D), floating:1 36 | #windowrulev2 = opacity 0.8 0.8, pinned:1 37 | 38 | -------------------------------------------------------------------------------- /.tmux.conf: -------------------------------------------------------------------------------- 1 | # tmux起動時のシェルをzshにする 2 | set-option -g default-shell /bin/zsh 3 | 4 | # tmuxを256色表示できるようにする 5 | set-option -g default-terminal screen-256color 6 | set -g terminal-overrides 'xterm:colors=256' 7 | 8 | # prefixキーをC-qに変更 9 | set -g prefix C-q 10 | 11 | # C-bのキーバインドを解除 12 | unbind C-b 13 | 14 | # ステータスバーをトップに配置する 15 | # set-option -g status-position top 16 | 17 | # 左右のステータスバーの長さを決定する 18 | set-option -g status-left-length 90 19 | set-option -g status-right-length 90 20 | 21 | # #P => ペイン番号 22 | # 最左に表示 23 | set-option -g status-left '#H:[#P]' 24 | 25 | # Wi-Fi、バッテリー残量、現在時刻 26 | # 最右に表示 27 | set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M]' 28 | 29 | # ステータスバーを1秒毎に描画し直す 30 | set-option -g status-interval 1 31 | 32 | # センタライズ(主にウィンドウ番号など) 33 | set-option -g status-justify centre 34 | 35 | # ステータスバーの色を設定する 36 | set-option -g status-bg "colour68" 37 | 38 | # status line の文字色を指定する。 39 | set-option -g status-fg "colour15" 40 | 41 | # vimのキーバインドでペインを移動する 42 | bind h select-pane -L 43 | bind j select-pane -D 44 | bind k select-pane -U 45 | bind l select-pane -R 46 | 47 | # vimのキーバインドでペインをリサイズする 48 | bind -r H resize-pane -L 5 49 | bind -r J resize-pane -D 5 50 | bind -r K resize-pane -U 5 51 | bind -r L resize-pane -R 5 52 | 53 | # | でペインを縦分割する 54 | bind | split-window -h 55 | 56 | # - でペインを縦分割する 57 | bind - split-window -v 58 | 59 | # 番号基準値を変更 60 | set-option -g base-index 1 61 | 62 | # マウス操作を有効にする 63 | set-option -g mouse on 64 | bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'" 65 | 66 | # コピーモードを設定する 67 | # コピーモードでvimキーバインドを使う 68 | setw -g mode-keys vi 69 | 70 | # 'v' で選択を始める 71 | bind -T copy-mode-vi v send -X begin-selection 72 | 73 | # 'V' で行選択 74 | bind -T copy-mode-vi V send -X select-line 75 | 76 | # 'C-v' で矩形選択 77 | bind -T copy-mode-vi C-v send -X rectangle-toggle 78 | 79 | # 'y' でヤンク 80 | bind -T copy-mode-vi y send -X copy-selection 81 | 82 | # 'Y' で行ヤンク 83 | bind -T copy-mode-vi Y send -X copy-line 84 | 85 | # 'C-p'でペースト 86 | bind-key C-p paste-buffer 87 | -------------------------------------------------------------------------------- /.config/hypr/scripts/ScreenShot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | iDIR="$HOME/.config/hypr/mako/icons" 4 | 5 | time=$(date +%Y-%m-%d-%H-%M-%S) 6 | dir="$(xdg-user-dir)/Pictures/Screenshots" 7 | file="Screenshot_${time}_${RANDOM}.png" 8 | 9 | # notify and view screenshot 10 | notify_cmd_shot="notify-send -h string:x-canonical-private-synchronous:shot-notify -u low -i ${iDIR}/picture.png" 11 | notify_view() { 12 | ${notify_cmd_shot} "Copied to clipboard." 13 | ## viewnior ${dir}/"$file" 14 | if [[ -e "$dir/$file" ]]; then 15 | ${notify_cmd_shot} "Screenshot Saved." 16 | else 17 | ${notify_cmd_shot} "Screenshot Deleted." 18 | fi 19 | } 20 | 21 | # countdown 22 | countdown() { 23 | for sec in $(seq $1 -1 1); do 24 | notify-send -h string:x-canonical-private-synchronous:shot-notify -t 1000 -i "$iDIR"/timer.png "Taking shot in : $sec" 25 | sleep 1 26 | done 27 | } 28 | 29 | # take shots 30 | shotnow() { 31 | cd ${dir} && grim - | tee "$file" | wl-copy 32 | sleep 2 33 | notify_view 34 | } 35 | 36 | shot5() { 37 | countdown '5' 38 | sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy 39 | sleep 1 40 | notify_view 41 | 42 | } 43 | 44 | shot10() { 45 | countdown '10' 46 | sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy 47 | notify_view 48 | } 49 | 50 | shotwin() { 51 | w_pos=$(hyprctl activewindow | grep 'at:' | cut -d':' -f2 | tr -d ' ' | tail -n1) 52 | w_size=$(hyprctl activewindow | grep 'size:' | cut -d':' -f2 | tr -d ' ' | tail -n1 | sed s/,/x/g) 53 | cd ${dir} && grim -g "$w_pos $w_size" - | tee "$file" | wl-copy 54 | notify_view 55 | } 56 | 57 | shotarea() { 58 | cd ${dir} && grim -g "$(slurp -b 1B1F28CC -c E06B74ff -s C778DD0D -w 2)" - | tee "$file" | wl-copy 59 | notify_view 60 | } 61 | 62 | if [[ ! -d "$dir" ]]; then 63 | mkdir -p "$dir" 64 | fi 65 | 66 | if [[ "$1" == "--now" ]]; then 67 | shotnow 68 | elif [[ "$1" == "--in5" ]]; then 69 | shot5 70 | elif [[ "$1" == "--in10" ]]; then 71 | shot10 72 | elif [[ "$1" == "--win" ]]; then 73 | shotwin 74 | elif [[ "$1" == "--area" ]]; then 75 | shotarea 76 | else 77 | echo -e "Available Options : --now --in5 --in10 --win --area" 78 | fi 79 | 80 | exit 0 81 | -------------------------------------------------------------------------------- /.config/hypr/scripts/DarkLight-swaybg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -x 3 | # Define the path 4 | wallpaper_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers" 5 | hypr_config_path="$HOME/.config/hypr" 6 | 7 | # Define the GTK themes for light and dark modes 8 | # Catppuccin 9 | light_gtk_theme="Catppuccin-Latte-Standard-Mauve-light" 10 | dark_gtk_theme="Catppuccin-Mocha-Standard-Mauve-dark" 11 | light_icon_theme="Shiny-Light-Icons" 12 | dark_icon_theme="Shiny-Dark-Icons" 13 | 14 | # Mac-OS Like 15 | #light_gtk_theme="Mojave-Light" 16 | #dark_gtk_theme="Mojave-Dark" 17 | #light_icon_theme="McMojave-circle" 18 | #dark_icon_theme="McMojave-circle-dark" 19 | 20 | # Define functions for notifying user and updating symlinks 21 | notify_user() { 22 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u normal "Switching to $1 mode" 23 | } 24 | 25 | # Determine the current wallpaper mode by checking a configuration file 26 | if [ "$(cat ~/.wallpaper_mode)" = "light" ]; then 27 | current_mode="light" 28 | next_mode="dark" 29 | else 30 | current_mode="dark" 31 | next_mode="light" 32 | fi 33 | path_param=$(echo $next_mode | sed 's/.*/\u&/') 34 | 35 | notify_user "$next_mode" 36 | ln -sf "${hypr_config_path}/waybar/style/style-${next_mode}.css" "${hypr_config_path}/waybar/style.css" 37 | ln -sf "${hypr_config_path}/mako/styles/config-${next_mode}" "${hypr_config_path}/mako/config" 38 | ln -sf "${hypr_config_path}/wofi/styles/style-${next_mode}.css" "${hypr_config_path}/wofi/style.css" 39 | 40 | gtk_theme="${next_mode}_gtk_theme" 41 | icon_theme="${next_mode}_icon_theme" 42 | 43 | gsettings set org.gnome.desktop.interface gtk-theme "${!gtk_theme}" 44 | gsettings set org.gnome.desktop.interface icon-theme "${!icon_theme}" 45 | 46 | # Find the next wallpaper if one exists 47 | current_wallpaper="$(cat ~/.current_wallpaper)" 48 | next_wallpaper="${current_wallpaper/_"$current_mode"/_"$next_mode"}" 49 | 50 | if ! [ -f "$next_wallpaper" ]; then 51 | next_wallpaper="$(find "${wallpaper_path/"${path_param}"}" -type f -iname "*_"${next_mode}".jpg" -print0 | shuf -n1 -z | xargs -0)" 52 | fi 53 | 54 | swaybg -m fill -i "${next_wallpaper}" & 55 | 56 | # Update the configuration file to reflect the new wallpaper mode and current wallpaper 57 | echo "$next_mode" > ~/.wallpaper_mode 58 | echo "$next_wallpaper" > ~/.current_wallpaper 59 | 60 | sleep 2 61 | exec ~/.config/hypr/scripts/Startup.sh & 62 | -------------------------------------------------------------------------------- /.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | font_family family='JetBrainsMono Nerd Font Mono' 2 | bold_font auto 3 | italic_font auto 4 | bold_italic_font auto 5 | 6 | font_size 20 7 | background_opacity 0.9 8 | 9 | allow_remote_control yes 10 | clipboard_control write-clipboard read-clipboard 11 | scrollback_pager nvim -c "silent write! /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - " 12 | 13 | # window settings 14 | initial_window_width 95c 15 | initial_window_height 35c 16 | window_padding_width 0 17 | single_window_padding_width -1 18 | confirm_os_window_close 0 19 | enabled_layouts tall 20 | 21 | # tabs 22 | active_tab_background #82aaff 23 | active_tab_foreground #1e2030 24 | inactive_tab_background #2f334d 25 | inactive_tab_foreground #545c7e 26 | tab_bar_background #1b1d2b 27 | 28 | # windows 29 | active_border_color #82aaff 30 | inactive_border_color #2f334d 31 | 32 | 33 | # tab 34 | tab_bar_edge bottom 35 | tab_bar_align left 36 | tab_bar_style custom 37 | tab_bar_min_tabs 1 38 | tab_activity_symbol none 39 | bell_on_tab no 40 | tab_separator "" 41 | tab_bar_margin_width 0.0 42 | tab_bar_margin_height 0.0 0.0 43 | tab_title_template "{f' ~ ' if title == '~' else (f'…{title[-15:]}' if len(title) > 16 else title)}" 44 | active_tab_font_style bold 45 | 46 | # keybindings 47 | kitty_mod cmd 48 | map kitty_mod+t new_tab_with_cwd 49 | map kitty_mod+1 goto_tab 1 50 | map kitty_mod+2 goto_tab 2 51 | map kitty_mod+3 goto_tab 3 52 | map kitty_mod+4 goto_tab 4 53 | map kitty_mod+5 goto_tab 5 54 | map kitty_mod+6 goto_tab 6 55 | map kitty_mod+7 goto_tab 7 56 | map kitty_mod+8 goto_tab 8 57 | map kitty_mod+9 goto_tab 9 58 | map kitty_mod+0 goto_tab 10 59 | map ctrl+shift+q close_tab 60 | map ctrl+shift+h show_scrollback 61 | 62 | macos_option_as_alt yes 63 | 64 | # Normal colors 65 | background #222436 66 | foreground #c8d3f5 67 | selection_background #2d3f76 68 | selection_foreground #c8d3f5 69 | url_color #4fd6be 70 | cursor #c8d3f5 71 | cursor_text_color #222436 72 | 73 | color0 #1b1d2b 74 | color1 #ff757f 75 | color2 #c3e88d 76 | color3 #ffc777 77 | color4 #82aaff 78 | color5 #c099ff 79 | color6 #86e1fc 80 | color7 #828bb8 81 | 82 | # bright colors 83 | color8 #444a73 84 | color9 #ff757f 85 | color10 #c3e88d 86 | color11 #ffc777 87 | color12 #82aaff 88 | color13 #c099ff 89 | color14 #86e1fc 90 | color15 #c8d3f5 91 | 92 | # extended colors 93 | color16 #ff966c 94 | color17 #c53b53 95 | -------------------------------------------------------------------------------- /.config/hypr/scripts/WallpaperSelect.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # WALLPAPERS PATH 4 | DIR=$HOME/Pictures/wallpapers 5 | 6 | # Transition config (type swww img --help for more settings 7 | FPS=30 8 | TYPE="simple" 9 | DURATION=3 10 | 11 | # wofi window config (in %) 12 | WIDTH=20 13 | HEIGHT=40 14 | 15 | SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION" 16 | 17 | PICS=($(ls ${DIR} | grep -e ".jpg$" -e ".jpeg$" -e ".png$" -e ".gif$")) 18 | #PICS=($(find ${DIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" \))) 19 | 20 | RANDOM_PIC=${PICS[ $RANDOM % ${#PICS[@]} ]} 21 | RANDOM_PIC_NAME="${#PICS[@]}. random" 22 | 23 | # WOFI STYLES 24 | CONFIG="$HOME/.config/hypr/wofi/WofiBig/config" 25 | STYLE="$HOME/.config/hypr/wofi/style.css" 26 | COLORS="$HOME/.config/hypr/wofi/colors" 27 | 28 | # to check if swaybg is running 29 | if [[ $(pidof swaybg) ]]; then 30 | pkill swaybg 31 | fi 32 | 33 | ## Wofi Command 34 | wofi_command="wofi --show dmenu \ 35 | --prompt choose... 36 | --conf $CONFIG --style $STYLE --color $COLORS \ 37 | --width=$WIDTH% --height=$HEIGHT% \ 38 | --cache-file=/dev/null \ 39 | --hide-scroll --no-actions \ 40 | --matching=fuzzy" 41 | 42 | menu(){ 43 | # Here we are looping in the PICS array that is composed of all images in the $DIR folder 44 | for i in ${!PICS[@]}; do 45 | # keeping the .gif to make sue you know it is animated 46 | if [[ -z $(echo ${PICS[$i]} | grep .gif$) ]]; then 47 | printf "$i. $(echo ${PICS[$i]} | cut -d. -f1)\n" # n°. 48 | else 49 | printf "$i. ${PICS[$i]}\n" 50 | fi 51 | done 52 | 53 | printf "$RANDOM_PIC_NAME" 54 | } 55 | 56 | swww query || swww init 57 | 58 | main() { 59 | choice=$(menu | ${wofi_command}) 60 | 61 | # no choice case 62 | if [[ -z $choice ]]; then return; fi 63 | 64 | # random choice case 65 | if [ "$choice" = "$RANDOM_PIC_NAME" ]; then 66 | swww img ${DIR}/${RANDOM_PIC} $SWWW_PARAMS 67 | return 68 | fi 69 | 70 | pic_index=$(echo $choice | cut -d. -f1) 71 | swww img ${DIR}/${PICS[$pic_index]} $SWWW_PARAMS 72 | } 73 | 74 | # Check if wofi is already running 75 | if pidof wofi >/dev/null; then 76 | killall wofi 77 | exit 0 78 | else 79 | main 80 | fi 81 | 82 | # Uncomment to launch something if a choice was made 83 | # if [[ -n "$choice" ]]; then 84 | # Restart Waybar 85 | # fi -------------------------------------------------------------------------------- /.config/hypr/scripts/WofiBeats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## Files 4 | CONFIG="$HOME/.config/hypr/wofi/WofiBig/config" 5 | STYLE="$HOME/.config/hypr/wofi/style.css" 6 | COLORS="$HOME/.config/hypr/wofi/colors" 7 | iDIR="$HOME/.config/hypr/mako/icons" 8 | 9 | 10 | # wofi window config (in %) 11 | WIDTH=20 12 | HEIGHT=40 13 | 14 | ## Wofi Command 15 | wofi_command="wofi --show dmenu \ 16 | --prompt choose... 17 | --conf $CONFIG --style $STYLE --color $COLORS \ 18 | --width=$WIDTH% --height=$HEIGHT% \ 19 | --cache-file=/dev/null \ 20 | --hide-scroll --no-actions \ 21 | --matching=fuzzy" 22 | 23 | 24 | notification(){ 25 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/music.png" "Now Playing: Online Music" 26 | } 27 | 28 | menu(){ 29 | printf "1. Lofi Girl\n" 30 | printf "2. 96.3 Easy Rock - FM Radio\n" 31 | printf "3. Box Lofi\n" 32 | printf "4. Top Music 2023\n" 33 | printf "5. Youtube Global Top 100\n" 34 | printf "6. SmoothChill\n" 35 | printf "7. Relaxing Music\n" 36 | printf "8. Youtube Remix\n" 37 | printf "9. K-Drama-OST2" 38 | } 39 | main() { 40 | choice=$(menu | ${wofi_command} | cut -d. -f1) 41 | case $choice in 42 | 1) 43 | notification 44 | mpv "https://play.streamafrica.net/lofiradio" 45 | return 46 | ;; 47 | 2) 48 | notification 49 | mpv "https://tunein.com/radio/Easy-Rock-Manila-963-s120725/" 50 | return 51 | ;; 52 | 3) 53 | notification 54 | mpv "http://stream.zeno.fm/f3wvbbqmdg8uv" 55 | return 56 | ;; 57 | 4) 58 | notification ; 59 | mpv --shuffle --vid=no "https://youtube.com/playlist?list=PL6k9a6aYB2zk0qSbXR-ZEiwqgdHymsRtQ" 60 | return 61 | ;; 62 | 5) 63 | notification ; 64 | mpv --shuffle --vid=no "https://youtube.com/playlist?list=PL4fGSI1pDJn5kI81J1fYWK5eZRl1zJ5kM" 65 | return 66 | ;; 67 | 6) 68 | notification ; 69 | mpv "https://media-ssl.musicradio.com/SmoothChill" 70 | return 71 | ;; 72 | 7) 73 | notification ; 74 | mpv --shuffle --vid=no "https://youtube.com/playlist?list=PLMIbmfP_9vb8BCxRoraJpoo4q1yMFg4CE" 75 | return 76 | ;; 77 | 8) 78 | notification ; 79 | mpv --shuffle --vid=no "https://youtube.com/playlist?list=PLeqTkIUlrZXlSNn3tcXAa-zbo95j0iN-0" 80 | return 81 | ;; 82 | 9) 83 | notification ; 84 | mpv --shuffle --vid=no "https://youtube.com/playlist?list=PLUge_o9AIFp4HuA-A3e3ZqENh63LuRRlQ" 85 | return 86 | ;; 87 | esac 88 | } 89 | 90 | pkill -f http && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/music.png" "Online Music stopped" || main 91 | -------------------------------------------------------------------------------- /.config/hypr/scripts/ChangeLayoutMenu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Files 4 | CONFIG="$HOME/.config/hypr/wofi/WofiBig/config" 5 | STYLE="$HOME/.config/hypr/wofi/style.css" 6 | COLORS="$HOME/.config/hypr/wofi/colors" 7 | 8 | WAYBARFILE="$HOME/.config/hypr/waybar/config" 9 | WOFIFILE="$HOME/.config/hypr/wofi/config" 10 | 11 | # wofi window config (in %) 12 | WIDTH=12 13 | HEIGHT=30 14 | 15 | ## Wofi Command 16 | wofi_command="wofi --show dmenu \ 17 | --prompt choose... 18 | --conf $CONFIG --style $STYLE --color $COLORS \ 19 | --width=$WIDTH% --height=$HEIGHT% \ 20 | --cache-file=/dev/null \ 21 | --hide-scroll --no-actions \ 22 | --matching=fuzzy" 23 | 24 | 25 | menu(){ 26 | printf "1. default\n" 27 | printf "2. plasma-style\n" 28 | printf "3. gnome-style\n" 29 | printf "4. dual-panel\n" 30 | printf "5. simple\n" 31 | printf "6. no panel" 32 | } 33 | 34 | main() { 35 | choice=$(menu | ${wofi_command} | cut -d. -f1) 36 | case $choice in 37 | 1) 38 | ln -sf "$HOME/.config/hypr/waybar/configs/config-default" "$WAYBARFILE" 39 | ln -sf "$HOME/.config/hypr/wofi/configs/config-default" "$WOFIFILE" 40 | ;; 41 | 2) 42 | ln -sf "$HOME/.config/hypr/waybar/configs/config-plasma" "$WAYBARFILE" 43 | ln -sf "$HOME/.config/hypr/wofi/configs/config-plasma" "$WOFIFILE" 44 | ;; 45 | 3) 46 | ln -sf "$HOME/.config/hypr/waybar/configs/config-gnome" "$WAYBARFILE" 47 | ln -sf "$HOME/.config/hypr/wofi/configs/config-gnome" "$WOFIFILE" 48 | ;; 49 | 4) 50 | ln -sf "$HOME/.config/hypr/waybar/configs/config-dual" "$WAYBARFILE" 51 | ln -sf "$HOME/.config/hypr/wofi/configs/config-default" "$WOFIFILE" 52 | ;; 53 | 5) 54 | ln -sf "$HOME/.config/hypr/waybar/configs/config-simple" "$WAYBARFILE" 55 | ln -sf "$HOME/.config/hypr/wofi/configs/config-default" "$WOFIFILE" 56 | ;; 57 | 6) 58 | if pgrep -x "waybar" >/dev/null; then 59 | killall waybar 60 | exit 61 | fi 62 | ;; 63 | *) 64 | ;; 65 | esac 66 | } 67 | 68 | # Check if wofi is already running 69 | if pidof wofi >/dev/null; then 70 | killall wofi 71 | exit 0 72 | else 73 | main 74 | fi 75 | 76 | # Restart Waybar and run other scripts if a choice was made 77 | if [[ -n "$choice" ]]; then 78 | # Restart Waybar 79 | killall waybar 80 | fi 81 | 82 | exec ~/.config/hypr/scripts/Startup.sh & 83 | -------------------------------------------------------------------------------- /.config/hypr/scripts/DarkLight.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -x 3 | # Define the path 4 | wallpaper_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers" 5 | hypr_config_path="$HOME/.config/hypr" 6 | 7 | # Define the GTK themes for light and dark modes 8 | # Catppuccin 9 | light_gtk_theme="Catppuccin-Latte-Standard-Mauve-light" 10 | dark_gtk_theme="Catppuccin-Mocha-Standard-Mauve-dark" 11 | light_icon_theme="Shiny-Light-Icons" 12 | dark_icon_theme="Shiny-Dark-Icons" 13 | 14 | # Mac-OS Like 15 | #light_gtk_theme="Mojave-Light" 16 | #dark_gtk_theme="Mojave-Dark" 17 | #light_icon_theme="McMojave-circle" 18 | #dark_icon_theme="McMojave-circle-dark" 19 | 20 | pkill swaybg 21 | 22 | # Initialize swww if needed 23 | swww query || swww init 24 | 25 | # Set swww options 26 | swww="swww img" 27 | effect="--transition-bezier .43,1.19,1,.4 --transition-fps 60 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2" 28 | 29 | # Define functions for notifying user and updating symlinks 30 | notify_user() { 31 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u normal "Switching to $1 mode" 32 | } 33 | 34 | # Determine the current wallpaper mode by checking a configuration file 35 | if [ "$(cat ~/.wallpaper_mode)" = "light" ]; then 36 | current_mode="light" 37 | next_mode="dark" 38 | else 39 | current_mode="dark" 40 | next_mode="light" 41 | fi 42 | path_param=$(echo $next_mode | sed 's/.*/\u&/') 43 | 44 | notify_user "$next_mode" 45 | ln -sf "${hypr_config_path}/waybar/style/style-${next_mode}.css" "${hypr_config_path}/waybar/style.css" 46 | ln -sf "${hypr_config_path}/mako/styles/config-${next_mode}" "${hypr_config_path}/mako/config" 47 | ln -sf "${hypr_config_path}/wofi/styles/style-${next_mode}.css" "${hypr_config_path}/wofi/style.css" 48 | 49 | gtk_theme="${next_mode}_gtk_theme" 50 | icon_theme="${next_mode}_icon_theme" 51 | 52 | gsettings set org.gnome.desktop.interface gtk-theme "${!gtk_theme}" 53 | gsettings set org.gnome.desktop.interface icon-theme "${!icon_theme}" 54 | 55 | # Find the next wallpaper if one exists 56 | current_wallpaper="$(cat ~/.current_wallpaper)" 57 | next_wallpaper="${current_wallpaper/_"$current_mode"/_"$next_mode"}" 58 | 59 | if ! [ -f "$next_wallpaper" ]; then 60 | next_wallpaper="$(find "${wallpaper_path/"${path_param}"}" -type f -iname "*_"${next_mode}".jpg" -print0 | shuf -n1 -z | xargs -0)" 61 | fi 62 | 63 | $swww "${next_wallpaper}" $effect 64 | 65 | # Update the configuration file to reflect the new wallpaper mode and current wallpaper 66 | echo "$next_mode" > ~/.wallpaper_mode 67 | echo "$next_wallpaper" > ~/.current_wallpaper 68 | 69 | sleep 2 70 | exec ~/.config/hypr/scripts/Startup.sh & 71 | -------------------------------------------------------------------------------- /.config/cava/shaders/bar_spectrum.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | in vec2 fragCoord; 4 | out vec4 fragColor; 5 | 6 | // bar values. defaults to left channels first (low to high), then right (high to low). 7 | uniform float bars[512]; 8 | 9 | uniform int bars_count; // number of bars (left + right) (configurable) 10 | uniform int bar_width; // bar width (configurable), not used here 11 | uniform int bar_spacing; // space bewteen bars (configurable) 12 | 13 | uniform vec3 u_resolution; // window resolution 14 | 15 | //colors, configurable in cava config file (r,g,b) (0.0 - 1.0) 16 | uniform vec3 bg_color; // background color 17 | uniform vec3 fg_color; // foreground color 18 | 19 | uniform int gradient_count; 20 | uniform vec3 gradient_colors[8]; // gradient colors 21 | 22 | vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) 23 | { 24 | //create color based on fraction of this color and next color 25 | float yr = (y - y_min) / (y_max - y_min); 26 | return col_1 * (1.0 - yr) + col_2 * yr; 27 | } 28 | 29 | void main() 30 | { 31 | // find which bar to use based on where we are on the x axis 32 | float x = u_resolution.x * fragCoord.x; 33 | int bar = int(bars_count * fragCoord.x); 34 | 35 | //calculate a bar size 36 | float bar_size = u_resolution.x / bars_count; 37 | 38 | //the y coordinate and bar values are the same 39 | float y = bars[bar]; 40 | 41 | // make sure there is a thin line at bottom 42 | if (y * u_resolution.y < 1.0) 43 | { 44 | y = 1.0 / u_resolution.y; 45 | } 46 | 47 | //draw the bar up to current height 48 | if (y > fragCoord.y) 49 | { 50 | //make some space between bars basen on settings 51 | if (x > (bar + 1) * (bar_size) - bar_spacing) 52 | { 53 | fragColor = vec4(bg_color,1.0); 54 | } 55 | else 56 | { 57 | if (gradient_count == 0) 58 | { 59 | fragColor = vec4(fg_color,1.0); 60 | } 61 | else 62 | { 63 | //find which color in the configured gradient we are at 64 | int color = int((gradient_count - 1) * fragCoord.y); 65 | 66 | //find where on y this and next color is supposed to be 67 | float y_min = color / (gradient_count - 1.0); 68 | float y_max = (color + 1.0) / (gradient_count - 1.0); 69 | 70 | //make color 71 | fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); 72 | } 73 | } 74 | } 75 | else 76 | { 77 | fragColor = vec4(bg_color,1.0); 78 | } 79 | } -------------------------------------------------------------------------------- /.config/hypr/scripts/Weather.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cachedir=~/.cache/rbn 4 | cachefile=${0##*/}-$1 5 | 6 | if [ ! -d $cachedir ]; then 7 | mkdir -p $cachedir 8 | fi 9 | 10 | if [ ! -f $cachedir/$cachefile ]; then 11 | touch $cachedir/$cachefile 12 | fi 13 | 14 | # Save current IFS 15 | SAVEIFS=$IFS 16 | # Change IFS to new line. 17 | IFS=$'\n' 18 | 19 | cacheage=$(($(date +%s) - $(stat -c '%Y' "$cachedir/$cachefile"))) 20 | if [ $cacheage -gt 1740 ] || [ ! -s $cachedir/$cachefile ]; then 21 | data=($(curl -s https://en.wttr.in/$1\?0qnT 2>&1)) 22 | echo ${data[0]} | cut -f1 -d, > $cachedir/$cachefile 23 | echo ${data[1]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile 24 | echo ${data[2]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile 25 | fi 26 | 27 | weather=($(cat $cachedir/$cachefile)) 28 | 29 | # Restore IFSClear 30 | IFS=$SAVEIFS 31 | 32 | temperature=$(echo ${weather[2]} | sed -E 's/([[:digit:]]+)\.\./\1 to /g') 33 | 34 | #echo ${weather[1]##*,} 35 | 36 | # https://fontawesome.com/icons?s=solid&c=weather 37 | case $(echo ${weather[1]##*,} | tr '[:upper:]' '[:lower:]') in 38 | "clear" | "sunny") 39 | condition="" 40 | ;; 41 | "partly cloudy") 42 | condition="⛅" 43 | ;; 44 | "cloudy") 45 | condition="" 46 | ;; 47 | "overcast") 48 | condition="" 49 | ;; 50 | "fog" | "freezing fog") 51 | condition="" 52 | ;; 53 | "patchy rain possible" | "patchy light drizzle" | "light drizzle" | "patchy light rain" | "light rain" | "light rain shower" | "mist" | "rain") 54 | condition="🌧️" 55 | ;; 56 | "moderate rain at times" | "moderate rain" | "heavy rain at times" | "heavy rain" | "moderate or heavy rain shower" | "torrential rain shower" | "rain shower") 57 | condition="" 58 | ;; 59 | "patchy snow possible" | "patchy sleet possible" | "patchy freezing drizzle possible" | "freezing drizzle" | "heavy freezing drizzle" | "light freezing rain" | "moderate or heavy freezing rain" | "light sleet" | "ice pellets" | "light sleet showers" | "moderate or heavy sleet showers") 60 | condition="❄️" 61 | ;; 62 | "blowing snow" | "moderate or heavy sleet" | "patchy light snow" | "light snow" | "light snow showers") 63 | condition="❄️" 64 | ;; 65 | "blizzard" | "patchy moderate snow" | "moderate snow" | "patchy heavy snow" | "heavy snow" | "moderate or heavy snow with thunder" | "moderate or heavy snow showers") 66 | condition="❄️" 67 | ;; 68 | "thundery outbreaks possible" | "patchy light rain with thunder" | "moderate or heavy rain with thunder" | "patchy light snow with thunder") 69 | condition="" 70 | ;; 71 | *) 72 | condition="" 73 | echo -e "{\"text\":\""$condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" 74 | ;; 75 | esac 76 | 77 | #echo $temp $condition 78 | 79 | echo -e "{\"text\":\""$temperature $condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" 80 | -------------------------------------------------------------------------------- /.config/wlogout/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | background-image: none; 3 | } 4 | 5 | window { 6 | background-color: rgba(17, 17, 27, 0.6); 7 | } 8 | 9 | button { 10 | color: #b4befe; 11 | background-color: rgba(17, 17, 27, 0.0); 12 | outline-style: none; 13 | border: none; 14 | border-width: 0px; 15 | background-repeat: no-repeat; 16 | background-position: center; 17 | background-size: 10%; 18 | border-radius: 20px; 19 | box-shadow: none; 20 | text-shadow: none; 21 | animation: gradient_f 20s ease-in infinite; 22 | } 23 | 24 | button:hover#lock { 25 | background-color: #6464c8; 26 | /* background-size: 25%; */ 27 | /* margin-right : 30px; */ 28 | /* margin-bottom : 30px; */ 29 | /* border-radius: 20px; */ 30 | /* animation: gradient_f 20s ease-in infinite; */ 31 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 32 | } 33 | 34 | button:hover#logout { 35 | background-color: #6464c8; 36 | /* background-size: 25%; */ 37 | /* margin-right : 30px; */ 38 | /* margin-top : 30px; */ 39 | /* border-radius: 20px; */ 40 | /* animation: gradient_f 20s ease-in infinite; */ 41 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 42 | } 43 | 44 | button:hover#shutdown { 45 | background-color: #6464c8; 46 | /* background-size: 25%; */ 47 | /* margin-left : 20px; */ 48 | /* margin-bottom : 30px; */ 49 | /* border-radius: 20px; */ 50 | /* animation: gradient_f 20s ease-in infinite; */ 51 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 52 | } 53 | 54 | button:hover#reboot { 55 | background-color: #6464c8; 56 | /* background-size: 25%; */ 57 | /* margin-left : 30px; */ 58 | /* margin-top : 30px; */ 59 | /* border-radius: 20px; */ 60 | /* animation: gradient_f 20s ease-in infinite; */ 61 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 62 | } 63 | 64 | button:hover#suspend { 65 | background-color: #6464c8; 66 | /* background-size: 25%; */ 67 | /* margin-left : 30px; */ 68 | /* margin-top : 30px; */ 69 | /* border-radius: 20px; */ 70 | /* animation: gradient_f 20s ease-in infinite; */ 71 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 72 | } 73 | 74 | button:hover#hibernate { 75 | background-color: #6464c8; 76 | /* background-size: 25%; */ 77 | /* margin-left : 30px; */ 78 | /* margin-top : 30px; */ 79 | /* border-radius: 20px; */ 80 | /* animation: gradient_f 20s ease-in infinite; */ 81 | /* transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); */ 82 | } 83 | 84 | #lock { 85 | background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); 86 | } 87 | 88 | #logout { 89 | background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); 90 | } 91 | 92 | #shutdown { 93 | background-image: image(url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); 94 | } 95 | 96 | #reboot { 97 | background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 98 | } 99 | 100 | #suspend { 101 | background-image: image(url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png")); 102 | } 103 | 104 | #hibernate { 105 | background-image: image(url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png")); 106 | } 107 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | iDIR="$HOME/.config/hypr/mako/icons" 4 | 5 | # Get Volume 6 | get_volume() { 7 | volume=$(pamixer --get-volume) 8 | echo "$volume" 9 | } 10 | 11 | # Get icons 12 | get_icon() { 13 | current=$(get_volume) 14 | if [[ "$current" -eq "0" ]]; then 15 | echo "$iDIR/volume-mute.png" 16 | elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then 17 | echo "$iDIR/volume-low.png" 18 | elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then 19 | echo "$iDIR/volume-mid.png" 20 | elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then 21 | echo "$iDIR/volume-high.png" 22 | fi 23 | } 24 | 25 | # Notify 26 | notify_user() { 27 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume : $(get_volume) %" 28 | } 29 | 30 | # Increase Volume 31 | inc_volume() { 32 | pamixer -i 5 && notify_user 33 | } 34 | 35 | # Decrease Volume 36 | dec_volume() { 37 | pamixer -d 5 && notify_user 38 | } 39 | 40 | # Toggle Mute 41 | toggle_mute() { 42 | if [ "$(pamixer --get-mute)" == "false" ]; then 43 | pamixer -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/volume-mute.png" "Volume Switched OFF" 44 | elif [ "$(pamixer --get-mute)" == "true" ]; then 45 | pamixer -u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume Switched ON" 46 | fi 47 | } 48 | 49 | # Toggle Mic 50 | toggle_mic() { 51 | if [ "$(pamixer --default-source --get-mute)" == "false" ]; then 52 | pamixer --default-source -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone-mute.png" "Microphone Switched OFF" 53 | elif [ "$(pamixer --default-source --get-mute)" == "true" ]; then 54 | pamixer -u --default-source u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone.png" "Microphone Switched ON" 55 | fi 56 | } 57 | # Get icons 58 | get_mic_icon() { 59 | current=$(pamixer --default-source --get-volume) 60 | if [[ "$current" -eq "0" ]]; then 61 | echo "$iDIR/microphone.png" 62 | elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then 63 | echo "$iDIR/microphone.png" 64 | elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then 65 | echo "$iDIR/microphone.png" 66 | elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then 67 | echo "$iDIR/microphone.png" 68 | fi 69 | } 70 | # Notify 71 | notify_mic_user() { 72 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_mic_icon)" "Mic-Level : $(pamixer --default-source --get-volume) %" 73 | } 74 | 75 | # Increase MIC Volume 76 | inc_mic_volume() { 77 | pamixer --default-source -i 5 && notify_mic_user 78 | } 79 | 80 | # Decrease MIC Volume 81 | dec_mic_volume() { 82 | pamixer --default-source -d 5 && notify_mic_user 83 | } 84 | 85 | # Execute accordingly 86 | if [[ "$1" == "--get" ]]; then 87 | get_volume 88 | elif [[ "$1" == "--inc" ]]; then 89 | inc_volume 90 | elif [[ "$1" == "--dec" ]]; then 91 | dec_volume 92 | elif [[ "$1" == "--toggle" ]]; then 93 | toggle_mute 94 | elif [[ "$1" == "--toggle-mic" ]]; then 95 | toggle_mic 96 | elif [[ "$1" == "--get-icon" ]]; then 97 | get_icon 98 | elif [[ "$1" == "--get-mic-icon" ]]; then 99 | get_mic_icon 100 | elif [[ "$1" == "--mic-inc" ]]; then 101 | inc_mic_volume 102 | elif [[ "$1" == "--mic-dec" ]]; then 103 | dec_mic_volume 104 | else 105 | get_volume 106 | fi 107 | -------------------------------------------------------------------------------- /.config/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | # Refer to the wiki for more information. 2 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 3 | 4 | #Sourcing external config files 5 | source=~/.config/hypr/configs/ENVariables.conf 6 | source=~/.config/hypr/configs/Execs.conf 7 | source=~/.config/hypr/configs/Keybinds.conf 8 | source=~/.config/hypr/configs/Monitors.conf 9 | source=~/.config/hypr/configs/WindowRules.conf 10 | 11 | general { 12 | sensitivity=1.3 13 | apply_sens_to_raw=1 14 | gaps_in = 4 15 | gaps_out = 8 16 | border_size = 2 17 | resize_on_border = true 18 | 19 | #one color 20 | #col.active_border = rgba(7aa2f7aa) 21 | 22 | #more colors - gradient 23 | # col.active_border = rgb(8839ef) rgb(cba6f7) rgb(ca9ee6) rgb(c6a0f6) 45deg 24 | col.active_border=0xff5e81ac 25 | #col.active_border = rgb(7287fd) rgb(74c7ec) rgb(89b4fa) 45deg 26 | # col.inactive_border = rgb(6c7086) 27 | col.inactive_border=0x66333333 28 | 29 | layout = dwindle # master or dwindle 30 | } 31 | 32 | input { 33 | kb_layout=us 34 | kb_variant= 35 | kb_model= 36 | kb_options=grp:alt_shift_toggle 37 | kb_rules= 38 | repeat_rate=50 39 | repeat_delay=300 40 | numlock_by_default=0 41 | left_handed=0 42 | follow_mouse=1 43 | float_switch_override_focus=0 44 | 45 | touchpad { 46 | disable_while_typing=1 47 | natural_scroll=1 48 | clickfinger_behavior=1 49 | middle_button_emulation=1 50 | tap-to-click=1 51 | drag_lock=1 52 | } 53 | } 54 | 55 | gestures { 56 | workspace_swipe=1 57 | # workspace_swipe_fingers=3 58 | # workspace_swipe_distance=400 59 | # workspace_swipe_invert=1 60 | workspace_swipe_min_speed_to_force=5 61 | # workspace_swipe_cancel_ratio=0.5 62 | # workspace_swipe_create_new=1 63 | # workspace_swipe_forever=1 64 | } 65 | 66 | decoration { 67 | rounding = 10 68 | # multisample_edges = true 69 | blur = 1 70 | blur_size = 13 71 | blur_passes = 3 72 | blur_new_optimizations = true 73 | 74 | # active_opacity = 1.0 75 | # inactive_opacity = 0.8 76 | fullscreen_opacity = 1.0 77 | 78 | # dim_inactive = true 79 | # dim_strength = 0.1 80 | 81 | drop_shadow=true 82 | shadow_range=30 83 | # shadow_render_power = 2 84 | col.shadow=0xffa7caff #86AAEC 85 | col.shadow_inactive=0x50000000 86 | } 87 | 88 | #blurls = waybar 89 | 90 | bezier = wind, 0.05, 0.9, 0.1, 1.05 91 | bezier = winIn, 0.1, 1.1, 0.1, 1.1 92 | bezier = winOut, 0.3, -0.3, 0, 1 93 | bezier = liner, 1, 1, 1, 1 94 | 95 | animations { 96 | enabled = true 97 | animation = windowsIn,1,5,default,popin 0% 98 | animation = windowsOut,1,5,default,popin 99 | animation = windowsMove,1,5,default,slide 100 | animation = fadeIn,1,8,default 101 | animation = fadeOut,1,8,default 102 | animation = fadeSwitch,1,8,default 103 | animation = fadeShadow,1,8,default 104 | animation = fadeDim,1,8,default 105 | animation = border,1,10,default 106 | animation = workspaces,1,5,default,slide 107 | } 108 | 109 | dwindle { 110 | pseudotile = yes 111 | preserve_split = yes 112 | special_scale_factor = 0.8 113 | } 114 | 115 | master { 116 | new_is_master=1 117 | new_on_top=0 118 | mfact = 0.5 119 | 120 | } 121 | 122 | binds { 123 | workspace_back_and_forth=1 124 | allow_workspace_cycles=1 125 | pass_mouse_when_bound=0 126 | } 127 | 128 | misc { 129 | disable_hyprland_logo = true 130 | disable_splash_rendering = true 131 | mouse_move_enables_dpms = true 132 | vrr = 2 133 | enable_swallow = true 134 | no_direct_scanout = true #for fullscreen games 135 | focus_on_activate = false 136 | swallow_regex = ^(foot)$ 137 | } 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /.config/hypr/scripts/Weather.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # From https://raw.githubusercontent.com/rxyhn/dotfiles/main/home/rxyhn/modules/desktop/waybar/scripts/waybar-wttr.py 3 | 4 | import json 5 | import requests 6 | from datetime import datetime 7 | 8 | WEATHER_CODES = { 9 | '113': '☀️', 10 | '116': '⛅', 11 | '119': '☁️', 12 | '122': '☁️', 13 | '143': '☁️', 14 | '176': '🌧️', 15 | '179': '🌧️', 16 | '182': '🌧️', 17 | '185': '🌧️', 18 | '200': '⛈️', 19 | '227': '🌨️', 20 | '230': '🌨️', 21 | '248': '☁️ ', 22 | '260': '☁️', 23 | '263': '🌧️', 24 | '266': '🌧️', 25 | '281': '🌧️', 26 | '284': '🌧️', 27 | '293': '🌧️', 28 | '296': '🌧️', 29 | '299': '🌧️', 30 | '302': '🌧️', 31 | '305': '🌧️', 32 | '308': '🌧️', 33 | '311': '🌧️', 34 | '314': '🌧️', 35 | '317': '🌧️', 36 | '320': '🌨️', 37 | '323': '🌨️', 38 | '326': '🌨️', 39 | '329': '❄️', 40 | '332': '❄️', 41 | '335': '❄️', 42 | '338': '❄️', 43 | '350': '🌧️', 44 | '353': '🌧️', 45 | '356': '🌧️', 46 | '359': '🌧️', 47 | '362': '🌧️', 48 | '365': '🌧️', 49 | '368': '🌧️', 50 | '371': '❄️', 51 | '374': '🌨️', 52 | '377': '🌨️', 53 | '386': '🌨️', 54 | '389': '🌨️', 55 | '392': '🌧️', 56 | '395': '❄️' 57 | } 58 | 59 | data = {} 60 | 61 | 62 | weather = requests.get("https://wttr.in/?format=j1").json() 63 | 64 | 65 | def format_time(time): 66 | return time.replace("00", "").zfill(2) 67 | 68 | 69 | def format_temp(temp): 70 | return (hour['FeelsLikeC']+"°").ljust(3) 71 | 72 | 73 | def format_chances(hour): 74 | chances = { 75 | "chanceoffog": "Fog", 76 | "chanceoffrost": "Frost", 77 | "chanceofovercast": "Overcast", 78 | "chanceofrain": "Rain", 79 | "chanceofsnow": "Snow", 80 | "chanceofsunshine": "Sunshine", 81 | "chanceofthunder": "Thunder", 82 | "chanceofwindy": "Wind" 83 | } 84 | 85 | conditions = [] 86 | for event in chances.keys(): 87 | if int(hour[event]) > 0: 88 | conditions.append(chances[event]+" "+hour[event]+"%") 89 | return ", ".join(conditions) 90 | 91 | tempint = int(weather['current_condition'][0]['FeelsLikeC']) 92 | extrachar = '' 93 | if tempint > 0 and tempint < 10: 94 | extrachar = '+' 95 | 96 | 97 | data['text'] = ' '+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \ 98 | " "+extrachar+weather['current_condition'][0]['FeelsLikeC']+"°" 99 | 100 | data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°\n" 101 | data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}°\n" 102 | data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n" 103 | data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n" 104 | for i, day in enumerate(weather['weather']): 105 | data['tooltip'] += f"\n" 106 | if i == 0: 107 | data['tooltip'] += "Today, " 108 | if i == 1: 109 | data['tooltip'] += "Tomorrow, " 110 | data['tooltip'] += f"{day['date']}\n" 111 | data['tooltip'] += f"⬆️{day['maxtempC']}° ⬇️{day['mintempC']}° " 112 | data['tooltip'] += f"🌅{day['astronomy'][0]['sunrise']} 🌇{day['astronomy'][0]['sunset']}\n" 113 | for hour in day['hourly']: 114 | if i == 0: 115 | if int(format_time(hour['time'])) < datetime.now().hour-2: 116 | continue 117 | data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n" 118 | 119 | 120 | print(json.dumps(data)) 121 | -------------------------------------------------------------------------------- /.config/hypr/waybar/style.css: -------------------------------------------------------------------------------- 1 | *{ 2 | font-family: "JetBrainsMono Nerd Font"; 3 | font-weight: bold; 4 | min-height: 0; 5 | /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ 6 | font-size: 14px; 7 | font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; 8 | border: none; 9 | border-radius: 0; 10 | } 11 | 12 | window#waybar { 13 | background-color: rgba(20, 20, 40, 0.5); 14 | color: #ffffff; 15 | transition-property: background-color; 16 | transition-duration: 0.5s; 17 | } 18 | 19 | window#waybar.hidden { 20 | opacity: 0.1; 21 | } 22 | 23 | #window { 24 | color: #64727d; 25 | } 26 | 27 | tooltip { 28 | font-family: "JetBrainsMono Nerd Font"; 29 | border-radius: 10px; 30 | padding: 15px; 31 | background-color: #1f232b; 32 | } 33 | 34 | tooltip label { 35 | padding: 5px; 36 | } 37 | 38 | /*-----module groups----*/ 39 | /* .modules-right { */ 40 | /* background-color: rgba(0, 0, 0, 0.6); */ 41 | /* border: 0px solid #b4befe; */ 42 | /* border-radius: 10px; */ 43 | /* } */ 44 | 45 | /* .modules-center { */ 46 | /* background-color: rgba(0, 0, 0, 0.6); */ 47 | /* border: 0px solid #b4befe; */ 48 | /* border-radius: 10px; */ 49 | /* } */ 50 | 51 | /* .modules-left { */ 52 | /* background-color: rgba(0, 0, 0, 0.6); */ 53 | /* border: 0px solid #b4befe; */ 54 | /* border-radius: 10px; */ 55 | /* */ 56 | /* } */ 57 | 58 | #workspaces button { 59 | padding: 2px; 60 | color: #6E6A86; 61 | margin-right: 5px; 62 | } 63 | 64 | #workspaces button.active { 65 | color: #ffffff; 66 | border-radius: 10px; 67 | } 68 | 69 | #workspaces button.focused { 70 | color: #d8dee9; 71 | } 72 | 73 | #workspaces button.urgent { 74 | color: #11111b; 75 | border-radius: 10px; 76 | } 77 | 78 | #workspaces button:hover { 79 | color: #9CCFD8; 80 | border-radius: 10px; 81 | } 82 | 83 | #clock, 84 | #battery, 85 | #cpu, 86 | #memory, 87 | #disk, 88 | #temperature, 89 | #network, 90 | #pulseaudio, 91 | #wireplumber, 92 | #mode, 93 | #tray, 94 | #cava, 95 | #backlight, 96 | #window, 97 | #idle_inhibitor, 98 | #mpd, 99 | #bluetooth, 100 | #taskbar, 101 | #taskbar button, 102 | #workspaces, 103 | #custom-light_dark, 104 | #custom-updater, 105 | #custom-menu, 106 | #custom-cycle_wall, 107 | #custom-power, 108 | #custom-media, 109 | #custom-weather, 110 | #custom-power, 111 | #custom-lock, 112 | #custom-weather.severe, 113 | #custom-weather.sunnyDay, 114 | #custom-weather.clearNight, 115 | #custom-weather.cloudyFoggyDay, 116 | #custom-weather.cloudyFoggyNight, 117 | #custom-weather.rainyDay, 118 | #custom-weather.rainyNight, 119 | #custom-weather.showyIcyDay, 120 | #custom-weather.snowyIcyNight, 121 | #custom-weather.default, 122 | #idle_inhibitor { 123 | color: #ffffff; 124 | border-radius: 5px; 125 | padding: 2px 10px; 126 | background-color: #1e1e32; 127 | font-size: 16px; 128 | margin-left: 4px; 129 | margin-right: 4px; 130 | margin-top: 4px; 131 | margin-bottom: 4px; 132 | } 133 | 134 | #custom-menu { 135 | color: #00ffff; 136 | font-size: 22px; 137 | padding-left: 10px; 138 | padding-right: 15px; 139 | padding-top: 0px; 140 | padding-bottom: 0px; 141 | } 142 | 143 | #custom-power { 144 | color: #ff6347; 145 | padding-left: 12px; 146 | padding-right: 15px; 147 | } 148 | 149 | #custom-lock { 150 | color: #ABE1FA; 151 | padding-left: 13px; 152 | padding-right: 13px; 153 | } 154 | 155 | #custom-media { 156 | background-color: #1e3232; 157 | } 158 | 159 | #cpu { 160 | color: #e4bff2; 161 | } 162 | 163 | #pulseaudio { 164 | color: #70e6c2; 165 | } 166 | 167 | #pulseaudio.microphone { 168 | color: #ffc0cb; 169 | } 170 | 171 | #network { 172 | color: #fff8ce; 173 | } 174 | 175 | #memory { 176 | color: #ffd988; 177 | } 178 | 179 | #temperature.critical { 180 | background-color: #ff0000; 181 | } 182 | 183 | @keyframes blink { 184 | to { 185 | color: #000000; 186 | } 187 | } 188 | 189 | #taskbar button.active { 190 | background-color: #7f849c; 191 | } 192 | 193 | #battery.critical:not(.charging) { 194 | color: #f53c3c; 195 | animation-name: blink; 196 | animation-duration: 0.5s; 197 | animation-timing-function: linear; 198 | animation-iteration-count: infinite; 199 | animation-direction: alternate; 200 | } 201 | -------------------------------------------------------------------------------- /.config/hypr/scripts/mediaplayer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse 3 | import logging 4 | import sys 5 | import signal 6 | import gi 7 | import json 8 | gi.require_version('Playerctl', '2.0') 9 | from gi.repository import Playerctl, GLib 10 | 11 | logger = logging.getLogger(__name__) 12 | 13 | 14 | def write_output(text, player): 15 | logger.info('Writing output') 16 | 17 | output = {'text': text, 18 | 'class': 'custom-' + player.props.player_name, 19 | 'alt': player.props.player_name} 20 | 21 | sys.stdout.write(json.dumps(output) + '\n') 22 | sys.stdout.flush() 23 | 24 | 25 | def on_play(player, status, manager): 26 | logger.info('Received new playback status') 27 | on_metadata(player, player.props.metadata, manager) 28 | 29 | 30 | def on_metadata(player, metadata, manager): 31 | logger.info('Received new metadata') 32 | track_info = '' 33 | 34 | if player.props.player_name == 'spotify' and \ 35 | 'mpris:trackid' in metadata.keys() and \ 36 | ':ad:' in player.props.metadata['mpris:trackid']: 37 | track_info = 'AD PLAYING' 38 | elif player.get_artist() != '' and player.get_title() != '': 39 | track_info = '{title}'.format(artist=player.get_artist(), 40 | title=player.get_title()) 41 | else: 42 | track_info = player.get_title() 43 | 44 | if player.props.status != 'Playing' and track_info: 45 | track_info = '󰏥 ' + track_info 46 | else: 47 | track_info = '󰐌 ' + track_info 48 | write_output(track_info, player) 49 | 50 | 51 | def on_player_appeared(manager, player, selected_player=None): 52 | if player is not None and (selected_player is None or player.name == selected_player): 53 | init_player(manager, player) 54 | else: 55 | logger.debug("New player appeared, but it's not the selected player, skipping") 56 | 57 | 58 | def on_player_vanished(manager, player): 59 | logger.info('Player has vanished') 60 | sys.stdout.write('\n') 61 | sys.stdout.flush() 62 | 63 | 64 | def init_player(manager, name): 65 | logger.debug('Initialize player: {player}'.format(player=name.name)) 66 | player = Playerctl.Player.new_from_name(name) 67 | player.connect('playback-status', on_play, manager) 68 | player.connect('metadata', on_metadata, manager) 69 | manager.manage_player(player) 70 | on_metadata(player, player.props.metadata, manager) 71 | 72 | 73 | def signal_handler(sig, frame): 74 | logger.debug('Received signal to stop, exiting') 75 | sys.stdout.write('\n') 76 | sys.stdout.flush() 77 | # loop.quit() 78 | sys.exit(0) 79 | 80 | 81 | def parse_arguments(): 82 | parser = argparse.ArgumentParser() 83 | 84 | # Increase verbosity with every occurrence of -v 85 | parser.add_argument('-v', '--verbose', action='count', default=0) 86 | 87 | # Define for which player we're listening 88 | parser.add_argument('--player') 89 | 90 | return parser.parse_args() 91 | 92 | 93 | def main(): 94 | arguments = parse_arguments() 95 | 96 | # Initialize logging 97 | logging.basicConfig(stream=sys.stderr, level=logging.DEBUG, 98 | format='%(name)s %(levelname)s %(message)s') 99 | 100 | # Logging is set by default to WARN and higher. 101 | # With every occurrence of -v it's lowered by one 102 | logger.setLevel(max((3 - arguments.verbose) * 10, 0)) 103 | 104 | # Log the sent command line arguments 105 | logger.debug('Arguments received {}'.format(vars(arguments))) 106 | 107 | manager = Playerctl.PlayerManager() 108 | loop = GLib.MainLoop() 109 | 110 | manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player)) 111 | manager.connect('player-vanished', on_player_vanished) 112 | 113 | signal.signal(signal.SIGINT, signal_handler) 114 | signal.signal(signal.SIGTERM, signal_handler) 115 | signal.signal(signal.SIGPIPE, signal.SIG_DFL) 116 | 117 | for player in manager.props.player_names: 118 | if arguments.player is not None and arguments.player != player.name: 119 | logger.debug('{player} is not the filtered player, skipping it' 120 | .format(player=player.name) 121 | ) 122 | continue 123 | 124 | init_player(manager, player) 125 | 126 | loop.run() 127 | 128 | 129 | if __name__ == '__main__': 130 | main() 131 | -------------------------------------------------------------------------------- /.config/hypr/HelpFile.md: -------------------------------------------------------------------------------- 1 | # Welcome to my Hyprland help, and tips and tricks # 2 | # If you have questions, or need help you can open issue on my github 3 | # Or you can reach me in or join on Discord that I admin 4 | # Discord link https://discord.gg/rxHczMSyjn or you can message me directly on my discord. DC user: Ja.KooLit 5 | # Github page: https://github.com/JaKooLit 6 | 7 | Super = Windows Key 8 | 9 | # common operations 10 | Super h *keyhint* (THIS DOCUMENT) 11 | Super Return *term* (`foot`) 12 | Super q *quit* (kill focused window) 13 | Super Shift q *quit* (kill focused window) 14 | Super d *show app menu* (`wofi small`) 15 | Super Shift d *show app menu* (`wofi large`) 16 | 17 | # wallpaper / styling stuff 18 | Super w *wallpaper shuffle* (right click on wallpaper  waybar module) 19 | Super Shift w *waybar style-change* (middle click on wallpaper  waybar module) 20 | Super Ctrl w *wallpaper switcher* (click on wallpaper waybar  module) 21 | 22 | - right click on update  waybar module *wallpaper cycle using swaybg* (no animations) 23 | 24 | - To change permanently the wallpaper edit the file in *~/.config/hypr/configs/Execs.conf* 25 | - For a persistent wallpaper after dark-light mode, edit your Execs.conf. Either delete or put # before exec-once=swww query | swww init and delete the # before exec-once = swww init (Lines 6 and 7 on Execs.conf ) 26 | 27 | - for the wallpaper styles and configurations, you can watch my video about it *https://youtu.be/6ZGzOjMJBe4* 28 | 29 | - scripts for wallpaper stuff are located in *~/.config/hypr/scripts* file names `DarkLight.sh` `DarkLight-swaybg.sh` `Wallpaper.sh` `WallpaperSelect.sh` `WaybarStyles.sh` (last one for waybar) 30 | 31 | - swww is broken if you use fractional scaling. Use swaybg as your wallpaper provider. 32 | 33 | # Monitor, executables, keybindings, window rules, 34 | files are located in *~/.config/hypr/configs* 35 | Keybindings file is located here *~/.config/hypr/configs/Keybinds.conf* 36 | 37 | # screenshot may need to hold down the function (`fn`) key. You can change keybinds in *~/.config/hypr/configs/Keybinds.conf* 38 | Super PrintScr(button) *full screenshot* 39 | Super Shift PrintSrc(button) *active window screenshot* 40 | Super CTRL SHIFT PrintScr *full screenshot + timer (5s)* 41 | Super Alt PrintScr *full screenshot + timer (10s)* 42 | Super Shift S *screenshot with swappy* 43 | 44 | # clipboard manager (cliphist) 45 | Super Alt V *launch the wofi menu of clipboard manager* 46 | - double click to select the clipboard. And paste as normal 47 | - to clean up clipboard manager, launch foot (super enter) then type cliphist wipe 48 | 49 | # applications shortcuts 50 | Super T *file manager* (`thunar`) - if installed 51 | 52 | 53 | # container layout 54 | Super Shift Space *toggle tiling/floating mode* 55 | Super left mouse button *move window* 56 | Super right mouse button *resize window* (note only in float mode) 57 | 58 | 59 | # workspaces 60 | Super 1 .. 0 *switch to workspace 1 .. 10* 61 | Super Shift 1 .. 0 *move container to workspace 1 .. 10* 62 | Super Tab *cycle through workspaces* 63 | 64 | # waybar customizations 65 | - if you want 12h format instead of 24H format, edit the ~/.config/hypr/waybar/modules look for clock. delete the // and add // or delete the previous one 66 | - CPU Temperature: 67 | - a.) to change from deg C to deg F , edit the ~/.config/hypr/waybar/modules look for "temperature". Change the format to "format": "{temperatureF}°F {icon}", 68 | - b.) to fix the temperature if not showing correctly, comment "thermal zone": 0 by putting // before. Delete the // on the "hwmon path". Refresh waybar by pressing CTRL SHIFT w. If still not showing correctly, navigate to /sys/class/hwmon/ and open each hwmon. Look for k10temp for amd. Not sure about intel cpu. and edit accordingly the hwmon path in the "temperature" waybar module. 69 | - b.1) use this function to easily identify the hwmon path. Ran this in your terminal ``` for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done ``` 70 | 71 | # Hyprland configurations 72 | - *Hyprland* configuration files are in `~/.config/hypr/` 73 | - files located in this folder can be edited using editor of your choice. 74 | 75 | # notes for nvidia gpu users 76 | - Do note that you need to enable or disable some items in ENVariables.conf file located in `~/.config/hypr/configs/ENVariables.conf` 77 | 78 | - a guide on wiki - https://wiki.hyprland.org/Nvidia/ 79 | 80 | 81 | # other notes 82 | - *Multimedia keys* - may not work for every keyboard may need to hold down the function (`fn`) key 83 | - Follow the wiki - https://wiki.hyprland.org/ 84 | - Follow the github - https://github.com/hyprwm/Hyprland 85 | 86 | 87 | 88 | TO CLOSE THIS DOCUMENT - Super q or Super Shift q or CTRL q 89 | -------------------------------------------------------------------------------- /.config/cava/config: -------------------------------------------------------------------------------- 1 | ## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. 2 | 3 | 4 | [general] 5 | 6 | # Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 7 | ; mode = normal 8 | 9 | # Accepts only non-negative values. 10 | framerate = 90 11 | 12 | # 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off 13 | # new as of 0.6.0 autosens of low values (dynamic range) 14 | # 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 15 | ; autosens = 1 16 | ; overshoot = 10 17 | 18 | # Manual sensitivity in %. If autosens is enabled, this will only be the initial value. 19 | # 200 means double height. Accepts only non-negative values. 20 | ; sensitivity = 100 21 | 22 | # The number of bars (0-200). 0 sets it to auto (fill up console). 23 | # Bars' width and space between bars in number of characters. 24 | ; bars = 0 25 | ; bar_width = 2 26 | ; bar_spacing = 1 27 | # bar_height is only used for output in "noritake" format 28 | ; bar_height = 32 29 | 30 | # For SDL width and space between bars is in pixels, defaults are: 31 | ; bar_width = 20 32 | ; bar_spacing = 5 33 | 34 | 35 | # Lower and higher cutoff frequencies for lowest and highest bars 36 | # the bandwidth of the visualizer. 37 | # Note: there is a minimum total bandwidth of 43Mhz x number of bars. 38 | # Cava will automatically increase the higher cutoff if a too low band is specified. 39 | ; lower_cutoff_freq = 50 40 | ; higher_cutoff_freq = 10000 41 | 42 | 43 | # Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and 44 | # only check for input once per second. Cava will wake up once input is detected. 0 = disable. 45 | ; sleep_timer = 0 46 | 47 | 48 | [input] 49 | 50 | # Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem' 51 | # Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with. 52 | # 53 | # All input methods uses the same config variable 'source' 54 | # to define where it should get the audio. 55 | # 56 | # For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink 57 | # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). 58 | # 59 | # For alsa 'source' will be the capture device. 60 | # For fifo 'source' will be the path to fifo-file. 61 | # For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address 62 | ; method = pulse 63 | ; source = auto 64 | 65 | ; method = alsa 66 | ; source = hw:Loopback,1 67 | 68 | ; method = fifo 69 | ; source = /tmp/mpd.fifo 70 | ; sample_rate = 44100 71 | ; sample_bits = 16 72 | 73 | ; method = shmem 74 | ; source = /squeezelite-AA:BB:CC:DD:EE:FF 75 | 76 | ; method = portaudio 77 | ; source = auto 78 | 79 | 80 | [output] 81 | 82 | # Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake' or 'sdl'. 83 | # 'noncurses' uses a custom framebuffer technique and prints only changes 84 | # from frame to frame in the terminal. 'ncurses' is default if supported. 85 | # 86 | # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data 87 | # stream of the bar heights that can be used to send to other applications. 88 | # 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. 89 | # 90 | # 'noritake' outputs a bitmap in the format expected by a Noritake VFD display 91 | # in graphic mode. It only support the 3000 series graphical VFDs for now. 92 | # 93 | # 'sdl' uses the Simple DirectMedia Layer to render in a graphical context. 94 | ; method = ncurses 95 | 96 | # Visual channels. Can be 'stereo' or 'mono'. 97 | # 'stereo' mirrors both channels with low frequencies in center. 98 | # 'mono' outputs left to right lowest to highest frequencies. 99 | # 'mono_option' set mono to either take input from 'left', 'right' or 'average'. 100 | # set 'reverse' to 1 to display frequencies the other way around. 101 | ; channels = stereo 102 | ; mono_option = average 103 | ; reverse = 0 104 | 105 | # Raw output target. A fifo will be created if target does not exist. 106 | ; raw_target = /dev/stdout 107 | 108 | # Raw data format. Can be 'binary' or 'ascii'. 109 | ; data_format = binary 110 | 111 | # Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). 112 | ; bit_format = 16bit 113 | 114 | # Ascii max value. In 'ascii' mode range will run from 0 to value specified here 115 | ; ascii_max_range = 1000 116 | 117 | # Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. 118 | # Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). 119 | ; bar_delimiter = 59 120 | ; frame_delimiter = 10 121 | 122 | # sdl window size and position. -1,-1 is centered. 123 | ; sdl_width = 1000 124 | ; sdl_height = 500 125 | ; sdl_x = -1 126 | ; sdl_y= -1 127 | 128 | [color] 129 | 130 | # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. 131 | # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires 132 | # ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt. 133 | # if supported, ncurses mode will be forced on if user defined colors are used. 134 | # default is to keep current terminal color 135 | ; background = default 136 | ; foreground = default 137 | 138 | # SDL only support hex code colors, these are the default: 139 | ; background = '#111111' 140 | foreground = '#E6ECFE' 141 | 142 | 143 | # Gradient mode, only hex defined colors (and thereby ncurses mode) are supported, 144 | # background must also be defined in hex or remain commented out. 1 = on, 0 = off. 145 | # You can define as many as 8 different colors. They range from bottom to top of screen 146 | gradient = 1 147 | gradient_count = 8 148 | 149 | gradient_color_1 = '#add7ff' 150 | gradient_color_2 = '#afd8ff' 151 | gradient_color_3 = '#b2d9ff' 152 | gradient_color_4 = '#b4dbff' 153 | gradient_color_5 = '#b7dcff' 154 | gradient_color_6 = '#b9ddff' 155 | gradient_color_7 = '#bcdeff' 156 | gradient_color_8 = '#bedfff' 157 | 158 | 159 | 160 | [smoothing] 161 | 162 | # Percentage value for integral smoothing. Takes values from 0 - 100. 163 | # Higher values means smoother, but less precise. 0 to disable. 164 | # DEPRECATED as of 0.8.0, use noise_reduction instead 165 | ; integral = 77 166 | 167 | # Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. 168 | ; monstercat = 0 169 | ; waves = 0 170 | 171 | # Set gravity percentage for "drop off". Higher values means bars will drop faster. 172 | # Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". 173 | # DEPRECATED as of 0.8.0, use noise_reduction instead 174 | ; gravity = 100 175 | 176 | 177 | # In bar height, bars that would have been lower that this will not be drawn. 178 | # DEPRECATED as of 0.8.0 179 | ; ignore = 0 180 | 181 | # Noise reduction, float 0 - 1. default 0.77 182 | # the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth 183 | # 1 will be very slow and smooth, 0 will be fast but noisy. 184 | ; noise_reduction = 0.99 185 | 186 | 187 | [eq] 188 | 189 | # This one is tricky. You can have as much keys as you want. 190 | # Remember to uncomment more then one key! More keys = more precision. 191 | # Look at readme.md on github for further explanations and examples. 192 | # DEPRECATED as of 0.8.0 can be brought back by popular request, open issue at: 193 | # https://github.com/karlstav/cava 194 | ; 1 = 1 # bass 195 | ; 2 = 1 196 | ; 3 = 1 # midtone 197 | ; 4 = 1 198 | ; 5 = 1 # treble 199 | -------------------------------------------------------------------------------- /.config/kitty/tab_bar.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | import subprocess 3 | import re 4 | from kitty.boss import get_boss 5 | from kitty.fast_data_types import Screen, add_timer, get_options 6 | from kitty.utils import color_as_int 7 | from kitty.tab_bar import ( 8 | DrawData, 9 | ExtraData, 10 | Formatter, 11 | TabBarData, 12 | as_rgb, 13 | draw_attributed_string, 14 | draw_title, 15 | ) 16 | 17 | opts = get_options() 18 | icon_fg = as_rgb(color_as_int(opts.color15)) 19 | icon_bg = as_rgb(color_as_int(opts.color8)) 20 | bat_text_color = as_rgb(color_as_int(opts.color15)) 21 | clock_color = as_rgb(color_as_int(opts.color15)) 22 | date_color = as_rgb(color_as_int(opts.color8)) 23 | SEPARATOR_SYMBOL, SOFT_SEPARATOR_SYMBOL = ('', '') 24 | RIGHT_MARGIN = 1 25 | REFRESH_TIME = 1 26 | ICON = ' 󰀵 ' 27 | UNPLUGGED_ICONS = { 28 | 10: '󰁺', 29 | 20: '󰁻', 30 | 30: '󰁼', 31 | 40: '󰁽', 32 | 50: '󰁾', 33 | 60: '󰁿', 34 | 70: '󰂀', 35 | 80: '󰂁', 36 | 90: '󰂂', 37 | 100: '󰁹', 38 | } 39 | PLUGGED_ICONS = { 40 | 1: '󰂄', 41 | } 42 | UNPLUGGED_COLORS = { 43 | 15: as_rgb(color_as_int(opts.color1)), 44 | 16: as_rgb(color_as_int(opts.color15)), 45 | } 46 | PLUGGED_COLORS = { 47 | 15: as_rgb(color_as_int(opts.color1)), 48 | 16: as_rgb(color_as_int(opts.color6)), 49 | 99: as_rgb(color_as_int(opts.color6)), 50 | 100: as_rgb(color_as_int(opts.color2)), 51 | } 52 | 53 | 54 | def _draw_icon(screen: Screen, index: int) -> int: 55 | if index != 1: 56 | return 0 57 | fg, bg = screen.cursor.fg, screen.cursor.bg 58 | screen.cursor.fg = icon_fg 59 | screen.cursor.bg = icon_bg 60 | screen.draw(ICON) 61 | screen.cursor.fg, screen.cursor.bg = fg, bg 62 | screen.cursor.x = len(ICON) 63 | return screen.cursor.x 64 | 65 | 66 | def _draw_left_status( 67 | draw_data: DrawData, 68 | screen: Screen, 69 | tab: TabBarData, 70 | before: int, 71 | max_title_length: int, 72 | index: int, 73 | is_last: bool, 74 | extra_data: ExtraData, 75 | ) -> int: 76 | if screen.cursor.x >= screen.columns - right_status_length: 77 | return screen.cursor.x 78 | tab_bg = screen.cursor.bg 79 | tab_fg = screen.cursor.fg 80 | default_bg = as_rgb(int(draw_data.default_bg)) 81 | if extra_data.next_tab: 82 | next_tab_bg = as_rgb(draw_data.tab_bg(extra_data.next_tab)) 83 | needs_soft_separator = next_tab_bg == tab_bg 84 | else: 85 | next_tab_bg = default_bg 86 | needs_soft_separator = False 87 | if screen.cursor.x <= len(ICON): 88 | screen.cursor.x = len(ICON) 89 | screen.draw(' ') 90 | screen.cursor.bg = tab_bg 91 | draw_title(draw_data, screen, tab, index) 92 | if not needs_soft_separator: 93 | screen.draw(' ') 94 | screen.cursor.fg = tab_bg 95 | screen.cursor.bg = next_tab_bg 96 | screen.draw(SEPARATOR_SYMBOL) 97 | else: 98 | prev_fg = screen.cursor.fg 99 | if tab_bg == tab_fg: 100 | screen.cursor.fg = default_bg 101 | elif tab_bg != default_bg: 102 | c1 = draw_data.inactive_bg.contrast(draw_data.default_bg) 103 | c2 = draw_data.inactive_bg.contrast(draw_data.inactive_fg) 104 | if c1 < c2: 105 | screen.cursor.fg = default_bg 106 | screen.draw(' ' + SOFT_SEPARATOR_SYMBOL) 107 | screen.cursor.fg = prev_fg 108 | end = screen.cursor.x 109 | return end 110 | 111 | 112 | def _draw_right_status(screen: Screen, is_last: bool, cells: list) -> int: 113 | if not is_last: 114 | return 0 115 | draw_attributed_string(Formatter.reset, screen) 116 | screen.cursor.x = screen.columns - right_status_length 117 | screen.cursor.fg = 0 118 | for color, status in cells: 119 | screen.cursor.fg = color 120 | screen.draw(status) 121 | screen.cursor.bg = 0 122 | return screen.cursor.x 123 | 124 | 125 | def _redraw_tab_bar(_): 126 | tm = get_boss().active_tab_manager 127 | if tm is not None: 128 | tm.mark_tab_bar_dirty() 129 | 130 | 131 | # Linux 132 | # def get_battery_cells() -> list: 133 | # try: 134 | # with open("/sys/class/power_supply/BAT0/status", "r") as f: 135 | # status = f.read() 136 | # with open("/sys/class/power_supply/BAT0/capacity", "r") as f: 137 | # percent = int(f.read()) 138 | # if status == "Discharging\n": 139 | # icon_color = UNPLUGGED_COLORS[ 140 | # min(UNPLUGGED_COLORS.keys(), key=lambda x: abs(x - percent)) 141 | # ] 142 | # icon = UNPLUGGED_ICONS[ 143 | # min(UNPLUGGED_ICONS.keys(), key=lambda x: abs(x - percent)) 144 | # ] 145 | # elif status == "Not charging\n": 146 | # icon_color = UNPLUGGED_COLORS[ 147 | # min(UNPLUGGED_COLORS.keys(), key=lambda x: abs(x - percent)) 148 | # ] 149 | # icon = PLUGGED_ICONS[ 150 | # min(PLUGGED_ICONS.keys(), key=lambda x: abs(x - percent)) 151 | # ] 152 | # else: 153 | # icon_color = PLUGGED_COLORS[ 154 | # min(PLUGGED_COLORS.keys(), key=lambda x: abs(x - percent)) 155 | # ] 156 | # icon = PLUGGED_ICONS[ 157 | # min(PLUGGED_ICONS.keys(), key=lambda x: abs(x - percent)) 158 | # ] 159 | # percent_cell = (bat_text_color, str(percent) + "% ") 160 | # icon_cell = (icon_color, icon) 161 | # return [percent_cell, icon_cell] 162 | # except FileNotFoundError: 163 | # return [] 164 | 165 | # Mac 166 | def get_battery_cells() -> list: 167 | try: 168 | result = subprocess.run(['pmset', '-g', 'batt'], 169 | capture_output=True, text=True) 170 | output = result.stdout 171 | status_search = re.search(r'(\w+)\s*;', output) 172 | percent_search = re.search(r'(\d+)%', output) 173 | 174 | if status_search and percent_search: 175 | status = status_search.group(1) 176 | percent = int(percent_search.group(1)) 177 | 178 | if status == "discharging": 179 | icon_color = UNPLUGGED_COLORS[min( 180 | UNPLUGGED_COLORS.keys(), key=lambda x: abs(x - percent))] 181 | icon = UNPLUGGED_ICONS[min( 182 | UNPLUGGED_ICONS.keys(), key=lambda x: abs(x - percent))] 183 | else: 184 | icon_color = PLUGGED_COLORS[min( 185 | PLUGGED_COLORS.keys(), key=lambda x: abs(x - percent))] 186 | icon = PLUGGED_ICONS[min( 187 | PLUGGED_ICONS.keys(), key=lambda x: abs(x - percent))] 188 | 189 | percent_cell = (bat_text_color, str(percent) + "% ") 190 | icon_cell = (icon_color, icon) 191 | return [percent_cell, icon_cell] 192 | except Exception as e: 193 | print(f"Error: {e}") 194 | return [] 195 | 196 | 197 | timer_id = None 198 | right_status_length = -1 199 | 200 | 201 | def draw_tab( 202 | draw_data: DrawData, 203 | screen: Screen, 204 | tab: TabBarData, 205 | before: int, 206 | max_title_length: int, 207 | index: int, 208 | is_last: bool, 209 | extra_data: ExtraData, 210 | ) -> int: 211 | global timer_id 212 | global right_status_length 213 | if timer_id is None: 214 | timer_id = add_timer(_redraw_tab_bar, REFRESH_TIME, True) 215 | date = datetime.now().strftime(' %Y.%m.%d') 216 | clock = datetime.now().strftime(' %H:%M') 217 | cells = get_battery_cells() 218 | cells.append((date_color, date)) 219 | cells.append((clock_color, clock)) 220 | right_status_length = RIGHT_MARGIN 221 | for cell in cells: 222 | right_status_length += len(str(cell[1])) 223 | 224 | _draw_icon(screen, index) 225 | _draw_left_status( 226 | draw_data, 227 | screen, 228 | tab, 229 | before, 230 | max_title_length, 231 | index, 232 | is_last, 233 | extra_data, 234 | ) 235 | _draw_right_status( 236 | screen, 237 | is_last, 238 | cells, 239 | ) 240 | return screen.cursor.x 241 | -------------------------------------------------------------------------------- /.config/hypr/configs/Keybinds.conf: -------------------------------------------------------------------------------- 1 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 2 | # Setting variables 3 | $mainMod = SUPER 4 | $files = thunar 5 | $browser = google-chrome-stable --force-dark-mode --enable-features=WebUIDarkMode 6 | $term = kitty 7 | $hyprDir = $HOME/.config/hypr 8 | $scriptsDir = $HOME/.config/hypr/scripts 9 | 10 | # Scripts 11 | $AirplaneMode = $scriptsDir/AirplaneMode.sh 12 | $backlight = $scriptsDir/Brightness.sh 13 | $kbacklight = $scriptsDir/BrightnessKbd.sh 14 | $ChangeBlur = $scriptsDir/ChangeBlur.sh 15 | $ChangeLayout = $scriptsDir/ChangeLayout.sh 16 | $ChangeLayoutMenu = $scriptsDir/ChangeLayoutMenu.sh 17 | $DarkLight = $scriptsDir/DarkLight.sh 18 | $GameMode = $scriptsDir/GameMode.sh 19 | $Help = $scriptsDir/Help.sh 20 | $LidSwitch = $scriptsDir/LidSwitch.sh 21 | $LockScreen = $scriptsDir/LockScreen.sh 22 | $Mako = $scriptsDir/Mako.sh 23 | $screenshot = $scriptsDir/ScreenShot.sh 24 | $touchpad = $scriptsDir/TouchPad.sh 25 | $volume = $scriptsDir/Volume.sh 26 | $wallpaper = $scriptsDir/Wallpaper.sh 27 | $wallpaperSelect = $scriptsDir/WallpaperSelect.sh 28 | $waybar = $scriptsDir/Waybar.sh 29 | $waybarStyle = $scriptsDir/WaybarStyles.sh 30 | $Wofi = $scriptsDir/Wofi.sh 31 | $WofiBig = $scriptsDir/WofiBig.sh 32 | $WofiBeats = $scriptsDir/WofiBeats.sh 33 | $Clipboard = $scriptsDir/ClipManager.sh 34 | 35 | # see https://wiki.hyprland.org/Configuring/Binds/ for more 36 | bind = $mainMod SHIFT, C, exec, hyprctl reload 37 | bind = $mainMod SHIFT, F, exec, $WofiBig 38 | bind = $mainMod, F, exec, $Wofi 39 | bind = $mainMod SHIFT, Q, killactive, 40 | bind = $mainMod, Space, togglefloating, 41 | bind = $mainMod, T, fullscreen,1 42 | bind = $mainMod SHIFT, T, fullscreen,0 43 | # bind = $mainMod, Q, killactive, 44 | bind = $mainMod, Return, exec, $term 45 | bind = $mainMod SHIFT, E, exec, $files 46 | bind = $mainMod SHIFT, D, exec, discord 47 | bind = $mainMod SHIFT, M, exec, spotify 48 | bind = $mainMod SHIFT, W, exec, $browser 49 | bind = CTRL ALT, L, exec, $LockScreen 50 | bind = $mainMod CTRL, S, exec, $WofiBeats 51 | # bind = $mainMod, W, exec, $ChangeLayoutMenu 52 | # bind = $mainMod SHIFT, W, exec, $waybarStyle 53 | bind = $mainMod CTRL, W, exec, $wallpaperSelect 54 | bind = $mainMod ALT, W, exec, $wallpaper 55 | # bind = $mainMod, H, exec, $Help 56 | bind = $mainMod, B, exec, killall -SIGUSR1 waybar # Toggle hide/show waybar 57 | bind = $mainMod SHIFT, G, exec, $GameMode 58 | 59 | #bind = $mainMod SHIFT, M, exec, hyprctl dispatch splitratio -0.3 60 | #bind = $mainMod SHIFT, Y, exec, $term --class clock -T clock -e tty-clock -c -C 7 -r -s -f "%A, %B, %d" 61 | 62 | bind = $mainMod CTRL, D, layoutmsg, removemaster 63 | bind = $mainMod, Escape, exec, hyprctl kill 64 | bind = $mainMod, I, layoutmsg, addmaster 65 | bind = $mainMod, J, layoutmsg, cyclenext 66 | bind = $mainMod, K, layoutmsg, cycleprev 67 | bind = $mainMod, M, exec, hyprctl dispatch splitratio 0.3 68 | bind = $mainMod, P, pseudo, # dwindle 69 | # bind = $mainMod CTRL, Return, layoutmsg, swapwithmaster 70 | bind = $mainMod SHIFT, Space, exec, $ChangeLayout 71 | bind = $mainMod SHIFT, V, exec, $Clipboard 72 | 73 | # Special Keys / Hot Keys 74 | bind = , xf86audioraisevolume, exec, $volume --inc #volume up 75 | bind = , xf86audiolowervolume, exec, $volume --dec #volume down 76 | bind = , xf86AudioMicMute, exec, $volume --toggle-mic #mute mic 77 | bind = , xf86Launch1, exec, rog-control-center # ASUS Armory crate button 78 | bind = , xf86audiomute, exec, $volume --toggle #FN+F1 79 | bind = , xf86KbdBrightnessDown, exec, $kbacklight --dec #FN+F2 Keyboard brightness down 80 | bind = , xf86KbdBrightnessUp, exec, $kbacklight --inc #FN+F3 Keyboard brightnes up 81 | bind = , xf86Launch3, exec, asusctl led-mode -n #FN+F4 Switch keyboard RGB profile 82 | bind = , xf86Launch4, exec, asusctl profile -n #FN+F5 change of fan profiles (Quite, Balance Performance) 83 | bind = , xf86MonBrightnessDown, exec, $backlight --dec #FN+F7 84 | bind = , xf86MonBrightnessUp, exec, $backlight --inc #FN+F8 85 | bind = , xf86TouchpadToggle, exec, $touchpad #FN+10 disable touchpad 86 | 87 | bind = , xf86Sleep, exec, $LockScreen #FN+F11 (sleep button) 88 | bind = , xf86Rfkill, exec, $AirplaneMode #Airplane mode FN+F12 89 | 90 | # triggered when external monitor is connected and closing lid 91 | bindl=,switch:Lid Switch, exec, $LidSwitch 92 | 93 | bind = , xf86audioplay, exec, playerctl play-pause 94 | bind = , xf86audionext, exec, playerctl next 95 | bind = , xf86audioprev, exec, playerctl previous 96 | bind = , xf86audiostop, exec, playerctl stop 97 | 98 | # From manual but it does not work 99 | #bindl = , switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1, 2560x1440@165, 0x0, 1" 100 | #bindl = , switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable" 101 | 102 | # Resize (vim style) 103 | binde = $mainMod SHIFT, H, resizeactive,-50 0 104 | binde = $mainMod SHIFT, L, resizeactive,50 0 105 | binde = $mainMod SHIFT, K, resizeactive,0 -50 106 | binde = $mainMod SHIFT, J, resizeactive,0 50 107 | 108 | binde = $mainMod SHIFT, left, resizeactive,-50 0 109 | binde = $mainMod SHIFT, right, resizeactive,50 0 110 | binde = $mainMod SHIFT, up, resizeactive,0 -50 111 | binde = $mainMod SHIFT, down, resizeactive,0 50 112 | 113 | # Move (vim style) 114 | bind = $mainMod CTRL, H, movewindow, l 115 | bind = $mainMod CTRL, L, movewindow, r 116 | bind = $mainMod CTRL, K, movewindow, u 117 | bind = $mainMod CTRL, J, movewindow, d 118 | 119 | # Move focus with mainMod + arrow keys 120 | bind = $mainMod, H, movefocus, l 121 | bind = $mainMod, J, movefocus, r 122 | bind = $mainMod, K, movefocus, u 123 | bind = $mainMod, L, movefocus, d 124 | 125 | # Special workspace 126 | bind = $mainMod SHIFT, U, movetoworkspace, special 127 | bind = $mainMod, U, togglespecialworkspace, 128 | 129 | # Switch workspaces with mainMod + [0-9] 130 | bind = $mainMod, 1, workspace, 1 131 | bind = $mainMod, 2, workspace, 2 132 | bind = $mainMod, 3, workspace, 3 133 | bind = $mainMod, 4, workspace, 4 134 | bind = $mainMod, 5, workspace, 5 135 | bind = $mainMod, 6, workspace, 6 136 | bind = $mainMod, 7, workspace, 7 137 | bind = $mainMod, 8, workspace, 8 138 | bind = $mainMod, 9, workspace, 9 139 | bind = $mainMod, 0, workspace, 10 140 | 141 | # Move active window and follow to workspace 142 | bind = $mainMod CTRL, 1, movetoworkspace, 1 143 | bind = $mainMod CTRL, 2, movetoworkspace, 2 144 | bind = $mainMod CTRL, 3, movetoworkspace, 3 145 | bind = $mainMod CTRL, 4, movetoworkspace, 4 146 | bind = $mainMod CTRL, 5, movetoworkspace, 5 147 | bind = $mainMod CTRL, 6, movetoworkspace, 6 148 | bind = $mainMod CTRL, 7, movetoworkspace, 7 149 | bind = $mainMod CTRL, 8, movetoworkspace, 8 150 | bind = $mainMod CTRL, 9, movetoworkspace, 9 151 | bind = $mainMod CTRL, 0, movetoworkspace, 10 152 | bind = $mainMod CTRL, bracketleft, movetoworkspace, -1 153 | bind = $mainMod CTRL, bracketright, movetoworkspace, +1 154 | 155 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 156 | bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 157 | bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 158 | bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 159 | bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 160 | bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 161 | bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 162 | bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 163 | bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 164 | bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 165 | bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 166 | bind = $mainMod SHIFT, bracketleft, movetoworkspacesilent, -1 167 | bind = $mainMod SHIFT, bracketright, movetoworkspacesilent, +1 168 | 169 | # Scroll through existing workspaces with mainMod + scroll 170 | bind = $mainMod, mouse_down, workspace, e+1 171 | bind = $mainMod, mouse_up, workspace, e-1 172 | bind = CTRL, right, workspace, e+1 173 | bind = CTRL, left, workspace, e-1 174 | 175 | # Move/resize windows with mainMod + LMB/RMB and dragging 176 | bindm = $mainMod, mouse:272, movewindow 177 | bindm = $mainMod, mouse:273, resizewindow 178 | 179 | bind = $mainMod, G, togglegroup 180 | bind = ALT, H, changegroupactive, b 181 | bind = ALT, L, changegroupactive, f 182 | 183 | bind = $mainMod, tab, workspace, m+1 184 | bind = $mainMod SHIFT, tab, workspace, m-1 185 | bind = ALT, tab, cyclenext, # change focus to another window 186 | bind = ALT SHIFT, tab, bringactivetotop, # bring it to the top 187 | 188 | 189 | # Screenshot keybindings NOTE: 190 | #bind = , Print, exec, $screenshot --now 191 | bind = $mainMod, Print, exec, $screenshot --now 192 | bind = $mainMod CTRL SHIFT, Print, exec, $screenshot --in5 193 | bind = $mainMod ALT, Print, exec, $screenshot --in10 194 | #bind = CTRL, Print, exec, $screenshot --win 195 | #bind = SHIFT, Print, exec, $screenshot --area 196 | bind = $mainMod SHIFT, Print, exec, $screenshot --area 197 | 198 | # screenshot with swappy 199 | bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | swappy -f - 200 | 201 | # Screenshot keybindings for Asus G15 (no PrinSrc button) 202 | bind = $mainMod, F6, exec, $screenshot --now 203 | bind = $mainMod SHIFT, F6, exec, $screenshot --area 204 | bind = $mainMod CTRL SHIFT, F6, exec, $screenshot --in5 205 | bind = $mainMod ALT, F6, exec, $screenshot --in10 206 | 207 | -------------------------------------------------------------------------------- /.config/hypr/waybar/modules: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "backlight": { 4 | "interval": 2, 5 | "align": 0, 6 | "rotate": 0, 7 | "format": "{icon} {percent}%", 8 | //format-icons-Arch 9 | "format-icons": ["󰃞", "󰃟", "󰃠"], 10 | //format-icons-Gen2 11 | //"format-icons": ["", "", "", ""], 12 | "icon-size": 10, 13 | "on-click": "", 14 | "on-click-middle": "", 15 | "on-click-right": "", 16 | "on-update": "", 17 | "on-scroll-up": "~/.config/hypr/scripts/Brightness.sh --inc", 18 | "on-scroll-down": "~/.config/hypr/scripts/Brightness.sh --dec", 19 | "smooth-scrolling-threshold": 1, 20 | }, 21 | 22 | "battery": { 23 | "interval": 60, 24 | "align": 0, 25 | "rotate": 0, 26 | //"bat": "BAT1", 27 | //"adapter": "ACAD", 28 | "full-at": 100, 29 | "design-capacity": false, 30 | "states": { 31 | "good": 95, 32 | "warning": 30, 33 | "critical": 15 34 | }, 35 | "format": "{icon} {capacity}%", 36 | "format-charging": " {capacity}%", 37 | "format-plugged": " {capacity}%", 38 | "format-full": "{icon} Full", 39 | //"format-good": "", 40 | "format-alt": "{icon} {time}", 41 | "format-icons": ["", "", "", "", ""], 42 | "format-time": "{H}h {M}min", 43 | "tooltip": true, 44 | "on-click-middle": "~/.config/hypr/scripts/ChangeBlur.sh", 45 | "on-click-right": "sh -c '(sleep 0.5s; wlogout --protocol layer-shell)' & disown", 46 | }, 47 | 48 | "bluetooth": { 49 | "format": "", 50 | "format-disabled": "", // an empty format will hide the module 51 | "format-connected": " {num_connections}", 52 | "tooltip-format": " {device_alias}", 53 | "tooltip-format-connected": "{device_enumerate}", 54 | "tooltip-format-enumerate-connected": " {device_alias}" 55 | }, 56 | 57 | "cava": { 58 | //"cava_config": "$XDG_CONFIG_HOME/cava/cava.conf", 59 | "framerate": 60, 60 | "autosens": 1, 61 | "sensitivity": 100, 62 | "bars": 14, 63 | "lower_cutoff_freq": 50, 64 | "higher_cutoff_freq": 10000, 65 | "method": "pulse", 66 | "source": "auto", 67 | "stereo": true, 68 | "reverse": false, 69 | "bar_delimiter": 0, 70 | "monstercat": false, 71 | "waves": false, 72 | "noise_reduction": 0.77, 73 | "input_delay": 2, 74 | "format-icons" : ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" ], 75 | "actions": { 76 | "on-click-right": "mode" 77 | } 78 | }, 79 | 80 | "clock": { 81 | "format": "{:%I:%M %p}", 82 | //"format": " {:%H:%M}", 83 | "format-alt": " {:%H:%M  %Y, %d %B, %A}", 84 | "tooltip-format": "{calendar}", 85 | "calendar": { 86 | "mode" : "year", 87 | "mode-mon-col" : 3, 88 | "weeks-pos" : "right", 89 | "on-scroll" : 1, 90 | "on-click-right": "mode", 91 | "format": { 92 | "months": "{}", 93 | "days": "{}", 94 | "weeks": "W{}", 95 | "weekdays": "{}", 96 | "today": "{}" 97 | } 98 | } 99 | }, 100 | "actions": { 101 | "on-click-right": "mode", 102 | "on-click-forward": "tz_up", 103 | "on-click-backward": "tz_down", 104 | "on-scroll-up": "shift_up", 105 | "on-scroll-down": "shift_down" 106 | }, 107 | 108 | "cpu": { 109 | "format": " {usage}%", 110 | "interval": 1, 111 | "format-alt-click": "click", 112 | "format-alt": " {usage:>2}% {icon0}{icon1}{icon2}{icon3}", 113 | "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], 114 | }, 115 | 116 | "disk": { 117 | "interval": 30, 118 | //"format": "󰋊", 119 | "path": "/", 120 | //"format-alt-click": "click", 121 | "format": "{percentage_used}% 󰋊", 122 | //"tooltip": true, 123 | "tooltip-format": "{used} used out of {total} on {path} ({percentage_used}%)", 124 | }, 125 | 126 | "hyprland/submap": { 127 | "format": " {}", // Icon: expand-arrows-alt 128 | "tooltip": false, 129 | }, 130 | 131 | "hyprland/window": { 132 | "format": "{}", 133 | "max-length": 360, 134 | "separate-outputs": true, 135 | }, 136 | 137 | "hyprland/language": { 138 | "format": "Lang: {}", 139 | "format-en": "US", 140 | "format-tr": "Korea", 141 | "keyboard-name": "at-translated-set-2-keyboard", 142 | "on-click": "hyprctl switchxkblayout $SET_KB next" 143 | }, 144 | 145 | "idle_inhibitor": { 146 | "format": "{icon}", 147 | "format-icons": { 148 | "activated": " ", 149 | "deactivated": " ", 150 | } 151 | }, 152 | 153 | "memory": { 154 | "interval": 10, 155 | "format": "󰾆 {used:0.1f}GB", 156 | "format-alt": "󰾆 {percentage}%", 157 | "format-alt-click": "click", 158 | "tooltip": true, 159 | "tooltip-format": "{used:0.1f}GB/{total:0.1f}GB", 160 | "on-click-right": "kitty --title btop sh -c 'btop'" 161 | }, 162 | 163 | "network": { 164 | "format": "{ifname}", 165 | "format-wifi": "{essid}   {bandwidthUpBytes}  {bandwidthDownBytes}", 166 | "format-ethernet": "󰈀  {bandwidthUpBytes}  {bandwidthDownBytes}", 167 | "format-disconnected": "", //An empty format will hide the module. 168 | "tooltip-format": "{ipaddr}  {bandwidthUpBytes}  {bandwidthDownBytes}", 169 | "format-linked": " {ifname} (No IP)", 170 | "tooltip-format-wifi": "{essid} ({signalStrength}%) ", 171 | "tooltip-format-ethernet": "{ifname} ", 172 | "tooltip-format-disconnected": " Disconnected", 173 | "max-length": 50, 174 | "interval": 1, 175 | }, 176 | 177 | "pulseaudio": { 178 | "format": "{icon} {volume}%", 179 | "format-bluetooth": "{icon}  {volume}%", 180 | "format-muted": " Mute", 181 | "format-icons": { 182 | "headphone": "", 183 | "hands-free": "", 184 | "headset": "", 185 | "phone": "", 186 | "portable": "", 187 | "car": "", 188 | "default": ["", "", ""], 189 | "ignored-sinks": ["Easy Effects Sink"], 190 | }, 191 | "scroll-step": 5.0, 192 | "on-click": "~/.config/hypr/scripts/Volume.sh --toggle", 193 | "on-click-right": "pavucontrol", 194 | "on-scroll-up": "~/.config/hypr/scripts/Volume.sh --inc", 195 | "on-scroll-down": "~/.config/hypr/scripts/Volume.sh --dec", 196 | "smooth-scrolling-threshold": 1, 197 | }, 198 | 199 | "pulseaudio#microphone": { 200 | "format": "{format_source}", 201 | "format-source": " {volume}%", 202 | "format-source-muted": " Mute", 203 | "on-click": "~/.config/hypr/scripts/Volume.sh --toggle-mic", 204 | "on-click-right": "pavucontrol", 205 | "on-scroll-up": "~/.config/hypr/scripts/Volume.sh --mic-inc", 206 | "on-scroll-down": "~/.config/hypr/scripts/Volume.sh --mic-dec", 207 | "scroll-step": 5, 208 | }, 209 | 210 | "temperature": { 211 | "interval": 10, 212 | "tooltip": false, 213 | //"hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input", 214 | "thermal-zone": 0, 215 | "critical-threshold": 82, 216 | "format-critical": "{icon} {temperatureC}°C", 217 | "format": "{icon} {temperatureC}°C", 218 | "format-icons": [""], 219 | "on-click-right": "kitty --title btop sh -c 'btop'" 220 | }, 221 | 222 | "tray": { 223 | "icon-size": 17, 224 | "spacing": 8, 225 | }, 226 | 227 | "wireplumber": { 228 | "format": "{icon} {volume} %", 229 | "format-muted": " Mute", 230 | "on-click": "~/.config/hypr/scripts/Volume.sh --toggle", 231 | "on-click-right": "pavucontrol", 232 | "on-scroll-up": "~/.config/hypr/scripts/Volume.sh --inc", 233 | "on-scroll-down": "~/.config/hypr/scripts/Volume.sh --dec", 234 | "format-icons": ["", "", ""], 235 | }, 236 | 237 | "wlr/workspaces": { 238 | //"format": "{name}", 239 | //"format": "{name}: {icon}", 240 | "format": "{icon}", 241 | "on-click": "activate", 242 | //"all-outputs": true, 243 | //"sort-by-number": true, 244 | "format-icons": { 245 | //"1": "main  ", 246 | //"2": "2  ", 247 | //"3": "3  ", 248 | //"4": "4  ", 249 | //"5": "5  ", 250 | //"6": "6  ", 251 | //"7": "7  ", 252 | //"8": "8  ", 253 | //"9": "9  ", 254 | //"10": " 10 ", 255 | //"focused": "", 256 | //"default": "", 257 | "active": "", 258 | "default": "", 259 | }, 260 | //"on-scroll-up": "hyprctl dispatch workspace e+1", 261 | //"on-scroll-down": "hyprctl dispatch workspace e-1", 262 | }, 263 | 264 | "wlr/taskbar": { 265 | "format": "{icon} {name} ", 266 | "icon-size": 16, 267 | "all-outputs": false, 268 | "tooltip-format": "{title}", 269 | "on-click": "activate", 270 | "on-click-middle": "close", 271 | "ignore-list": [ 272 | "wofi" 273 | ] 274 | }, 275 | 276 | "custom/cycle_wall":{ 277 | "format":" ", 278 | "on-click": "~/.config/hypr/scripts/WallpaperSelect.sh", 279 | "on-click-right": "~/.config/hypr/scripts/Wallpaper.sh swww", 280 | "on-click-middle": "~/.config/hypr/scripts/WaybarStyles.sh", 281 | "tooltip": true, 282 | "tooltip-format": "Change wallpaper or style" 283 | }, 284 | 285 | "custom/keybindings": { 286 | "format":"", 287 | "tooltip": false, 288 | "on-click": "~/.config/hypr/scripts/Help.sh", 289 | }, 290 | 291 | "custom/light_dark": { 292 | "format": "", 293 | "on-click": "~/.config/hypr/scripts/DarkLight.sh", 294 | "tooltip": false, 295 | }, 296 | 297 | "custom/lock": { 298 | "format": "", 299 | "on-click": "~/.config/hypr/scripts/LockScreen.sh", 300 | "tooltip": false, 301 | }, 302 | 303 | "custom/menu": { 304 | "format": "󰣇", 305 | "tooltip": false, 306 | "on-click": "$HOME/.config/hypr/scripts/Wofi.sh", 307 | "on-click-right": "$HOME/.config/hypr/scripts/ChangeLayoutMenu.sh", 308 | "on-click-middle": "~/.config/hypr/scripts/Wallpaper.sh swaybg", 309 | }, 310 | 311 | "custom/power": { 312 | "format": "", 313 | "tooltip": false, 314 | "on-click": "sh -c '(sleep 0.5s; wlogout --protocol layer-shell)' & disown", 315 | "on-click-right": "~/.config/hypr/scripts/ChangeBlur.sh" 316 | }, 317 | 318 | "custom/updater":{ 319 | "format": " {}", 320 | "exec": "checkupdates | wc -l", 321 | "exec-if": "[[ $(checkupdates | wc -l) ]]", 322 | "interval": 15, 323 | "on-click": "foot -T update paru -Syu || yay -Syu && notify-send 'The system has been updated'", 324 | "on-click-right": "~/.config/hypr/scripts/WallpaperSwitch.sh", 325 | }, 326 | 327 | "custom/weather": { 328 | "format": "{}", 329 | "format-alt": "{alt}: {}", 330 | "format-alt-click": "click", 331 | "interval": 3600, 332 | "return-type": "json", 333 | "exec": "~/.config/hypr/scripts/weather.sh", 334 | //"exec": "~/.config/hypr/scripts/weather.py", 335 | "exec-if": "ping wttr.in -c1", 336 | "tooltip" : true, 337 | }, 338 | 339 | "custom/media": { 340 | "format": "{icon} {}", 341 | "return-type": "json", 342 | "max-length": 40, 343 | "escape": true, 344 | "format-icons": { 345 | "default": " ", 346 | "spotify": " ", 347 | }, 348 | "on-click": "playerctl play-pause", 349 | "on-click-right": "playerctl next", 350 | "on-click-middle": "playerctl previous", 351 | "exec": "~/.config/hypr/scripts/mediaplayer.py --player spotify 2> /dev/null" 352 | //"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" 353 | }, 354 | 355 | } 356 | -------------------------------------------------------------------------------- /.config/lvim/config.lua: -------------------------------------------------------------------------------- 1 | -- plugins 2 | lvim.plugins = { 3 | -- { 'github/copilot.vim' }, 4 | { 'machakann/vim-sandwich' }, 5 | { 'jsborjesson/vim-uppercase-sql' }, 6 | { 'preservim/tagbar' }, 7 | { 8 | 'windwp/nvim-ts-autotag', 9 | config = function() 10 | require('nvim-ts-autotag').setup() 11 | end 12 | }, 13 | { 14 | 'nvimdev/lspsaga.nvim', 15 | config = function() 16 | require('lspsaga').setup({ 17 | symbol_in_winbar = { 18 | enable = false 19 | }, 20 | lightbulb = { 21 | enable = false 22 | }, 23 | }) 24 | end 25 | }, 26 | { 27 | 'uga-rosa/ccc.nvim', 28 | config = function() 29 | require('ccc').setup() 30 | end 31 | }, 32 | { 33 | 'brenoprata10/nvim-highlight-colors', 34 | config = function() 35 | require('nvim-highlight-colors').setup({ 36 | enable_tailwind = true, 37 | }) 38 | end 39 | }, 40 | { 41 | 'vuki656/package-info.nvim', 42 | config = function() 43 | require('package-info').setup() 44 | end 45 | }, 46 | { 47 | 'MysticalDevil/inlay-hints.nvim', 48 | event = 'LspAttach', 49 | dependencies = { 'neovim/nvim-lspconfig' }, 50 | config = function() 51 | require('inlay-hints').setup({ 52 | commands = { enable = true }, 53 | autocmd = { enable = false }, 54 | }) 55 | end 56 | }, 57 | { 58 | 'MeanderingProgrammer/markdown.nvim', 59 | name = 'render-markdown', 60 | dependencies = { 'nvim-treesitter/nvim-treesitter' }, 61 | config = function() 62 | require('render-markdown').setup() 63 | end, 64 | }, 65 | -- discord rich presence check here: https://github.com/andweeb/presence.nvim 66 | { 67 | 'andweeb/presence.nvim', 68 | config = function() 69 | require('presence').setup() 70 | end 71 | }, 72 | -- only kitty term check here: https://github.com/3rd/image.nvim 73 | -- { 74 | -- 'vhyrro/luarocks.nvim', 75 | -- priority = 1001, 76 | -- opts = { 77 | -- rocks = { 'magick' }, 78 | -- }, 79 | -- }, 80 | -- { 81 | -- '3rd/image.nvim', 82 | -- dependencies = { 'luarocks.nvim' }, 83 | -- config = function() 84 | -- require('image').setup() 85 | -- end 86 | -- }, 87 | } 88 | 89 | -- vim options 90 | local opts = { noremap = true, silent = true } 91 | vim.opt.shiftwidth = 2 92 | vim.opt.tabstop = 2 93 | vim.opt.clipboard = 'unnamedplus' 94 | vim.opt.fileencoding = 'utf-8' 95 | vim.opt.undofile = true 96 | vim.keymap.set('i', 'jj', '', opts) 97 | vim.keymap.set('n', '', 'nohlsearch', opts) 98 | vim.keymap.set('n', '+', '', opts) 99 | vim.keymap.set('n', '-', '', opts) 100 | vim.keymap.set('n', '', 'ggG', opts) 101 | vim.keymap.set('n', 'sv', 'vertical split', opts) 102 | vim.keymap.set('n', 'sh', 'split', opts) 103 | vim.keymap.set('n', '', 'o', opts) 104 | vim.keymap.set('n', '', 'O', opts) 105 | vim.keymap.set('n', 's', '', opts) 106 | vim.keymap.set('n', 'S', '', opts) 107 | vim.api.nvim_set_keymap('n', 'dd', 'lua Delete_line()', opts) 108 | -- vim.api.nvim_set_keymap('i', '', 'copilot#Accept("")', { expr = true, silent = true }) 109 | -- vim.g.copilot_no_tab_map = true 110 | -- vim.g.copilot_assume_mapped = true 111 | 112 | function Delete_line() 113 | local line = vim.api.nvim_get_current_line() 114 | if string.match(line, '^%s*$') then 115 | vim.api.nvim_command('normal! "_dd') 116 | else 117 | vim.api.nvim_command('normal! dd') 118 | end 119 | end 120 | 121 | -- general 122 | lvim.log.level = 'warn' 123 | lvim.format_on_save.enabled = true 124 | lvim.leader = 'space' 125 | lvim.builtin.lir.show_hidden_files = true 126 | 127 | -- lvim keymappings 128 | lvim.keys.normal_mode[''] = 'BufferLineCycleNext' 129 | lvim.keys.normal_mode[''] = 'BufferLineCyclePrev' 130 | lvim.lsp.buffer_mappings.normal_mode['K'] = nil 131 | lvim.keys.normal_mode['K'] = 'Lspsaga hover_doc' 132 | lvim.builtin.which_key.mappings['C'] = { 'close', 'Close Window' } 133 | lvim.builtin.which_key.mappings['R'] = { 134 | '%s/。/./g %s/、/,/g noh', 135 | 'Replace symbol for TeX' 136 | } 137 | lvim.builtin.which_key.mappings['t'] = { 'TagbarToggle', 'Tagbar' } 138 | lvim.builtin.which_key.mappings['P'] = { 'CccPick', 'Color Picker' } 139 | lvim.builtin.which_key.mappings['i'] = { 'InlayHintsToggle', 'Inlay Hints' } 140 | lvim.builtin.which_key.mappings['k'] = { 141 | name = 'LSPsaga', 142 | k = { 'Lspsaga hover_doc', 'Hover Doc' }, 143 | l = { 'Lspsaga hover_doc ++keep', 'Hover Doc (Keep)' }, 144 | f = { 'Lspsaga finder', 'Finder' }, 145 | r = { 'Lspsaga rename', 'Rename' }, 146 | p = { 'Lspsaga rename ++project', 'Rename (Project)' }, 147 | o = { 'Lspsaga outline', 'Outline' }, 148 | d = { 149 | name = 'Diagnostics', 150 | d = { 'Lspsaga show_workspace_diagnostics', 'Workspace' }, 151 | b = { 'Lspsaga show_buf_diagnostics', 'Buffer' }, 152 | c = { 'Lspsaga show_cursor_diagnostics', 'Cursor' }, 153 | p = { 'Lspsaga diagnostic_jump_prev', 'Previous' }, 154 | n = { 'Lspsaga diagnostic_jump_next', 'Next' }, 155 | } 156 | } 157 | lvim.builtin.which_key.mappings['W'] = { 158 | name = 'Window resize', 159 | h = { 'vertical resize -5', 'Left' }, 160 | l = { 'vertical resize +5', 'Right' }, 161 | k = { 'resize -5', 'Up' }, 162 | j = { 'resize +5', 'Down' }, 163 | } 164 | lvim.builtin.which_key.mappings['n'] = { 165 | name = 'npm package info', 166 | s = { "lua require('package-info').show({ force = true })", 'Show' }, 167 | h = { "lua require('package-info').hide()", 'Hide' }, 168 | t = { "lua require('package-info').toggle()", 'Toggle' }, 169 | u = { "lua require('package-info').update()", 'Update' }, 170 | d = { "lua require('package-info').delete()", 'Delete' }, 171 | p = { "lua require('package-info').change_version()", 'Change version' }, 172 | i = { "lua require('package-info').install()", 'Install' }, 173 | } 174 | 175 | -- theme settings 176 | lvim.colorscheme = 'tokyonight' 177 | require('tokyonight').setup({ 178 | style = 'moon', 179 | terminal_colors = false, 180 | styles = { 181 | comments = { italic = false }, 182 | keywords = { italic = false }, 183 | } 184 | }) 185 | 186 | -- lvin builtin settings 187 | lvim.builtin.alpha.active = true 188 | lvim.builtin.alpha.mode = 'dashboard' 189 | lvim.builtin.alpha.dashboard.section.header.val = { 190 | '██████╗ ██╗ ██╗███╗ ██╗███████╗██╗ ██╗███╗ ██╗██████╗ ██╗ ██╗███╗ ██╗', 191 | '██╔══██╗██║ ██║████╗ ██║██╔════╝██║ ██║████╗ ██║██╔══██╗██║ ██║████╗ ██║', 192 | '██████╔╝██║ ██║██╔██╗ ██║█████╗ ██║ ██║██╔██╗ ██║██████╔╝██║ ██║██╔██╗ ██║', 193 | '██╔══██╗██║ ██║██║╚██╗██║██╔══╝ ██║ ██║██║╚██╗██║██╔══██╗██║ ██║██║╚██╗██║', 194 | '██║ ██║╚██████╔╝██║ ╚████║██║ ╚██████╔╝██║ ╚████║██║ ██║╚██████╔╝██║ ╚████║', 195 | '╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝', 196 | } 197 | lvim.builtin.terminal.active = true 198 | lvim.builtin.nvimtree.setup.view.side = 'left' 199 | lvim.builtin.nvimtree.setup.renderer.icons.show.git = false 200 | lvim.builtin.treesitter.auto_install = true 201 | lvim.builtin.lualine.sections.lualine_a = { 'mode' } 202 | 203 | -- apply mdx filetype 204 | vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, { 205 | pattern = '*.mdx', 206 | command = 'set filetype=markdown.mdx', 207 | }) 208 | 209 | -- lsp settings 210 | local lspconfig = require('lvim.lsp.manager') 211 | 212 | -- set skipped servers 213 | local additional_servers = { 214 | 'lua_ls', 215 | 'tsserver', 216 | 'pyright', 217 | 'rust_analyzer', 218 | 'jdtls', 219 | } 220 | 221 | local server_list = vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, additional_servers) 222 | lvim.lsp.automatic_configuration.skipped_servers = server_list 223 | 224 | -- lua 225 | lspconfig.setup('lua_ls', { 226 | settings = { 227 | Lua = { 228 | hint = { 229 | enable = true, 230 | } 231 | } 232 | } 233 | }) 234 | 235 | -- typescript 236 | local function is_packagejson_present() 237 | if vim.fn.filereadable('package.json') == 1 then 238 | return true 239 | end 240 | return false 241 | end 242 | 243 | if is_packagejson_present() then 244 | lspconfig.setup('tsserver', { 245 | settings = { 246 | typescript = { 247 | inlayHints = { 248 | includeInlayParameterNameHints = 'all', 249 | includeInlayParameterNameHintsWhenArgumentMatchesName = true, 250 | includeInlayFunctionParameterTypeHints = true, 251 | includeInlayVariableTypeHints = true, 252 | includeInlayVariableTypeHintsWhenTypeMatchesName = true, 253 | includeInlayPropertyDeclarationTypeHints = true, 254 | includeInlayFunctionLikeReturnTypeHints = true, 255 | includeInlayEnumMemberValueHints = true, 256 | }, 257 | }, 258 | javascript = { 259 | inlayHints = { 260 | includeInlayParameterNameHints = 'all', 261 | includeInlayParameterNameHintsWhenArgumentMatchesName = true, 262 | includeInlayFunctionParameterTypeHints = true, 263 | includeInlayVariableTypeHints = true, 264 | includeInlayVariableTypeHintsWhenTypeMatchesName = true, 265 | includeInlayPropertyDeclarationTypeHints = true, 266 | includeInlayFunctionLikeReturnTypeHints = true, 267 | includeInlayEnumMemberValueHints = true, 268 | }, 269 | }, 270 | } 271 | }) 272 | else 273 | lspconfig.setup('denols', { 274 | settings = { 275 | deno = { 276 | inlayHints = { 277 | parameterNames = { enabled = 'all', suppressWhenArgumentMatchesName = true }, 278 | parameterTypes = { enabled = true }, 279 | variableTypes = { enabled = true, suppressWhenTypeMatchesName = true }, 280 | propertyDeclarationTypes = { enabled = true }, 281 | functionLikeReturnTypes = { enable = true }, 282 | enumMemberValues = { enabled = true }, 283 | }, 284 | } 285 | } 286 | }) 287 | end 288 | 289 | -- emmet 290 | lspconfig.setup('emmet_ls', { 291 | filetypes = { 292 | 'css', 293 | 'html', 294 | 'javascriptreact', 295 | 'typescriptreact', 296 | 'astro', 297 | 'svelte', 298 | 'vue', 299 | 'less', 300 | 'sass', 301 | 'scss', 302 | 'pug', 303 | }, 304 | }) 305 | 306 | -- biome 307 | local biome_filename = { 308 | 'biome.json', 309 | 'biome.jsonc', 310 | } 311 | 312 | local function is_biome_config_present() 313 | for _, filename in ipairs(biome_filename) do 314 | if vim.fn.filereadable(filename) == 1 then 315 | return true 316 | end 317 | end 318 | return false 319 | end 320 | 321 | if is_biome_config_present() then 322 | lspconfig.setup('biome') 323 | end 324 | 325 | -- python 326 | lspconfig.setup('pylyzer', { 327 | settings = { 328 | python = { 329 | inlayHints = true 330 | } 331 | } 332 | }) 333 | 334 | -- rust 335 | lspconfig.setup('rust_analyzer', { 336 | settings = { 337 | ['rust-analyzer'] = { 338 | inlayHints = { 339 | bindingModeHints = { 340 | enable = false, 341 | }, 342 | chainingHints = { 343 | enable = true, 344 | }, 345 | closingBraceHints = { 346 | enable = true, 347 | minLines = 25, 348 | }, 349 | closureReturnTypeHints = { 350 | enable = 'never', 351 | }, 352 | lifetimeElisionHints = { 353 | enable = 'never', 354 | useParameterNames = false, 355 | }, 356 | maxLength = 25, 357 | parameterHints = { 358 | enable = true, 359 | }, 360 | reborrowHints = { 361 | enable = 'never', 362 | }, 363 | renderColons = true, 364 | typeHints = { 365 | enable = true, 366 | hideClosureInitialization = false, 367 | hideNamedConstructor = false, 368 | }, 369 | }, 370 | } 371 | } 372 | }) 373 | 374 | -- java 375 | lspconfig.setup('jdtls', { 376 | settings = { 377 | java = { 378 | inlayHints = { 379 | parameterNames = { 380 | enabled = 'all', 381 | exclusions = { 'this' }, 382 | }, 383 | }, 384 | } 385 | } 386 | }) 387 | 388 | -- formatter settings 389 | local formatters = require('lvim.lsp.null-ls.formatters') 390 | 391 | -- prettier 392 | local prettier_filename = { 393 | '.prettierrc', 394 | '.prettierrc.json', 395 | '.prettierrc.json5', 396 | '.prettierrc.yaml', 397 | '.prettierrc.yml', 398 | '.prettierrc.toml', 399 | '.prettierrc.js', 400 | '.prettierrc.cjs', 401 | '.prettierrc.mjs', 402 | 'prettier.config.js', 403 | 'prettier.config.cjs', 404 | 'prettier.config.mjs', 405 | } 406 | 407 | local function is_prettier_config_present() 408 | for _, filename in ipairs(prettier_filename) do 409 | if vim.fn.filereadable(filename) == 1 then 410 | return true 411 | end 412 | end 413 | return false 414 | end 415 | 416 | if is_prettier_config_present() then 417 | formatters.setup { 418 | { 419 | exe = 'prettier', 420 | filetypes = { 421 | 'javascript', 422 | 'javascriptreact', 423 | 'typescript', 424 | 'typescriptreact', 425 | 'json', 426 | 'jsonc', 427 | 'html', 428 | 'css', 429 | 'scss', 430 | 'sass', 431 | 'less', 432 | 'astro', 433 | 'vue', 434 | 'markdown', 435 | }, 436 | }, 437 | } 438 | end 439 | 440 | -- linters settings 441 | local linters = require('lvim.lsp.null-ls.linters') 442 | 443 | -- eslint 444 | local eslint_filename = { 445 | '.eslintrc', 446 | '.eslintrc.json', 447 | '.eslintrc.js', 448 | '.eslintrc.cjs', 449 | '.eslintrc.yml', 450 | '.eslintrc.yaml', 451 | 'eslint.config.js', 452 | 'eslint.config.cjs', 453 | 'eslint.config.mjs', 454 | } 455 | 456 | local function is_eslint_config_present() 457 | for _, filename in ipairs(eslint_filename) do 458 | if vim.fn.filereadable(filename) == 1 then 459 | return true 460 | end 461 | end 462 | return false 463 | end 464 | 465 | if is_eslint_config_present() then 466 | linters.setup { 467 | { 468 | exe = 'eslint', 469 | filetypes = { 470 | 'typescript', 471 | 'typescriptreact', 472 | 'javascript', 473 | 'javascriptreact', 474 | 'astro', 475 | 'vue', 476 | }, 477 | }, 478 | } 479 | end 480 | --------------------------------------------------------------------------------