├── .xinitrc ├── .gitignore ├── .config ├── rofi │ ├── config │ │ ├── font.rasi │ │ ├── colors.rasi │ │ ├── askpass.rasi │ │ ├── confirm.rasi │ │ ├── runner.rasi │ │ ├── network.rasi │ │ ├── screenshot.rasi │ │ ├── mpd.rasi │ │ ├── launcher.rasi │ │ ├── powermenu.rasi │ │ ├── bluetooth.rasi │ │ └── networkmenu.rasi │ ├── bin │ │ ├── runner │ │ ├── launcher │ │ ├── screenshot │ │ └── powermenu │ ├── powermenu.rasi │ ├── rofidmenu.rasi │ ├── power-profiles.rasi │ ├── catppuccin-mocha.rasi │ └── rofikeyhint.rasi ├── flameshot │ └── flameshot.ini ├── gammastep │ └── config.ini ├── polybar │ ├── launch.sh │ ├── scripts │ │ ├── nowplaying-loop-toggle.sh │ │ ├── notification-chesscom.sh │ │ ├── todoist.sh │ │ ├── notification-github.sh │ │ ├── nowplaying.sh │ │ └── openweathermap-fullfeatured.sh │ └── config.ini ├── dunst │ ├── run.sh │ ├── changevolume │ └── dunstrc ├── i3 │ ├── lock.sh │ ├── spt-changevolume │ ├── powermenu │ └── config ├── ranger │ ├── open-tui │ ├── rc.conf │ └── commands.py ├── ripgrep │ └── ripgreprc ├── autorandr │ ├── laptop │ │ ├── setup │ │ └── config │ └── external │ │ ├── config │ │ └── setup ├── hypr │ ├── hyprpaper.conf │ ├── hypridle.conf │ └── hyprland.conf ├── alacritty │ ├── alacritty.toml │ └── alacritty.example.yml ├── qutebrowser │ └── autoconfig.yml ├── wlogout │ └── layout ├── wofi │ └── style.css ├── tridactyl │ └── tridactylrc ├── waybar │ ├── mocha.css │ ├── style.css │ └── config ├── lazygit │ └── config.yml ├── mimeapps.list └── picom.conf ├── scripts ├── notifier.sh ├── arch-upgrade ├── arch-fix-packages └── art ├── .gitconfig ├── .Xresources ├── .zshrc ├── .tmux.conf ├── .p10k.zsh └── .ideavimrc /.xinitrc: -------------------------------------------------------------------------------- 1 | xrdb ~/.Xresources 2 | exec i3 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .config/lazygit/state.yml 2 | .claude/ 3 | -------------------------------------------------------------------------------- /.config/rofi/config/font.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | font: "Iosevka 10"; 3 | } 4 | -------------------------------------------------------------------------------- /.config/flameshot/flameshot.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | drawColor=#ff0000 3 | savePath=/home/niklas/Screenshots 4 | -------------------------------------------------------------------------------- /scripts/notifier.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export XDG_RUNTIME_DIR=/run/user/$(id -u) 3 | 4 | /usr/bin/notify-send "$@" 5 | -------------------------------------------------------------------------------- /scripts/arch-upgrade: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | yay -Syu --answerupgrade none --answerclean none --answerdiff none --save 4 | -------------------------------------------------------------------------------- /.config/gammastep/config.ini: -------------------------------------------------------------------------------- 1 | [general] 2 | location-provider=manual 3 | 4 | [manual] 5 | lat=59.334591 6 | lon=18.063240 7 | -------------------------------------------------------------------------------- /.config/polybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | killall -q polybar 4 | 5 | polybar bottom 2>&1 | tee -a /tmp/polybar.log & disown 6 | -------------------------------------------------------------------------------- /.config/dunst/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Kill and running dunst instances and start 4 | killall dunst;dbus-launch dunst --config ~/.config/dunst/dunstrc 5 | -------------------------------------------------------------------------------- /.config/i3/lock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | xset s off dpms 0 10 0 4 | i3lock --color=000000 --ignore-empty-password --show-failed-attempts --nofork 5 | xset s off -dpms 6 | -------------------------------------------------------------------------------- /.config/rofi/bin/runner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | rofi \ 3 | -show run \ 4 | -scroll-method 0 \ 5 | -terminal kitty \ 6 | -theme "$HOME"/.config/rofi/config/runner.rasi 7 | -------------------------------------------------------------------------------- /scripts/arch-fix-packages: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo pacman -Sc --noconfirm 4 | 5 | paccache -rvk0 6 | 7 | sudo pacman-mirrors -f 8 | 9 | sudo pacman-key --refresh-keys 10 | -------------------------------------------------------------------------------- /.config/ranger/open-tui: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tool=$1 3 | loc="$2" 4 | loc=${loc#"file://"} 5 | 6 | if [[ ! -e $loc ]]; then 7 | loc=$(dirname "$loc") 8 | fi 9 | 10 | i3-msg exec 'alacritty -e '$tool' "'$loc'"' 11 | -------------------------------------------------------------------------------- /.config/ripgrep/ripgreprc: -------------------------------------------------------------------------------- 1 | --glob=!phpstan-baseline.neon 2 | --glob=!var/** 3 | --glob=!storage/** 4 | --glob=!dump/** 5 | --glob=!bin/** 6 | --glob=!etc/** 7 | --glob=!node_modules/** 8 | --glob=!.git/** 9 | --glob=!*.map 10 | --hidden 11 | -------------------------------------------------------------------------------- /scripts/art: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=docker/artisan 4 | if [ -f "./docker/artisan" ]; then 5 | ./docker/artisan "$@" 6 | elif [ -f "./vendor/bin/sail" ]; then 7 | ./vendor/bin/sail artisan "$@" 8 | else 9 | php artisan "$@" 10 | fi 11 | -------------------------------------------------------------------------------- /.config/autorandr/laptop/setup: -------------------------------------------------------------------------------- 1 | eDP-1 00ffffffffffff0009e5840a000000001e1f0104a51d1278035c70a6514c9c260e505400000001010101010101010101010101010101743c80a070b02840302036001eb31000001a000000fd00283c4b4b10010a202020202020000000fe00424f452048460a202020202020000000fe004e5631333357554d2d5430310a0051 2 | -------------------------------------------------------------------------------- /.config/polybar/scripts/nowplaying-loop-toggle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | loop=$(playerctl loop 2>&1) 4 | 5 | if [[ "$loop" == "None" ]]; then 6 | playerctl loop Playlist 7 | elif [[ "$loop" == "Playlist" ]]; then 8 | playerctl loop Track 9 | else 10 | playerctl loop None 11 | fi 12 | -------------------------------------------------------------------------------- /.config/rofi/config/colors.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | BG: #1E1D2Fff; 3 | BGA: #89DCEBff; 4 | FG: #D9E0EEff; 5 | FGA: #F28FADff; 6 | BDR: #96CDFBff; 7 | SEL: #1E1E2Eff; 8 | UGT: #F28FADff; 9 | IMG: #FAE3B0ff; 10 | OFF: #575268ff; 11 | ON: #ABE9B3ff; 12 | } 13 | -------------------------------------------------------------------------------- /.config/rofi/bin/launcher: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | rofi \ 3 | -show drun \ 4 | -modi run,drun,ssh \ 5 | -scroll-method 0 \ 6 | -drun-match-fields all \ 7 | -drun-display-format "{name}" \ 8 | -no-drun-show-actions \ 9 | -terminal kitty \ 10 | -kb-cancel Escape \ 11 | -theme "$HOME"/.config/rofi/config/launcher.rasi 12 | -------------------------------------------------------------------------------- /.config/rofi/powermenu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "JetBrains Mono Nerd Font 10"; 3 | show-icons: false; 4 | icon-theme: "Oranchelo"; 5 | scroll-method: 0; 6 | disable-history: false; 7 | sidebar-mode: false; 8 | } 9 | 10 | @import "~/.config/rofi/catppuccin-mocha.rasi" 11 | -------------------------------------------------------------------------------- /.config/hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | preload = /home/niklas/Pictures/Wallpapers/pexels-photo-2098428.jpeg 2 | wallpaper = eDP-1,/home/niklas/Pictures/Wallpapers/pexels-photo-755726.jpeg 3 | wallpaper = DP-1,/home/niklas/Pictures/Wallpapers/pexels-photo-2098428.jpeg 4 | #wallpaper = HDMI-A-1,/home/niklas/Pictures/Wallpapers/pexels-photo-2098428.jpeg 5 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.toml: -------------------------------------------------------------------------------- 1 | [env] 2 | TERM = "xterm-256color" 3 | 4 | [font] 5 | size = 10 6 | 7 | [font.normal] 8 | # family = "Geist Mono" 9 | family = "JetBrainsMono NF" 10 | # family = "DejaVu Sans Mono" 11 | style = "Bold" 12 | 13 | [font.offset] 14 | x = 0 15 | y = 4 16 | 17 | [scrolling] 18 | history = 10000 19 | 20 | [window.padding] 21 | x = 10 22 | y = 10 23 | -------------------------------------------------------------------------------- /.config/ranger/rc.conf: -------------------------------------------------------------------------------- 1 | set preview_images true 2 | set preview_images_method ueberzug 3 | 4 | map hh set show_hidden! 5 | 6 | map DD shell -s trash-put %s 7 | map DE shell -s trash-empty 8 | map DR shell -i trash-restore 9 | 10 | map gg cd ~ 11 | map gd cd ~/Downloads 12 | map gD cd ~/dev 13 | map gs cd ~/Tresors/Sync 14 | map gc cd ~/.config 15 | map gt cd ~/.local/share/Trash/files 16 | -------------------------------------------------------------------------------- /.config/autorandr/laptop/config: -------------------------------------------------------------------------------- 1 | output HDMI-1 2 | off 3 | output DP-1 4 | off 5 | output DP-2 6 | off 7 | output DP-3 8 | off 9 | output DP-4 10 | off 11 | output eDP-1 12 | crtc 0 13 | mode 1920x1200 14 | pos 0x0 15 | primary 16 | rate 60.00 17 | x-prop-broadcast_rgb Automatic 18 | x-prop-colorspace Default 19 | x-prop-max_bpc 12 20 | x-prop-non_desktop 0 21 | x-prop-scaling_mode Full aspect 22 | -------------------------------------------------------------------------------- /.config/hypr/hypridle.conf: -------------------------------------------------------------------------------- 1 | general { 2 | lock_cmd = swaylock -c 000000 3 | ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam) 4 | ignore_systemd_inhibit = false # whether to ignore systemd-inhibit --what=idle inhibitors 5 | } 6 | 7 | listener { 8 | timeout = 500 # in seconds 9 | } 10 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | email = niklas@modess.io 3 | name = Niklas Modess 4 | 5 | [core] 6 | pager = delta 7 | 8 | [interactive] 9 | diffFilter = delta --color-only 10 | 11 | [delta] 12 | features = side-by-side line-numbers decorations 13 | navigate = true 14 | whitespace-error-style = 22 reverse 15 | 16 | [delta "decorations"] 17 | commit-decoration-style = bold yellow box ul 18 | file-style = bold yellow ul 19 | file-decoration-style = none 20 | -------------------------------------------------------------------------------- /.config/polybar/scripts/notification-chesscom.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! ping -c 1 9.9.9.9 &> /dev/null; then 4 | echo "" 5 | exit 0 6 | fi 7 | 8 | USERNAME=`cat ~/.secrets/chesscom_username` 9 | games=$(curl -sf "https://api.chess.com/pub/player/$USERNAME/games/to-move" | jq ".[] | length") 10 | 11 | secondary=$(xrdb -query | grep 'color5:'| awk '{print $NF}') 12 | 13 | if [ "$games" -gt 0 ]; then 14 | echo "%{F$secondary}%{F-} $games" 15 | else 16 | echo "" 17 | fi 18 | -------------------------------------------------------------------------------- /.Xresources: -------------------------------------------------------------------------------- 1 | X.cursor.size: 16 2 | 3 | ! TokyoNight colors for Xresources 4 | 5 | *background: #1a1b26 6 | *foreground: #c0caf5 7 | 8 | *color0: #15161e 9 | *color1: #f7768e 10 | *color2: #9ece6a 11 | *color3: #e0af68 12 | *color4: #7aa2f7 13 | *color5: #bb9af7 14 | *color6: #7dcfff 15 | *color7: #a9b1d6 16 | 17 | *color8: #414868 18 | *color9: #f7768e 19 | *color10: #9ece6a 20 | *color11: #e0af68 21 | *color12: #7aa2f7 22 | *color13: #bb9af7 23 | *color14: #7dcfff 24 | *color15: #c0caf5 25 | -------------------------------------------------------------------------------- /.config/polybar/scripts/todoist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! ping -c 1 9.9.9.9 &> /dev/null; then 4 | echo "" 5 | exit 0 6 | fi 7 | 8 | API_KEY=`cat ~/.secrets/todoist` 9 | tasks=$(curl -sG "https://api.todoist.com/rest/v2/tasks" --data-urlencode "filter=due before: +0 hours" -H "Authorization: Bearer $API_KEY" | jq ". | length") 10 | 11 | secondary=$(xrdb -query | grep 'color5:'| awk '{print $NF}') 12 | 13 | if [ "$tasks" -gt 0 ]; then 14 | echo "%{F$secondary}%{F-} $tasks" 15 | else 16 | echo "" 17 | fi 18 | -------------------------------------------------------------------------------- /.config/rofi/rofidmenu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modi: "run,drun,window"; 3 | icon-theme: "Oranchelo"; 4 | show-icons: true; 5 | terminal: "kitty"; 6 | drun-display-format: "{icon} {name}"; 7 | location: 0; 8 | disable-history: false; 9 | hide-scrollbar: true; 10 | display-drun: "  Apps "; 11 | display-run: "  Run "; 12 | display-window: " 﩯 Window"; 13 | display-Network: " 󰤨 Network"; 14 | sidebar-mode: true; 15 | } 16 | 17 | @import "~/.config/rofi/catppuccin-mocha.rasi" 18 | -------------------------------------------------------------------------------- /.config/qutebrowser/autoconfig.yml: -------------------------------------------------------------------------------- 1 | # If a config.py file exists, this file is ignored unless it's explicitly loaded 2 | # via config.load_autoconfig(). For more information, see: 3 | # https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml 4 | # DO NOT edit this file by hand, qutebrowser will overwrite it. 5 | # Instead, create a config.py - see :help for details. 6 | 7 | config_version: 2 8 | settings: 9 | content.register_protocol_handler: 10 | https://mail.proton.me#mailto=%25s: true 11 | -------------------------------------------------------------------------------- /.config/polybar/scripts/notification-github.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! ping -c 1 9.9.9.9 &> /dev/null; then 4 | echo "" 5 | exit 0 6 | fi 7 | 8 | USER=`cat ~/.secrets/github_username` 9 | TOKEN=`cat ~/.secrets/github_token` 10 | 11 | notifications=$(echo "user = \"$USER:$TOKEN\"" | curl -sf -K- https://api.github.com/notifications | jq ".[].unread" | grep -c true) 12 | 13 | secondary=$(xrdb -query | grep 'color5:'| awk '{print $NF}') 14 | 15 | if [ "$notifications" -gt 0 ]; then 16 | echo "%{F$secondary}%{F-} $notifications" 17 | else 18 | echo "" 19 | fi 20 | -------------------------------------------------------------------------------- /.config/autorandr/external/config: -------------------------------------------------------------------------------- 1 | output HDMI-1 2 | off 3 | output DP-2 4 | off 5 | output DP-3 6 | off 7 | output DP-4 8 | off 9 | output DP-1 10 | crtc 0 11 | mode 3840x2160 12 | pos 0x0 13 | primary 14 | rate 60.00 15 | x-prop-audio auto 16 | x-prop-broadcast_rgb Automatic 17 | x-prop-colorspace Default 18 | x-prop-max_bpc 12 19 | x-prop-non_desktop 0 20 | output eDP-1 21 | crtc 1 22 | mode 1920x1200 23 | pos 960x2160 24 | rate 60.00 25 | x-prop-broadcast_rgb Automatic 26 | x-prop-colorspace Default 27 | x-prop-max_bpc 12 28 | x-prop-non_desktop 0 29 | x-prop-scaling_mode Full aspect 30 | -------------------------------------------------------------------------------- /.config/rofi/power-profiles.rasi: -------------------------------------------------------------------------------- 1 | /******************************************************* 2 | * ROFI configs i3 powermenu for EndeavourOS 3 | * Maintainer: joekamprad 4 | *******************************************************/ 5 | configuration { 6 | font: "Noto Sans Regular 10"; 7 | show-icons: false; 8 | icon-theme: "Qogir"; 9 | scroll-method: 0; 10 | disable-history: false; 11 | fullscreen: false; 12 | hide-scrollbar: true; 13 | sidebar-mode: false; 14 | } 15 | 16 | @import "~/.config/rofi/catppuccin-mocha.rasi" 17 | -------------------------------------------------------------------------------- /.config/rofi/config/askpass.rasi: -------------------------------------------------------------------------------- 1 | @import "colors.rasi" 2 | @import "font.rasi" 3 | 4 | * { 5 | background-color: @BG; 6 | text-color: @FG; 7 | } 8 | 9 | window { 10 | width: 250px; 11 | padding: 20px; 12 | border: 0px 0px 2px 0px; 13 | border-radius: 8px; 14 | border-color: @BDR; 15 | location: 0; 16 | x-offset: 0; 17 | y-offset: -4%; 18 | } 19 | 20 | entry { 21 | expand: true; 22 | width: 150px; 23 | text-color: @BDR; 24 | } 25 | -------------------------------------------------------------------------------- /.config/rofi/config/confirm.rasi: -------------------------------------------------------------------------------- 1 | @import "colors.rasi" 2 | @import "font.rasi" 3 | 4 | * { 5 | background-color: @BG; 6 | text-color: @FG; 7 | } 8 | 9 | window { 10 | width: 200px; 11 | padding: 20px; 12 | border: 0px 0px 2px 0px; 13 | border-radius: 8px; 14 | border-color: @BDR; 15 | location: 0; 16 | x-offset: 0; 17 | y-offset: -4%; 18 | } 19 | 20 | entry { 21 | expand: true; 22 | width: 150px; 23 | text-color: @BDR; 24 | } 25 | -------------------------------------------------------------------------------- /.config/wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "lock", 3 | "action" : "swaylock -c 000000" 4 | "text" : "Lock" 5 | } 6 | { 7 | "label" : "hibernate", 8 | "action" : "systemctl hibernate", 9 | "text" : "Hibernate" 10 | } 11 | { 12 | "label" : "logout", 13 | "action" : "loginctl terminate-user $USER", 14 | "text" : "Logout" 15 | } 16 | { 17 | "label" : "shutdown", 18 | "action" : "systemctl poweroff", 19 | "text" : "Shutdown" 20 | } 21 | { 22 | "label" : "suspend", 23 | "action" : "systemctl suspend", 24 | "text" : "Suspend" 25 | } 26 | { 27 | "label" : "reboot", 28 | "action" : "systemctl reboot", 29 | "text" : "Reboot" 30 | } 31 | -------------------------------------------------------------------------------- /.config/ranger/commands.py: -------------------------------------------------------------------------------- 1 | # This is a sample commands.py. You can add your own commands here. 2 | # 3 | # Please refer to commands_full.py for all the default commands and a complete 4 | # documentation. Do NOT add them all here, or you may end up with defunct 5 | # commands when upgrading ranger. 6 | 7 | # A simple command for demonstration purposes follows. 8 | # ----------------------------------------------------------------------------- 9 | 10 | from __future__ import (absolute_import, division, print_function) 11 | 12 | # You can import any python module as needed. 13 | import os 14 | 15 | # You always need to import ranger.api.commands here to get the Command class: 16 | from ranger.api.commands import Command 17 | -------------------------------------------------------------------------------- /.config/autorandr/external/setup: -------------------------------------------------------------------------------- 1 | DP-1 00ffffffffffff001e6d5077578d1b0002210104b5462878fa7ba1ae4f44a9260c5054210800d1c0010101010101010101010101010100d200a0f070508030203500b9882100001a000000fd00283c1e873c000a202020202020000000fc004c472048445220344b0a202020000000ff003330324d414e4a464d3235350a011b0203117223090707830100004401030410a36600a0f0701f8030203500b9882100001a565e00a0a0a0295030203500b9882100001a023a801871382d40582c4500b9882100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078 2 | eDP-1 00ffffffffffff0009e5840a000000001e1f0104a51d1278035c70a6514c9c260e505400000001010101010101010101010101010101743c80a070b02840302036001eb31000001a000000fd00283c4b4b10010a202020202020000000fe00424f452048460a202020202020000000fe004e5631333357554d2d5430310a0051 3 | -------------------------------------------------------------------------------- /.config/wofi/style.css: -------------------------------------------------------------------------------- 1 | window { 2 | margin: 0px; 3 | border: 1px solid #bd93f9; 4 | background-color: #282a36; 5 | } 6 | 7 | #input { 8 | margin: 5px; 9 | border: none; 10 | color: #f8f8f2; 11 | background-color: #44475a; 12 | } 13 | 14 | #inner-box { 15 | margin: 5px; 16 | border: none; 17 | background-color: #282a36; 18 | } 19 | 20 | #outer-box { 21 | margin: 5px; 22 | border: none; 23 | background-color: #282a36; 24 | } 25 | 26 | #scroll { 27 | margin: 0px; 28 | border: none; 29 | } 30 | 31 | #text { 32 | margin: 5px; 33 | border: none; 34 | color: #f8f8f2; 35 | } 36 | 37 | #entry.activatable #text { 38 | color: #282a36; 39 | } 40 | 41 | #entry > * { 42 | color: #f8f8f2; 43 | } 44 | 45 | #entry:selected { 46 | background-color: #44475a; 47 | } 48 | 49 | #entry:selected #text { 50 | font-weight: bold; 51 | } 52 | -------------------------------------------------------------------------------- /.config/dunst/changevolume: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function send_notification() { 4 | volume=$(pamixer --get-volume) 5 | dunstify -a "changevolume" -u low -r "9993" -h int:value:"$volume" -i "volume-$1" "Volume: ${volume}%" -t 2000 6 | } 7 | 8 | case $1 in 9 | up-1) 10 | # Set the volume on (if it was muted) 11 | pamixer -u 12 | pamixer -i 1 --allow-boost 13 | send_notification $1 14 | ;; 15 | up) 16 | # Set the volume on (if it was muted) 17 | pamixer -u 18 | pamixer -i 5 --allow-boost 19 | send_notification $1 20 | ;; 21 | down-1) 22 | pamixer -u 23 | pamixer -d 1 --allow-boost 24 | send_notification $1 25 | ;; 26 | down) 27 | pamixer -u 28 | pamixer -d 5 --allow-boost 29 | send_notification $1 30 | ;; 31 | mute) 32 | pamixer -t 33 | if $(pamixer --get-mute); then 34 | dunstify -i volume-mute -a "changevolume" -t 2000 -r 9993 -u low "Muted" 35 | else 36 | send_notification up 37 | fi 38 | ;; 39 | esac 40 | -------------------------------------------------------------------------------- /.config/tridactyl/tridactylrc: -------------------------------------------------------------------------------- 1 | autocmd TabEnter .* no_mouse_mode 2 | autocmd TabEnter https://*youtube.com.* mouse_mode 3 | autocmd TabEnter https://*proton.me.* mouse_mode 4 | autocmd TabEnter https://*gmail.com.* mouse_mode 5 | autocmd TabEnter https://*calendar.google.com.* mouse_mode 6 | #autocmd TabEnter https://*linear.app.* mouse_mod 7 | 8 | bind m mouse_mode 9 | bind no_mouse_mode 10 | 11 | bind --mode=normal o open 12 | bind --mode=normal O tabopen 13 | 14 | bind --mode=normal t current_url open 15 | bind --mode=normal T current_url tabopen 16 | 17 | bind --mode=normal tabnext 18 | bind --mode=normal tabprev 19 | 20 | bind --mode=visual js document.getSelection().modify("extend","backward","character") 21 | bind --mode=visual js document.getSelection().modify("extend","forward","character") 22 | bind --mode=visual js document.getSelection().modify("extend","backward","line") 23 | bind --mode=visual js document.getSelection().modify("extend","forward","line") 24 | -------------------------------------------------------------------------------- /.config/waybar/mocha.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Catppuccin Mocha palette 4 | * Maintainer: rubyowo 5 | * 6 | */ 7 | 8 | @define-color base #1e1e2e; 9 | @define-color mantle #181825; 10 | @define-color crust #11111b; 11 | 12 | @define-color text #cdd6f4; 13 | @define-color subtext0 #a6adc8; 14 | @define-color subtext1 #bac2de; 15 | 16 | @define-color surface0 #313244; 17 | @define-color surface1 #45475a; 18 | @define-color surface2 #585b70; 19 | 20 | @define-color overlay0 #6c7086; 21 | @define-color overlay1 #7f849c; 22 | @define-color overlay2 #9399b2; 23 | 24 | @define-color blue #89b4fa; 25 | @define-color lavender #b4befe; 26 | @define-color sapphire #74c7ec; 27 | @define-color sky #89dceb; 28 | @define-color teal #94e2d5; 29 | @define-color green #a6e3a1; 30 | @define-color yellow #f9e2af; 31 | @define-color peach #fab387; 32 | @define-color maroon #eba0ac; 33 | @define-color red #f38ba8; 34 | @define-color mauve #cba6f7; 35 | @define-color pink #f5c2e7; 36 | @define-color flamingo #f2cdcd; 37 | @define-color rosewater #f5e0dc; 38 | -------------------------------------------------------------------------------- /.config/polybar/scripts/nowplaying.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | primary=$(xrdb -query | grep 'color4:'| awk '{print $NF}') 3 | secondary=$(xrdb -query | grep 'color5:'| awk '{print $NF}') 4 | green=$(xrdb -query | grep 'color2:'| awk '{print $NF}') 5 | disabled=$(xrdb -query | grep 'color8:'| awk '{print $NF}') 6 | 7 | status=$(playerctl status --player=spotify 2>&1) 8 | nowplaying=$(playerctl metadata --player=spotify --format "{{ artist }} - {{ title }}" 2>&1) 9 | shuffle=$(playerctl --player=spotify shuffle 2>&1) 10 | loop=$(playerctl --player=spotify loop 2>&1) 11 | 12 | if [[ "$status" == "Playing" ]]; then 13 | if [[ "$shuffle" == "Off" ]]; then 14 | shufflecolor=$disabled 15 | else 16 | shufflecolor=$green 17 | fi 18 | if [[ "$loop" == "Track" ]]; then 19 | loopcolor=$secondary 20 | elif [[ "$loop" == "Playlist" ]]; then 21 | loopcolor=$green 22 | else 23 | loopcolor=$disabled 24 | fi 25 | 26 | echo "%{F$primary}%{F-} $nowplaying %{F$shufflecolor}%{F-} %{F$loopcolor}%{F-} " 27 | elif [[ "$status" == "Paused" ]]; then 28 | echo "%{F$disabled} $nowplaying%{F-}" 29 | else 30 | echo "" 31 | fi 32 | -------------------------------------------------------------------------------- /.config/i3/spt-changevolume: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function send_notification() { 4 | volume=$(spt playback --format %v) 5 | dunstify -a "changesptvolume" -u low -r "9993" -h int:value:"$volume" -i "spt-volume-$1" " : ${volume}%" -t 2000 6 | } 7 | 8 | VOLUME=$(spt playback --format %v) 9 | 10 | case $1 in 11 | up-1) 12 | NEW_VOLUME=$(($VOLUME + 1)) 13 | 14 | if (( $NEW_VOLUME > 100 )); then 15 | NEW_VOLUME=100 16 | fi 17 | 18 | spt playback --volume $NEW_VOLUME 19 | send_notification $1 20 | ;; 21 | up) 22 | NEW_VOLUME=$(($VOLUME + 5)) 23 | 24 | if (( $NEW_VOLUME > 100 )); then 25 | NEW_VOLUME=100 26 | fi 27 | 28 | spt playback --volume $NEW_VOLUME 29 | send_notification $1 30 | ;; 31 | down-1) 32 | NEW_VOLUME=$(($VOLUME - 1)) 33 | 34 | if (( $NEW_VOLUME < 0 )); then 35 | NEW_VOLUME=0 36 | fi 37 | 38 | spt playback --volume $NEW_VOLUME 39 | send_notification $1 40 | ;; 41 | down) 42 | NEW_VOLUME=$(($VOLUME - 5)) 43 | 44 | if (( $NEW_VOLUME < 0 )); then 45 | NEW_VOLUME=0 46 | fi 47 | 48 | spt playback --volume $NEW_VOLUME 49 | send_notification $1 50 | ;; 51 | esac 52 | -------------------------------------------------------------------------------- /.config/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | gui: 2 | showFileTree: false # for rendering changes files in a tree format 3 | showIcons: true 4 | branchColors: 5 | 'chore': '#11aaff' 6 | 'bug': '#fab387' 7 | 'hotfix': '#f38ba8' 8 | 'fix': '#f38ba8' 9 | # theme: 10 | # lightTheme: false 11 | # activeBorderColor: 12 | # - "#a6e3a1" # Green 13 | # - bold 14 | # inactiveBorderColor: 15 | # - "#cdd6f4" # Text 16 | # selectedLineBgColor: 17 | # - "#45475a" # Surface0 18 | # selectedRangeBgColor: 19 | # - black 20 | theme: 21 | lightTheme: false 22 | activeBorderColor: 23 | - "#a6e3a1" # Green 24 | - bold 25 | inactiveBorderColor: 26 | - "#cdd6f4" # Text 27 | optionsTextColor: 28 | - "#89b4fa" # Blue 29 | selectedLineBgColor: 30 | - "#313244" # Surface0 31 | selectedRangeBgColor: 32 | - "#313244" # Surface0 33 | cherryPickedCommitBgColor: 34 | - "#94e2d5" # Teal 35 | cherryPickedCommitFgColor: 36 | - "#89b4fa" # Blue 37 | unstagedChangesColor: 38 | - red # Red 39 | git: 40 | branchLogCmd: 'git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(cyan)(%cn)%Creset" {{branchName}} --' 41 | paging: 42 | colorArg: always 43 | pager: delta --dark --paging=never 44 | -------------------------------------------------------------------------------- /.config/rofi/catppuccin-mocha.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg-col: #1e1e2e; 3 | bg-col-light: #1e1e2e; 4 | border-col: #1e1e2e; 5 | selected-col: #1e1e2e; 6 | blue: #89b4fa; 7 | fg-col: #cdd6f4; 8 | fg-col2: #f38ba8; 9 | grey: #6c7086; 10 | 11 | width: 600; 12 | font: "JetBrains Mono Nerd Font 14"; 13 | } 14 | 15 | element-text, element-icon , mode-switcher { 16 | background-color: inherit; 17 | text-color: inherit; 18 | } 19 | 20 | window { 21 | height: 360px; 22 | border: 3px; 23 | border-color: @border-col; 24 | background-color: @bg-col; 25 | } 26 | 27 | mainbox { 28 | background-color: @bg-col; 29 | } 30 | 31 | inputbar { 32 | children: [prompt,entry]; 33 | background-color: @bg-col; 34 | border-radius: 5px; 35 | padding: 2px; 36 | } 37 | 38 | prompt { 39 | background-color: @blue; 40 | padding: 6px; 41 | text-color: @bg-col; 42 | border-radius: 3px; 43 | margin: 20px 0px 0px 20px; 44 | } 45 | 46 | textbox-prompt-colon { 47 | expand: false; 48 | str: ":"; 49 | } 50 | 51 | entry { 52 | padding: 6px; 53 | margin: 20px 0px 0px 10px; 54 | text-color: @fg-col; 55 | background-color: @bg-col; 56 | } 57 | 58 | listview { 59 | border: 0px 0px 0px; 60 | padding: 6px 0px 0px; 61 | margin: 10px 0px 0px 20px; 62 | columns: 2; 63 | lines: 5; 64 | background-color: @bg-col; 65 | } 66 | 67 | element { 68 | padding: 5px; 69 | background-color: @bg-col; 70 | text-color: @fg-col ; 71 | } 72 | 73 | element-icon { 74 | size: 25px; 75 | } 76 | 77 | element selected { 78 | background-color: @selected-col ; 79 | text-color: @fg-col2 ; 80 | } 81 | 82 | mode-switcher { 83 | spacing: 0; 84 | } 85 | 86 | button { 87 | padding: 10px; 88 | background-color: @bg-col-light; 89 | text-color: @grey; 90 | vertical-align: 0.5; 91 | horizontal-align: 0.5; 92 | } 93 | 94 | button selected { 95 | background-color: @bg-col; 96 | text-color: @blue; 97 | } 98 | 99 | message { 100 | background-color: @bg-col-light; 101 | margin: 2px; 102 | padding: 2px; 103 | border-radius: 5px; 104 | } 105 | 106 | textbox { 107 | padding: 6px; 108 | margin: 20px 0px 0px 20px; 109 | text-color: @blue; 110 | background-color: @bg-col-light; 111 | } 112 | -------------------------------------------------------------------------------- /.config/rofi/bin/screenshot: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | rofi_command="rofi -theme $HOME/.config/rofi/config/screenshot.rasi" 3 | 4 | time=`date +%Y-%m-%d-%I-%M-%S` 5 | geometry=`xrandr | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'` 6 | dir="`xdg-user-dir PICTURES`/Screenshots" 7 | file="Screenshot_${time}_${geometry}.png" 8 | 9 | # Icons 10 | icon1="$HOME/.config/dunst/icons/collections.svg" 11 | icon2="$HOME/.config/dunst/icons/timer.svg" 12 | 13 | # Buttons 14 | layout=`cat $HOME/.config/rofi/config/screenshot.rasi | grep BUTTON | cut -d'=' -f2 | tr -d '[:blank:],*/'` 15 | if [[ "$layout" == "TRUE" ]]; then 16 | screen="" 17 | area="" 18 | window="缾" 19 | infive="靖" 20 | inten="福" 21 | else 22 | screen=" Capture Desktop" 23 | area=" Capture Area" 24 | window="缾 Capture Window" 25 | infive="靖 Take in 3s" 26 | inten="福 Take in 10s" 27 | fi 28 | 29 | # Notify and view screenshot 30 | notify_view () { 31 | dunstify -u low --replace=699 -i $icon1 "Copied to clipboard." 32 | viewnior ${dir}/"$file" 33 | if [[ -e "$dir/$file" ]]; then 34 | dunstify -u low --replace=699 -i $icon1 "Screenshot Saved." 35 | else 36 | dunstify -u low --replace=699 -i $icon1 "Screenshot Deleted." 37 | fi 38 | } 39 | 40 | # countdown 41 | countdown () { 42 | for sec in `seq $1 -1 1`; do 43 | dunstify -t 1000 --replace=699 -i $icon2 "Taking shot in : $sec" 44 | sleep 1 45 | done 46 | } 47 | 48 | # take shots 49 | shotnow () { 50 | cd ${dir} && sleep 0.5 && maim -u -f png | tee "$file" | xclip -selection clipboard -t image/png 51 | notify_view 52 | } 53 | 54 | shot5 () { 55 | countdown '3' 56 | sleep 1 && cd ${dir} && maim -u -f png | tee "$file" | xclip -selection clipboard -t image/png 57 | notify_view 58 | } 59 | 60 | shot10 () { 61 | countdown '10' 62 | sleep 1 && cd ${dir} && maim -u -f png | tee "$file" | xclip -selection clipboard -t image/png 63 | notify_view 64 | } 65 | 66 | shotwin () { 67 | cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | tee "$file" | xclip -selection clipboard -t image/png 68 | notify_view 69 | } 70 | 71 | shotarea () { 72 | cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | tee "$file" | xclip -selection clipboard -t image/png 73 | notify_view 74 | } 75 | 76 | if [[ ! -d "$dir" ]]; then 77 | mkdir -p "$dir" 78 | fi 79 | 80 | # Variable passed to rofi 81 | options="$screen\n$area\n$window\n$infive\n$inten" 82 | 83 | chosen="$(echo -e "$options" | $rofi_command -p 'Take A Shot' -dmenu -selected-row 0)" 84 | case $chosen in 85 | $screen) 86 | shotnow 87 | ;; 88 | $area) 89 | shotarea 90 | ;; 91 | $window) 92 | shotwin 93 | ;; 94 | $infive) 95 | shot5 96 | ;; 97 | $inten) 98 | shot10 99 | ;; 100 | esac 101 | 102 | -------------------------------------------------------------------------------- /.config/waybar/style.css: -------------------------------------------------------------------------------- 1 | @import "mocha.css"; 2 | 3 | /* Global */ 4 | * { 5 | font-family: "JetBrainsMono Nerd Font"; 6 | font-size: .9rem; 7 | transition-property: background-color; 8 | transition-duration: 0.5s; 9 | background-color: shade(@base, 0.9); 10 | } 11 | 12 | #mode, #clock, #memory, #temperature, #cpu, #custom-weather, 13 | #mpd, #idle_inhibitor, #backlight, #pulseaudio, #network, 14 | #battery, #custom-powermenu, #custom-cava-internal, 15 | #custom-launcher, #tray, #disk, #custom-pacman, #custom-scratchpad-indicator { 16 | padding-left: .6rem; 17 | padding-right: .6rem; 18 | } 19 | 20 | /* Bar */ 21 | window#waybar { 22 | background-color: @base; 23 | } 24 | 25 | window > box { 26 | background-color: transparent; 27 | margin: .3rem; 28 | color: @text; 29 | } 30 | 31 | 32 | /* Workspaces */ 33 | 34 | #workspaces button { 35 | padding-right: .4rem; 36 | padding-left: .4rem; 37 | padding-top: .1rem; 38 | padding-bottom: .1rem; 39 | color: @red; 40 | /* border: .2px solid transparent; */ 41 | background: transparent; 42 | } 43 | 44 | #workspaces button.active { 45 | color: @blue; 46 | border: 1px solid @blue; 47 | background: black; 48 | } 49 | 50 | /* Tooltip */ 51 | tooltip { 52 | background-color: @base; 53 | } 54 | 55 | tooltip label { 56 | color: @rosewater; 57 | } 58 | 59 | /* battery */ 60 | #battery { 61 | color: @mauve; 62 | } 63 | #battery.full { 64 | color: @green; 65 | } 66 | #battery.charging{ 67 | color: @teal; 68 | } 69 | #battery.discharging { 70 | color: @peach; 71 | } 72 | #battery.critical:not(.charging) { 73 | color: @pink; 74 | } 75 | #custom-powermenu { 76 | color: @red; 77 | } 78 | 79 | /* mpd */ 80 | #mpd.paused { 81 | color: @pink; 82 | font-style: italic; 83 | } 84 | #mpd.stopped { 85 | color: @rosewater; 86 | /* background: transparent; */ 87 | } 88 | #mpd { 89 | color: @lavender; 90 | } 91 | 92 | /* Extra */ 93 | #custom-cava-internal{ 94 | color: @peach; 95 | padding-right: 1rem; 96 | } 97 | #custom-launcher { 98 | color: @yellow; 99 | } 100 | #memory { 101 | color: @peach; 102 | } 103 | #cpu { 104 | color: @blue; 105 | } 106 | #clock { 107 | color: @rosewater; 108 | } 109 | #idle_inhibitor { 110 | color: @green; 111 | } 112 | #temperature { 113 | color: @sapphire; 114 | } 115 | #backlight { 116 | color: @green; 117 | } 118 | #pulseaudio { 119 | color: @mauve; /* not active */ 120 | } 121 | #network { 122 | color: @pink; /* not active */ 123 | } 124 | #network.disconnected { 125 | color: @foreground; /* not active */ 126 | } 127 | #disk { 128 | color: @maroon; 129 | } 130 | #custom-pacman{ 131 | color: @sky; 132 | } 133 | #custom-scratchpad-indicator { 134 | color: @yellow 135 | } 136 | #custom-weather { 137 | color: @red; 138 | } 139 | -------------------------------------------------------------------------------- /.config/rofi/bin/powermenu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | rofi_command="rofi -theme $HOME/.config/rofi/config/powermenu.rasi" 3 | 4 | uptime=$(uptime -p | sed -e 's/up //g') 5 | 6 | # Options 7 | if [[ "$DIR" == "powermenus" ]]; then 8 | shutdown="" 9 | reboot="" 10 | lock="" 11 | suspend="" 12 | logout="" 13 | ddir="$HOME/.config/rofi/config" 14 | else 15 | 16 | # For some reason the Icons are mess up I don't know why but to fix it uncomment section 2 and comment section 1 but if the section 1 icons are mess up uncomment section 2 and comment section 1 17 | 18 | # Buttons 19 | layout=`cat $HOME/.config/rofi/config/powermenu.rasi | grep BUTTON | cut -d'=' -f2 | tr -d '[:blank:],*/'` 20 | if [[ "$layout" == "TRUE" ]]; then 21 | # Section 1 22 | 23 | shutdown="" 24 | reboot="" 25 | lock="" 26 | suspend="" 27 | logout="" 28 | # Section 2 29 | # shutdown="襤" 30 | # reboot="ﰇ" 31 | # lock="" 32 | # suspend="鈴" 33 | # logout=" " 34 | 35 | 36 | else 37 | # Section 1 38 | shutdown=" Shutdown" 39 | reboot=" Restart" 40 | lock=" Lock" 41 | suspend=" Sleep" 42 | logout=" Logout" 43 | # Section 2 44 | # shutdown="襤Shutdown" 45 | # reboot="ﰇ Restart" 46 | # lock=" Lock" 47 | # suspend="鈴Sleep" 48 | # logout=" Logout" 49 | fi 50 | ddir="$HOME/.config/rofi/config" 51 | fi 52 | 53 | # Ask for confirmation 54 | rdialog () { 55 | rofi -dmenu\ 56 | -i\ 57 | -no-fixed-num-lines\ 58 | -p "Are You Sure? : "\ 59 | -theme "$ddir/confirm.rasi" 60 | } 61 | 62 | # Display Help 63 | show_msg() { 64 | rofi -theme "$ddir/askpass.rasi" -e "Options : yes / no / y / n" 65 | } 66 | 67 | # Variable passed to rofi 68 | options="$lock\n$suspend\n$logout\n$reboot\n$shutdown" 69 | 70 | chosen="$(echo -e "$options" | $rofi_command -p "UP - $uptime" -dmenu -selected-row 0)" 71 | case $chosen in 72 | $shutdown) 73 | ans=$(rdialog &) 74 | if [[ $ans == "yes" ]] || [[ $ans == "YES" ]] || [[ $ans == "y" ]]; then 75 | systemctl poweroff 76 | elif [[ $ans == "no" ]] || [[ $ans == "NO" ]] || [[ $ans == "n" ]]; then 77 | exit 78 | else 79 | show_msg 80 | fi 81 | ;; 82 | $reboot) 83 | ans=$(rdialog &) 84 | if [[ $ans == "yes" ]] || [[ $ans == "YES" ]] || [[ $ans == "y" ]]; then 85 | systemctl reboot 86 | elif [[ $ans == "no" ]] || [[ $ans == "NO" ]] || [[ $ans == "n" ]]; then 87 | exit 88 | else 89 | show_msg 90 | fi 91 | ;; 92 | $lock) 93 | sh $HOME/.local/bin/lock 94 | ;; 95 | $suspend) 96 | ans=$(rdialog &) 97 | if [[ $ans == "yes" ]] || [[ $ans == "YES" ]] || [[ $ans == "y" ]]; then 98 | mpc -q pause 99 | amixer set Master mute 100 | sh $HOME/.local/bin/lock 101 | systemctl suspend 102 | elif [[ $ans == "no" ]] || [[ $ans == "NO" ]] || [[ $ans == "n" ]]; then 103 | exit 104 | else 105 | show_msg 106 | fi 107 | ;; 108 | $logout) 109 | ans=$(rdialog &) 110 | if [[ $ans == "yes" ]] || [[ $ans == "YES" ]] || [[ $ans == "y" ]]; then 111 | bspc quit 112 | elif [[ $ans == "no" ]] || [[ $ans == "NO" ]] || [[ $ans == "n" ]]; then 113 | exit 114 | else 115 | show_msg 116 | fi 117 | ;; 118 | esac 119 | 120 | -------------------------------------------------------------------------------- /.config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "position": "top", 4 | "height": 30, 5 | "spacing": 4, 6 | 7 | "modules-left": ["sway/workspaces", "sway/mode", "custom/media"], 8 | "modules-center": ["clock"], 9 | "modules-right": ["custom/weather", "pulseaudio", "bluetooth", "network", "cpu", "memory", "battery", "battery#bat2", "tray"], 10 | 11 | "sway/workspaces": { 12 | "disable-scroll": true, 13 | "all-outputs": true, 14 | "warp-on-scroll": false, 15 | "format": "{name}" 16 | }, 17 | "sway/mode": { 18 | "format": "{}" 19 | }, 20 | "idle_inhibitor": { 21 | "format": "{icon}", 22 | "format-icons": { 23 | "activated": "", 24 | "deactivated": "" 25 | } 26 | }, 27 | "tray": { 28 | "spacing": 10 29 | }, 30 | "clock": { 31 | "format": "{:%H:%M » %Y-%m-%d}", 32 | "tooltip-format": "{:%B %Y}\n{calendar}", 33 | "format-alt": "{:%Y-%m-%d}" 34 | }, 35 | "cpu": { 36 | "format": "{usage}% ", 37 | "tooltip": false 38 | }, 39 | "memory": { 40 | "format": "{}% " 41 | }, 42 | "temperature": { 43 | "critical-threshold": 80, 44 | "format": "{temperatureC}°C {icon}", 45 | "format-icons": ["", "", ""] 46 | }, 47 | "battery": { 48 | "states": { 49 | "warning": 20, 50 | "critical": 10 51 | }, 52 | "format": "{capacity}% {icon}", 53 | "format-charging": "{capacity}% 󱐋", 54 | "format-plugged": "{capacity}% ", 55 | "format-alt": "{time} {icon}", 56 | "format-icons": ["", "", "", "", ""] 57 | }, 58 | "battery#bat2": { 59 | "bat": "BAT2" 60 | }, 61 | "network": { 62 | "format-wifi": "{signalStrength}% ", 63 | "format-ethernet": "{ipaddr}/{cidr} ", 64 | "tooltip-format": "{ifname} via {gwaddr} ", 65 | "format-linked": "{ifname} (No IP) ", 66 | "format-disconnected": "Disconnected ⚠", 67 | "on-click": "alacritty -e nmtui", 68 | "format-alt": "{ifname}: {ipaddr}/{cidr}" 69 | }, 70 | "bluetooth": { 71 | "format": "{icon}", 72 | "format-icons": { 73 | "on": "", 74 | "off": "󰝟" 75 | }, 76 | "on-click": "alacritty -e bluetuith", 77 | }, 78 | "pulseaudio": { 79 | "format": "{volume}% {icon}", 80 | "format-bluetooth": "{volume}% {icon} ", 81 | "format-bluetooth-muted": "󰝟 {icon} ", 82 | "format-muted": "󰝟", 83 | "format-icons": { 84 | "headphone": "", 85 | "hands-free": "", 86 | "headset": "", 87 | "phone": "", 88 | "portable": "", 89 | "car": "", 90 | "default": ["", "", ""] 91 | }, 92 | "on-click": "alacritty -e ncpamixer", 93 | }, 94 | "custom/media": { 95 | "format": "{icon} {}", 96 | "return-type": "json", 97 | "max-length": 40, 98 | "format-icons": { 99 | "spotify": "", 100 | "default": "🎜" 101 | }, 102 | "escape": true, 103 | "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder 104 | // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name 105 | }, 106 | "custom/weather": { 107 | "format": "{} °", 108 | "tooltip": true, 109 | "interval": 3600, 110 | "exec": "wttrbar --location Stockholm,Sweden --custom-indicator '{ICON} {temp_C} ({FeelsLikeC})'", 111 | "return-type": "json" 112 | }, 113 | } 114 | -------------------------------------------------------------------------------- /.config/polybar/scripts/openweathermap-fullfeatured.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | primary=$(xrdb -query | grep 'color4:'| awk '{print $NF}') 4 | disabled=$(xrdb -query | grep 'color8:'| awk '{print $NF}') 5 | 6 | get_icon() { 7 | case $1 in 8 | # Icons for weather-icons 9 | 01d) icon="";; 10 | 01n) icon="";; 11 | 02d) icon="";; 12 | 02n) icon="";; 13 | 03*) icon="";; 14 | 04*) icon="";; 15 | 09d) icon="";; 16 | 09n) icon="";; 17 | 10d) icon="";; 18 | 10n) icon="";; 19 | 11d) icon="";; 20 | 11n) icon="";; 21 | 13d) icon="";; 22 | 13n) icon="";; 23 | 50d) icon="";; 24 | 50n) icon="";; 25 | *) icon=""; 26 | 27 | # Icons for Font Awesome 5 Pro 28 | #01d) icon="";; 29 | #01n) icon="";; 30 | #02d) icon="";; 31 | #02n) icon="";; 32 | #03d) icon="";; 33 | #03n) icon="";; 34 | #04*) icon="";; 35 | #09*) icon="";; 36 | #10d) icon="";; 37 | #10n) icon="";; 38 | #11*) icon="";; 39 | #13*) icon="";; 40 | #50*) icon="";; 41 | #*) icon=""; 42 | esac 43 | 44 | echo $icon 45 | } 46 | 47 | get_duration() { 48 | 49 | osname=$(uname -s) 50 | 51 | case $osname in 52 | *BSD) date -r "$1" -u +%H:%M;; 53 | *) date --date="@$1" -u +%H:%M;; 54 | esac 55 | 56 | } 57 | 58 | KEY=`cat ~/.secrets/openweathermap` 59 | CITY="Stockholm" 60 | UNITS="metric" 61 | SYMBOL="°" 62 | 63 | API="https://api.openweathermap.org/data/2.5" 64 | 65 | if [ -n "$CITY" ]; then 66 | if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then 67 | CITY_PARAM="id=$CITY" 68 | else 69 | CITY_PARAM="q=$CITY" 70 | fi 71 | 72 | current=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS&lang=se") 73 | forecast=$(curl -sf "$API/forecast?appid=$KEY&$CITY_PARAM&units=$UNITS&cnt=1") 74 | else 75 | location=$(curl -sf "https://location.services.mozilla.com/v1/geolocate?key=geoclue") 76 | 77 | if [ -n "$location" ]; then 78 | location_lat="$(echo "$location" | jq '.location.lat')" 79 | location_lon="$(echo "$location" | jq '.location.lng')" 80 | 81 | current=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS&lang=se") 82 | forecast=$(curl -sf "$API/forecast?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS&cnt=1") 83 | fi 84 | fi 85 | 86 | if [ -n "$current" ] && [ -n "$forecast" ]; then 87 | current_temp=$(echo "$current" | jq ".main.temp" | cut -d "." -f 1) 88 | feelslike_temp=$(echo "$current" | jq ".main.feels_like" | cut -d "." -f 1) 89 | current_icon=$(echo "$current" | jq -r ".weather[0].icon") 90 | 91 | forecast_temp=$(echo "$forecast" | jq ".list[].main.temp" | cut -d "." -f 1) 92 | forecast_icon=$(echo "$forecast" | jq -r ".list[].weather[0].icon") 93 | 94 | weather_desc=$(echo "$current" | jq -r ".weather[0].description") 95 | 96 | 97 | if [ "$current_temp" -gt "$forecast_temp" ]; then 98 | trend="" 99 | elif [ "$forecast_temp" -gt "$current_temp" ]; then 100 | trend="" 101 | else 102 | trend="" 103 | fi 104 | 105 | sun_rise=$(echo "$current" | jq ".sys.sunrise") 106 | sun_set=$(echo "$current" | jq ".sys.sunset") 107 | now=$(date +%s) 108 | 109 | if [ "$sun_set" -gt "$now" ]; then 110 | sun_set=$(date -d @$sun_set +%H:%M) 111 | daytime="%{F$primary}%{F-} $sun_set" 112 | else 113 | sun_rise=$(date -d @$sun_rise +%H:%M) 114 | daytime="%{F$primary}%{F-} $sun_rise" 115 | fi 116 | 117 | echo "%{F$primary}$(get_icon "$current_icon")%{F-} $current_temp$SYMBOL ($feelslike_temp$SYMBOL) $weather_desc / %{F$primary}$trend $(get_icon "$forecast_icon")%{F-} $forecast_temp$SYMBOL / $daytime" 118 | fi 119 | -------------------------------------------------------------------------------- /.config/mimeapps.list: -------------------------------------------------------------------------------- 1 | # [Default Applications] 2 | # x-scheme-handler/jetbrains=jetbrains-toolbox.desktop 3 | # x-scheme-handler/postman=Postman.desktop 4 | # x-scheme-handler/eclipse+command=_usr_lib_dbeaver_.desktop 5 | # application/x-xpinstall=org.mozilla.firefox.desktop 6 | # application/xhtml+xml=app.zen-browser.zen.desktop 7 | # text/html=app.zen_browser.zen.desktop 8 | # text/xml=app.zen-browser.zen.desktop 9 | # x-scheme-handler/http=app.zen_browser.zen.desktop 10 | # x-scheme-handler/https=app.zen_browser.zen.desktop 11 | # inode/directory=ranger.desktop 12 | # image/png=org.gnome.gThumb.desktop 13 | # application/pdf=zen-browser.desktop 14 | # x-scheme-handler/lens=OpenLens.desktop 15 | # x-scheme-handler/notion=notion-app.desktop 16 | # x-scheme-handler/about=app.zen_browser.zen.desktop 17 | # x-scheme-handler/unknown=app.zen_browser.zen.desktop 18 | # 19 | # [Added Associations] 20 | # text/markdown=nvim.desktop; 21 | # application/pdf=app.zen-browser.zen.desktop; 22 | # text/x-chdr=code-oss.desktop; 23 | # x-scheme-handler/https=app.zen-browser.zen.desktop; 24 | # x-scheme-handler/http=app.zen-browser.zen.desktop; 25 | # image/png=org.gnome.gThumb.desktop; 26 | # application/x-bittorrent=org.qbittorrent.qBittorrent.desktop;transmission-gtk.desktop; 27 | # image/jpeg=feh.desktop;org.gnome.gThumb.desktop; 28 | # image/jpg=feh.desktop;org.gnome.gThumb.desktop; 29 | 30 | 31 | [Default Applications] 32 | x-scheme-handler/jetbrains=jetbrains-toolbox.desktop 33 | x-scheme-handler/postman=Postman.desktop 34 | x-scheme-handler/eclipse+command=_usr_lib_dbeaver_.desktop 35 | application/x-xpinstall=app.zen-browser.zen.desktop 36 | application/xhtml+xml=app.zen-browser.zen.desktop 37 | text/html=org.mozilla.firefox.desktop 38 | text/xml=app.zen-browser.zen.desktop 39 | x-scheme-handler/http=org.mozilla.firefox.desktop 40 | x-scheme-handler/https=org.mozilla.firefox.desktop 41 | inode/directory=ranger.desktop 42 | image/png=org.gnome.gThumb.desktop 43 | application/pdf=zen-browser.desktop 44 | x-scheme-handler/lens=OpenLens.desktop 45 | x-scheme-handler/notion=notion-app.desktop 46 | x-scheme-handler/about=org.mozilla.firefox.desktop 47 | x-scheme-handler/unknown=org.mozilla.firefox.desktop 48 | 49 | [Added Associations] 50 | text/markdown=nvim.desktop; 51 | application/pdf=app.zen-browser.zen.desktop; 52 | text/x-chdr=code-oss.desktop; 53 | x-scheme-handler/https=app.zen-browser.zen.desktop; 54 | x-scheme-handler/http=app.zen-browser.zen.desktop; 55 | image/png=org.gnome.gThumb.desktop; 56 | application/x-bittorrent=org.qbittorrent.qBittorrent.desktop;transmission-gtk.desktop; 57 | image/jpeg=feh.desktop;org.gnome.gThumb.desktop; 58 | image/jpg=feh.desktop;org.gnome.gThumb.desktop; 59 | 60 | # [Default Applications] 61 | # x-scheme-handler/jetbrains=jetbrains-toolbox.desktop 62 | # x-scheme-handler/postman=Postman.desktop 63 | # x-scheme-handler/eclipse+command=_usr_lib_dbeaver_.desktop 64 | # application/x-xpinstall=app.zen-browser.zen.desktop 65 | # application/xhtml+xml=app.zen-browser.zen.desktop 66 | # text/html=app.zen_browser.zen.desktop 67 | # text/xml=app.zen-browser.zen.desktop 68 | # x-scheme-handler/http=app.zen_browser.zen.desktop 69 | # x-scheme-handler/https=app.zen_browser.zen.desktop 70 | # inode/directory=ranger.desktop 71 | # image/png=org.gnome.gThumb.desktop 72 | # application/pdf=zen-browser.desktop 73 | # x-scheme-handler/lens=OpenLens.desktop 74 | # x-scheme-handler/notion=notion-app.desktop 75 | # x-scheme-handler/about=app.zen_browser.zen.desktop 76 | # x-scheme-handler/unknown=app.zen_browser.zen.desktop 77 | # 78 | # [Added Associations] 79 | # text/markdown=nvim.desktop; 80 | # application/pdf=app.zen-browser.zen.desktop; 81 | # text/x-chdr=code-oss.desktop; 82 | # x-scheme-handler/https=app.zen-browser.zen.desktop; 83 | # x-scheme-handler/http=app.zen-browser.zen.desktop; 84 | # image/png=org.gnome.gThumb.desktop; 85 | # application/x-bittorrent=org.qbittorrent.qBittorrent.desktop;transmission-gtk.desktop; 86 | # image/jpeg=feh.desktop;org.gnome.gThumb.desktop; 87 | # image/jpg=feh.desktop;org.gnome.gThumb.desktop; 88 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. 2 | # Initialization code that may require console input (password prompts, [y/n] 3 | # confirmations, etc.) must go above this block; everything else may go below. 4 | if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 5 | source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 6 | fi 7 | 8 | export EDITOR=nvim 9 | export ZSH=/home/niklas/.oh-my-zsh 10 | 11 | ZSH_THEME="powerlevel10k/powerlevel10k" 12 | ZSH_AUTOSUGGEST_STRATEGY=(history completion) 13 | 14 | plugins=( 15 | git 16 | zsh-autosuggestions 17 | fzf-zsh-plugin 18 | zoxide 19 | ) 20 | 21 | source $ZSH/oh-my-zsh.sh 22 | 23 | # Aliases 24 | alias vim="nvim" 25 | alias v="nvim" 26 | 27 | alias r="ranger" 28 | 29 | alias g="lazygit" 30 | alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(cyan)(%cn)%Creset' --abbrev-commit --date=relative" 31 | alias gu="git up" 32 | alias gco="git checkout" 33 | alias gc="git commit" 34 | alias gcm="git commit -m " 35 | alias ga="git add" 36 | alias gaa="git add -A" 37 | alias gai="git add -i" 38 | alias gap="git add -p" 39 | alias gs="git status --short" 40 | alias gss="git status" 41 | alias gd="git diff" 42 | alias gdc="git diff --cached" 43 | alias gr="git rebase" 44 | alias gra="git rebase --abort" 45 | alias grco="git rebase --continue" 46 | alias gfu="git fetch upstream" 47 | alias grd="git rebase develop" 48 | alias grm="git rebase master" 49 | alias gp="git push" 50 | alias gpf="git push --force-with-lease" 51 | alias gpF="git push --force" 52 | 53 | alias dc="docker compose" 54 | alias dcu="docker compose up -d" 55 | alias dcd="docker compose down" 56 | alias dck="docker compose kill" 57 | alias de="docker exec -it --user $(id -u):$(id -g) " 58 | 59 | alias cu="composer update" 60 | alias cda="composer dump-autoload" 61 | alias cr="composer require" 62 | alias crd="composer require --dev " 63 | 64 | # alias ll="exa -l -g --icons" 65 | # alias lla="exa -la -g --icons" 66 | # alias ls="exa --icons" 67 | # alias lt="exa --tree --icons -a -I '.git|__pycache__|.mypy_cache|.ipynb_checkpoints'" 68 | alias lla="ls -la" 69 | 70 | alias co="php bin/console" 71 | 72 | alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)' 73 | 74 | [ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh" 75 | 76 | # Path 77 | export PATH=vendor/bin:../../vendor/bin:$PATH 78 | export PATH=/usr/local/bin:$PATH 79 | export PATH=$HOME/.local/bin:$PATH 80 | export PATH="$PATH:/usr/local/lib/node_modules/bin" 81 | export PATH=$PATH:/var/lib/flatpak/exports/share 82 | export PATH=~/.npm-global/bin:$PATH 83 | export PATH=~/.dotfiles/scripts:$PATH 84 | export PATH=~/.scripts:$PATH 85 | export PATH=~/.cargo/bin:$PATH 86 | export PATH=~/go/bin:$PATH 87 | export PATH=$HOME/.tmux/plugins/tmuxifier/bin:$PATH 88 | 89 | # export PATH=$HOME/.rye/env:$PATH 90 | # source "$HOME/.rye/env" 91 | 92 | # Other exports 93 | export NODE_PATH=/usr/lib/node_modules 94 | export XDG_CONFIG_HOME=$HOME/.config 95 | export RIPGREP_CONFIG_PATH="$XDG_CONFIG_HOME/ripgrep/ripgreprc" 96 | export AWS_PROFILE=sweetspot 97 | 98 | # Includes 99 | [ -f ~/.aws-credentials ] && source ~/.aws-credentials 100 | # [ -f ~/.github_token ] && source ~/.github_token 101 | [ -f ~/.secrets/chatgpt ] && source ~/.secrets/chatgpt 102 | [ -f ~/.secrets/mcp ] && source ~/.secrets/mcp 103 | [ -f ~/.aliases ] && source ~/.aliases 104 | 105 | [[ -f ~/.fzf/fzf.zsh ]] && source ~/.fzf/fzf.zsh 106 | 107 | eval "$(zoxide init zsh)" 108 | 109 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 110 | [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh 111 | 112 | # export PATH="/home/niklas/.config/herd-lite/bin:$PATH" 113 | # export PHP_INI_SCAN_DIR="/home/niklas/.config/herd-lite/bin:$PHP_INI_SCAN_DIR" 114 | 115 | eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 116 | eval "$(mcfly init zsh)" 117 | -------------------------------------------------------------------------------- /.config/rofi/rofikeyhint.rasi: -------------------------------------------------------------------------------- 1 | /******************************************************* 2 | * ROFI configs i3 keyhint-menu for EndeavourOS 3 | * Maintainer: joekamprad 4 | *******************************************************/ 5 | configuration { 6 | font: "Noto Sans Regular 10"; 7 | show-icons: false; 8 | icon-theme: "Qogir"; 9 | display-drun: "KeyHint"; 10 | drun-display-format: "{name}"; 11 | scroll-method: 0; 12 | disable-history: false; 13 | fullscreen: false; 14 | hide-scrollbar: true; 15 | sidebar-mode: false; 16 | } 17 | 18 | @import "~/.config/rofi/arc_dark_transparent_colors.rasi" 19 | 20 | window { 21 | background-color: @background; 22 | border: 0; 23 | padding: 30; 24 | } 25 | listview { 26 | lines: 10; 27 | columns: 1; 28 | } 29 | mainbox { 30 | border: 0; 31 | padding: 0; 32 | } 33 | message { 34 | border: 2px 0px 0px; 35 | border-color: @separatorcolor; 36 | padding: 1px; 37 | } 38 | textbox { 39 | text-color: @foreground; 40 | } 41 | listview { 42 | fixed-height: 0; 43 | border: 8px 0px 0px; 44 | border-color: @separatorcolor; 45 | spacing: 8px; 46 | scrollbar: false; 47 | padding: 2px 0px 0px; 48 | } 49 | element { 50 | border: 0; 51 | padding: 1px; 52 | } 53 | element-text { 54 | background-color: inherit; 55 | text-color: inherit; 56 | } 57 | element.normal.normal { 58 | background-color: @normal-background; 59 | text-color: @normal-foreground; 60 | } 61 | element.normal.urgent { 62 | background-color: @urgent-background; 63 | text-color: @urgent-foreground; 64 | } 65 | element.normal.active { 66 | background-color: @active-background; 67 | text-color: @active-foreground; 68 | } 69 | element.selected.normal { 70 | background-color: @selected-normal-background; 71 | text-color: @selected-normal-foreground; 72 | } 73 | element.selected.urgent { 74 | background-color: @selected-urgent-background; 75 | text-color: @selected-urgent-foreground; 76 | } 77 | element.selected.active { 78 | background-color: @selected-active-background; 79 | text-color: @selected-active-foreground; 80 | } 81 | element.alternate.normal { 82 | background-color: @alternate-normal-background; 83 | text-color: @alternate-normal-foreground; 84 | } 85 | element.alternate.urgent { 86 | background-color: @alternate-urgent-background; 87 | text-color: @alternate-urgent-foreground; 88 | } 89 | element.alternate.active { 90 | background-color: @alternate-active-background; 91 | text-color: @alternate-active-foreground; 92 | } 93 | scrollbar { 94 | width: 4px; 95 | border: 0; 96 | handle-color: @normal-foreground; 97 | handle-width: 8px; 98 | padding: 0; 99 | } 100 | mode-switcher { 101 | border: 2px 0px 0px; 102 | border-color: @separatorcolor; 103 | } 104 | button { 105 | spacing: 0; 106 | text-color: @normal-foreground; 107 | } 108 | button.selected { 109 | background-color: @selected-normal-background; 110 | text-color: @selected-normal-foreground; 111 | } 112 | inputbar { 113 | spacing: 0; 114 | text-color: @normal-foreground; 115 | padding: 1px; 116 | } 117 | case-indicator { 118 | spacing: 0; 119 | text-color: @normal-foreground; 120 | } 121 | entry { 122 | spacing: 0; 123 | text-color: @normal-foreground; 124 | } 125 | prompt { 126 | spacing: 0; 127 | text-color: @normal-foreground; 128 | } 129 | inputbar { 130 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 131 | } 132 | textbox-prompt-colon { 133 | expand: false; 134 | str: ":"; 135 | margin: 0px 0.3em 0em 0em; 136 | text-color: @normal-foreground; 137 | } 138 | -------------------------------------------------------------------------------- /.config/rofi/config/runner.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-run: ""; 4 | disable-history: false; 5 | click-to-exit: true; 6 | location: 0; 7 | } 8 | 9 | @import "font.rasi" 10 | @import "colors.rasi" 11 | 12 | window { 13 | transparency: "real"; 14 | background-color: @BG; 15 | text-color: @FG; 16 | border: 2px; 17 | border-color: @BDR; 18 | border-radius: 10px; 19 | width: 350px; 20 | location: center; 21 | anchor: center; 22 | x-offset: 0; 23 | y-offset: 0; 24 | } 25 | 26 | prompt { 27 | enabled: true; 28 | padding: 8px; 29 | background-color: @BG; 30 | text-color: @IMG; 31 | } 32 | 33 | textbox-prompt-colon { 34 | expand: false; 35 | str: "ﲵ"; 36 | border-radius: 100%; 37 | background-color: @BG; 38 | text-color: @FG; 39 | padding: 8px 12px 8px 12px; 40 | font: "Iosevka Nerd Font 10"; 41 | } 42 | 43 | entry { 44 | background-color: @BG; 45 | text-color: @FG; 46 | placeholder-color: @FG; 47 | expand: true; 48 | horizontal-align: 0; 49 | placeholder: "Run..."; 50 | blink: true; 51 | border: 0px 0px 2px 0px; 52 | border-color: @BDR; 53 | border-radius: 10px; 54 | padding: 8px; 55 | } 56 | 57 | inputbar { 58 | children: [ textbox-prompt-colon, prompt, entry ]; 59 | background-color: @BG; 60 | text-color: @FG; 61 | expand: false; 62 | border: 0px 0px 0px 0px; 63 | border-radius: 0px; 64 | border-color: @BDR; 65 | margin: 0px 0px 0px 0px; 66 | padding: 0px; 67 | position: center; 68 | } 69 | 70 | case-indicator { 71 | background-color: @BG; 72 | text-color: @FG; 73 | spacing: 0; 74 | } 75 | 76 | 77 | listview { 78 | background-color: @BG; 79 | columns: 1; 80 | lines: 5; 81 | spacing: 4px; 82 | cycle: false; 83 | dynamic: true; 84 | layout: vertical; 85 | } 86 | 87 | mainbox { 88 | background-color: @BG; 89 | children: [ inputbar, listview ]; 90 | spacing: 15px; 91 | padding: 15px; 92 | } 93 | 94 | element { 95 | background-color: @BG; 96 | text-color: @FG; 97 | orientation: horizontal; 98 | border-radius: 4px; 99 | padding: 6px 6px 6px 6px; 100 | } 101 | 102 | element-icon { 103 | background-color: inherit; 104 | text-color: inherit; 105 | size: 0px; 106 | border: 0px; 107 | } 108 | 109 | element-text { 110 | background-color: inherit; 111 | text-color: inherit; 112 | expand: true; 113 | horizontal-align: 0; 114 | vertical-align: 0.5; 115 | margin: 2px 0px 2px 2px; 116 | } 117 | 118 | element normal.urgent, 119 | element alternate.urgent { 120 | background-color: @UGT; 121 | text-color: @FG; 122 | border-radius: 9px; 123 | } 124 | 125 | element normal.active, 126 | element alternate.active { 127 | background-color: @BGA; 128 | text-color: @FG; 129 | } 130 | 131 | element selected { 132 | background-color: @BGA; 133 | text-color: @SEL; 134 | border: 0px 0px 0px 0px; 135 | border-radius: 10px; 136 | border-color: @BDR; 137 | } 138 | 139 | element selected.urgent { 140 | background-color: @UGT; 141 | text-color: @FG; 142 | } 143 | 144 | element selected.active { 145 | background-color: @BGA; 146 | color: @FG; 147 | } 148 | -------------------------------------------------------------------------------- /.config/rofi/config/network.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | window { 14 | transparency: "real"; 15 | background-color: @BG; 16 | text-color: @FG; 17 | border: 2px; 18 | border-color: @BDR; 19 | border-radius: 10px; 20 | width: 300px; 21 | anchor: center; 22 | x-offset: 0; 23 | y-offset: 0; 24 | } 25 | 26 | prompt { 27 | enabled: true; 28 | margin: 0px 0px 0px 8px; 29 | padding: 8px; 30 | background-color: @BG; 31 | text-color: @FG; 32 | border: 0px 0px 2px 0px; 33 | border-color: @BDR; 34 | border-radius: 10px; 35 | } 36 | 37 | textbox-prompt-colon { 38 | expand: false; 39 | str: ""; 40 | border-radius: 100%; 41 | background-color: @BG; 42 | text-color: @FG; 43 | padding: 8px 12px 8px 12px; 44 | font: "Iosevka Nerd Font 10"; 45 | } 46 | 47 | entry { 48 | background-color: @BG; 49 | text-color: @FG; 50 | placeholder-color: @FG; 51 | expand: true; 52 | horizontal-align: 0; 53 | placeholder: "Search..."; 54 | blink: true; 55 | border: 0px 0px 2px 0px; 56 | border-color: @BDR; 57 | border-radius: 10px; 58 | padding: 8px; 59 | } 60 | 61 | inputbar { 62 | children: [textbox-prompt-colon, prompt ]; 63 | background-color: @BG; 64 | text-color: @FG; 65 | expand: false; 66 | border: 0px 0px 0px 0px; 67 | border-radius: 0px; 68 | border-color: @BDR; 69 | margin: 0px 0px 0px 0px; 70 | padding: 0px; 71 | position: center; 72 | } 73 | 74 | case-indicator { 75 | background-color: @BG; 76 | text-color: @FG; 77 | spacing: 0; 78 | } 79 | 80 | 81 | listview { 82 | background-color: @BG; 83 | columns: 1; 84 | lines: 4; 85 | spacing: 4px; 86 | cycle: true; 87 | dynamic: true; 88 | layout: vertical; 89 | } 90 | 91 | mainbox { 92 | background-color: @BG; 93 | children: [ inputbar, listview ]; 94 | spacing: 15px; 95 | padding: 15px; 96 | } 97 | 98 | element { 99 | background-color: @BG; 100 | text-color: @FG; 101 | orientation: horizontal; 102 | border-radius: 10px; 103 | padding: 6px 6px 6px 6px; 104 | } 105 | 106 | element-icon { 107 | background-color: inherit; 108 | text-color: inherit; 109 | size: 0px; 110 | border: 0px; 111 | } 112 | 113 | element-text { 114 | background-color: inherit; 115 | text-color: inherit; 116 | expand: true; 117 | horizontal-align: 0; 118 | vertical-align: 0.5; 119 | margin: 2px 0px 2px 6px; 120 | } 121 | 122 | element selected { 123 | background-color: @IMG; 124 | text-color: @BG; 125 | border: 0px 0px 0px 0px; 126 | border-radius: 10px; 127 | border-color: @BDR; 128 | } 129 | 130 | element.active, 131 | element.selected.urgent { 132 | background-color: @ON; 133 | text-color: @BG; 134 | border-color: @ON; 135 | } 136 | 137 | element.selected.urgent { 138 | border-color: @BDR; 139 | } 140 | 141 | element.urgent, 142 | element.selected.active { 143 | background-color: @OFF; 144 | text-color: @BG; 145 | border-color: @OFF; 146 | } 147 | 148 | element.selected.active { 149 | border-color: @BDR; 150 | } 151 | -------------------------------------------------------------------------------- /.config/rofi/config/screenshot.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | /* Line Responsible For Button Layouts */ 14 | /* BUTTON = FALSE */ 15 | 16 | window { 17 | transparency: "real"; 18 | background-color: @BG; 19 | text-color: @FG; 20 | border: 2px; 21 | border-color: @BDR; 22 | border-radius: 10px; 23 | width: 300px; 24 | anchor: center; 25 | x-offset: 0; 26 | y-offset: 0; 27 | } 28 | 29 | prompt { 30 | enabled: true; 31 | margin: 0px 0px 0px 8px; 32 | padding: 8px; 33 | background-color: @BG; 34 | text-color: @FG; 35 | border: 0px 0px 2px 0px; 36 | border-color: @BDR; 37 | border-radius: 10px; 38 | } 39 | 40 | textbox-prompt-colon { 41 | expand: false; 42 | str: ""; 43 | border-radius: 100%; 44 | background-color: @BG; 45 | text-color: @FG; 46 | padding: 8px 12px 8px 12px; 47 | font: "Iosevka Nerd Font 10"; 48 | } 49 | 50 | entry { 51 | background-color: @BG; 52 | text-color: @FG; 53 | placeholder-color: @FG; 54 | expand: true; 55 | horizontal-align: 0; 56 | placeholder: "Search..."; 57 | blink: true; 58 | border: 0px 0px 2px 0px; 59 | border-color: @BDR; 60 | border-radius: 10px; 61 | padding: 8px; 62 | } 63 | 64 | inputbar { 65 | children: [ textbox-prompt-colon, prompt ]; 66 | background-color: @BG; 67 | text-color: @FG; 68 | expand: false; 69 | border: 0px 0px 0px 0px; 70 | border-radius: 0px; 71 | border-color: @BDR; 72 | margin: 0px 0px 0px 0px; 73 | padding: 0px; 74 | position: center; 75 | } 76 | 77 | case-indicator { 78 | background-color: @BG; 79 | text-color: @FG; 80 | spacing: 0; 81 | } 82 | 83 | 84 | listview { 85 | background-color: @BG; 86 | columns: 1; 87 | lines: 5; 88 | spacing: 4px; 89 | cycle: true; 90 | dynamic: true; 91 | layout: vertical; 92 | } 93 | 94 | mainbox { 95 | background-color: @BG; 96 | children: [ inputbar, listview ]; 97 | spacing: 15px; 98 | padding: 15px; 99 | } 100 | 101 | element { 102 | background-color: @BG; 103 | text-color: @FG; 104 | orientation: horizontal; 105 | border-radius: 10px; 106 | padding: 6px 6px 6px 6px; 107 | } 108 | 109 | element-icon { 110 | background-color: inherit; 111 | text-color: inherit; 112 | size: 0px; 113 | border: 0px; 114 | } 115 | 116 | element-text { 117 | background-color: inherit; 118 | text-color: inherit; 119 | expand: true; 120 | horizontal-align: 0; 121 | vertical-align: 0.5; 122 | margin: 2px 0px 2px 6px; 123 | } 124 | 125 | element selected { 126 | background-color: @BGA; 127 | text-color: @SEL; 128 | border: 0px 0px 0px 0px; 129 | border-radius: 10px; 130 | border-color: @BDR; 131 | } 132 | 133 | element.active, 134 | element.selected.urgent { 135 | background-color: @ON; 136 | text-color: @BG; 137 | border-color: @ON; 138 | } 139 | 140 | element.selected.urgent { 141 | border-color: @BDR; 142 | } 143 | 144 | element.urgent, 145 | element.selected.active { 146 | background-color: @OFF; 147 | text-color: @BG; 148 | border-color: @OFF; 149 | } 150 | 151 | element.selected.active { 152 | border-color: @BDR; 153 | } 154 | -------------------------------------------------------------------------------- /.config/rofi/config/mpd.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | /* Line Responsible For Button Layouts */ 14 | /* BUTTON = FALSE */ 15 | 16 | window { 17 | transparency: "real"; 18 | background-color: @BG; 19 | text-color: @FG; 20 | border: 2px; 21 | border-color: @BDR; 22 | border-radius: 10px; 23 | width: 400px; 24 | anchor: center; 25 | x-offset: 0; 26 | y-offset: 0; 27 | } 28 | 29 | prompt { 30 | enabled: true; 31 | margin: 0px 0px 0px 8px; 32 | padding: 8px; 33 | background-color: @BG; 34 | text-color: @FG; 35 | border: 0px 0px 2px 0px; 36 | border-color: @BDR; 37 | border-radius: 10px; 38 | } 39 | 40 | textbox-prompt-colon { 41 | expand: false; 42 | str: "ﱘ"; 43 | border-radius: 100%; 44 | background-color: @BG; 45 | text-color: @FG; 46 | padding: 8px 12px 8px 12px; 47 | font: "Iosevka Nerd Font 10"; 48 | } 49 | 50 | entry { 51 | background-color: @BG; 52 | text-color: @FG; 53 | placeholder-color: @FG; 54 | expand: true; 55 | horizontal-align: 0; 56 | placeholder: "Search..."; 57 | blink: true; 58 | border: 0px 0px 2px 0px; 59 | border-color: @BDR; 60 | border-radius: 10px; 61 | padding: 8px; 62 | } 63 | 64 | inputbar { 65 | children: [ textbox-prompt-colon, prompt ]; 66 | background-color: @BG; 67 | text-color: @FG; 68 | expand: false; 69 | border: 0px 0px 0px 0px; 70 | border-radius: 0px; 71 | border-color: @BDR; 72 | margin: 0px 0px 0px 0px; 73 | padding: 0px; 74 | position: center; 75 | } 76 | 77 | case-indicator { 78 | background-color: @BG; 79 | text-color: @FG; 80 | spacing: 0; 81 | } 82 | 83 | 84 | listview { 85 | background-color: @BG; 86 | columns: 3; 87 | lines: 2; 88 | spacing: 15px; 89 | cycle: false; 90 | dynamic: true; 91 | layout: vertical; 92 | } 93 | 94 | mainbox { 95 | background-color: @BG; 96 | children: [ inputbar, listview ]; 97 | spacing: 15px; 98 | padding: 15px; 99 | } 100 | 101 | element { 102 | background-color: @BGA; 103 | text-color: @SEL; 104 | orientation: horizontal; 105 | border-radius: 10px; 106 | padding: 8px; 107 | } 108 | 109 | element-icon { 110 | background-color: inherit; 111 | text-color: inherit; 112 | size: 0px; 113 | border: 0px; 114 | } 115 | 116 | element-text { 117 | background-color: inherit; 118 | text-color: inherit; 119 | expand: true; 120 | horizontal-align: 0.5; 121 | vertical-align: 0.5; 122 | margin: 2px 0px 0px 0px; 123 | } 124 | 125 | element selected { 126 | background-color: @IMG; 127 | text-color: @BG; 128 | border: 0px 0px 0px 0px; 129 | border-radius: 10px; 130 | border-color: @BDR; 131 | } 132 | 133 | element.active, 134 | element.selected.urgent { 135 | background-color: @ON; 136 | text-color: @BG; 137 | border-color: @ON; 138 | } 139 | 140 | element.selected.urgent { 141 | border-color: @BDR; 142 | } 143 | 144 | element.urgent, 145 | element.selected.active { 146 | background-color: @OFF; 147 | text-color: @BG; 148 | border-color: @OFF; 149 | } 150 | 151 | element.selected.active { 152 | border-color: @BDR; 153 | } 154 | -------------------------------------------------------------------------------- /.config/rofi/config/launcher.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: true; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | window { 14 | transparency: "real"; 15 | background-color: @BG; 16 | text-color: @FG; 17 | border: 2px; 18 | border-color: @BDR; 19 | border-radius: 10px; 20 | width: 500px; 21 | anchor: center; 22 | x-offset: 0; 23 | y-offset: 0; 24 | } 25 | 26 | prompt { 27 | enabled: true; 28 | padding: 8px; 29 | background-color: @BG; 30 | text-color: @IMG; 31 | } 32 | 33 | textbox-prompt-colon { 34 | expand: false; 35 | str: ""; 36 | border-radius: 100%; 37 | background-color: @SEL; 38 | text-color: @FG; 39 | padding: 8px 12px 8px 12px; 40 | font: "Iosevka Nerd Font 10"; 41 | } 42 | 43 | entry { 44 | background-color: @BG; 45 | text-color: @FG; 46 | placeholder-color: @FG; 47 | expand: true; 48 | horizontal-align: 0; 49 | placeholder: "Search..."; 50 | blink: true; 51 | border: 0px 0px 2px 0px; 52 | border-color: @BDR; 53 | border-radius: 10px; 54 | padding: 8px; 55 | } 56 | 57 | inputbar { 58 | children: [ textbox-prompt-colon, prompt, entry ]; 59 | background-color: @BG; 60 | text-color: @FG; 61 | expand: false; 62 | border: 0px 0px 0px 0px; 63 | border-radius: 0px; 64 | border-color: @BDR; 65 | margin: 0px 0px 0px 0px; 66 | padding: 0px; 67 | position: center; 68 | } 69 | 70 | case-indicator { 71 | background-color: @BG; 72 | text-color: @FG; 73 | spacing: 0; 74 | } 75 | 76 | 77 | listview { 78 | background-color: @BG; 79 | columns: 1; 80 | lines: 7; 81 | spacing: 4px; 82 | cycle: false; 83 | dynamic: true; 84 | layout: vertical; 85 | } 86 | 87 | mainbox { 88 | background-color: @BG; 89 | children: [ inputbar, listview ]; 90 | spacing: 15px; 91 | padding: 15px; 92 | } 93 | 94 | element { 95 | background-color: @BG; 96 | text-color: @FG; 97 | orientation: horizontal; 98 | border-radius: 4px; 99 | padding: 6px 6px 6px 6px; 100 | } 101 | 102 | element-icon { 103 | background-color: inherit; 104 | text-color: inherit; 105 | horizontal-align: 0.5; 106 | vertical-align: 0.5; 107 | size: 24px; 108 | border: 0px; 109 | } 110 | 111 | element-text { 112 | background-color: inherit; 113 | text-color: inherit; 114 | expand: true; 115 | horizontal-align: 0; 116 | vertical-align: 0.5; 117 | margin: 2px 0px 2px 2px; 118 | } 119 | 120 | element normal.urgent, 121 | element alternate.urgent { 122 | background-color: @UGT; 123 | text-color: @FG; 124 | border-radius: 9px; 125 | } 126 | 127 | element normal.active, 128 | element alternate.active { 129 | background-color: @BGA; 130 | text-color: @FG; 131 | } 132 | 133 | element selected { 134 | background-color: @BGA; 135 | text-color: @SEL; 136 | border: 0px 0px 0px 0px; 137 | border-radius: 10px; 138 | border-color: @BDR; 139 | } 140 | 141 | element selected.urgent { 142 | background-color: @UGT; 143 | text-color: @FG; 144 | } 145 | 146 | element selected.active { 147 | background-color: @BGA; 148 | color: @FG; 149 | } 150 | -------------------------------------------------------------------------------- /.config/rofi/config/powermenu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: true; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 4; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | /* Line Responsible For Button Layouts */ 14 | /* BUTTON = TRUE */ 15 | 16 | window { 17 | transparency: "real"; 18 | background-color: @BG; 19 | text-color: @FG; 20 | border: 2px; 21 | border-color: @BGA; 22 | border-radius: 10px; 23 | width: 110px; 24 | x-offset: -1%; 25 | y-offset: 0; 26 | } 27 | 28 | prompt { 29 | enabled: true; 30 | margin: 0px 0px 0px 8px; 31 | padding: 8px; 32 | background-color: @BG; 33 | text-color: @FG; 34 | border: 0px 0px 2px 0px; 35 | border-color: @BDR; 36 | border-radius: 10px; 37 | } 38 | 39 | textbox-prompt-colon { 40 | expand: false; 41 | str: ""; 42 | border-radius: 100%; 43 | background-color: @BG; 44 | text-color: @BG; 45 | padding: 8px 12px 8px 12px; 46 | font: "Iosevka Nerd Font 10"; 47 | } 48 | 49 | entry { 50 | background-color: @BG; 51 | text-color: @FG; 52 | placeholder-color: @FG; 53 | expand: true; 54 | horizontal-align: 0; 55 | placeholder: "Search..."; 56 | blink: true; 57 | border: 0px 0px 2px 0px; 58 | border-color: @BDR; 59 | border-radius: 10px; 60 | padding: 8px; 61 | } 62 | 63 | inputbar { 64 | children: [ textbox-prompt-colon ]; 65 | background-color: @BG; 66 | text-color: @FG; 67 | expand: false; 68 | border: 0px 0px 0px 0px; 69 | border-radius: 0px; 70 | border-color: @BDR; 71 | margin: 0px 0px 0px 0px; 72 | padding: 0px; 73 | position: center; 74 | } 75 | 76 | case-indicator { 77 | background-color: @BG; 78 | text-color: @FG; 79 | spacing: 0; 80 | } 81 | 82 | 83 | listview { 84 | background-color: @BG; 85 | columns: 1; 86 | lines: 5; 87 | spacing: 15px; 88 | cycle: true; 89 | dynamic: true; 90 | layout: vertical; 91 | } 92 | 93 | mainbox { 94 | background-color: @BG; 95 | children: [ listview ]; 96 | spacing: 15px; 97 | padding: 15px; 98 | } 99 | 100 | element { 101 | background-color: @BG; 102 | text-color: @FG; 103 | orientation: horizontal; 104 | border-radius: 10px; 105 | padding: 20px; 106 | } 107 | 108 | element-icon { 109 | background-color: inherit; 110 | text-color: inherit; 111 | horizontal-align: 0.5; 112 | vertical-align: 0.5; 113 | size: 0px; 114 | border: 0px; 115 | } 116 | 117 | element-text { 118 | background-color: inherit; 119 | text-color: inherit; 120 | font: "feather 20"; 121 | expand: true; 122 | horizontal-align: 0.5; 123 | vertical-align: 0.5; 124 | margin: 0px 0px 0px 0px; 125 | } 126 | 127 | element selected { 128 | background-color: @BGA; 129 | text-color: @SEL; 130 | border: 0px 0px 0px 0px; 131 | border-radius: 10px; 132 | border-color: @BDR; 133 | } 134 | 135 | element.active, 136 | element.selected.urgent { 137 | background-color: @ON; 138 | text-color: @BG; 139 | border-color: @ON; 140 | } 141 | 142 | element.selected.urgent { 143 | border-color: @BDR; 144 | } 145 | 146 | element.urgent, 147 | element.selected.active { 148 | background-color: @OFF; 149 | text-color: @BG; 150 | border-color: @OFF; 151 | } 152 | 153 | element.selected.active { 154 | border-color: @BDR; 155 | } 156 | -------------------------------------------------------------------------------- /.config/rofi/config/bluetooth.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | window { 14 | transparency: "real"; 15 | background-color: @BG; 16 | text-color: @FG; 17 | border: 2px; 18 | border-color: @BDR; 19 | border-radius: 10px; 20 | width: 300px; 21 | anchor: center; 22 | x-offset: 0; 23 | y-offset: 0; 24 | } 25 | 26 | prompt { 27 | enabled: true; 28 | margin: 0px 8px 0px 8px; 29 | padding: 8px; 30 | background-color: @IMG; 31 | text-color: @BG; 32 | border: 0px 0px 0px 0px; 33 | border-color: @BDR; 34 | border-radius: 10px; 35 | } 36 | 37 | textbox-prompt-colon { 38 | expand: false; 39 | str: ""; 40 | border-radius: 100%; 41 | background-color: @SEL; 42 | text-color: @FG; 43 | padding: 8px 12px 8px 12px; 44 | font: "Iosevka Nerd Font 10"; 45 | } 46 | 47 | entry { 48 | background-color: @BG; 49 | text-color: @FG; 50 | placeholder-color: @FG; 51 | expand: true; 52 | horizontal-align: 0; 53 | placeholder: ""; 54 | blink: true; 55 | border: 0px 0px 2px 0px; 56 | border-color: @BDR; 57 | border-radius: 10px; 58 | padding: 8px; 59 | } 60 | 61 | inputbar { 62 | children: [ textbox-prompt-colon, prompt, entry ]; 63 | background-color: @BG; 64 | text-color: @FG; 65 | expand: false; 66 | border: 0px 0px 0px 0px; 67 | border-radius: 0px; 68 | border-color: @BDR; 69 | margin: 0px 0px 0px 0px; 70 | padding: 0px; 71 | position: center; 72 | } 73 | 74 | case-indicator { 75 | background-color: @BG; 76 | text-color: @FG; 77 | spacing: 0; 78 | } 79 | 80 | 81 | listview { 82 | background-color: @BG; 83 | columns: 1; 84 | lines: 7; 85 | spacing: 4px; 86 | cycle: true; 87 | dynamic: true; 88 | layout: vertical; 89 | } 90 | 91 | mainbox { 92 | background-color: @BG; 93 | children: [ inputbar, listview ]; 94 | spacing: 15px; 95 | padding: 15px; 96 | } 97 | 98 | element { 99 | background-color: @BG; 100 | text-color: @FG; 101 | orientation: horizontal; 102 | border-radius: 4px; 103 | padding: 6px 6px 6px 6px; 104 | } 105 | 106 | element-icon { 107 | background-color: inherit; 108 | text-color: inherit; 109 | size: 0px; 110 | border: 0px; 111 | } 112 | 113 | element-text { 114 | background-color: inherit; 115 | text-color: inherit; 116 | expand: true; 117 | horizontal-align: 0; 118 | vertical-align: 0.5; 119 | margin: 2px 0px 2px 6px; 120 | } 121 | 122 | element normal.urgent, 123 | element alternate.urgent { 124 | background-color: @UGT; 125 | text-color: @FG; 126 | border-radius: 9px; 127 | } 128 | 129 | element normal.active, 130 | element alternate.active { 131 | background-color: @BGA; 132 | text-color: @FG; 133 | } 134 | 135 | element selected { 136 | background-color: @BGA; 137 | text-color: @SEL; 138 | border: 0px 0px 0px 0px; 139 | border-radius: 10px; 140 | border-color: @BDR; 141 | } 142 | 143 | element selected.urgent { 144 | background-color: @UGT; 145 | text-color: @FG; 146 | } 147 | 148 | element selected.active { 149 | background-color: @BGA; 150 | color: @FG; 151 | } 152 | -------------------------------------------------------------------------------- /.config/rofi/config/networkmenu.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | show-icons: false; 3 | display-drun: ""; 4 | drun-display-format: "{icon} {name}"; 5 | disable-history: false; 6 | click-to-exit: true; 7 | location: 0; 8 | } 9 | 10 | @import "font.rasi" 11 | @import "colors.rasi" 12 | 13 | window { 14 | transparency: "real"; 15 | background-color: @BG; 16 | text-color: @FG; 17 | border: 2px; 18 | border-color: @BDR; 19 | border-radius: 10px; 20 | width: 400px; 21 | anchor: center; 22 | x-offset: 0; 23 | y-offset: 0; 24 | } 25 | 26 | prompt { 27 | enabled: true; 28 | margin: 0px 8px 0px 8px; 29 | padding: 8px; 30 | background-color: @IMG; 31 | text-color: @BG; 32 | border: 0px 0px 0px 0px; 33 | border-color: @BDR; 34 | border-radius: 10px; 35 | } 36 | 37 | textbox-prompt-colon { 38 | expand: false; 39 | str: "直"; 40 | border-radius: 100%; 41 | background-color: @SEL; 42 | text-color: @FG; 43 | padding: 8px 12px 8px 12px; 44 | font: "Iosevka Nerd Font 10"; 45 | } 46 | 47 | entry { 48 | background-color: @BG; 49 | text-color: @FG; 50 | placeholder-color: @FG; 51 | expand: true; 52 | horizontal-align: 0; 53 | placeholder: ""; 54 | blink: true; 55 | border: 0px 0px 2px 0px; 56 | border-color: @BDR; 57 | border-radius: 10px; 58 | padding: 8px; 59 | } 60 | 61 | inputbar { 62 | children: [ textbox-prompt-colon, prompt, entry ]; 63 | background-color: @BG; 64 | text-color: @FG; 65 | expand: false; 66 | border: 0px 0px 0px 0px; 67 | border-radius: 0px; 68 | border-color: @BDR; 69 | margin: 0px 0px 0px 0px; 70 | padding: 0px; 71 | position: center; 72 | } 73 | 74 | case-indicator { 75 | background-color: @BG; 76 | text-color: @FG; 77 | spacing: 0; 78 | } 79 | 80 | 81 | listview { 82 | background-color: @BG; 83 | columns: 1; 84 | lines: 7; 85 | spacing: 4px; 86 | cycle: true; 87 | dynamic: true; 88 | layout: vertical; 89 | } 90 | 91 | mainbox { 92 | background-color: @BG; 93 | children: [ inputbar, listview ]; 94 | spacing: 15px; 95 | padding: 15px; 96 | } 97 | 98 | element { 99 | background-color: @BG; 100 | text-color: @FG; 101 | orientation: horizontal; 102 | border-radius: 4px; 103 | padding: 6px 6px 6px 6px; 104 | } 105 | 106 | element-icon { 107 | background-color: inherit; 108 | text-color: inherit; 109 | size: 0px; 110 | border: 0px; 111 | } 112 | 113 | element-text { 114 | background-color: inherit; 115 | text-color: inherit; 116 | expand: true; 117 | horizontal-align: 0; 118 | vertical-align: 0.5; 119 | margin: 2px 0px 2px 6px; 120 | } 121 | 122 | element normal.urgent, 123 | element alternate.urgent { 124 | background-color: @UGT; 125 | text-color: @FG; 126 | border-radius: 9px; 127 | } 128 | 129 | element normal.active, 130 | element alternate.active { 131 | background-color: @BGA; 132 | text-color: @FG; 133 | } 134 | 135 | element selected { 136 | background-color: @BGA; 137 | text-color: @SEL; 138 | border: 0px 0px 0px 0px; 139 | border-radius: 10px; 140 | border-color: @BDR; 141 | } 142 | 143 | element selected.urgent { 144 | background-color: @UGT; 145 | text-color: @FG; 146 | } 147 | 148 | element selected.active { 149 | background-color: @BGA; 150 | color: @FG; 151 | } 152 | -------------------------------------------------------------------------------- /.tmux.conf: -------------------------------------------------------------------------------- 1 | # Use Vi mode 2 | setw -g mode-keys vi 3 | 4 | # Increase scrollback buffer size 5 | set -g history-limit 10000 6 | 7 | # Start window and pane numbering from 1 for easier switching 8 | set -g base-index 1 9 | setw -g pane-base-index 1 10 | 11 | # Allow automatic renaming of windows 12 | set -g allow-rename on 13 | 14 | # Renumber windows when one is removed. 15 | set -g renumber-windows on 16 | 17 | # Improve colors 18 | set -g terminal-overrides ',xterm-256color:Tc' 19 | set -g default-terminal "tmux-256color" 20 | set -as terminal-overrides ',xterm*:sitm=\E[3m' 21 | 22 | # Enable undercurl 23 | set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' 24 | 25 | # Enable undercurl colors 26 | set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' 27 | 28 | # Allow the mouse to resize windows and select tabs 29 | set -g mouse on 30 | 31 | # Allow tmux to set the terminal title 32 | set -g set-titles on 33 | 34 | # Monitor window activity to display in the status bar 35 | setw -g monitor-activity on 36 | 37 | # A bell in another window should cause a bell in the current window 38 | set -g bell-action any 39 | 40 | # Don't show distracting notifications 41 | set -g visual-bell on 42 | set -g visual-activity on 43 | 44 | # Focus events enabled for terminals that support them 45 | set -g focus-events off 46 | 47 | # Useful when using sharing a session with different size terminals 48 | setw -g aggressive-resize on 49 | 50 | # don't detach tmux when killing a session 51 | set -g detach-on-destroy off 52 | 53 | # address vim mode switching delay (http://superuser.com/a/252717/65504) 54 | set -s escape-time 0 55 | 56 | # remap prefix 57 | set -g prefix C-a 58 | 59 | # Reload tmux config 60 | unbind R 61 | bind R source-file ~/.tmux.conf\; display-message '~/.tmux.conf reloaded' 62 | 63 | # switch windows 64 | bind -r Left previous-window 65 | bind -r Right next-window 66 | # bind-key -n M-left previous-window 67 | # bind-key -n M-right next-window 68 | 69 | bind q kill-window 70 | bind Q kill-session 71 | 72 | # Move the current window to the next window or previous window position 73 | bind -r n run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) + 1) && tmux next-window" 74 | bind -r p run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) - 1) && tmux previous-window" 75 | 76 | # Switch between two most recently used windows 77 | bind Space last-window 78 | 79 | # Rename window 80 | bind r command-prompt -p "Rename window to:" "rename-window '%%'" 81 | 82 | # use PREFIX+| (or PREFIX+\) to split window horizontally and PREFIX+- or 83 | # (PREFIX+_) to split vertically also use the current pane path to define the 84 | # new pane path 85 | bind _ split-window -h -c "#{pane_current_path}" 86 | bind - split-window -v -c "#{pane_current_path}" 87 | 88 | # Change the path for newly created windows 89 | bind c new-window -c "#{pane_current_path}" 90 | 91 | # Setup 'v' to begin selection as in Vim 92 | if-shell -b '[ "$(echo "$TMUX_VERSION >= 2.4" | bc)" = 1 ]' \ 93 | 'bind-key -T copy-mode-vi v send-keys -X begin-selection;' 94 | 95 | bind y run -b "tmux show-buffer | wlclip -selection clipboard"\; display-message "Copied tmux buffer to system clipboard" 96 | 97 | # Theme 98 | set -g window-status-format '#[bg=colour237,fg=#f8f8f2] #I.#(pwd="#{pane_current_path}"; echo ${pwd####*/}): #W#F ' 99 | set -g window-status-current-format '#[bg=colour39,fg=black] #I.#(pwd="#{pane_current_path}"; echo ${pwd####*/}): #W#F ' 100 | 101 | set -g status-left-length 40 102 | set -g status-right-length 60 103 | set -g status-position bottom 104 | set -g status-fg white 105 | set -g status-bg "colour234" 106 | set -g status-left '#[fg=colour235,bg=colour252,bold] tmux ' 107 | set -g status-right '' 108 | 109 | setw -g pane-border-style fg=green,bg=black 110 | setw -g pane-active-border-style fg=white,bg=black 111 | 112 | setw -g window-style fg=colour240,bg=colour235 113 | setw -g window-active-style fg=white,bg=black 114 | 115 | # Smart pane switching with awareness of Vim splits. 116 | # See: https://github.com/christoomey/vim-tmux-navigator 117 | is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ 118 | | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'" 119 | bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' 120 | bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' 121 | bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' 122 | bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' 123 | tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' 124 | if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ 125 | "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" 126 | if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ 127 | "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" 128 | 129 | bind-key -T copy-mode-vi 'C-h' select-pane -L 130 | bind-key -T copy-mode-vi 'C-j' select-pane -D 131 | bind-key -T copy-mode-vi 'C-k' select-pane -U 132 | bind-key -T copy-mode-vi 'C-l' select-pane -R 133 | bind-key -T copy-mode-vi 'C-\' select-pane -l 134 | 135 | set -g @plugin 'tmux-plugins/tpm' 136 | 137 | set -g @plugin 'jimeh/tmuxifier' 138 | set -g @plugin 'tmux-plugins/tmux-sensible' 139 | set -g @plugin 'tmux-plugins/tmux-yank' 140 | set -g @plugin 'sainnhe/tmux-fzf' 141 | 142 | run '~/.tmux/plugins/tpm/tpm' 143 | -------------------------------------------------------------------------------- /.config/i3/powermenu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Use rofi/zenity to change system runstate thanks to systemd. 4 | # 5 | # Note: this currently relies on associative array support in the shell. 6 | # 7 | # Inspired from i3pystatus wiki: 8 | # https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu 9 | # 10 | # Copyright 2015 Benjamin Chrétien 11 | # 12 | # This program is free software: you can redistribute it and/or modify 13 | # it under the terms of the GNU General Public License as published by 14 | # the Free Software Foundation, either version 3 of the License, or 15 | # (at your option) any later version. 16 | 17 | # This program is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | # GNU General Public License for more details. 21 | 22 | # You should have received a copy of the GNU General Public License 23 | # along with this program. If not, see . 24 | 25 | # modified to work with latest rofi update by joekamprad 26 | 27 | ####################################################################### 28 | # BEGIN CONFIG # 29 | ####################################################################### 30 | 31 | # Use a custom lock script 32 | #LOCKSCRIPT="i3lock-extra -m pixelize" 33 | 34 | # Colors: FG (foreground), BG (background), HL (highlighted) 35 | FG_COLOR="#cdd6f4" 36 | BG_COLOR="#1e1e2e" 37 | HLFG_COLOR="#313244" 38 | HLBG_COLOR="#11111b" 39 | BORDER_COLOR="#f5c2e7" 40 | 41 | # Options not related to colors (most rofi options do not work anymore) 42 | ROFI_OPTIONS=(-theme ~/.config/rofi/catppuccin-mocha.rasi) 43 | # Zenity options 44 | ZENITY_TITLE="Power Menu" 45 | ZENITY_TEXT="Action:" 46 | ZENITY_OPTIONS=(--column= --hide-header) 47 | 48 | ####################################################################### 49 | # END CONFIG # 50 | ####################################################################### 51 | 52 | # Whether to ask for user's confirmation 53 | enable_confirmation=false 54 | 55 | # Preferred launcher if both are available 56 | preferred_launcher="rofi" 57 | 58 | usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. 59 | 60 | where: 61 | -h show this help text 62 | -c ask for user confirmation 63 | -p preferred launcher (rofi or zenity) 64 | 65 | This script depends on: 66 | - systemd, 67 | - i3, 68 | - rofi or zenity." 69 | 70 | # Check whether the user-defined launcher is valid 71 | launcher_list=(rofi zenity) 72 | function check_launcher() { 73 | if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then 74 | echo "Supported launchers: ${launcher_list[*]}" 75 | exit 1 76 | else 77 | # Get array with unique elements and preferred launcher first 78 | # Note: uniq expects a sorted list, so we cannot use it 79 | i=1 80 | launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ 81 | | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) 82 | fi 83 | } 84 | 85 | # Parse CLI arguments 86 | while getopts "hcp:" option; do 87 | case "${option}" in 88 | h) echo "${usage}" 89 | exit 0 90 | ;; 91 | c) enable_confirmation=true 92 | ;; 93 | p) preferred_launcher="${OPTARG}" 94 | check_launcher "${preferred_launcher}" 95 | ;; 96 | *) exit 1 97 | ;; 98 | esac 99 | done 100 | 101 | # Check whether a command exists 102 | function command_exists() { 103 | command -v "$1" &> /dev/null 2>&1 104 | } 105 | 106 | # systemctl required 107 | if ! command_exists systemctl ; then 108 | exit 1 109 | fi 110 | 111 | # menu defined as an associative array 112 | typeset -A menu 113 | 114 | # Menu with keys/commands 115 | 116 | menu=( 117 | [ Shutdown]="systemctl poweroff" 118 | [ Reboot]="systemctl reboot" 119 | [ Suspend]="systemctl suspend" 120 | [ Lock]="xset dpms force suspend" 121 | [ Logout]="i3-msg exit" 122 | [ Cancel]="" 123 | ) 124 | 125 | menu_nrows=${#menu[@]} 126 | 127 | # Menu entries that may trigger a confirmation message 128 | menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout" 129 | 130 | launcher_exe="" 131 | launcher_options="" 132 | rofi_colors="" 133 | 134 | function prepare_launcher() { 135 | if [[ "$1" == "rofi" ]]; then 136 | rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ 137 | -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") 138 | launcher_exe="rofi" 139 | launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ 140 | "${rofi_colors}" "${ROFI_OPTIONS[@]}") 141 | elif [[ "$1" == "zenity" ]]; then 142 | launcher_exe="zenity" 143 | launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ 144 | "${ZENITY_OPTIONS[@]}") 145 | fi 146 | } 147 | 148 | for l in "${launcher_list[@]}"; do 149 | if command_exists "${l}" ; then 150 | prepare_launcher "${l}" 151 | break 152 | fi 153 | done 154 | 155 | # No launcher available 156 | if [[ -z "${launcher_exe}" ]]; then 157 | exit 1 158 | fi 159 | 160 | launcher=(${launcher_exe} "${launcher_options[@]}") 161 | selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" 162 | 163 | function ask_confirmation() { 164 | if [ "${launcher_exe}" == "rofi" ]; then 165 | confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ 166 | "${rofi_colors}" "${ROFI_OPTIONS[@]}") 167 | [ "${confirmed}" == "Yes" ] && confirmed=0 168 | elif [ "${launcher_exe}" == "zenity" ]; then 169 | zenity --question --text "Are you sure you want to ${selection,,}?" 170 | confirmed=$? 171 | fi 172 | 173 | if [ "${confirmed}" == 0 ]; then 174 | i3-msg -q "exec ${menu[${selection}]}" 175 | fi 176 | } 177 | 178 | if [[ $? -eq 0 && ! -z ${selection} ]]; then 179 | if [[ "${enable_confirmation}" = true && \ 180 | ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then 181 | ask_confirmation 182 | else 183 | i3-msg -q "exec ${menu[${selection}]}" 184 | fi 185 | fi 186 | -------------------------------------------------------------------------------- /.config/polybar/config.ini: -------------------------------------------------------------------------------- 1 | ;========================================================== 2 | ; 3 | ; 4 | ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ 5 | ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ 6 | ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ 7 | ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ 8 | ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ 9 | ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ 10 | ; 11 | ; 12 | ; To learn more about how to configure Polybar 13 | ; go to https://github.com/polybar/polybar 14 | ; 15 | ; The README contains a lot of information 16 | ; 17 | ;========================================================== 18 | 19 | [colors] 20 | base = #1e1e2e 21 | mantle = #181825 22 | crust = #11111b 23 | 24 | text = #cdd6f4 25 | subtext0 = #a6adc8 26 | subtext1 = #bac2de 27 | 28 | surface0 = #313244 29 | surface1 = #45475a 30 | surface2 = #585b70 31 | 32 | overlay0 = #6c7086 33 | overlay1 = #7f849c 34 | overlay2 = #9399b2 35 | 36 | blue = #89b4fa 37 | lavender = #b4befe 38 | sapphire = #74c7ec 39 | sky = #89dceb 40 | teal = #94e2d5 41 | green = #a6e3a1 42 | yellow = #f9e2af 43 | peach = #fab387 44 | maroon = #eba0ac 45 | red = #f38ba8 46 | mauve = #cba6f7 47 | pink = #f5c2e7 48 | flamingo = #f2cdcd 49 | rosewater = #f5e0dc 50 | 51 | transparent = #FF00000 52 | 53 | [bar/bottom] 54 | width = 100% 55 | height = 28pt 56 | radius = 0 57 | bottom = true 58 | 59 | background = ${colors.base} 60 | foreground = ${colors.text} 61 | 62 | line-size = 2pt 63 | 64 | border-bottom-size = 0 65 | border-left-size = 0 66 | border-right-size = 0 67 | border-color = #00000000 68 | 69 | padding-left = 2 70 | padding-right = 1 71 | module-margin = 1 72 | 73 | separator = | 74 | separator-foreground = ${colors.subtext0} 75 | 76 | font-0 = "JetBrains Mono Nerd Font:size=10;2" 77 | font-1 = "FontAwesome:size=10;2" 78 | font-2 = "Weather Icons:size=10;2" 79 | font-3 = "JetBrains Mono Nerd Font:size=12;3" 80 | 81 | modules-left = xworkspaces weather 82 | modules-center = date 83 | modules-right = pulseaudio memory cpu battery 84 | 85 | tray-position = right 86 | 87 | enable-ipc = true 88 | wm-restack = i3 89 | 90 | [settings] 91 | screenchange-reload = true 92 | pseudo-transparency = true 93 | 94 | [module/separator] 95 | type = custom/text 96 | content-foreground = ${colors.subtext0} 97 | content = " " 98 | 99 | [module/xworkspaces] 100 | type = internal/i3 101 | 102 | index-sort = true 103 | 104 | label-focused = %index% 105 | label-focused-background = ${colors.pink} 106 | label-focused-foreground = ${colors.base} 107 | label-focused-padding = 2 108 | 109 | label-unfocused = %index% 110 | label-unfocused-padding = 2 111 | 112 | label-urgent = %index% 113 | label-urgent-background = ${colors.alert} 114 | label-urgent-padding = 2 115 | 116 | label-visible = %index% 117 | label-visible-foreground = ${colors.subtext0} 118 | label-visible-padding = 2 119 | 120 | [module/xwindow] 121 | type = internal/xwindow 122 | label = %title:0:60:...% 123 | 124 | [module/filesystem] 125 | type = internal/fs 126 | interval = 25 127 | 128 | mount-0 = / 129 | 130 | label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%% 131 | 132 | label-unmounted = %mountpoint% not mounted 133 | label-unmounted-foreground = ${colors.subtext0} 134 | 135 | [module/pulseaudio] 136 | type = internal/pulseaudio 137 | 138 | format-volume-prefix = " " 139 | format-volume-prefix-foreground = ${colors.pink} 140 | format-volume = 141 | 142 | label-volume = %percentage%% 143 | 144 | label-muted = muted 145 | label-muted-foreground = ${colors.subtext0} 146 | 147 | left-click = exec pavucontrol 148 | 149 | [module/xkeyboard] 150 | type = internal/xkeyboard 151 | blacklist-0 = num lock 152 | 153 | label-layout = %layout% 154 | label-layout-foreground = ${colors.pink} 155 | 156 | label-indicator-padding = 2 157 | label-indicator-margin = 1 158 | label-indicator-foreground = ${colors.base} 159 | label-indicator-background = ${colors.mauve} 160 | 161 | [module/memory] 162 | type = internal/memory 163 | interval = 2 164 | format-prefix = "ram " 165 | format-prefix-foreground = ${colors.pink} 166 | label = %percentage_used:2%% 167 | 168 | [module/battery] 169 | type = internal/battery 170 | full-at = 99 171 | low-at = 20 172 | ramp-capacity-0 =  173 | ramp-capacity-1 =  174 | ramp-capacity-2 =  175 | ramp-capacity-3 =  176 | ramp-capacity-4 =  177 | format-discharging = 178 | label-full = "" 179 | 180 | [module/cpu] 181 | type = internal/cpu 182 | interval = 2 183 | format-prefix = "cpu" 184 | format-prefix-foreground = ${colors.pink} 185 | label = %percentage:2%% 186 | 187 | [network-base] 188 | type = internal/network 189 | interval = 5 190 | format-connected = 191 | format-disconnected = 192 | label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected 193 | 194 | [module/wlan] 195 | inherit = network-base 196 | interface-type = wireless 197 | label-connected = %{F#F0C674}%ifname%%{F-} %essid% 198 | 199 | [module/eth] 200 | inherit = network-base 201 | interface-type = wired 202 | label-connected = %{F#F0C674}%ifname%%{F-} %local_ip% 203 | 204 | [module/date] 205 | type = internal/date 206 | interval = 1 207 | 208 | date = %H:%M » %a %d %b 209 | date-alt = %H:%M » %Y-%m-%d 210 | 211 | label = %date% 212 | format-prefix-foreground = ${colors.pink} 213 | 214 | [module/chesscom] 215 | type = custom/script 216 | exec = ~/.config/polybar/scripts/notification-chesscom.sh 217 | interval = 60 218 | 219 | [module/todoist] 220 | type = custom/script 221 | exec = ~/.config/polybar/scripts/todoist.sh 222 | interval = 5 223 | 224 | [module/github] 225 | type = custom/script 226 | exec = ~/.config/polybar/scripts/notification-github.sh 227 | interval = 60 228 | 229 | [module/weather] 230 | label-font = 3 231 | type = custom/script 232 | exec = ~/.config/polybar/scripts/openweathermap-fullfeatured.sh 233 | interval = 600 234 | 235 | [module/nowplaying] 236 | type = custom/script 237 | exec = ~/.config/polybar/scripts/nowplaying.sh 238 | interval = 1 239 | click-right = ~/.config/polybar/scripts/nowplaying-loop-toggle.sh 240 | 241 | [module/mullvad] 242 | type = custom/script 243 | exec = ~/.config/polybar/scripts/vpn-mullvad.sh 244 | interval = 3 245 | -------------------------------------------------------------------------------- /.config/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | # Monitors 2 | monitor=eDP-1,1920x1200@60,980x2160,1 3 | monitor=DP-3,3840x2160@60,0x0,1 4 | # monitor=HDMI-A-1,3840x2160@60,-3060x-2160,1,transform,3 5 | monitor=,preferred,auto,auto 6 | 7 | # Exec 8 | exec-once = lxpolkit 9 | exec-once = waybar 10 | exec-once = hyprpaper 11 | exec-once = hypridle 12 | exec-once = ~/.config/dunst/run.sh 13 | exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH 14 | exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH 15 | exec-once = systemctl --user restart pipewire # Restart pipewire to avoid bugs 16 | exec-once = $HOME/.local/share/tresorit/tresorit --hidden 17 | exec-once = nm-applet 18 | exec-once = flatpak run org.signal.Signal 19 | exec-once = solaar --window=hide 20 | exec-once = gammastep-indicator 21 | exec-once = wl-paste -t text --watch clipman store 22 | exec-once = flatpak run ch.protonmail.protonmail-bridge 23 | 24 | # Mods 25 | $mainMod = SUPER 26 | $mainModShift = $mainMod SHIFT 27 | $mainModCtrl = $mainMod CTRL 28 | $mainModShiftCtrl = $mainMod SHIFT CTRL 29 | $mainModAlt = $mainMod ALT 30 | $mainModAltShift = $mainMod ALT SHIFT 31 | 32 | # Application binds 33 | bind = $mainMod, W, killactive 34 | bind = $mainMod, F, fullscreen 35 | bind = $mainMod, Return, exec, alacritty 36 | bind = $mainModShift, Return, exec, ALACRITTY_BELL_NOTIFY=1 alacritty 37 | bind = $mainMod, Space, exec, wofi --show drun 38 | bind = $mainMod, P, exec, grim -g "$(slurp)" $(xdg-user-dir)/Screenshots/Screenshot_$(date +'%s.png') 39 | bind = $mainModShift, P, exec, grim -g "$(slurp)" - | swappy -f - 40 | bind = $mainMod, Y, exec, clipman pick -t wofi 41 | bind = $mainMod, C, exec, ~/src/wofi-calc/wofi-calc.sh 42 | bind = $mainMod, K, exec, dunstctl close-all 43 | 44 | # Float binds 45 | bind = $mainMod, Z, exec, alacritty --class myfloatingclass 46 | bind = $mainMod, X, exec, alacritty --class myfloatingclass -e pass clip --fzf 47 | bind = $mainModCtrl, F, exec, alacritty --class myfloatingclass -e ranger 48 | 49 | # Environment 50 | env = XCURSOR_SIZE,24 51 | env = XDG_CURRENT_DESKTOP,Hyprland 52 | env = XDG_SESSION_TYPE,wayland 53 | env = XDG_SESSION_DESKTOP,Hyprland 54 | 55 | env = GDK_BACKEND,wayland 56 | env = QT_QPA_PLATFORM,wayland;xcb 57 | env = QT_QPA_PLATFORMTHEME,qt5ct 58 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 59 | env = QT_AUTO_SCREEN_SCALE_FACTOR,1 60 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 61 | env = MOZ_ENABLE_WAYLAND,1 62 | 63 | # Input 64 | input { 65 | kb_layout = se,us 66 | 67 | follow_mouse = 2 68 | mouse_refocus = false 69 | 70 | touchpad { 71 | natural_scroll = no 72 | } 73 | 74 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification. 75 | } 76 | 77 | # General 78 | general { 79 | gaps_in = 5 80 | gaps_out = 0 81 | border_size = 3 82 | col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg 83 | col.inactive_border = rgba(595959aa) 84 | 85 | layout = dwindle 86 | } 87 | 88 | # Misc 89 | misc { 90 | disable_hyprland_logo = true 91 | disable_splash_rendering = true 92 | } 93 | 94 | # Decorations 95 | decoration { 96 | rounding = 0 97 | 98 | blur { 99 | enabled = true 100 | size = 3 101 | passes = 1 102 | } 103 | 104 | active_opacity = 1.0 105 | inactive_opacity = 1.0 106 | 107 | #drop_shadow = yes 108 | #shadow_range = 4 109 | #shadow_render_power = 3 110 | #col.shadow = rgba(1a1a1aee) 111 | } 112 | 113 | animations { 114 | enabled = yes 115 | 116 | bezier = myBezier, 0.05, 0.9, 0.1, 1.05 117 | 118 | animation = windows, 1, 7, myBezier 119 | animation = windowsOut, 1, 7, default, popin 80% 120 | animation = border, 1, 10, default 121 | animation = borderangle, 1, 8, default 122 | animation = fade, 1, 7, default 123 | animation = workspaces, 1, 6, default 124 | } 125 | 126 | dwindle { 127 | pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 128 | preserve_split = yes # you probably want this 129 | force_split = 2 130 | } 131 | 132 | master { 133 | #new_is_master = false 134 | orientation = top 135 | } 136 | 137 | gestures { 138 | workspace_swipe = off 139 | } 140 | 141 | # Window rules 142 | windowrulev2 = workspace 7,class:^(Slack)$ 143 | windowrulev2 = workspace 9,class:^(Signal)$ 144 | windowrulev2 = workspace 10,class:^(Spotify)$ 145 | windowrulev2 = float,class:^(myfloatingclass)$ 146 | 147 | # Workspace rules 148 | workspace=1,monitor:DP-3 149 | workspace=2,monitor:DP-3 150 | workspace=3,monitor:DP-3 151 | workspace=4,monitor:DP-3 152 | workspace=5,monitor:DP-3 153 | workspace=6,montior:eDP-1 154 | workspace=7,monitor:DP-3 155 | workspace=8,monitor:DP-3 156 | workspace=9,monitor:DP-3 157 | workspace=10,monitor:DP-3 158 | 159 | # Binds 160 | bind = $mainModShift, F, togglefloating 161 | bind = $mainModShift, Q, exec, wlogout 162 | bind = $mainModShift, S, togglesplit 163 | bind = $mainModShift, U, pseudo 164 | bind = $mainModShift, B, exec, killall -SIGUSR2 waybar # Reload waybar 165 | #bind = $mainModShift, K, exec, swaylock -c 000000 166 | 167 | bind = , XF86AudioRaiseVolume, exec, ~/.config/dunst/changevolume up 168 | bind = , XF86AudioLowerVolume, exec, ~/.config/dunst/changevolume down 169 | bind = , XF86AudioMute, exec, amixer sset Master toggle 170 | 171 | bind = , XF86AudioPlay, exec, playerctl play-pause 172 | bind = , XF86AudioNext, exec, playerctl next 173 | bind = , XF86AudioPrev, exec, playerctl previous 174 | 175 | bind = , XF86MonBrightnessUp, exec, brightnessctl set +10% 176 | bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%- 177 | 178 | # Move focus 179 | bind = $mainMod, h, movefocus, l 180 | bind = $mainMod, j, movefocus, d 181 | bind = $mainMod, k, movefocus, u 182 | bind = $mainMod, l, movefocus, r 183 | 184 | # Move active window in direction 185 | bind = $mainModAlt, left, movewindow, l 186 | bind = $mainModAlt, down, movewindow, d 187 | bind = $mainModAlt, up, movewindow, u 188 | bind = $mainModAlt, right, movewindow, r 189 | 190 | # Move worspace to monitor 191 | bind = $mainModCtrl, h, movecurrentworkspacetomonitor, -1 192 | bind = $mainModCtrl, l, movecurrentworkspacetomonitor, +1 193 | 194 | # Window group binds 195 | bind = $mainModShiftCtrl, T, togglegroup 196 | bind = $mainModShift, j, moveoutofgroup 197 | bind = $mainModShift, h, changegroupactive, b 198 | bind = $mainModShift, l, changegroupactive, f 199 | bind = $mainModShift ALT, h, movegroupwindow, -1 200 | bind = $mainModShift ALT, l, movegroupwindow, +1 201 | bind = $mainModShift CTRL, h, moveintogroup, l 202 | bind = $mainModShift CTRL, j, moveintogroup, d 203 | bind = $mainModShift CTRL, k, moveintogroup, u 204 | bind = $mainModShift CTRL, l, moveintogroup, r 205 | 206 | # Switch workspaces with mainMod + [0-9] 207 | bind = $mainMod, 1, workspace, 1 208 | bind = $mainMod, 2, workspace, 2 209 | bind = $mainMod, 3, workspace, 3 210 | bind = $mainMod, 4, workspace, 4 211 | bind = $mainMod, 5, workspace, 5 212 | bind = $mainMod, 6, workspace, 6 213 | bind = $mainMod, 7, workspace, 7 214 | bind = $mainMod, 8, workspace, 8 215 | bind = $mainMod, 9, workspace, 9 216 | bind = $mainMod, 0, workspace, 10 217 | 218 | bind = $mainMod, a, workspace, 1 219 | bind = $mainMod, r, workspace, 2 220 | bind = $mainMod, s, workspace, 3 221 | bind = $mainMod, t, workspace, 4 222 | bind = $mainMod, g, workspace, 5 223 | bind = $mainMod, m, workspace, 6 224 | bind = $mainMod, n, workspace, 7 225 | bind = $mainMod, e, workspace, 8 226 | bind = $mainMod, i, workspace, 9 227 | bind = $mainMod, o, workspace, 10 228 | 229 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 230 | bind = $mainModShift, 1, movetoworkspace, 1 231 | bind = $mainModShift, 2, movetoworkspace, 2 232 | bind = $mainModShift, 3, movetoworkspace, 3 233 | bind = $mainModShift, 4, movetoworkspace, 4 234 | bind = $mainModShift, 5, movetoworkspace, 5 235 | bind = $mainModShift, 6, movetoworkspace, 6 236 | bind = $mainModShift, 7, movetoworkspace, 7 237 | bind = $mainModShift, 8, movetoworkspace, 8 238 | bind = $mainModShift, 9, movetoworkspace, 9 239 | bind = $mainModShift, 0, movetoworkspace, 10 240 | 241 | bind = $mainModShift, a, movetoworkspace, 1 242 | bind = $mainModShift, r, movetoworkspace, 2 243 | bind = $mainModShift, s, movetoworkspace, 3 244 | bind = $mainModShift, t, movetoworkspace, 4 245 | bind = $mainModShift, g, movetoworkspace, 5 246 | bind = $mainModShift, m, movetoworkspace, 6 247 | bind = $mainModShift, n, movetoworkspace, 7 248 | bind = $mainModShift, e, movetoworkspace, 8 249 | bind = $mainModShift, i, movetoworkspace, 9 250 | bind = $mainModShift, o, movetoworkspace, 10 251 | 252 | # Move/resize windows with mainMod + LMB/RMB and dragging 253 | bindm = $mainMod, mouse:272, movewindow 254 | bindm = $mainMod, mouse:273, resizewindow 255 | -------------------------------------------------------------------------------- /.config/i3/config: -------------------------------------------------------------------------------- 1 | ####################### 2 | # config starts here: # 3 | ####################### 4 | # output eDP-1 pos 1011 2160 res 1920x1080 5 | # output DP-1 pos 0 0 res 3840x2160 6 | 7 | # disable focus between monitors 8 | focus_wrapping no 9 | 10 | mouse_warping none 11 | 12 | # Do not focus with mouse 13 | focus_follows_mouse no 14 | 15 | # Font for window titles 16 | font pango: JetBrains Mono Nerd Font 8 17 | 18 | # set the mod key to the winkey: 19 | set $mod Mod4 20 | 21 | ##################### 22 | # workspace layout: # 23 | ##################### 24 | 25 | # default i3 tiling mode: 26 | workspace_layout default 27 | 28 | ############################## 29 | # extra options for windows: # 30 | ############################## 31 | 32 | # Default border 33 | # for_window[all] title_window_icon on 34 | default_border pixel 5 35 | for_window [class="^.*"] border pixel 5 36 | 37 | set $clear #ffffff00 38 | 39 | # class border background text indicator child_border 40 | client.focused_inactive #333333 #5f676a #ffffff #484e50 $clear 41 | client.unfocused #333333 #222222 #888888 #292d2e $clear 42 | 43 | # move focused workspace between monitors 44 | bindsym $mod+Ctrl+h move workspace to output left 45 | bindsym $mod+Ctrl+j move workspace to output down 46 | bindsym $mod+Ctrl+k move workspace to output up 47 | bindsym $mod+Ctrl+l move workspace to output right 48 | 49 | set $ws1_key_colemak a 50 | set $ws2_key_colemak r 51 | set $ws3_key_colemak s 52 | set $ws4_key_colemak t 53 | set $ws5_key_colemak g 54 | set $ws6_key_colemak m 55 | set $ws7_key_colemak n 56 | set $ws8_key_colemak e 57 | set $ws9_key_colemak i 58 | set $ws10_key_colemak o 59 | 60 | set $ws1_key_qwerty 1 61 | set $ws2_key_qwerty 2 62 | set $ws3_key_qwerty 3 63 | set $ws4_key_qwerty 4 64 | set $ws5_key_qwerty 5 65 | set $ws6_key_qwerty 6 66 | set $ws7_key_qwerty 7 67 | set $ws8_key_qwerty 8 68 | set $ws9_key_qwerty 9 69 | set $ws10_key_qwerty 0 70 | 71 | # switch to workspace 72 | bindsym $mod+$ws1_key_colemak workspace $ws1 73 | bindsym $mod+$ws2_key_colemak workspace $ws2 74 | bindsym $mod+$ws3_key_colemak workspace $ws3 75 | bindsym $mod+$ws4_key_colemak workspace $ws4 76 | bindsym $mod+$ws5_key_colemak workspace $ws5 77 | bindsym $mod+$ws6_key_colemak workspace $ws6 78 | bindsym $mod+$ws7_key_colemak workspace $ws7 79 | bindsym $mod+$ws8_key_colemak workspace $ws8 80 | bindsym $mod+$ws9_key_colemak workspace $ws9 81 | bindsym $mod+$ws10_key_colemak workspace $ws10 82 | 83 | bindsym $mod+$ws1_key_qwerty workspace $ws1 84 | bindsym $mod+$ws2_key_qwerty workspace $ws2 85 | bindsym $mod+$ws3_key_qwerty workspace $ws3 86 | bindsym $mod+$ws4_key_qwerty workspace $ws4 87 | bindsym $mod+$ws5_key_qwerty workspace $ws5 88 | bindsym $mod+$ws6_key_qwerty workspace $ws6 89 | bindsym $mod+$ws7_key_qwerty workspace $ws7 90 | bindsym $mod+$ws8_key_qwerty workspace $ws8 91 | bindsym $mod+$ws9_key_qwerty workspace $ws9 92 | bindsym $mod+$ws10_key_qwerty workspace $ws10 93 | 94 | # move focused container to workspace 95 | bindsym $mod+Shift+$ws1_key_colemak move container to workspace $ws1 96 | bindsym $mod+Shift+$ws2_key_colemak move container to workspace $ws2 97 | bindsym $mod+Shift+$ws3_key_colemak move container to workspace $ws3 98 | bindsym $mod+Shift+$ws4_key_colemak move container to workspace $ws4 99 | bindsym $mod+Shift+$ws5_key_colemak move container to workspace $ws5 100 | bindsym $mod+Shift+$ws6_key_colemak move container to workspace $ws6 101 | bindsym $mod+Shift+$ws7_key_colemak move container to workspace $ws7 102 | bindsym $mod+Shift+$ws8_key_colemak move container to workspace $ws8 103 | bindsym $mod+Shift+$ws9_key_colemak move container to workspace $ws9 104 | bindsym $mod+Shift+$ws10_key_colemak move container to workspace $ws10 105 | 106 | bindsym $mod+Shift+$ws1_key_qwerty move container to workspace $ws1 107 | bindsym $mod+Shift+$ws2_key_qwerty move container to workspace $ws2 108 | bindsym $mod+Shift+$ws3_key_qwerty move container to workspace $ws3 109 | bindsym $mod+Shift+$ws4_key_qwerty move container to workspace $ws4 110 | bindsym $mod+Shift+$ws5_key_qwerty move container to workspace $ws5 111 | bindsym $mod+Shift+$ws6_key_qwerty move container to workspace $ws6 112 | bindsym $mod+Shift+$ws7_key_qwerty move container to workspace $ws7 113 | bindsym $mod+Shift+$ws8_key_qwerty move container to workspace $ws8 114 | bindsym $mod+Shift+$ws9_key_qwerty move container to workspace $ws9 115 | bindsym $mod+Shift+$ws10_key_qwerty move container to workspace $ws10 116 | 117 | # resize window (you can also use the mouse for that) 118 | mode "resize" { 119 | bindsym h resize shrink width 5 px or 5 ppt 120 | bindsym j resize grow height 5 px or 5 ppt 121 | bindsym k resize shrink height 5 px or 5 ppt 122 | bindsym l resize grow width 5 px or 5 ppt 123 | 124 | # back to normal: Enter or Escape or $mod+r 125 | bindsym Return mode "default" 126 | bindsym Escape mode "default" 127 | bindsym $mod+z mode "default" 128 | } 129 | bindsym $mod+z mode "resize" 130 | 131 | ###################################### 132 | # keybindings for different actions: # 133 | ###################################### 134 | 135 | # start a termina 136 | bindsym $mod+Return exec alacritty 137 | 138 | bindsym $mod+Space exec wofi --show drun 139 | 140 | bindsym $mod+Shift+Q exec wlogout 141 | 142 | # kill focused window 143 | bindsym $mod+w kill 144 | 145 | # reload the configuration file 146 | bindsym $mod+Shift+c reload 147 | 148 | # restart i3 inplace (preserves your layout/session, can be used to update i3) 149 | bindsym $mod+Shift+y restart 150 | 151 | # change focus 152 | bindsym $mod+h focus left 153 | bindsym $mod+j focus down 154 | bindsym $mod+k focus up 155 | bindsym $mod+l focus right 156 | 157 | # @TODO: bindsym $mod+Alt+p focus parent 158 | 159 | # move focused window 160 | bindsym $mod+Shift+h move left 161 | bindsym $mod+Shift+j move down 162 | bindsym $mod+Shift+k move up 163 | bindsym $mod+Shift+l move right 164 | 165 | # split in horizontal orientation 166 | # @TODO: bindsym $mod+- split h 167 | 168 | # split in vertical orientation 169 | # @TODO: bindsym $mod+_ split v 170 | 171 | # enter fullscreen mode for the focused container 172 | bindsym $mod+f fullscreen toggle 173 | 174 | # change container layout (stacked, tabbed, toggle split) 175 | bindsym $mod+Ctrl+Shift+t layout tabbed 176 | bindsym $mod+Ctrl+Shift+s layout toggle split 177 | 178 | # toggle tiling / floating 179 | bindsym $mod+Ctrl+Shift+f floating toggle 180 | 181 | # Multimedia Keys 182 | 183 | # volume 184 | bindsym XF86AudioRaiseVolume exec ~/.config/dunst/changevolume up 185 | bindsym XF86AudioLowerVolume exec ~/.config/dunst/changevolume down 186 | bindsym Alt+XF86AudioRaiseVolume exec ~/.config/dunst/changevolume up-1 187 | bindsym Alt+XF86AudioLowerVolume exec ~/.config/dunst/changevolume down-1 188 | 189 | # brightness 190 | bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5% 191 | bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%- 192 | # mute 193 | bindsym XF86AudioMute exec amixer sset Master toggle 194 | 195 | # audio control 196 | bindsym XF86AudioPlay exec playerctl play-pause 197 | bindsym XF86AudioPause exec playerctl pause 198 | bindsym XF86AudioNext exec playerctl next 199 | bindsym XF86AudioPrev exec playerctl previous 200 | 201 | bindsym Shift+XF86AudioNext exec spt playback --next 202 | bindsym Shift+XF86AudioPrev exec spt playback --previous 203 | 204 | ## App shortcuts 205 | bindsym $mod+p exec grim -g "$(slurp)" $(xdg-user-dir)/Screenshots/Screenshot_$(date +'%s.png') 206 | bindsym $mod+Shift+p exec grim -g "$(slurp)" - | swappy -f - 207 | bindsym $mod+y exec clipman pick -t wofi 208 | bindsym $mod+c exec ~/src/wofi-calc/wofi-calc.sh 209 | bindsym $mod+b exec ~/.config/sway/toggle_trackball_speed.sh 210 | # bindsym $mod+Ctrl+k exec dunstctl close-all 211 | 212 | ########################################## 213 | # configuration for workspace behaviour: # 214 | ########################################## 215 | 216 | # Define names for default workspaces for which we configure key bindings later on. 217 | # We use variables to avoid repeating the names in multiple places. 218 | set $ws1 1 219 | set $ws2 2 220 | set $ws3 3 221 | set $ws4 4 222 | set $ws5 5 223 | set $ws6 6 224 | set $ws7 7 225 | set $ws8 8 226 | set $ws9 9 227 | set $ws10 10 228 | 229 | # use workspaces on different displays: 230 | # where you have to replace VGA-0/HDMI-0 with the names for your displays 231 | # you can get from xrandr command 232 | set $monitor1 "eDP-1" 233 | set $monitor2 "DP-1" 234 | set $monitor3 "eDP-1" 235 | 236 | workspace $ws1 output $monitor2 237 | workspace $ws2 output $monitor2 238 | workspace $ws3 output $monitor2 239 | workspace $ws4 output $monitor2 240 | workspace $ws5 output $monitor2 241 | workspace $ws6 output $monitor3 242 | workspace $ws7 output $monitor2 243 | workspace $ws8 output $monitor2 244 | workspace $ws9 output $monitor2 245 | workspace $ws10 output $monitor2 246 | 247 | # bind program to workspace 248 | assign [class="Firefox"] $ws4 249 | assign [class="Spotify"] $ws10 250 | assign [class="Signal"] $ws9 251 | assign [class="discord"] $ws9 252 | 253 | ############################################# 254 | # autostart applications/services on login: # 255 | ############################################# 256 | exec lxpolkit 257 | exec kanshi 258 | exec waybar 259 | exec $HOME/.local/share/tresorit/tresorit --hidden 260 | exec dunst 261 | exec nm-applet 262 | exec flatpak run org.signal.Signal 263 | exec solaar --window=hide 264 | exec gammastep-indicator 265 | exec wl-paste -t text --watch clipman store 266 | exec_always --no-startup-id autotiling 267 | exec swayidle 268 | exec flatpak run ch.protonmail.protonmail-bridge 269 | 270 | ############### 271 | # system tray # 272 | ############### 273 | 274 | # start blueman applet 275 | exec --no-startup-id blueman-applet 276 | 277 | # networkmanager-applet 278 | exec --no-startup-id nm-applet 279 | 280 | exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway 281 | 282 | input "7504:24926:Charybdis_Mouse" { 283 | pointer_accel -0.2 284 | accel_profile adaptive 285 | } 286 | 287 | input * { 288 | xkb_layout "se" 289 | } 290 | 291 | include @sysconfdir@/sway/config.d/* 292 | 293 | 294 | -------------------------------------------------------------------------------- /.p10k.zsh: -------------------------------------------------------------------------------- 1 | # Generated by Powerlevel10k configuration wizard on 2025-04-10 at 21:25 CEST. 2 | # Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 07533. 3 | # Wizard options: nerdfont-v3 + powerline, large icons, pure, snazzy, 2 lines, sparse, 4 | # instant_prompt=verbose. 5 | # Type `p10k configure` to generate another config. 6 | # 7 | # Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure). 8 | # 9 | # Differences from Pure: 10 | # 11 | # - Git: 12 | # - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state. 13 | # - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`). 14 | # 15 | # Apart from the differences listed above, the replication of Pure prompt is exact. This includes 16 | # even the questionable parts. For example, just like in Pure, there is no indication of Git status 17 | # being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt 18 | # doesn't fit on one line, it wraps around with no attempt to shorten it. 19 | # 20 | # If you like the general style of Pure but not particularly attached to all its quirks, type 21 | # `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking 22 | # advantage of Powerlevel10k features that aren't present in Pure. 23 | 24 | # Temporarily change options. 25 | 'builtin' 'local' '-a' 'p10k_config_opts' 26 | [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') 27 | [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') 28 | [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') 29 | 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' 30 | 31 | () { 32 | emulate -L zsh -o extended_glob 33 | 34 | # Unset all configuration options. 35 | unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' 36 | 37 | # Zsh >= 5.1 is required. 38 | [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return 39 | 40 | # Prompt colors. 41 | local grey='242' 42 | local red='#FF5C57' 43 | local yellow='#F3F99D' 44 | local blue='#57C7FF' 45 | local magenta='#FF6AC1' 46 | local cyan='#9AEDFE' 47 | local white='#F1F1F0' 48 | 49 | # Left prompt segments. 50 | typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( 51 | # =========================[ Line #1 ]========================= 52 | context # user@host 53 | dir # current directory 54 | vcs # git status 55 | command_execution_time # previous command duration 56 | # =========================[ Line #2 ]========================= 57 | newline # \n 58 | virtualenv # python virtual environment 59 | prompt_char # prompt symbol 60 | ) 61 | 62 | # Right prompt segments. 63 | typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( 64 | # =========================[ Line #1 ]========================= 65 | # command_execution_time # previous command duration 66 | # virtualenv # python virtual environment 67 | # context # user@host 68 | # time # current time 69 | # =========================[ Line #2 ]========================= 70 | newline # \n 71 | ) 72 | 73 | # Basic style options that define the overall prompt look. 74 | typeset -g POWERLEVEL9K_BACKGROUND= # transparent background 75 | typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace 76 | typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space 77 | typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol 78 | typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons 79 | 80 | # Add an empty line before each prompt except the first. This doesn't emulate the bug 81 | # in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar. 82 | typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true 83 | 84 | # Magenta prompt symbol if the last command succeeded. 85 | typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta 86 | # Red prompt symbol if the last command failed. 87 | typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red 88 | # Default prompt symbol. 89 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' 90 | # Prompt symbol in command vi mode. 91 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' 92 | # Prompt symbol in visual vi mode is the same as in command mode. 93 | typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❮' 94 | # Prompt symbol in overwrite vi mode is the same as in command mode. 95 | typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false 96 | 97 | # Grey Python Virtual Environment. 98 | typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey 99 | # Don't show Python version. 100 | typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false 101 | typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= 102 | 103 | # Blue current directory. 104 | typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue 105 | 106 | # Context format when root: user@host. The first part white, the rest grey. 107 | typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f" 108 | # Context format when not root: user@host. The whole thing grey. 109 | typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f" 110 | # Don't show context unless root or in SSH. 111 | typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION= 112 | 113 | # Show previous command duration only if it's >= 5s. 114 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5 115 | # Don't show fractional seconds. Thus, 7s rather than 7.3s. 116 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 117 | # Duration format: 1d 2h 3m 4s. 118 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' 119 | # Yellow previous command duration. 120 | typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow 121 | 122 | # Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones. 123 | typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey 124 | 125 | # Disable async loading indicator to make directories that aren't Git repositories 126 | # indistinguishable from large Git repositories without known state. 127 | typeset -g POWERLEVEL9K_VCS_LOADING_TEXT= 128 | 129 | # Don't wait for Git status even for a millisecond, so that prompt always updates 130 | # asynchronously when Git state changes. 131 | typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0 132 | 133 | # Cyan ahead/behind arrows. 134 | typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan 135 | # Don't show remote branch, current tag or stashes. 136 | typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind) 137 | # Don't show the branch icon. 138 | typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= 139 | # When in detached HEAD state, show @commit where branch normally goes. 140 | typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@' 141 | # Don't show staged, unstaged, untracked indicators. 142 | typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON= 143 | # Show '*' when there are staged, unstaged or untracked files. 144 | typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*' 145 | # Show '⇣' if local branch is behind remote. 146 | typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣' 147 | # Show '⇡' if local branch is ahead of remote. 148 | typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡' 149 | # Don't show the number of commits next to the ahead/behind arrows. 150 | typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1 151 | # Remove space between '⇣' and '⇡' and all trailing spaces. 152 | typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }' 153 | 154 | # Grey current time. 155 | typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey 156 | # Format for the current time: 09:51:02. See `man 3 strftime`. 157 | typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' 158 | # If set to true, time will update when you hit enter. This way prompts for the past 159 | # commands will contain the start times of their commands rather than the end times of 160 | # their preceding commands. 161 | typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false 162 | 163 | # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt 164 | # when accepting a command line. Supported values: 165 | # 166 | # - off: Don't change prompt when accepting a command line. 167 | # - always: Trim down prompt when accepting a command line. 168 | # - same-dir: Trim down prompt when accepting a command line unless this is the first command 169 | # typed after changing current working directory. 170 | typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off 171 | 172 | # Instant prompt mode. 173 | # 174 | # - off: Disable instant prompt. Choose this if you've tried instant prompt and found 175 | # it incompatible with your zsh configuration files. 176 | # - quiet: Enable instant prompt and don't print warnings when detecting console output 177 | # during zsh initialization. Choose this if you've read and understood 178 | # https://github.com/romkatv/powerlevel10k#instant-prompt. 179 | # - verbose: Enable instant prompt and print a warning when detecting console output during 180 | # zsh initialization. Choose this if you've never tried instant prompt, haven't 181 | # seen the warning, or if you are unsure what this all means. 182 | typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose 183 | 184 | # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. 185 | # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload 186 | # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you 187 | # really need it. 188 | typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true 189 | 190 | # If p10k is already loaded, reload configuration. 191 | # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. 192 | (( ! $+functions[p10k] )) || p10k reload 193 | } 194 | 195 | # Tell `p10k configure` which file it should overwrite. 196 | typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} 197 | 198 | (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} 199 | 'builtin' 'unset' 'p10k_config_opts' 200 | -------------------------------------------------------------------------------- /.ideavimrc: -------------------------------------------------------------------------------- 1 | Plug 'easymotion/vim-easymotion' 2 | Plug 'preservim/nerdtree' 3 | 4 | let mapleader=" " 5 | let localmapleader=" " 6 | 7 | set timeoutlen=400 8 | 9 | set NERDTree 10 | set ideajoin 11 | " set multiple-cursors 12 | " set surround 13 | " set which-key 14 | " set notimeout 15 | set easymotion 16 | 17 | set clipboard+=unnamed 18 | set clipboard+=ideaput 19 | 20 | set showmode 21 | 22 | set relativenumber 23 | set number 24 | 25 | set ignorecase 26 | set smartcase 27 | set scrolloff=5 28 | 29 | set incsearch 30 | set hls 31 | 32 | let g:WhichKey_FontSize = 18 33 | let g:WhichKey_KeyColor = "#74c7ec" 34 | 35 | " Source ideavimrc 36 | nmap Z :source ~/.ideavimrc 37 | let g:WhichKeyDesc_source = "Z Source .ideavimrc" 38 | 39 | " Save 40 | nmap :w 41 | 42 | " Redo 43 | nmap U 44 | 45 | " Keep centered when jumping search results 46 | nmap n nzzzv 47 | 48 | " Re-select visual selection after indenting 49 | vnoremap < >gv 51 | 52 | " Fix yank, paste, delete with cipboard 53 | nnoremap yy "+yy 54 | vnoremap y "+y 55 | nnoremap p "+p 56 | vnoremap p "+p 57 | nnoremap P "+P 58 | vnoremap P "+P 59 | nnoremap dd "+dd 60 | vnoremap d "+d 61 | 62 | " Clear search highlighting 63 | nmap k :noh 64 | let g:WhichKeyDesc_clear_search = "k Clear search highlight" 65 | 66 | " Clear all notifications 67 | nmap K :action ClearAllNotifications 68 | let g:WhichKeyDesc_clear_notifications = "K Clear all notifications" 69 | 70 | " Show settings 71 | nmap C :action ShowSettings 72 | let g:WhichKeyDesc_show_settings = "C Show settings" 73 | 74 | " Splits 75 | nmap _ :action SplitVertically 76 | let g:WhichKeyDesc_split_vertically = "_ Split vertically" 77 | nmap - :action SplitHorizontally 78 | let g:WhichKeyDesc_split_horizontally = "- Split horizontally" 79 | nmap M :action MoveEditorToOppositeTabGroup 80 | let g:WhichKeyDesc_move_opposite = "M Move to opposite tab group" 81 | nmap h 82 | nmap j 83 | nmap k 84 | nmap l 85 | 86 | " Move lines up and down 87 | nmap :action MoveLineDown 88 | nmap :action MoveLineUp 89 | 90 | " Go to 91 | nmap f :action GotoFile 92 | let g:WhichKeyDesc_goto_file = "f Go to file" 93 | nmap c :action GotoClass 94 | let g:WhichKeyDesc_goto_class = "c Go to class" 95 | nmap b :action GotoSymbol 96 | let g:WhichKeyDesc_goto_symbol = "b Go to symbol" 97 | nmap D :action GotoDatabaseObject 98 | let g:WhichKeyDesc_goto_database = "D Go to database object" 99 | nmap a :action GotoAction 100 | vmap a :action GotoAction 101 | let g:WhichKeyDesc_goto_action = "a Go to action" 102 | vmap A :action SearchEverywhere 103 | let g:WhichKeyDesc_goto_all = "A Go to all" 104 | nmap i :action RecentFiles 105 | let g:WhichKeyDesc_goto_recent_files = "i Go to recent files" 106 | nmap I :action RecentChangedFiles 107 | let g:WhichKeyDesc_goto_recent_changed = "I Go to recent changed files" 108 | nmap m :action FileStructurePopup 109 | let g:WhichKeyDesc_goto_recent = "m Go to file member" 110 | 111 | " Find/replace 112 | nmap F :action FindInPath 113 | let g:WhichKeyDesc_find = "F Find in path" 114 | nmap R :action ReplaceInPath 115 | let g:WhichKeyDesc_replace = "R Replace in path" 116 | 117 | " Tool windows 118 | let g:WhichKeyDesc_windows = "e Tool windows" 119 | nmap :action HideAllWindows 120 | nmap :action JumpToLastWindow 121 | nmap ee :action JumpToLastWindow 122 | let g:WhichKeyDesc_window_commit = "ee Last window" 123 | nmap ec :action ActivateCommitToolWindow 124 | let g:WhichKeyDesc_window_commit = "ec Commit" 125 | nmap et :action ActivateTerminalToolWindow 126 | let g:WhichKeyDesc_window_terminal = "et Terminal" 127 | nmap es :action ActivateStructureToolWindow 128 | let g:WhichKeyDesc_window_structure = "es Structure" 129 | nmap ef :action ActivateFindToolWindow 130 | let g:WhichKeyDesc_window_find = "ef Find" 131 | nmap er :action ActivateRunToolWindow 132 | let g:WhichKeyDesc_window_run = "er Run" 133 | nmap ed :action ActivateDebugToolWindow 134 | let g:WhichKeyDesc_window_debug = "ed Debug" 135 | nmap eD :action ActivateDatabaseToolWindow 136 | let g:WhichKeyDesc_window_database = "eD Database" 137 | nmap eg :action ActivateVersionControlToolWindow 138 | let g:WhichKeyDesc_window_vcs = "eg Git" 139 | nmap ep :action ActivatePullRequestsToolWindow 140 | let g:WhichKeyDesc_window_pr = "ep Pull requests" 141 | nmap eb :action ActivateBookmarksToolWindow 142 | let g:WhichKeyDesc_window_bookmarks = "eb Bookmarks" 143 | nmap en :action ActivateNotificationsToolWindow 144 | let g:WhichKeyDesc_window_notification = "en Notifications" 145 | nmap en :action ActivateAIAssistantToolWindow 146 | let g:WhichKeyDesc_window_ai = "ea AI Assistant" 147 | 148 | " Close editors/tabs 149 | nmap qq :action CloseContent 150 | let g:WhichKeyDesc_close = "qq Close current" 151 | nmap qo :action CloseAllEditorsButActive 152 | let g:WhichKeyDesc_close_other = "qo Close all other" 153 | 154 | " Code 155 | nmap :action ShowIntentionActions 156 | let g:WhichKeyDesc_code = "g Code" 157 | nmap gd :action GotoDeclaration 158 | let g:WhichKeyDesc_code_declaration = "gd Go to declaration" 159 | nmap gu :action ShowUsages 160 | let g:WhichKeyDesc_code_show_usages = "gu Show usages" 161 | nmap gU :action FindUsages 162 | let g:WhichKeyDesc_code_find_usages = "gU Find usages" 163 | nmap gI :action GotoImplementation 164 | let g:WhichKeyDesc_code_implementation = "gI Go to implementation" 165 | nmap gG :action Generate 166 | let g:WhichKeyDesc_code_generate = "gG Generate" 167 | nmap gp :action ParameterInfo 168 | let g:WhichKeyDesc_code_parameters = "gp Parameter info" 169 | " nmap gI :action QuickImplementations 170 | " let g:WhichKeyDesc_code_quick_implementations = "gI Quick implementations" 171 | nmap gK :action QuickJavaDoc 172 | let g:WhichKeyDesc_code_quick_javadoc = "gK Quick documentation" 173 | nmap gJ :action EditorCodeBlockStart 174 | let g:WhichKeyDesc_code_block_start = "gJ Code block start" 175 | nmap gj :action EditorCodeBlockEnd 176 | let g:WhichKeyDesc_code_block_end = "gj Code block end" 177 | nmap go :action OptimizeImports 178 | let g:WhichKeyDesc_optimize_imports = "go Optimize imports" 179 | nmap gm :action ImplementMethods 180 | let g:WhichKeyDesc_code_implement_methods = "gm Implement methods" 181 | 182 | nmap ge :action ShowErrorDescription 183 | let g:WhichKeyDesc_code_error = "ge Show error description" 184 | 185 | vmap gr :action Refactorings.QuickListPopupAction 186 | nmap gr :action Refactorings.QuickListPopupAction 187 | let g:WhichKeyDesc_code_refactor = "gr Refactor" 188 | vmap rn :action RenameElement 189 | nmap rn :action RenameElement 190 | let g:WhichKeyDesc_code_refactor = "rn Rename" 191 | vmap gf :action ReformatCode 192 | nmap gf :action ReformatCode 193 | let g:WhichKeyDesc_code_reformat = "gf Reformat code" 194 | 195 | nmap gc :action CommentByLineComment 196 | vmap gc :action CommentByLineComment 197 | let g:WhichKeyDesc_code_line_comment = "gc Line comment" 198 | vmap gC :action CommentByBlockComment 199 | let g:WhichKeyDesc_code_block_comment = "gC Block comment" 200 | 201 | " Vcs 202 | let g:WhichKeyDesc_vcs = "v Git" 203 | nmap vn :action VcsShowNextChangeMarker 204 | let g:WhichKeyDesc_vcs_next_change = "vn Next change" 205 | nmap vp :action VcsShowPrevChangeMarker 206 | let g:WhichKeyDesc_vcs_prev_change = "vp Previous change" 207 | nmap vs :action VcsShowCurrentChangeMarker 208 | let g:WhichKeyDesc_vcs_current_change = "vs Show change" 209 | nmap vz :action Vcs.RollbackChangedLines 210 | let g:WhichKeyDesc_vcs_current_change_revert = "vz Revert change" 211 | 212 | nmap vy :action Vcs.QuickListPopupAction 213 | let g:WhichKeyDesc_vcs_quick = "vy Quick list" 214 | nmap va :action Annotate 215 | let g:WhichKeyDesc_vcs_annotate = "va Blame annotations" 216 | nmap vR :action Git.ResolveConflicts 217 | let g:WhichKeyDesc_vcs_conflict = "vR Resolve conflicts" 218 | nmap vr :action ChangesView.Refresh 219 | let g:WhichKeyDesc_vcs_refresh = "vr Refresh VCS changes" 220 | 221 | nmap vo :action Github.Open.In.Browser 222 | let g:WhichKeyDesc_vcs_github_browser = "vo Open on Github" 223 | 224 | " Easymotion 225 | nmap s :action AceWordStartAction 226 | nmap m :action AceLineIndentsAction 227 | " f{char} | (easymotion-f) | mapped to fn 228 | " F{char} | (easymotion-F) | mapped to Fn 229 | " t{char} | (easymotion-t) | mapped to tn 230 | " T{char} | (easymotion-T) | mapped to Tn 231 | 232 | " w | (easymotion-w) | 233 | " W | (easymotion-W) | 234 | " b | (easymotion-b) | 235 | " B | (easymotion-B) | 236 | " e | (easymotion-e) | 237 | " E | (easymotion-E) | 238 | " ge | (easymotion-ge | 239 | " gE | (easymotion-gE | 240 | " j | (easymotion-j) | 241 | " k | (easymotion-k) | 242 | " n | (easymotion-n) | 243 | " N | (easymotion-N) | 244 | " s | (easymotion-s) | mapped to sn 245 | 246 | " Diagnostics 247 | 248 | " Tests 249 | let g:WhichKeyDesc_test = "t Tests" 250 | nmap tn :action RunClass 251 | let g:WhichKeyDesc_test_run_class = "tr Run nearest" 252 | nmap tg :action GotoTest 253 | let g:WhichKeyDesc_test_go_to = "tg Go to test" 254 | nmap tt :action Rerun 255 | let g:WhichKeyDesc_test_rerun = "tt Rerun" 256 | nmap tf :action RerunFailedTests 257 | let g:WhichKeyDesc_test_rerun_failed = "tf Rerun failed" 258 | nmap tc :action ChooseRunConfiguration 259 | let g:WhichKeyDesc_test_choose = "tc Choose configuration" 260 | nmap ts :action Stop 261 | let g:WhichKeyDesc_test_choose = "ts Stop" 262 | 263 | " Nerdtree/files 264 | let g:WhichKeyDesc_files = "n Files" 265 | nmap nn :NERDTreeToggle 266 | let g:WhichKeyDesc_files_toggle = "nn Toggle tree" 267 | nmap nf :NERDTreeFind 268 | let g:WhichKeyDesc_files_toggle_show = "nf Toggle tree, show file" 269 | nmap nb :action ShowNavBar 270 | let g:WhichKeyDesc_files_nav = "nb Show nav bar" 271 | 272 | " String manipulation 273 | nmap S :action osmedile.intellij.stringmanip.PopupChoiceAction 274 | vmap S :action osmedile.intellij.stringmanip.PopupChoiceAction 275 | let g:WhichKeyDesc_string_manipulation = "S String manipulation" 276 | 277 | " Surround 278 | nmap u :action SurroundWith 279 | vmap u :action SurroundWith 280 | let g:WhichKeyDesc_surround = "u Surround with" 281 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | # See dunst(5) for all configuration options 2 | 3 | [global] 4 | ### Display ### 5 | 6 | # Which monitor should the notifications be displayed on. 7 | monitor = 0 8 | 9 | # Display notification on focused monitor. Possible modes are: 10 | # mouse: follow mouse pointer 11 | # keyboard: follow window with keyboard focus 12 | # none: don't follow anything 13 | # 14 | # "keyboard" needs a window manager that exports the 15 | # _NET_ACTIVE_WINDOW property. 16 | # This should be the case for almost all modern window managers. 17 | # 18 | # If this option is set to mouse or keyboard, the monitor option 19 | # will be ignored. 20 | follow = keyboard 21 | 22 | ### Geometry ### 23 | 24 | # dynamic width from 0 to 300 25 | # width = (0, 300) 26 | # constant width of 300 27 | width = (0, 600) 28 | 29 | # The maximum height of a single notification, excluding the frame. 30 | height = 600 31 | 32 | # Position the notification in the top right corner 33 | origin = bottom-right 34 | 35 | # Offset from the origin 36 | offset = 30x40 37 | 38 | # Scale factor. It is auto-detected if value is 0. 39 | scale = 0 40 | 41 | # Maximum number of notification (0 means no limit) 42 | notification_limit = 5 43 | 44 | ### Progress bar ### 45 | 46 | # Turn on the progess bar. It appears when a progress hint is passed with 47 | # for example dunstify -h int:value:12 48 | progress_bar = true 49 | 50 | # Set the progress bar height. This includes the frame, so make sure 51 | # it's at least twice as big as the frame width. 52 | progress_bar_height = 10 53 | 54 | # Set the frame width of the progress bar 55 | progress_bar_frame_width = 1 56 | 57 | # Set the minimum width for the progress bar 58 | progress_bar_min_width = 150 59 | 60 | # Set the maximum width for the progress bar 61 | progress_bar_max_width = 300 62 | 63 | 64 | # Show how many messages are currently hidden (because of 65 | # notification_limit). 66 | indicate_hidden = yes 67 | 68 | # The transparency of the window. Range: [0; 100]. 69 | # This option will only work if a compositing window manager is 70 | # present (e.g. xcompmgr, compiz, etc.). (X11 only) 71 | transparency = 16 72 | 73 | # Draw a line of "separator_height" pixel height between two 74 | # notifications. 75 | # Set to 0 to disable. 76 | separator_height = 2 77 | 78 | # Padding between text and separator. 79 | padding = 16 80 | 81 | # Horizontal padding. 82 | horizontal_padding = 16 83 | 84 | # Padding between text and icon. 85 | text_icon_padding = 0 86 | 87 | # Defines width in pixels of frame around the notification window. 88 | # Set to 0 to disable. 89 | frame_width = 1 90 | 91 | # Defines color of the frame around the notification window. 92 | frame_color = "#7f3fbf" 93 | 94 | # Define a color for the separator. 95 | # possible values are: 96 | # * auto: dunst tries to find a color fitting to the background; 97 | # * foreground: use the same color as the foreground; 98 | # * frame: use the same color as the frame; 99 | # * anything else will be interpreted as a X color. 100 | separator_color = auto 101 | 102 | # Sort messages by urgency. 103 | sort = yes 104 | 105 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 106 | # for longer than idle_threshold seconds. 107 | # Set to 0 to disable. 108 | # A client can set the 'transient' hint to bypass this. See the rules 109 | # section for how to disable this if necessary 110 | idle_threshold = 0 111 | 112 | ### Text ### 113 | 114 | font = JetBrainsMono NF 12 115 | 116 | # The spacing between lines. If the height is smaller than the 117 | # font height, it will get raised to the font height. 118 | line_height = 0 119 | 120 | # Possible values are: 121 | # full: Allow a small subset of html markup in notifications: 122 | # bold 123 | # italic 124 | # strikethrough 125 | # underline 126 | # 127 | # For a complete reference see 128 | # . 129 | # 130 | # strip: This setting is provided for compatibility with some broken 131 | # clients that send markup even though it's not enabled on the 132 | # server. Dunst will try to strip the markup but the parsing is 133 | # simplistic so using this option outside of matching rules for 134 | # specific applications *IS GREATLY DISCOURAGED*. 135 | # 136 | # no: Disable markup parsing, incoming notifications will be treated as 137 | # plain text. Dunst will not advertise that it has the body-markup 138 | # capability if this is set as a global setting. 139 | # 140 | # It's important to note that markup inside the format option will be parsed 141 | # regardless of what this is set to. 142 | markup = full 143 | 144 | # The format of the message. Possible variables are: 145 | # %a appname 146 | # %s summary 147 | # %b body 148 | # %i iconname (including its path) 149 | # %I iconname (without its path) 150 | # %p progress value if set ([ 0%] to [100%]) or nothing 151 | # %n progress value if set without any extra characters 152 | # %% Literal % 153 | # Markup is allowed 154 | format = "%s\n%b" 155 | 156 | # Alignment of message text. 157 | # Possible values are "left", "center" and "right". 158 | alignment = left 159 | 160 | # Vertical alignment of message text and icon. 161 | # Possible values are "top", "center" and "bottom". 162 | vertical_alignment = center 163 | 164 | # Show age of message if message is older than show_age_threshold 165 | # seconds. 166 | # Set to -1 to disable. 167 | show_age_threshold = 60 168 | 169 | # Specify where to make an ellipsis in long lines. 170 | # Possible values are "start", "middle" and "end". 171 | ellipsize = middle 172 | 173 | # Ignore newlines '\n' in notifications. 174 | ignore_newline = no 175 | 176 | # Stack together notifications with the same content 177 | stack_duplicates = true 178 | 179 | # Hide the count of stacked notifications with the same content 180 | hide_duplicate_count = true 181 | 182 | # Display indicators for URLs (U) and actions (A). 183 | show_indicators = yes 184 | 185 | ### Icons ### 186 | 187 | # Align icons left/right/off 188 | icon_position = left 189 | 190 | # Scale small icons up to this size, set to 0 to disable. Helpful 191 | # for e.g. small files or high-dpi screens. In case of conflict, 192 | # max_icon_size takes precedence over this. 193 | min_icon_size = 0 194 | 195 | # Scale larger icons down to this size, set to 0 to disable 196 | max_icon_size = 32 197 | 198 | # Paths to default icons. 199 | #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ 200 | icon_path = /usr/share/icons/Adwaita/16x16/status:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/apps/:/usr/share/pixmaps/ 201 | 202 | ### History ### 203 | 204 | # Should a notification popped up from history be sticky or timeout 205 | # as if it would normally do. 206 | sticky_history = false 207 | 208 | # Maximum amount of notifications kept in history 209 | history_length = 0 210 | 211 | ### Misc/Advanced ### 212 | 213 | # dmenu path. 214 | dmenu = /usr/bin/dmenu -p dunst: 215 | 216 | # Browser for opening urls in context menu. 217 | browser = /usr/bin/xdg-open 218 | 219 | # Always run rule-defined scripts, even if the notification is suppressed 220 | always_run_script = true 221 | 222 | # Define the title of the windows spawned by dunst 223 | title = Dunst 224 | 225 | # Define the class of the windows spawned by dunst 226 | class = Dunst 227 | 228 | # Define the corner radius of the notification window 229 | # in pixel size. If the radius is 0, you have no rounded 230 | # corners. 231 | # The radius will be automatically lowered if it exceeds half of the 232 | # notification height to avoid clipping text and/or icons. 233 | corner_radius = 7 234 | 235 | # Ignore the dbus closeNotification message. 236 | # Useful to enforce the timeout set by dunst configuration. Without this 237 | # parameter, an application may close the notification sent before the 238 | # user defined timeout. 239 | ignore_dbusclose = false 240 | 241 | ### Wayland ### 242 | # These settings are Wayland-specific. They have no effect when using X11 243 | 244 | # Uncomment this if you want to let notications appear under fullscreen 245 | # applications (default: overlay) 246 | # layer = top 247 | 248 | # Set this to true to use X11 output on Wayland. 249 | force_xwayland = false 250 | 251 | ### Legacy 252 | 253 | # Use the Xinerama extension instead of RandR for multi-monitor support. 254 | # This setting is provided for compatibility with older nVidia drivers that 255 | # do not support RandR and using it on systems that support RandR is highly 256 | # discouraged. 257 | # 258 | # By enabling this setting dunst will not be able to detect when a monitor 259 | # is connected or disconnected which might break follow mode if the screen 260 | # layout changes. 261 | force_xinerama = false 262 | 263 | ### mouse 264 | 265 | # Defines list of actions for each mouse event 266 | # Possible values are: 267 | # * none: Don't do anything. 268 | # * do_action: Invoke the action determined by the action_name rule. If there is no 269 | # such action, open the context menu. 270 | # * open_url: If the notification has exactly one url, open it. If there are multiple 271 | # ones, open the context menu. 272 | # * close_current: Close current notification. 273 | # * close_all: Close all notifications. 274 | # * context: Open context menu for the notification. 275 | # * context_all: Open context menu for all notifications. 276 | # These values can be strung together for each mouse event, and 277 | # will be executed in sequence. 278 | mouse_left_click = close_current 279 | mouse_middle_click = do_action, close_current 280 | mouse_right_click = close_all 281 | 282 | # Experimental features that may or may not work correctly. Do not expect them 283 | # to have a consistent behaviour across releases. 284 | [experimental] 285 | # Calculate the dpi to use on a per-monitor basis. 286 | # If this setting is enabled the Xft.dpi value will be ignored and instead 287 | # dunst will attempt to calculate an appropriate dpi value for each monitor 288 | # using the resolution and physical size. This might be useful in setups 289 | # where there are multiple screens with very different dpi values. 290 | per_monitor_dpi = false 291 | 292 | 293 | [urgency_low] 294 | # IMPORTANT: colors have to be defined in quotation marks. 295 | # Otherwise the "#" and following would be interpreted as a comment. 296 | background = "#28143c" 297 | foreground = "#ffffff" 298 | timeout = 5 299 | # Icon for notifications with low urgency, uncomment to enable 300 | icon = /usr/share/icons/Adwaita/16x16/status/dialog-information-symbolic.symbolic.png 301 | 302 | [urgency_normal] 303 | background = "#28143c" 304 | foreground = "#ffffff" 305 | timeout = 5 306 | # Icon for notifications with normal urgency, uncomment to enable 307 | icon = /usr/share/icons/Adwaita/16x16/status/dialog-question-symbolic.symbolic.png 308 | 309 | [urgency_critical] 310 | background = "#28143c" 311 | foreground = "#ffffff" 312 | frame_color = "#ff7f7f" 313 | timeout = 120 314 | # Icon for notifications with critical urgency, uncomment to enable 315 | icon = /usr/share/icons/Adwaita/16x16/status/dialog-warning-symbolic.symbolic.png 316 | 317 | # Every section that isn't one of the above is interpreted as a rules to 318 | # override settings for certain messages. 319 | # 320 | # Messages can be matched by 321 | # appname (discouraged, see desktop_entry) 322 | # body 323 | # category 324 | # desktop_entry 325 | # icon 326 | # match_transient 327 | # msg_urgency 328 | # stack_tag 329 | # summary 330 | # 331 | # and you can override the 332 | # background 333 | # foreground 334 | # format 335 | # frame_color 336 | # fullscreen 337 | # new_icon 338 | # set_stack_tag 339 | # set_transient 340 | # set_category 341 | # timeout 342 | # urgency 343 | # skip_display 344 | # history_ignore 345 | # action_name 346 | # word_wrap 347 | # ellipsize 348 | # alignment 349 | # 350 | # Shell-like globbing will get expanded. 351 | # 352 | # Instead of the appname filter, it's recommended to use the desktop_entry filter. 353 | # GLib based applications export their desktop-entry name. In comparison to the appname, 354 | # the desktop-entry won't get localized. 355 | # 356 | # SCRIPTING 357 | # You can specify a script that gets run when the rule matches by 358 | # setting the "script" option. 359 | # The script will be called as follows: 360 | # script appname summary body icon urgency 361 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 362 | # 363 | # NOTE: It might be helpful to run dunst -print in a terminal in order 364 | # to find fitting options for rules. 365 | 366 | # Disable the transient hint so that idle_threshold cannot be bypassed from the 367 | # client 368 | #[transient_disable] 369 | # match_transient = yes 370 | # set_transient = no 371 | # 372 | # Make the handling of transient notifications more strict by making them not 373 | # be placed in history. 374 | #[transient_history_ignore] 375 | # match_transient = yes 376 | # history_ignore = yes 377 | 378 | # fullscreen values 379 | # show: show the notifications, regardless if there is a fullscreen window opened 380 | # delay: displays the new notification, if there is no fullscreen window active 381 | # If the notification is already drawn, it won't get undrawn. 382 | # pushback: same as delay, but when switching into fullscreen, the notification will get 383 | # withdrawn from screen again and will get delayed like a new notification 384 | #[fullscreen_delay_everything] 385 | # fullscreen = delay 386 | #[fullscreen_show_critical] 387 | # msg_urgency = critical 388 | # fullscreen = show 389 | 390 | #[espeak] 391 | # summary = "*" 392 | # script = dunst_espeak.sh 393 | 394 | #[script-test] 395 | # summary = "*script*" 396 | # script = dunst_test.sh 397 | 398 | [ignore-sink] 399 | summary = "*New sink*" 400 | skip_display = true 401 | 402 | [ignore-source] 403 | summary = "*New source*" 404 | skip_display = true 405 | 406 | [ignore-ac-only] 407 | summary = "*AC only*" 408 | skip_display = true 409 | 410 | [ignore-galaxy-buds] 411 | summary = "*Galaxy Buds*" 412 | skip_display = true 413 | 414 | #[history-ignore] 415 | # # This notification will not be saved in history 416 | # summary = "foobar" 417 | # history_ignore = yes 418 | 419 | #[skip-display] 420 | # # This notification will not be displayed, but will be included in the history 421 | # summary = "foobar" 422 | # skip_display = yes 423 | 424 | #[signed_on] 425 | # appname = Pidgin 426 | # summary = "*signed on*" 427 | # urgency = low 428 | # 429 | #[signed_off] 430 | # appname = Pidgin 431 | # summary = *signed off* 432 | # urgency = low 433 | # 434 | #[says] 435 | # appname = Pidgin 436 | # summary = *says* 437 | # urgency = critical 438 | # 439 | #[twitter] 440 | # appname = Pidgin 441 | # summary = *twitter.com* 442 | # urgency = normal 443 | # 444 | [stack-volumes] 445 | appname = "some_volume_notifiers" 446 | set_stack_tag = "volume" 447 | # 448 | # vim: ft=cfg 449 | -------------------------------------------------------------------------------- /.config/picom.conf: -------------------------------------------------------------------------------- 1 | ################################# 2 | # Shadows # 3 | ################################# 4 | 5 | 6 | # Enabled client-side shadows on windows. Note desktop windows 7 | # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, 8 | # unless explicitly requested using the wintypes option. 9 | # 10 | # shadow = false 11 | shadow = true; 12 | 13 | # The blur radius for shadows, in pixels. (defaults to 12) 14 | # shadow-radius = 12 15 | shadow-radius = 7; 16 | 17 | # The opacity of shadows. (0.0 - 1.0, defaults to 0.75) 18 | # shadow-opacity = .75 19 | 20 | # The left offset for shadows, in pixels. (defaults to -15) 21 | # shadow-offset-x = -15 22 | shadow-offset-x = -7; 23 | 24 | # The top offset for shadows, in pixels. (defaults to -15) 25 | # shadow-offset-y = -15 26 | shadow-offset-y = -7; 27 | 28 | # Red color value of shadow (0.0 - 1.0, defaults to 0). 29 | # shadow-red = 0 30 | 31 | # Green color value of shadow (0.0 - 1.0, defaults to 0). 32 | # shadow-green = 0 33 | 34 | # Blue color value of shadow (0.0 - 1.0, defaults to 0). 35 | # shadow-blue = 0 36 | 37 | # Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue) 38 | # shadow-color = "#000000" 39 | 40 | # Specify a list of conditions of windows that should have no shadow. 41 | # 42 | # examples: 43 | # shadow-exclude = "n:e:Notification"; 44 | # 45 | # shadow-exclude = [] 46 | shadow-exclude = [ 47 | "name = 'Notification'", 48 | "class_g = 'Conky'", 49 | "class_g ?= 'Notify-osd'", 50 | "class_g = 'Cairo-clock'", 51 | "_GTK_FRAME_EXTENTS@:c" 52 | ]; 53 | 54 | # Specify a list of conditions of windows that should have no shadow painted over, such as a dock window. 55 | # clip-shadow-above = [] 56 | 57 | # Specify a X geometry that describes the region in which shadow should not 58 | # be painted in, such as a dock window region. Use 59 | # shadow-exclude-reg = "x10+0+0" 60 | # for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. 61 | # 62 | # shadow-exclude-reg = "" 63 | 64 | # Crop shadow of a window fully on a particular Xinerama screen to the screen. 65 | # xinerama-shadow-crop = false 66 | 67 | 68 | ################################# 69 | # Fading # 70 | ################################# 71 | 72 | 73 | # Fade windows in/out when opening/closing and when opacity changes, 74 | # unless no-fading-openclose is used. 75 | # fading = false 76 | fading = false; 77 | 78 | # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) 79 | # fade-in-step = 0.028 80 | fade-in-step = 0.03; 81 | 82 | # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) 83 | # fade-out-step = 0.03 84 | fade-out-step = 0.03; 85 | 86 | # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) 87 | # fade-delta = 10 88 | 89 | # Specify a list of conditions of windows that should not be faded. 90 | # fade-exclude = [] 91 | 92 | # Do not fade on window open/close. 93 | # no-fading-openclose = false 94 | 95 | # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. 96 | # no-fading-destroyed-argb = false 97 | 98 | 99 | ################################# 100 | # Transparency / Opacity # 101 | ################################# 102 | 103 | 104 | # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) 105 | # inactive-opacity = 1 106 | inactive-opacity = 1; 107 | 108 | # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) 109 | # frame-opacity = 1.0 110 | frame-opacity = 1; 111 | 112 | # Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows. 113 | # inactive-opacity-override = true 114 | inactive-opacity-override = false; 115 | 116 | # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) 117 | # active-opacity = 1.0 118 | 119 | # Dim inactive windows. (0.0 - 1.0, defaults to 0.0) 120 | # inactive-dim = 0.0 121 | 122 | # Specify a list of conditions of windows that should never be considered focused. 123 | # focus-exclude = [] 124 | focus-exclude = [ "class_g = 'Cairo-clock'" ]; 125 | 126 | # Use fixed inactive dim value, instead of adjusting according to window opacity. 127 | # inactive-dim-fixed = 1.0 128 | 129 | # Specify a list of opacity rules, in the format `PERCENT:PATTERN`, 130 | # like `50:name *= "Firefox"`. picom-trans is recommended over this. 131 | # Note we don't make any guarantee about possible conflicts with other 132 | # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. 133 | # example: 134 | # opacity-rule = [ "80:class_g = 'URxvt'" ]; 135 | # 136 | # opacity-rule = [] 137 | opacity-rule = [ 138 | "100:class_g = 'firefox'", 139 | "100:class_g = 'Spotify'", 140 | "100:_NET_WM_STATE@[0]:32a = '_NET_WM_STATE_FULLSCREEN'", 141 | "100:_NET_WM_STATE@[1]:32a = '_NET_WM_STATE_FULLSCREEN'", 142 | "100:_NET_WM_STATE@[2]:32a = '_NET_WM_STATE_FULLSCREEN'", 143 | "100:_NET_WM_STATE@[3]:32a = '_NET_WM_STATE_FULLSCREEN'", 144 | "100:_NET_WM_STATE@[4]:32a = '_NET_WM_STATE_FULLSCREEN'" 145 | ]; 146 | 147 | ################################# 148 | # Corners # 149 | ################################# 150 | 151 | # Sets the radius of rounded window corners. When > 0, the compositor will 152 | # round the corners of windows. Does not interact well with 153 | # `transparent-clipping`. 154 | corner-radius = 0 155 | 156 | # Exclude conditions for rounded corners. 157 | rounded-corners-exclude = [ 158 | "window_type = 'dock'", 159 | "window_type = 'desktop'" 160 | ]; 161 | 162 | 163 | ################################# 164 | # Background-Blurring # 165 | ################################# 166 | 167 | 168 | # Parameters for background blurring, see the *BLUR* section for more information. 169 | # blur-method = 170 | # blur-size = 12 171 | # 172 | # blur-deviation = false 173 | # 174 | # blur-strength = 5 175 | 176 | # Blur background of semi-transparent / ARGB windows. 177 | # Bad in performance, with driver-dependent behavior. 178 | # The name of the switch may change without prior notifications. 179 | # 180 | # blur-background = false 181 | 182 | # Blur background of windows when the window frame is not opaque. 183 | # Implies: 184 | # blur-background 185 | # Bad in performance, with driver-dependent behavior. The name may change. 186 | # 187 | # blur-background-frame = false 188 | 189 | 190 | # Use fixed blur strength rather than adjusting according to window opacity. 191 | # blur-background-fixed = false 192 | 193 | 194 | # Specify the blur convolution kernel, with the following format: 195 | # example: 196 | # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; 197 | # 198 | # blur-kern = "" 199 | blur-kern = "3x3box"; 200 | 201 | 202 | # Exclude conditions for background blur. 203 | # blur-background-exclude = [] 204 | blur-background-exclude = [ 205 | "window_type = 'dock'", 206 | "window_type = 'desktop'", 207 | "_GTK_FRAME_EXTENTS@:c" 208 | ]; 209 | 210 | ################################# 211 | # General Settings # 212 | ################################# 213 | 214 | # Enable remote control via D-Bus. See the man page for more details. 215 | # dbus = true 216 | 217 | # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. 218 | # daemon = false 219 | 220 | # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. 221 | # `xrender` is the default one. 222 | # 223 | # backend = "glx" 224 | backend = "xrender"; 225 | 226 | # Enable/disable VSync. 227 | # vsync = false 228 | vsync = true; 229 | 230 | # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. 231 | # dbus = false 232 | 233 | # Try to detect WM windows (a non-override-redirect window with no 234 | # child that has 'WM_STATE') and mark them as active. 235 | # 236 | # mark-wmwin-focused = false 237 | mark-wmwin-focused = true; 238 | 239 | # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. 240 | # mark-ovredir-focused = false 241 | mark-ovredir-focused = true; 242 | 243 | # Try to detect windows with rounded corners and don't consider them 244 | # shaped windows. The accuracy is not very high, unfortunately. 245 | # 246 | # detect-rounded-corners = false 247 | detect-rounded-corners = true; 248 | 249 | # Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers 250 | # not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. 251 | # 252 | # detect-client-opacity = false 253 | detect-client-opacity = true; 254 | 255 | # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, 256 | # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, 257 | # provided that the WM supports it. 258 | # 259 | # use-ewmh-active-win = false 260 | 261 | # Unredirect all windows if a full-screen opaque window is detected, 262 | # to maximize performance for full-screen windows. Known to cause flickering 263 | # when redirecting/unredirecting windows. 264 | # 265 | # unredir-if-possible = false 266 | 267 | # Delay before unredirecting the window, in milliseconds. Defaults to 0. 268 | # unredir-if-possible-delay = 0 269 | 270 | # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. 271 | # unredir-if-possible-exclude = [] 272 | 273 | # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows 274 | # in the same group focused at the same time. 275 | # 276 | # detect-transient = false 277 | detect-transient = true; 278 | 279 | # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same 280 | # group focused at the same time. This usually means windows from the same application 281 | # will be considered focused or unfocused at the same time. 282 | # 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too. 283 | # 284 | # detect-client-leader = false 285 | 286 | # Resize damaged region by a specific number of pixels. 287 | # A positive value enlarges it while a negative one shrinks it. 288 | # If the value is positive, those additional pixels will not be actually painted 289 | # to screen, only used in blur calculation, and such. (Due to technical limitations, 290 | # with use-damage, those pixels will still be incorrectly painted to screen.) 291 | # Primarily used to fix the line corruption issues of blur, 292 | # in which case you should use the blur radius value here 293 | # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, 294 | # with a 5x5 one you use `--resize-damage 2`, and so on). 295 | # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. 296 | # 297 | # resize-damage = 1 298 | 299 | # Specify a list of conditions of windows that should be painted with inverted color. 300 | # Resource-hogging, and is not well tested. 301 | # 302 | # invert-color-include = [] 303 | 304 | # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. 305 | # Might cause incorrect opacity when rendering transparent content (but never 306 | # practically happened) and may not work with blur-background. 307 | # My tests show a 15% performance boost. Recommended. 308 | # 309 | # glx-no-stencil = false 310 | 311 | # GLX backend: Avoid rebinding pixmap on window damage. 312 | # Probably could improve performance on rapid window content changes, 313 | # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). 314 | # Recommended if it works. 315 | # 316 | # glx-no-rebind-pixmap = false 317 | 318 | # Disable the use of damage information. 319 | # This cause the whole screen to be redrawn everytime, instead of the part of the screen 320 | # has actually changed. Potentially degrades the performance, but might fix some artifacts. 321 | # The opposing option is use-damage 322 | # 323 | # no-use-damage = false 324 | use-damage = true; 325 | 326 | # Use X Sync fence to sync clients' draw calls, to make sure all draw 327 | # calls are finished before picom starts drawing. Needed on nvidia-drivers 328 | # with GLX backend for some users. 329 | # 330 | # xrender-sync-fence = false 331 | 332 | # GLX backend: Use specified GLSL fragment shader for rendering window 333 | # contents. Read the man page for a detailed explanation of the interface. 334 | # 335 | # window-shader-fg = "default" 336 | 337 | # Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar 338 | # to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg. 339 | # 340 | # window-shader-fg-rule = [ 341 | # "my_shader.frag:window_type != 'dock'" 342 | # ] 343 | 344 | # Force all windows to be painted with blending. Useful if you 345 | # have a glx-fshader-win that could turn opaque pixels transparent. 346 | # 347 | # force-win-blend = false 348 | 349 | # Do not use EWMH to detect fullscreen windows. 350 | # Reverts to checking if a window is fullscreen based only on its size and coordinates. 351 | # 352 | # no-ewmh-fullscreen = false 353 | 354 | # Dimming bright windows so their brightness doesn't exceed this set value. 355 | # Brightness of a window is estimated by averaging all pixels in the window, 356 | # so this could comes with a performance hit. 357 | # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) 358 | # 359 | # max-brightness = 1.0 360 | 361 | # Make transparent windows clip other windows like non-transparent windows do, 362 | # instead of blending on top of them. 363 | # 364 | # transparent-clipping = false 365 | 366 | # Specify a list of conditions of windows that should never have transparent 367 | # clipping applied. Useful for screenshot tools, where you need to be able to 368 | # see through transparent parts of the window. 369 | # 370 | # transparent-clipping-exclude = [] 371 | 372 | # Set the log level. Possible values are: 373 | # "trace", "debug", "info", "warn", "error" 374 | # in increasing level of importance. Case doesn't matter. 375 | # If using the "TRACE" log level, it's better to log into a file 376 | # using *--log-file*, since it can generate a huge stream of logs. 377 | # 378 | # log-level = "debug" 379 | log-level = "warn"; 380 | 381 | # Set the log file. 382 | # If *--log-file* is never specified, logs will be written to stderr. 383 | # Otherwise, logs will to written to the given file, though some of the early 384 | # logs might still be written to the stderr. 385 | # When setting this option from the config file, it is recommended to use an absolute path. 386 | # 387 | # log-file = "/path/to/your/log/file" 388 | 389 | # Show all X errors (for debugging) 390 | # show-all-xerrors = false 391 | 392 | # Write process ID to a file. 393 | # write-pid-path = "/path/to/your/log/file" 394 | 395 | # Window type settings 396 | # 397 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: 398 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility", 399 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu", 400 | # "tooltip", "notification", "combo", and "dnd". 401 | # 402 | # Following per window-type options are available: :: 403 | # 404 | # fade, shadow::: 405 | # Controls window-type-specific shadow and fade settings. 406 | # 407 | # opacity::: 408 | # Controls default opacity of the window type. 409 | # 410 | # focus::: 411 | # Controls whether the window of this type is to be always considered focused. 412 | # (By default, all window types except "normal" and "dialog" has this on.) 413 | # 414 | # full-shadow::: 415 | # Controls whether shadow is drawn under the parts of the window that you 416 | # normally won't be able to see. Useful when the window has parts of it 417 | # transparent, and you want shadows in those areas. 418 | # 419 | # clip-shadow-above::: 420 | # Controls wether shadows that would have been drawn above the window should 421 | # be clipped. Useful for dock windows that should have no shadow painted on top. 422 | # 423 | # redir-ignore::: 424 | # Controls whether this type of windows should cause screen to become 425 | # redirected again after been unredirected. If you have unredir-if-possible 426 | # set, and doesn't want certain window to cause unnecessary screen redirection, 427 | # you can set this to `true`. 428 | # 429 | wintypes: 430 | { 431 | tooltip = { fade = true; shadow = true; opacity = 1; focus = true; full-shadow = false; }; 432 | dock = { shadow = false; clip-shadow-above = true; } 433 | dnd = { shadow = false; } 434 | popup_menu = { opacity = 1; } 435 | dropdown_menu = { opacity = 1; } 436 | }; 437 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.example.yml: -------------------------------------------------------------------------------- 1 | # Configuration for Alacritty, the GPU enhanced terminal emulator. 2 | 3 | # Import additional configuration files 4 | # 5 | # Imports are loaded in order, skipping all missing files, with the importing 6 | # file being loaded last. If a field is already present in a previous import, it 7 | # will be replaced. 8 | # 9 | # All imports must either be absolute paths starting with `/`, or paths relative 10 | # to the user's home directory starting with `~/`. 11 | #import: 12 | # - /path/to/alacritty.yml 13 | 14 | # Any items in the `env` entry below will be added as 15 | # environment variables. Some entries may override variables 16 | # set by alacritty itself. 17 | #env: 18 | # TERM variable 19 | # 20 | # This value is used to set the `$TERM` environment variable for 21 | # each instance of Alacritty. If it is not present, alacritty will 22 | # check the local terminfo database and use `alacritty` if it is 23 | # available, otherwise `xterm-256color` is used. 24 | #TERM: alacritty 25 | 26 | #window: 27 | # Window dimensions (changes require restart) 28 | # 29 | # Number of lines/columns (not pixels) in the terminal. Both lines and columns 30 | # must be non-zero for this to take effect. The number of columns must be at 31 | # least `2`, while using a value of `0` for columns and lines will fall back 32 | # to the window manager's recommended size 33 | #dimensions: 34 | # columns: 0 35 | # lines: 0 36 | 37 | # Window position (changes require restart) 38 | # 39 | # Specified in number of pixels. 40 | # If the position is not set, the window manager will handle the placement. 41 | #position: 42 | # x: 0 43 | # y: 0 44 | 45 | # Window padding (changes require restart) 46 | # 47 | # Blank space added around the window in pixels. This padding is scaled 48 | # by DPI and the specified value is always added at both opposing sides. 49 | #padding: 50 | # x: 0 51 | # y: 0 52 | 53 | # Spread additional padding evenly around the terminal content. 54 | #dynamic_padding: false 55 | 56 | # Window decorations 57 | # 58 | # Values for `decorations`: 59 | # - full: Borders and title bar 60 | # - none: Neither borders nor title bar 61 | # 62 | # Values for `decorations` (macOS only): 63 | # - transparent: Title bar, transparent background and title bar buttons 64 | # - buttonless: Title bar, transparent background and no title bar buttons 65 | #decorations: full 66 | 67 | # Background opacity 68 | # 69 | # Window opacity as a floating point number from `0.0` to `1.0`. 70 | # The value `0.0` is completely transparent and `1.0` is opaque. 71 | #opacity: 1.0 72 | 73 | # Startup Mode (changes require restart) 74 | # 75 | # Values for `startup_mode`: 76 | # - Windowed 77 | # - Maximized 78 | # - Fullscreen 79 | # 80 | # Values for `startup_mode` (macOS only): 81 | # - SimpleFullscreen 82 | #startup_mode: Windowed 83 | 84 | # Window title 85 | #title: Alacritty 86 | 87 | # Allow terminal applications to change Alacritty's window title. 88 | #dynamic_title: true 89 | 90 | # Window class (Linux/BSD only): 91 | #class: 92 | # Application instance name 93 | #instance: Alacritty 94 | # General application class 95 | #general: Alacritty 96 | 97 | # Decorations theme variant 98 | # 99 | # Override the variant of the System theme/GTK theme/Wayland client side 100 | # decorations. Commonly supported values are `Dark`, `Light`, and `None` for 101 | # auto pick-up. Set this to `None` to use the default theme variant. 102 | #decorations_theme_variant: None 103 | 104 | # Resize increments 105 | # 106 | # Prefer resizing window by discrete steps equal to cell dimensions. 107 | #resize_increments: false 108 | 109 | # Make `Option` key behave as `Alt` (macOS only): 110 | # - OnlyLeft 111 | # - OnlyRight 112 | # - Both 113 | # - None (default) 114 | #option_as_alt: None 115 | 116 | #scrolling: 117 | # Maximum number of lines in the scrollback buffer. 118 | # Specifying '0' will disable scrolling. 119 | #history: 10000 120 | 121 | # Scrolling distance multiplier. 122 | #multiplier: 3 123 | 124 | # Font configuration 125 | #font: 126 | # Normal (roman) font face 127 | #normal: 128 | # Font family 129 | # 130 | # Default: 131 | # - (macOS) Menlo 132 | # - (Linux/BSD) monospace 133 | # - (Windows) Consolas 134 | #family: monospace 135 | 136 | # The `style` can be specified to pick a specific face. 137 | #style: Regular 138 | 139 | # Bold font face 140 | #bold: 141 | # Font family 142 | # 143 | # If the bold family is not specified, it will fall back to the 144 | # value specified for the normal font. 145 | #family: monospace 146 | 147 | # The `style` can be specified to pick a specific face. 148 | #style: Bold 149 | 150 | # Italic font face 151 | #italic: 152 | # Font family 153 | # 154 | # If the italic family is not specified, it will fall back to the 155 | # value specified for the normal font. 156 | #family: monospace 157 | 158 | # The `style` can be specified to pick a specific face. 159 | #style: Italic 160 | 161 | # Bold italic font face 162 | #bold_italic: 163 | # Font family 164 | # 165 | # If the bold italic family is not specified, it will fall back to the 166 | # value specified for the normal font. 167 | #family: monospace 168 | 169 | # The `style` can be specified to pick a specific face. 170 | #style: Bold Italic 171 | 172 | # Point size 173 | #size: 11.0 174 | 175 | # Offset is the extra space around each character. `offset.y` can be thought 176 | # of as modifying the line spacing, and `offset.x` as modifying the letter 177 | # spacing. 178 | #offset: 179 | # x: 0 180 | # y: 0 181 | 182 | # Glyph offset determines the locations of the glyphs within their cells with 183 | # the default being at the bottom. Increasing `x` moves the glyph to the 184 | # right, increasing `y` moves the glyph upward. 185 | #glyph_offset: 186 | # x: 0 187 | # y: 0 188 | 189 | # Use built-in font for box drawing characters. 190 | # 191 | # If `true`, Alacritty will use a custom built-in font for box drawing 192 | # characters (Unicode points 2500 - 259f). 193 | # 194 | #builtin_box_drawing: true 195 | 196 | # If `true`, bold text is drawn using the bright color variants. 197 | #draw_bold_text_with_bright_colors: false 198 | 199 | # Colors (Tomorrow Night) 200 | #colors: 201 | # Default colors 202 | #primary: 203 | # background: '#1d1f21' 204 | # foreground: '#c5c8c6' 205 | 206 | # Bright and dim foreground colors 207 | # 208 | # The dimmed foreground color is calculated automatically if it is not 209 | # present. If the bright foreground color is not set, or 210 | # `draw_bold_text_with_bright_colors` is `false`, the normal foreground 211 | # color will be used. 212 | #dim_foreground: '#828482' 213 | #bright_foreground: '#eaeaea' 214 | 215 | # Cursor colors 216 | # 217 | # Colors which should be used to draw the terminal cursor. 218 | # 219 | # Allowed values are CellForeground/CellBackground, which reference the 220 | # affected cell, or hexadecimal colors like #ff00ff. 221 | #cursor: 222 | # text: CellBackground 223 | # cursor: CellForeground 224 | 225 | # Vi mode cursor colors 226 | # 227 | # Colors for the cursor when the vi mode is active. 228 | # 229 | # Allowed values are CellForeground/CellBackground, which reference the 230 | # affected cell, or hexadecimal colors like #ff00ff. 231 | #vi_mode_cursor: 232 | # text: CellBackground 233 | # cursor: CellForeground 234 | 235 | # Search colors 236 | # 237 | # Colors used for the search bar and match highlighting. 238 | #search: 239 | # Allowed values are CellForeground/CellBackground, which reference the 240 | # affected cell, or hexadecimal colors like #ff00ff. 241 | #matches: 242 | # foreground: '#000000' 243 | # background: '#ffffff' 244 | #focused_match: 245 | # foreground: '#ffffff' 246 | # background: '#000000' 247 | 248 | # Keyboard hints 249 | #hints: 250 | # First character in the hint label 251 | # 252 | # Allowed values are CellForeground/CellBackground, which reference the 253 | # affected cell, or hexadecimal colors like #ff00ff. 254 | #start: 255 | # foreground: '#1d1f21' 256 | # background: '#e9ff5e' 257 | 258 | # All characters after the first one in the hint label 259 | # 260 | # Allowed values are CellForeground/CellBackground, which reference the 261 | # affected cell, or hexadecimal colors like #ff00ff. 262 | #end: 263 | # foreground: '#e9ff5e' 264 | # background: '#1d1f21' 265 | 266 | # Line indicator 267 | # 268 | # Color used for the indicator displaying the position in history during 269 | # search and vi mode. 270 | # 271 | # By default, these will use the opposing primary color. 272 | #line_indicator: 273 | # foreground: None 274 | # background: None 275 | 276 | # Footer bar 277 | # 278 | # Color used for the footer bar on the bottom, used by search regex input, 279 | # hyperlink URI preview, etc. 280 | # 281 | #footer_bar: 282 | # background: '#c5c8c6' 283 | # foreground: '#1d1f21' 284 | 285 | # Selection colors 286 | # 287 | # Colors which should be used to draw the selection area. 288 | # 289 | # Allowed values are CellForeground/CellBackground, which reference the 290 | # affected cell, or hexadecimal colors like #ff00ff. 291 | #selection: 292 | # text: CellBackground 293 | # background: CellForeground 294 | 295 | # Normal colors 296 | #normal: 297 | # black: '#1d1f21' 298 | # red: '#cc6666' 299 | # green: '#b5bd68' 300 | # yellow: '#f0c674' 301 | # blue: '#81a2be' 302 | # magenta: '#b294bb' 303 | # cyan: '#8abeb7' 304 | # white: '#c5c8c6' 305 | 306 | # Bright colors 307 | #bright: 308 | # black: '#666666' 309 | # red: '#d54e53' 310 | # green: '#b9ca4a' 311 | # yellow: '#e7c547' 312 | # blue: '#7aa6da' 313 | # magenta: '#c397d8' 314 | # cyan: '#70c0b1' 315 | # white: '#eaeaea' 316 | 317 | # Dim colors 318 | # 319 | # If the dim colors are not set, they will be calculated automatically based 320 | # on the `normal` colors. 321 | #dim: 322 | # black: '#131415' 323 | # red: '#864343' 324 | # green: '#777c44' 325 | # yellow: '#9e824c' 326 | # blue: '#556a7d' 327 | # magenta: '#75617b' 328 | # cyan: '#5b7d78' 329 | # white: '#828482' 330 | 331 | # Indexed Colors 332 | # 333 | # The indexed colors include all colors from 16 to 256. 334 | # When these are not set, they're filled with sensible defaults. 335 | # 336 | # Example: 337 | # `- { index: 16, color: '#ff00ff' }` 338 | # 339 | #indexed_colors: [] 340 | 341 | # Transparent cell backgrounds 342 | # 343 | # Whether or not `window.opacity` applies to all cell backgrounds or only to 344 | # the default background. When set to `true` all cells will be transparent 345 | # regardless of their background color. 346 | #transparent_background_colors: false 347 | 348 | # Bell 349 | # 350 | # The bell is rung every time the BEL control character is received. 351 | #bell: 352 | # Visual Bell Animation 353 | # 354 | # Animation effect for flashing the screen when the visual bell is rung. 355 | # 356 | # Values for `animation`: 357 | # - Ease 358 | # - EaseOut 359 | # - EaseOutSine 360 | # - EaseOutQuad 361 | # - EaseOutCubic 362 | # - EaseOutQuart 363 | # - EaseOutQuint 364 | # - EaseOutExpo 365 | # - EaseOutCirc 366 | # - Linear 367 | #animation: EaseOutExpo 368 | 369 | # Duration of the visual bell flash in milliseconds. A `duration` of `0` will 370 | # disable the visual bell animation. 371 | #duration: 0 372 | 373 | # Visual bell animation color. 374 | #color: '#ffffff' 375 | 376 | # Bell Command 377 | # 378 | # This program is executed whenever the bell is rung. 379 | # 380 | # When set to `command: None`, no command will be executed. 381 | # 382 | # Example: 383 | # command: 384 | # program: notify-send 385 | # args: ["Hello, World!"] 386 | # 387 | #command: None 388 | 389 | #selection: 390 | # This string contains all characters that are used as separators for 391 | # "semantic words" in Alacritty. 392 | #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" 393 | 394 | # When set to `true`, selected text will be copied to the primary clipboard. 395 | #save_to_clipboard: false 396 | 397 | #cursor: 398 | # Cursor style 399 | #style: 400 | # Cursor shape 401 | # 402 | # Values for `shape`: 403 | # - ▇ Block 404 | # - _ Underline 405 | # - | Beam 406 | #shape: Block 407 | 408 | # Cursor blinking state 409 | # 410 | # Values for `blinking`: 411 | # - Never: Prevent the cursor from ever blinking 412 | # - Off: Disable blinking by default 413 | # - On: Enable blinking by default 414 | # - Always: Force the cursor to always blink 415 | #blinking: Off 416 | 417 | # Vi mode cursor style 418 | # 419 | # If the vi mode cursor style is `None` or not specified, it will fall back to 420 | # the style of the active value of the normal cursor. 421 | # 422 | # See `cursor.style` for available options. 423 | #vi_mode_style: None 424 | 425 | # Cursor blinking interval in milliseconds. 426 | #blink_interval: 750 427 | 428 | # Time after which cursor stops blinking, in seconds. 429 | # 430 | # Specifying '0' will disable timeout for blinking. 431 | #blink_timeout: 5 432 | 433 | # If this is `true`, the cursor will be rendered as a hollow box when the 434 | # window is not focused. 435 | #unfocused_hollow: true 436 | 437 | # Thickness of the cursor relative to the cell width as floating point number 438 | # from `0.0` to `1.0`. 439 | #thickness: 0.15 440 | 441 | # Live config reload (changes require restart) 442 | #live_config_reload: true 443 | 444 | # Shell 445 | # 446 | # You can set `shell.program` to the path of your favorite shell, e.g. 447 | # `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the 448 | # shell. 449 | # 450 | # Default: 451 | # - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset 452 | # - (Windows) powershell 453 | #shell: 454 | # program: /bin/bash 455 | # args: 456 | # - --login 457 | 458 | # Startup directory 459 | # 460 | # Directory the shell is started in. If this is unset, or `None`, the working 461 | # directory of the parent process will be used. 462 | #working_directory: None 463 | 464 | # Offer IPC using `alacritty msg` (unix only) 465 | #ipc_socket: true 466 | 467 | #mouse: 468 | # Click settings 469 | # 470 | # The `double_click` and `triple_click` settings control the time 471 | # alacritty should wait for accepting multiple clicks as one double 472 | # or triple click. 473 | #double_click: { threshold: 300 } 474 | #triple_click: { threshold: 300 } 475 | 476 | # If this is `true`, the cursor is temporarily hidden when typing. 477 | #hide_when_typing: false 478 | 479 | # Hints 480 | # 481 | # Terminal hints can be used to find text or hyperlink in the visible part of 482 | # the terminal and pipe it to other applications. 483 | #hints: 484 | # Keys used for the hint labels. 485 | #alphabet: "jfkdls;ahgurieowpq" 486 | 487 | # List with all available hints 488 | # 489 | # Each hint must have any of `regex` or `hyperlinks` field and either an 490 | # `action` or a `command` field. The fields `mouse`, `binding` and 491 | # `post_processing` are optional. 492 | # 493 | # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be 494 | # highlighted. 495 | # 496 | # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and 497 | # `mouse.mods` accept the same values as they do in the `key_bindings` section. 498 | # 499 | # The `mouse.enabled` field controls if the hint should be underlined while 500 | # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. 501 | # 502 | # If the `post_processing` field is set to `true`, heuristics will be used to 503 | # shorten the match if there are characters likely not to be part of the hint 504 | # (e.g. a trailing `.`). This is most useful for URIs and applies only to 505 | # `regex` matches. 506 | # 507 | # Values for `action`: 508 | # - Copy 509 | # Copy the hint's text to the clipboard. 510 | # - Paste 511 | # Paste the hint's text to the terminal or search. 512 | # - Select 513 | # Select the hint's text. 514 | # - MoveViModeCursor 515 | # Move the vi mode cursor to the beginning of the hint. 516 | #enabled: 517 | # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ 518 | # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" 519 | # hyperlinks: true 520 | # command: xdg-open 521 | # post_processing: true 522 | # mouse: 523 | # enabled: true 524 | # mods: None 525 | # binding: 526 | # key: U 527 | # mods: Control|Shift 528 | 529 | # Mouse bindings 530 | # 531 | # Mouse bindings are specified as a list of objects, much like the key 532 | # bindings further below. 533 | # 534 | # To trigger mouse bindings when an application running within Alacritty 535 | # captures the mouse, the `Shift` modifier is automatically added as a 536 | # requirement. 537 | # 538 | # Each mouse binding will specify a: 539 | # 540 | # - `mouse`: 541 | # 542 | # - Middle 543 | # - Left 544 | # - Right 545 | # - Numeric identifier such as `5` 546 | # 547 | # - `action` (see key bindings for actions not exclusive to mouse mode) 548 | # 549 | # - Mouse exclusive actions: 550 | # 551 | # - ExpandSelection 552 | # Expand the selection to the current mouse cursor location. 553 | # 554 | # And optionally: 555 | # 556 | # - `mods` (see key bindings) 557 | #mouse_bindings: 558 | # - { mouse: Right, action: ExpandSelection } 559 | # - { mouse: Right, mods: Control, action: ExpandSelection } 560 | # - { mouse: Middle, mode: ~Vi, action: PasteSelection } 561 | 562 | # Key bindings 563 | # 564 | # Key bindings are specified as a list of objects. For example, this is the 565 | # default paste binding: 566 | # 567 | # `- { key: V, mods: Control|Shift, action: Paste }` 568 | # 569 | # Each key binding will specify a: 570 | # 571 | # - `key`: Identifier of the key pressed 572 | # 573 | # - A-Z 574 | # - F1-F24 575 | # - Key0-Key9 576 | # 577 | # A full list with available key codes can be found here: 578 | # https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants 579 | # 580 | # Instead of using the name of the keys, the `key` field also supports using 581 | # the scancode of the desired key. Scancodes have to be specified as a 582 | # decimal number. This command will allow you to display the hex scancodes 583 | # for certain keys: 584 | # 585 | # `showkey --scancodes`. 586 | # 587 | # Then exactly one of: 588 | # 589 | # - `chars`: Send a byte sequence to the running application 590 | # 591 | # The `chars` field writes the specified string to the terminal. This makes 592 | # it possible to pass escape sequences. To find escape codes for bindings 593 | # like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside 594 | # of tmux. Note that applications use terminfo to map escape sequences back 595 | # to keys. It is therefore required to update the terminfo when changing an 596 | # escape sequence. 597 | # 598 | # - `action`: Execute a predefined action 599 | # 600 | # - ToggleViMode 601 | # - SearchForward 602 | # Start searching toward the right of the search origin. 603 | # - SearchBackward 604 | # Start searching toward the left of the search origin. 605 | # - Copy 606 | # - Paste 607 | # - IncreaseFontSize 608 | # - DecreaseFontSize 609 | # - ResetFontSize 610 | # - ScrollPageUp 611 | # - ScrollPageDown 612 | # - ScrollHalfPageUp 613 | # - ScrollHalfPageDown 614 | # - ScrollLineUp 615 | # - ScrollLineDown 616 | # - ScrollToTop 617 | # - ScrollToBottom 618 | # - ClearHistory 619 | # Remove the terminal's scrollback history. 620 | # - Hide 621 | # Hide the Alacritty window. 622 | # - Minimize 623 | # Minimize the Alacritty window. 624 | # - Quit 625 | # Quit Alacritty. 626 | # - ToggleFullscreen 627 | # - ToggleMaximized 628 | # - SpawnNewInstance 629 | # Spawn a new instance of Alacritty. 630 | # - CreateNewWindow 631 | # Create a new Alacritty window from the current process. 632 | # - ClearLogNotice 633 | # Clear Alacritty's UI warning and error notice. 634 | # - ClearSelection 635 | # Remove the active selection. 636 | # - ReceiveChar 637 | # - None 638 | # 639 | # - Vi mode exclusive actions: 640 | # 641 | # - Open 642 | # Perform the action of the first matching hint under the vi mode cursor 643 | # with `mouse.enabled` set to `true`. 644 | # - ToggleNormalSelection 645 | # - ToggleLineSelection 646 | # - ToggleBlockSelection 647 | # - ToggleSemanticSelection 648 | # Toggle semantic selection based on `selection.semantic_escape_chars`. 649 | # - CenterAroundViCursor 650 | # Center view around vi mode cursor 651 | # 652 | # - Vi mode exclusive cursor motion actions: 653 | # 654 | # - Up 655 | # One line up. 656 | # - Down 657 | # One line down. 658 | # - Left 659 | # One character left. 660 | # - Right 661 | # One character right. 662 | # - First 663 | # First column, or beginning of the line when already at the first column. 664 | # - Last 665 | # Last column, or beginning of the line when already at the last column. 666 | # - FirstOccupied 667 | # First non-empty cell in this terminal row, or first non-empty cell of 668 | # the line when already at the first cell of the row. 669 | # - High 670 | # Top of the screen. 671 | # - Middle 672 | # Center of the screen. 673 | # - Low 674 | # Bottom of the screen. 675 | # - SemanticLeft 676 | # Start of the previous semantically separated word. 677 | # - SemanticRight 678 | # Start of the next semantically separated word. 679 | # - SemanticLeftEnd 680 | # End of the previous semantically separated word. 681 | # - SemanticRightEnd 682 | # End of the next semantically separated word. 683 | # - WordLeft 684 | # Start of the previous whitespace separated word. 685 | # - WordRight 686 | # Start of the next whitespace separated word. 687 | # - WordLeftEnd 688 | # End of the previous whitespace separated word. 689 | # - WordRightEnd 690 | # End of the next whitespace separated word. 691 | # - Bracket 692 | # Character matching the bracket at the cursor's location. 693 | # - SearchNext 694 | # Beginning of the next match. 695 | # - SearchPrevious 696 | # Beginning of the previous match. 697 | # - SearchStart 698 | # Start of the match to the left of the vi mode cursor. 699 | # - SearchEnd 700 | # End of the match to the right of the vi mode cursor. 701 | # 702 | # - Search mode exclusive actions: 703 | # - SearchFocusNext 704 | # Move the focus to the next search match. 705 | # - SearchFocusPrevious 706 | # Move the focus to the previous search match. 707 | # - SearchConfirm 708 | # - SearchCancel 709 | # - SearchClear 710 | # Reset the search regex. 711 | # - SearchDeleteWord 712 | # Delete the last word in the search regex. 713 | # - SearchHistoryPrevious 714 | # Go to the previous regex in the search history. 715 | # - SearchHistoryNext 716 | # Go to the next regex in the search history. 717 | # 718 | # - macOS exclusive actions: 719 | # - ToggleSimpleFullscreen 720 | # Enter fullscreen without occupying another space. 721 | # 722 | # - Linux/BSD exclusive actions: 723 | # 724 | # - CopySelection 725 | # Copy from the selection buffer. 726 | # - PasteSelection 727 | # Paste from the selection buffer. 728 | # 729 | # - `command`: Fork and execute a specified command plus arguments 730 | # 731 | # The `command` field must be a map containing a `program` string and an 732 | # `args` array of command line parameter strings. For example: 733 | # `{ program: "alacritty", args: ["-e", "vttest"] }` 734 | # 735 | # And optionally: 736 | # 737 | # - `mods`: Key modifiers to filter binding actions 738 | # 739 | # - Command 740 | # - Control 741 | # - Option 742 | # - Super 743 | # - Shift 744 | # - Alt 745 | # 746 | # Multiple `mods` can be combined using `|` like this: 747 | # `mods: Control|Shift`. 748 | # Whitespace and capitalization are relevant and must match the example. 749 | # 750 | # - `mode`: Indicate a binding for only specific terminal reported modes 751 | # 752 | # This is mainly used to send applications the correct escape sequences 753 | # when in different modes. 754 | # 755 | # - AppCursor 756 | # - AppKeypad 757 | # - Search 758 | # - Alt 759 | # - Vi 760 | # 761 | # A `~` operator can be used before a mode to apply the binding whenever 762 | # the mode is *not* active, e.g. `~Alt`. 763 | # 764 | # Bindings are always filled by default, but will be replaced when a new 765 | # binding with the same triggers is defined. To unset a default binding, it can 766 | # be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for 767 | # a no-op if you do not wish to receive input characters for that binding. 768 | # 769 | # If the same trigger is assigned to multiple actions, all of them are executed 770 | # in the order they were defined in. 771 | #key_bindings: 772 | #- { key: Paste, action: Paste } 773 | #- { key: Copy, action: Copy } 774 | #- { key: L, mods: Control, action: ClearLogNotice } 775 | #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } 776 | #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp } 777 | #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } 778 | #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop } 779 | #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } 780 | 781 | # Vi Mode 782 | #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } 783 | #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } 784 | #- { key: Escape, mode: Vi|~Search, action: ClearSelection } 785 | #- { key: I, mode: Vi|~Search, action: ToggleViMode } 786 | #- { key: I, mode: Vi|~Search, action: ScrollToBottom } 787 | #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } 788 | #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } 789 | #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } 790 | #- { key: G, mode: Vi|~Search, action: ScrollToTop } 791 | #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } 792 | #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } 793 | #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } 794 | #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } 795 | #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } 796 | #- { key: Y, mode: Vi|~Search, action: Copy } 797 | #- { key: Y, mode: Vi|~Search, action: ClearSelection } 798 | #- { key: Copy, mode: Vi|~Search, action: ClearSelection } 799 | #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } 800 | #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } 801 | #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } 802 | #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } 803 | #- { key: Return, mode: Vi|~Search, action: Open } 804 | #- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor } 805 | #- { key: K, mode: Vi|~Search, action: Up } 806 | #- { key: J, mode: Vi|~Search, action: Down } 807 | #- { key: H, mode: Vi|~Search, action: Left } 808 | #- { key: L, mode: Vi|~Search, action: Right } 809 | #- { key: Up, mode: Vi|~Search, action: Up } 810 | #- { key: Down, mode: Vi|~Search, action: Down } 811 | #- { key: Left, mode: Vi|~Search, action: Left } 812 | #- { key: Right, mode: Vi|~Search, action: Right } 813 | #- { key: Key0, mode: Vi|~Search, action: First } 814 | #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } 815 | #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } 816 | #- { key: H, mods: Shift, mode: Vi|~Search, action: High } 817 | #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } 818 | #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } 819 | #- { key: B, mode: Vi|~Search, action: SemanticLeft } 820 | #- { key: W, mode: Vi|~Search, action: SemanticRight } 821 | #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } 822 | #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } 823 | #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } 824 | #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } 825 | #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } 826 | #- { key: Slash, mode: Vi|~Search, action: SearchForward } 827 | #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } 828 | #- { key: N, mode: Vi|~Search, action: SearchNext } 829 | #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } 830 | 831 | # Search Mode 832 | #- { key: Return, mode: Search|Vi, action: SearchConfirm } 833 | #- { key: Escape, mode: Search, action: SearchCancel } 834 | #- { key: C, mods: Control, mode: Search, action: SearchCancel } 835 | #- { key: U, mods: Control, mode: Search, action: SearchClear } 836 | #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } 837 | #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } 838 | #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } 839 | #- { key: Up, mode: Search, action: SearchHistoryPrevious } 840 | #- { key: Down, mode: Search, action: SearchHistoryNext } 841 | #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } 842 | #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } 843 | 844 | # (Windows, Linux, and BSD only) 845 | #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } 846 | #- { key: C, mods: Control|Shift, action: Copy } 847 | #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } 848 | #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } 849 | #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } 850 | #- { key: Insert, mods: Shift, action: PasteSelection } 851 | #- { key: Key0, mods: Control, action: ResetFontSize } 852 | #- { key: Equals, mods: Control, action: IncreaseFontSize } 853 | #- { key: Plus, mods: Control, action: IncreaseFontSize } 854 | #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } 855 | #- { key: Minus, mods: Control, action: DecreaseFontSize } 856 | #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } 857 | 858 | # (Windows only) 859 | #- { key: Return, mods: Alt, action: ToggleFullscreen } 860 | 861 | # (macOS only) 862 | #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } 863 | #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } 864 | #- { key: Key0, mods: Command, action: ResetFontSize } 865 | #- { key: Equals, mods: Command, action: IncreaseFontSize } 866 | #- { key: Plus, mods: Command, action: IncreaseFontSize } 867 | #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } 868 | #- { key: Minus, mods: Command, action: DecreaseFontSize } 869 | #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } 870 | #- { key: V, mods: Command, action: Paste } 871 | #- { key: C, mods: Command, action: Copy } 872 | #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } 873 | #- { key: H, mods: Command, action: Hide } 874 | #- { key: H, mods: Command|Alt, action: HideOtherApplications } 875 | #- { key: M, mods: Command, action: Minimize } 876 | #- { key: Q, mods: Command, action: Quit } 877 | #- { key: W, mods: Command, action: Quit } 878 | #- { key: N, mods: Command, action: CreateNewWindow } 879 | #- { key: F, mods: Command|Control, action: ToggleFullscreen } 880 | #- { key: F, mods: Command, mode: ~Search, action: SearchForward } 881 | #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } 882 | 883 | #debug: 884 | # Display the time it takes to redraw each frame. 885 | #render_timer: false 886 | 887 | # Keep the log file after quitting Alacritty. 888 | #persistent_logging: false 889 | 890 | # Log level 891 | # 892 | # Values for `log_level`: 893 | # - Off 894 | # - Error 895 | # - Warn 896 | # - Info 897 | # - Debug 898 | # - Trace 899 | #log_level: Warn 900 | 901 | # Renderer override. 902 | # - glsl3 903 | # - gles2 904 | # - gles2_pure 905 | #renderer: None 906 | 907 | # Print all received window events. 908 | #print_events: false 909 | 910 | # Highlight window damage information. 911 | #highlight_damage: false 912 | --------------------------------------------------------------------------------