├── .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 | 
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 |
--------------------------------------------------------------------------------