Compare commits
54 Commits
wayland
...
6e20358ad6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e20358ad6 | ||
|
|
fc6f51343d | ||
|
|
0e396c05b2 | ||
|
|
dc7a0d0987 | ||
|
|
7711e4156f | ||
|
|
c793146ebb | ||
|
|
56bfec57ca | ||
|
|
009385e3fd | ||
|
|
bf00633d7c | ||
|
|
db782bb84a | ||
|
|
70b7da4461 | ||
|
|
4b1509acf7 | ||
|
|
457fa93727 | ||
|
|
414317c19f | ||
|
|
2e14989a23 | ||
|
|
1839f9e875 | ||
|
|
c80216989c | ||
|
|
7c620dba19 | ||
|
|
d1ee31378d | ||
|
|
bf33a8bbd7 | ||
|
|
42deab7c3e | ||
|
|
ed2c9d2b6a | ||
|
|
3e4baa2b63 | ||
|
|
1d937b9316 | ||
|
|
75de8dcadb | ||
|
|
04bc54a80c | ||
|
|
754aa9d191 | ||
|
|
9acf200418 | ||
|
|
90fa090890 | ||
|
|
07785f0f99 | ||
|
|
e89bb2627c | ||
|
|
161dc09e25 | ||
|
|
846b5541f9 | ||
|
|
6a03bc9198 | ||
|
|
85d13e762f | ||
|
|
a575826bb6 | ||
|
|
8561e961eb | ||
|
|
c7126a86ef | ||
|
|
1ea23f4510 | ||
|
|
274ec45f75 | ||
|
|
04bd67e289 | ||
|
|
ad83e5a63a | ||
|
|
9e70682bd3 | ||
|
|
7d2ffb2fc9 | ||
|
|
56af90de63 | ||
|
|
c8566553cf | ||
|
|
37e092c031 | ||
|
|
ea7b586c3c | ||
|
|
b1a91911c8 | ||
|
|
a2645ca3e3 | ||
|
|
79deef489a | ||
|
|
909b6423e0 | ||
|
|
485841b483 | ||
|
|
1591397b9c |
32
README.md
32
README.md
@@ -11,8 +11,9 @@ Each directory in this repository corresponds to a specific application or tool,
|
|||||||
> Example usage (from the repository root):
|
> Example usage (from the repository root):
|
||||||
>
|
>
|
||||||
> ```bash
|
> ```bash
|
||||||
> stow nvim
|
> stow bash
|
||||||
> stow zsh
|
> stow i3
|
||||||
|
> stow doom
|
||||||
> ```
|
> ```
|
||||||
|
|
||||||
### 🧩 Included Tools & Configurations
|
### 🧩 Included Tools & Configurations
|
||||||
@@ -20,34 +21,31 @@ Each directory in this repository corresponds to a specific application or tool,
|
|||||||
This repository contains my configuration files for the following tools:
|
This repository contains my configuration files for the following tools:
|
||||||
|
|
||||||
- **Shells & Prompt**
|
- **Shells & Prompt**
|
||||||
- `zsh` + `starship`
|
- `bash` (Oh My Bash)
|
||||||
|
- `starship`
|
||||||
- **Terminal Emulators & Multiplexer**
|
- **Terminal Emulators & Multiplexer**
|
||||||
- `alacritty`
|
- `alacritty`
|
||||||
- `foot`
|
|
||||||
- `tmux`
|
- `tmux`
|
||||||
- **Editors & CLI Tools**
|
- **Editors & CLI Tools**
|
||||||
- `neovim` (with LazyVim)
|
- `doom` (Doom Emacs config)
|
||||||
- `doom emacs`
|
- `emacs` (Custom config)
|
||||||
- `git`
|
- `git`
|
||||||
- `lazygit`
|
|
||||||
- **X11 Environment**
|
- **X11 Environment**
|
||||||
- `rofi` (launcher)
|
- `i3` (Window Manager)
|
||||||
- `polybar` (status bar)
|
|
||||||
- `dunst` (notification daemon)
|
|
||||||
- `i3` (window manager)
|
|
||||||
- `picom` (X11 compositor)
|
- `picom` (X11 compositor)
|
||||||
- **Wayland Environment**
|
- `polybar` (status bar)
|
||||||
- `fuzzel` (launcher)
|
- `rofi` (launcher)
|
||||||
- `waybar` (status bar)
|
- `dunst` (notification daemon)
|
||||||
|
- **Wayland Environment**
|
||||||
|
- `sway` (Window Manager)
|
||||||
|
- `waybar` (status bar)
|
||||||
|
- `rofi` (launcher)
|
||||||
- `dunst` (notification daemon)
|
- `dunst` (notification daemon)
|
||||||
- `sway` (window manager)
|
|
||||||
- **Utilities**
|
- **Utilities**
|
||||||
- `fastfetch`
|
- `fastfetch`
|
||||||
- `zoxide`
|
- `zoxide`
|
||||||
- `mpv`
|
|
||||||
- `yt-dlp`
|
- `yt-dlp`
|
||||||
- `flameshot`
|
- `flameshot`
|
||||||
- `newsboat`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
33
bash/.bashrc
33
bash/.bashrc
@@ -1,7 +1,7 @@
|
|||||||
# Enable the subsequent settings only in interactive sessions
|
# Enable the subsequent settings only in interactive sessions
|
||||||
case $- in
|
case $- in
|
||||||
*i*) ;;
|
*i*) ;;
|
||||||
*) return;;
|
*) return ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Path to your oh-my-bash installation.
|
# Path to your oh-my-bash installation.
|
||||||
@@ -9,7 +9,7 @@ export OSH='/home/fscotto/.oh-my-bash'
|
|||||||
|
|
||||||
# Set name of the theme to load. Optionally, if you set this to "random"
|
# Set name of the theme to load. Optionally, if you set this to "random"
|
||||||
# it'll load a random theme each time that oh-my-bash is loaded.
|
# it'll load a random theme each time that oh-my-bash is loaded.
|
||||||
OSH_THEME="robbyrussell"
|
# OSH_THEME="robbyrussell"
|
||||||
|
|
||||||
# If you set OSH_THEME to "random", you can ignore themes you don't like.
|
# If you set OSH_THEME to "random", you can ignore themes you don't like.
|
||||||
# OMB_THEME_RANDOM_IGNORED=("powerbash10k" "wanelo")
|
# OMB_THEME_RANDOM_IGNORED=("powerbash10k" "wanelo")
|
||||||
@@ -164,8 +164,27 @@ source "$OSH"/oh-my-bash.sh
|
|||||||
# Set personal aliases, overriding those provided by oh-my-bash libs,
|
# Set personal aliases, overriding those provided by oh-my-bash libs,
|
||||||
# plugins, and themes. Aliases can be placed here, though oh-my-bash
|
# plugins, and themes. Aliases can be placed here, though oh-my-bash
|
||||||
# users are encouraged to define aliases within the OSH_CUSTOM folder.
|
# users are encouraged to define aliases within the OSH_CUSTOM folder.
|
||||||
# For a full list of active aliases, run `alias`.
|
# For a full list of active aliases, run `
|
||||||
#
|
|
||||||
# Example aliases
|
alias ls='ls --color=auto --group-directories-first'
|
||||||
# alias bashconfig="mate ~/.bashrc"
|
|
||||||
# alias ohmybash="mate ~/.oh-my-bash"
|
# Replace grep command tool
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias egrep='grep -E'
|
||||||
|
alias fgrep='grep -F'
|
||||||
|
|
||||||
|
# Other aliases
|
||||||
|
alias paths='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
|
||||||
|
alias userlist="cut -d: -f1 /etc/passwd | sort"
|
||||||
|
alias ip='ip -color'
|
||||||
|
alias stow='stow -d $DOTFILES '
|
||||||
|
|
||||||
|
# User specific aliases and functions
|
||||||
|
if [ -d ~/.bashrc.d ]; then
|
||||||
|
for rc in ~/.bashrc.d/*; do
|
||||||
|
if [ -f "$rc" ]; then
|
||||||
|
. "$rc"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
unset rc
|
||||||
|
|||||||
5
bash/.bashrc.d/homebrew.sh
Executable file
5
bash/.bashrc.d/homebrew.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if command -v brew > /dev/null 2>&1; then
|
||||||
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
||||||
|
fi
|
||||||
6
bash/.bashrc.d/java.sh
Executable file
6
bash/.bashrc.d/java.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if command -v java > /dev/null 2>&1; then
|
||||||
|
JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))"
|
||||||
|
export JAVA_HOME
|
||||||
|
fi
|
||||||
6
bash/.bashrc.d/mise.sh
Executable file
6
bash/.bashrc.d/mise.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# Load Mise en dev
|
||||||
|
if command -v mise > /dev/null 2>&1; then
|
||||||
|
eval "$(mise activate bash)"
|
||||||
|
fi
|
||||||
6
bash/.bashrc.d/starship.sh
Normal file
6
bash/.bashrc.d/starship.sh
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Starship prompt
|
||||||
|
if command -v starship >/dev/null 2>&1; then
|
||||||
|
eval "$(starship init bash)"
|
||||||
|
fi
|
||||||
@@ -1,15 +1,3 @@
|
|||||||
function appendpath() {
|
|
||||||
local location="${1}"
|
|
||||||
case ":$PATH:" in
|
|
||||||
*":$location:"*) ;;
|
|
||||||
*) export PATH="$PATH:$location" ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
appendpath "$HOME/.local/bin"
|
|
||||||
appendpath "$HOME/.config/emacs/bin"
|
|
||||||
unset appendpath
|
|
||||||
|
|
||||||
# XDG variables
|
# XDG variables
|
||||||
export XDG_CONFIG_HOME=${HOME}/.config
|
export XDG_CONFIG_HOME=${HOME}/.config
|
||||||
export XDG_DATA_HOME=${HOME}/.local/share
|
export XDG_DATA_HOME=${HOME}/.local/share
|
||||||
@@ -21,33 +9,45 @@ export GTK2_RC_FILES=${XDG_CONFIG_HOME}/gtk-2.0/gtkrc-2.0
|
|||||||
|
|
||||||
# Enable QT apps to have gtk theme
|
# Enable QT apps to have gtk theme
|
||||||
export QT_QPA_PLATFORMTHEME=qt5ct
|
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||||
|
export QT_STYLE_OVERRIDE=kvantum
|
||||||
|
|
||||||
# Make Qt apps honour DPI settings.
|
# Make Qt apps honour DPI settings.
|
||||||
export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
||||||
|
|
||||||
export ZSH_HOME="$HOME/.zsh"
|
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
export EDITOR=nvim
|
export EDITOR=nano
|
||||||
export HELPDIR=/usr/share/zsh/"${ZSH_VERSION}"/help
|
|
||||||
|
|
||||||
# SSH socket
|
# SSH socket
|
||||||
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
|
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
|
||||||
|
|
||||||
export FZF_DEFAULT_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git"
|
# export FZF_DEFAULT_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
|
||||||
export FZF_CTRL_T_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git"
|
# export FZF_CTRL_T_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
|
||||||
export FZF_ALT_C_COMMAND="fd --hidden --type directory --strip-cwd-prefix --exclude .git"
|
# export FZF_ALT_C_COMMAND="fdfind --hidden --type directory --strip-cwd-prefix --exclude .git"
|
||||||
# Export Catppuccin Mocha theme for FZF
|
# # Export Catppuccin Mocha theme for FZF
|
||||||
export FZF_DEFAULT_OPTS=" \
|
# export FZF_DEFAULT_OPTS=" \
|
||||||
--height 60% --layout=reverse --border \
|
# --height 60% --layout=reverse --border \
|
||||||
--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
|
# --color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
|
||||||
--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
|
# --color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
|
||||||
--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
|
# --color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
|
||||||
--color=selected-bg:#45475A \
|
# --color=selected-bg:#45475A \
|
||||||
--color=border:#313244,label:#CDD6F4"
|
# --color=border:#313244,label:#CDD6F4"
|
||||||
export FZF_TMUX_OPTS=" -p90%,70%"
|
# export FZF_TMUX_OPTS=" -p90%,70%"
|
||||||
export VIRTUAL_ENV_DISABLE_PROMPT=1
|
export VIRTUAL_ENV_DISABLE_PROMPT=1
|
||||||
|
|
||||||
source "$HOME/.profile.d/mise.sh"
|
# Export Golang enviroments
|
||||||
source "$HOME/.profile.d/golang.sh"
|
export GOPATH="$HOME/.local/share/Go"
|
||||||
source "$HOME/.profile.d/java.sh"
|
export GOBIN="$GOPATH/bin"
|
||||||
|
|
||||||
|
appendpath() {
|
||||||
|
local location="${1}"
|
||||||
|
case ":$PATH:" in
|
||||||
|
*":$location:"*) ;;
|
||||||
|
*) export PATH="$PATH:$location" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
appendpath "/home/linuxbrew/.linuxbrew/bin"
|
||||||
|
appendpath "$HOME/.local/bin"
|
||||||
|
appendpath "$GOBIN"
|
||||||
|
appendpath "$HOME/.cargo/bin"
|
||||||
|
unset appendpath
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if command -v go > /dev/null 2>&1; then
|
|
||||||
export GOPATH="$HOME/.local/share/Go"
|
|
||||||
export GOBIN="$GOPATH/bin"
|
|
||||||
fi
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if command -v java > /dev/null 2>&1; then
|
|
||||||
export JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))"
|
|
||||||
fi
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if command -v mise > /dev/null 2>&1; then
|
|
||||||
eval "$(mise activate zsh)"
|
|
||||||
fi
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
|
|
||||||
tmux attach-session -t default || tmux new-session -s default
|
|
||||||
fi
|
|
||||||
@@ -21,18 +21,21 @@
|
|||||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||||
;; accept. For example:
|
;; accept. For example:
|
||||||
;;
|
;;
|
||||||
(setq doom-font (font-spec :family "0xProto Nerd Font" :size 18 :weight 'regular))
|
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||||
|
;;
|
||||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||||
|
(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 16 :weight 'regular)
|
||||||
|
doom-big-font (font-spec :family "FiraCode Nerd Font" :size 18 :weight 'bold)
|
||||||
|
doom-variable-pitch-font (font-spec :family "Noto Sans" :size 16 :weight 'regular))
|
||||||
|
|
||||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
;; `load-theme' function. This is the default:
|
;; `load-theme' function. This is the default:
|
||||||
(setq doom-theme 'catppuccin)
|
(setq doom-theme 'catppuccin)
|
||||||
(setq catppuccin-flavor 'mocha) ;; or 'latte, 'macchiato, or 'mocha
|
|
||||||
|
|
||||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
@@ -40,8 +43,7 @@
|
|||||||
|
|
||||||
;; If you use `org' and don't want your org files in the default location below,
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
;; change `org-directory'. It must be set before org loads!
|
;; change `org-directory'. It must be set before org loads!
|
||||||
(setq org-directory "~/Documents")
|
(setq org-directory "~/Remotes/pCloud/Org")
|
||||||
|
|
||||||
|
|
||||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||||
@@ -74,3 +76,81 @@
|
|||||||
;;
|
;;
|
||||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
;; they are implemented.
|
;; they are implemented.
|
||||||
|
|
||||||
|
;; Maximize each Emacs frames at startup
|
||||||
|
(add-to-list 'default-frame-alist '(fullscreen . maximized))
|
||||||
|
|
||||||
|
(after! mu4e
|
||||||
|
|
||||||
|
;; This is set to 't' to avoid mail syncing issues when using mbsync
|
||||||
|
(setq mu4e-change-filenames-when-moving t)
|
||||||
|
|
||||||
|
;; Refresh mail using isync every 10 minutes
|
||||||
|
(setq mu4e-update-interval (* 10 60))
|
||||||
|
(setq mu4e-get-mail-command "~/.config/doom/scripts/email_sync.sh")
|
||||||
|
(setq mu4e-maildir "~/Maildir")
|
||||||
|
|
||||||
|
;; Configure email accounts
|
||||||
|
(setq mu4e-contexts
|
||||||
|
(list
|
||||||
|
;; Protonmail Account
|
||||||
|
(make-mu4e-context
|
||||||
|
:name "Protonmail"
|
||||||
|
:match-func
|
||||||
|
(lambda (msg)
|
||||||
|
(when msg
|
||||||
|
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
|
||||||
|
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
|
||||||
|
(user-full-name . "Fabio Scotto di Santolo")
|
||||||
|
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
|
||||||
|
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
|
||||||
|
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
|
||||||
|
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
|
||||||
|
|
||||||
|
;; iCloud Account
|
||||||
|
(make-mu4e-context
|
||||||
|
:name "iCloud Mail"
|
||||||
|
:match-func
|
||||||
|
(lambda (msg)
|
||||||
|
(when msg
|
||||||
|
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
|
||||||
|
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
|
||||||
|
(user-full-name . "Fabio Scotto di Santolo")
|
||||||
|
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
|
||||||
|
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
|
||||||
|
(mu4e-refile-folder . "/iCloudAccount/INBOX")
|
||||||
|
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
|
||||||
|
|
||||||
|
;; Configure SMTP client for send emails
|
||||||
|
(setq sendmail-program "/usr/bin/msmtp"
|
||||||
|
send-mail-function 'sendmail-send-it
|
||||||
|
message-sendmail-f-is-evil t
|
||||||
|
message-sendmail-extra-arguments '("--read-envelope-from")
|
||||||
|
message-send-mail-function 'message-send-mail-with-sendmail))
|
||||||
|
|
||||||
|
;; Configure Elfeed
|
||||||
|
(after! elfeed
|
||||||
|
(setq rmh-elfeed-org-files '("~/.config/doom/elfeed.org"))
|
||||||
|
(setq elfeed-db-directory "~/.elfeed")
|
||||||
|
(setq elfeed-enclosure-default-dir "~/Downloads/")
|
||||||
|
(setq elfeed-sort-order 'descending)
|
||||||
|
(setq elfeed-search-filter "6-months-ago +unread")
|
||||||
|
|
||||||
|
;; Key bindings
|
||||||
|
(map! :map elfeed-search-mode-map
|
||||||
|
:n "d" #'elfeed-download-current-entry
|
||||||
|
:n "O" #'elfeed-search-browse-url)
|
||||||
|
|
||||||
|
;; Update hourly
|
||||||
|
(run-at-time nil (* 60 60) #'elfeed-update))
|
||||||
|
|
||||||
|
(after! elfeed-tube
|
||||||
|
(elfeed-tube-setup))
|
||||||
|
|
||||||
|
;; PDF config
|
||||||
|
(after! pdf-tools
|
||||||
|
:defer t
|
||||||
|
:commands (pdf-loader-install)
|
||||||
|
:mode "\\.pdf\\'"
|
||||||
|
:init (pdf-loader-install)
|
||||||
|
:config (add-to-list 'revert-without-query ".pdf"))
|
||||||
|
|||||||
21
doom/.config/doom/custom.el
Normal file
21
doom/.config/doom/custom.el
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(elfeed-feeds
|
||||||
|
'("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" "https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg"
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg" youtube programming)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg" youtube programming)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw" youtube foss)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" youtube programming)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw" youtube fashion)
|
||||||
|
("https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg" youtube linux)
|
||||||
|
("https://blog.linuxmint.com/?feed=rss2" news linuxmint)
|
||||||
|
("https://feeds.feedburner.com/TheHackersNews" programming security))))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
)
|
||||||
16
doom/.config/doom/elfeed.org
Normal file
16
doom/.config/doom/elfeed.org
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#+TITLE: RSS Urls
|
||||||
|
#+AUTHOR: Fabio Scotto di Santolo
|
||||||
|
#+DATE: <2025-10-25 Sat>
|
||||||
|
|
||||||
|
* root :elfeed:
|
||||||
|
** Programming :programming:
|
||||||
|
*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security:
|
||||||
|
** FOSS News :news:
|
||||||
|
*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint:
|
||||||
|
** Youtube :youtube:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming:
|
||||||
@@ -22,18 +22,18 @@
|
|||||||
|
|
||||||
:completion
|
:completion
|
||||||
company ; the ultimate code completion backend
|
company ; the ultimate code completion backend
|
||||||
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||||
;;helm ; the *other* search engine for love and life
|
;;helm ; the *other* search engine for love and life
|
||||||
;;ido ; the other *other* search engine...
|
;;ido ; the other *other* search engine...
|
||||||
;;ivy ; a search engine for love and life
|
ivy ; a search engine for love and life
|
||||||
vertico ; the search engine of the future
|
;;vertico ; the search engine of the future
|
||||||
|
|
||||||
:ui
|
:ui
|
||||||
;;deft ; notational velocity for Emacs
|
;;deft ; notational velocity for Emacs
|
||||||
doom ; what makes DOOM look the way it does
|
doom ; what makes DOOM look the way it does
|
||||||
doom-dashboard ; a nifty splash screen for Emacs
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
;;(emoji +unicode) ; 🙂
|
(emoji +unicode) ; 🙂
|
||||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
;;indent-guides ; highlighted indent columns
|
;;indent-guides ; highlighted indent columns
|
||||||
ligatures ; ligatures and symbols to make your code pretty again
|
ligatures ; ligatures and symbols to make your code pretty again
|
||||||
@@ -54,37 +54,39 @@
|
|||||||
;;zen ; distraction-free coding or writing
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
:editor
|
:editor
|
||||||
(evil +everywhere); come to the dark side, we have cookies
|
;;(evil +everywhere); come to the dark side, we have cookies
|
||||||
file-templates ; auto-snippets for empty files
|
file-templates ; auto-snippets for empty files
|
||||||
fold ; (nigh) universal code folding
|
fold ; (nigh) universal code folding
|
||||||
;;(format +onsave) ; automated prettiness
|
;;(format +onsave) ; automated prettiness
|
||||||
;;god ; run Emacs commands without modifier keys
|
;;god ; run Emacs commands without modifier keys
|
||||||
;;lispy ; vim for lisp, for people who don't like vim
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
;;multiple-cursors ; editing in many places at once
|
multiple-cursors ; editing in many places at once
|
||||||
;;objed ; text object editing for the innocent
|
;;objed ; text object editing for the innocent
|
||||||
;;parinfer ; turn lisp into python, sort of
|
;;parinfer ; turn lisp into python, sort of
|
||||||
;;rotate-text ; cycle region at point between text candidates
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
snippets ; my elves. They type so I don't have to
|
snippets ; my elves. They type so I don't have to
|
||||||
|
(whitespace +guess +trim) ; a butler for your whitespace
|
||||||
;;word-wrap ; soft wrapping with language-aware indent
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
:emacs
|
:emacs
|
||||||
dired ; making dired pretty [functional]
|
dired ; making dired pretty [functional]
|
||||||
electric ; smarter, keyword-based electric-indent
|
electric ; smarter, keyword-based electric-indent
|
||||||
;;eww ; the internet is gross
|
eww ; the internet is gross
|
||||||
;;ibuffer ; interactive buffer management
|
ibuffer ; interactive buffer management
|
||||||
|
tramp ; remote files at your arthritic fingertips
|
||||||
undo ; persistent, smarter undo for your inevitable mistakes
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
vc ; version-control and Emacs, sitting in a tree
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
:term
|
:term
|
||||||
;;eshell ; the elisp shell that works everywhere
|
eshell ; the elisp shell that works everywhere
|
||||||
;;shell ; simple shell REPL for Emacs
|
;;shell ; simple shell REPL for Emacs
|
||||||
;;term ; basic terminal emulator for Emacs
|
;;term ; basic terminal emulator for Emacs
|
||||||
vterm ; the best terminal emulation in Emacs
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
:checkers
|
:checkers
|
||||||
syntax ; tasing you for every semicolon you forget
|
syntax ; tasing you for every semicolon you forget
|
||||||
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
;;grammar ; tasing grammar mistake every you make
|
grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
:tools
|
:tools
|
||||||
ansible
|
ansible
|
||||||
@@ -98,10 +100,10 @@
|
|||||||
(eval +overlay) ; run code, run (also, repls)
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
lookup ; navigate your code and its documentation
|
lookup ; navigate your code and its documentation
|
||||||
;;llm ; when I said you needed friends, I didn't mean...
|
;;llm ; when I said you needed friends, I didn't mean...
|
||||||
lsp ; M-x vscode
|
;;(lsp +eglot) ; M-x vscode
|
||||||
magit ; a git porcelain for Emacs
|
magit ; a git porcelain for Emacs
|
||||||
make ; run make tasks from Emacs
|
make ; run make tasks from Emacs
|
||||||
;;pass ; password manager for nerds
|
pass ; password manager for nerds
|
||||||
pdf ; pdf enhancements
|
pdf ; pdf enhancements
|
||||||
;;terraform ; infrastructure as code
|
;;terraform ; infrastructure as code
|
||||||
;;tmux ; an API for interacting with tmux
|
;;tmux ; an API for interacting with tmux
|
||||||
@@ -113,10 +115,11 @@
|
|||||||
;;tty ; improve the terminal Emacs experience
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
:lang
|
:lang
|
||||||
|
;;ada ; In strong typing we (blindly) trust
|
||||||
;;agda ; types of types of types of types...
|
;;agda ; types of types of types of types...
|
||||||
;;beancount ; mind the GAAP
|
;;beancount ; mind the GAAP
|
||||||
(cc +lsp) ; C > C++ == 1
|
(cc +lsp) ; C > C++ == 1
|
||||||
;;clojure ; java with a lisp
|
clojure ; java with a lisp
|
||||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
;;coq ; proofs-as-programs
|
;;coq ; proofs-as-programs
|
||||||
;;crystal ; ruby at the speed of c
|
;;crystal ; ruby at the speed of c
|
||||||
@@ -146,10 +149,10 @@
|
|||||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
;;julia ; a better, faster MATLAB
|
;;julia ; a better, faster MATLAB
|
||||||
;;kotlin ; a better, slicker Java(Script)
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
;;latex ; writing papers in Emacs has never been so fun
|
latex ; writing papers in Emacs has never been so fun
|
||||||
;;lean ; for folks with too much to prove
|
;;lean ; for folks with too much to prove
|
||||||
;;ledger ; be audit you can be
|
;;ledger ; be audit you can be
|
||||||
;;lua ; one-based indices? one-based indices
|
lua ; one-based indices? one-based indices
|
||||||
markdown ; writing docs for people to ignore
|
markdown ; writing docs for people to ignore
|
||||||
;;nim ; python + lisp at the speed of c
|
;;nim ; python + lisp at the speed of c
|
||||||
;;nix ; I hereby declare "nix geht mehr!"
|
;;nix ; I hereby declare "nix geht mehr!"
|
||||||
@@ -168,7 +171,7 @@
|
|||||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
;;scala ; java, but good
|
;;scala ; java, but good
|
||||||
;;(scheme +guile) ; a fully conniving family of lisps
|
(scheme +guile) ; a fully conniving family of lisps
|
||||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
;;sml
|
;;sml
|
||||||
;;solidity ; do you need a blockchain? No.
|
;;solidity ; do you need a blockchain? No.
|
||||||
@@ -178,18 +181,21 @@
|
|||||||
yaml ; JSON, but readable
|
yaml ; JSON, but readable
|
||||||
zig ; C, but simpler
|
zig ; C, but simpler
|
||||||
|
|
||||||
|
:tools
|
||||||
|
lsp ; lsp mode
|
||||||
|
|
||||||
:email
|
:email
|
||||||
;;(mu4e +org +gmail)
|
(mu4e +org +gmail)
|
||||||
;;notmuch
|
;;notmuch
|
||||||
;;(wanderlust +gmail)
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
:app
|
:app
|
||||||
;;calendar
|
calendar
|
||||||
;;emms
|
emms
|
||||||
;;everywhere ; *leave* Emacs!? You must be joking
|
everywhere ; *leave* Emacs!? You must be joking
|
||||||
;;irc ; how neckbeards socialize
|
;;irc ; how neckbeards socialize
|
||||||
;;(rss +org) ; emacs as an RSS reader
|
(rss +org) ; emacs as an RSS reader
|
||||||
|
|
||||||
:config
|
:config
|
||||||
;; literate
|
;;literate
|
||||||
(default +bindings +smartparens))
|
(default +bindings +smartparens))
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; $DOOMDIR/packages.el
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
;; To install a package:
|
||||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
;;
|
||||||
|
;; 1. Declare them here in a `package!' statement,
|
||||||
|
;; 2. Run 'doom sync' in the shell,
|
||||||
|
;; 3. Restart Emacs.
|
||||||
|
;;
|
||||||
|
;; Use 'C-h f package\!' to look up documentation for the `package!' macro.
|
||||||
|
|
||||||
|
|
||||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
@@ -49,4 +54,6 @@
|
|||||||
;; (unpin! t)
|
;; (unpin! t)
|
||||||
|
|
||||||
(package! catppuccin-theme)
|
(package! catppuccin-theme)
|
||||||
(package! go-mode)
|
(package! org-caldav)
|
||||||
|
(package! elfeed-tube)
|
||||||
|
(package! elfeed-tube-mpv)
|
||||||
|
|||||||
7
doom/.config/doom/scripts/email_sync.sh
Executable file
7
doom/.config/doom/scripts/email_sync.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
mbsync -a & pid1=$!
|
||||||
|
wait $pid1
|
||||||
|
|
||||||
|
mu index
|
||||||
|
|
||||||
64
emacs/.emacs.d/.gitignore
vendored
Executable file
64
emacs/.emacs.d/.gitignore
vendored
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/emacs
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=emacs
|
||||||
|
|
||||||
|
### Emacs ###
|
||||||
|
# -*- mode: gitignore; -*-
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
/.emacs.desktop
|
||||||
|
/.emacs.desktop.lock
|
||||||
|
*.elc
|
||||||
|
auto-save-list
|
||||||
|
tramp
|
||||||
|
.\#*
|
||||||
|
eln-cache
|
||||||
|
projects
|
||||||
|
transient/
|
||||||
|
.dap-breakpoints
|
||||||
|
.lsp-session-v1
|
||||||
|
/.extension/**
|
||||||
|
url/**
|
||||||
|
**/*.bak
|
||||||
|
|
||||||
|
# Org-mode
|
||||||
|
.org-id-locations
|
||||||
|
*_archive
|
||||||
|
|
||||||
|
# flymake-mode
|
||||||
|
*_flymake.*
|
||||||
|
|
||||||
|
# eshell files
|
||||||
|
/eshell/history
|
||||||
|
/eshell/lastdir
|
||||||
|
|
||||||
|
# elpa packages
|
||||||
|
/elpa/
|
||||||
|
|
||||||
|
# reftex files
|
||||||
|
*.rel
|
||||||
|
|
||||||
|
# AUCTeX auto folder
|
||||||
|
/auto/
|
||||||
|
|
||||||
|
# cask packages
|
||||||
|
.cask/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# Flycheck
|
||||||
|
flycheck_*.el
|
||||||
|
|
||||||
|
# server auth directory
|
||||||
|
/server/
|
||||||
|
|
||||||
|
# projectiles files
|
||||||
|
.projectile
|
||||||
|
/projectile-bookmarks.eld
|
||||||
|
|
||||||
|
# directory configuration
|
||||||
|
.dir-locals.el
|
||||||
|
|
||||||
|
# network security
|
||||||
|
/network-security.data
|
||||||
|
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/emacs
|
||||||
16
emacs/.emacs.d/elfeed.org
Normal file
16
emacs/.emacs.d/elfeed.org
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#+TITLE: RSS Urls
|
||||||
|
#+AUTHOR: Fabio Scotto di Santolo
|
||||||
|
#+DATE: <2025-10-25 Sat>
|
||||||
|
|
||||||
|
* root :elfeed:
|
||||||
|
** Programming :programming:
|
||||||
|
*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security:
|
||||||
|
** FOSS News :news:
|
||||||
|
*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint:
|
||||||
|
** Youtube :youtube:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming:
|
||||||
|
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming:
|
||||||
62
emacs/.emacs.d/init.el
Normal file
62
emacs/.emacs.d/init.el
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
(message "Welcome to Emacs")
|
||||||
|
(message "Loading user configuration...")
|
||||||
|
|
||||||
|
;;=====================================================================================
|
||||||
|
;; Define loader functions
|
||||||
|
;;=====================================================================================
|
||||||
|
(defconst fscotto/modules-dir
|
||||||
|
(expand-file-name "lisp" user-emacs-directory))
|
||||||
|
|
||||||
|
(defun fscotto/load-module (module)
|
||||||
|
"Load a MODULE from symbol."
|
||||||
|
(let* ((module-name (symbol-name module))
|
||||||
|
(path (expand-file-name
|
||||||
|
(concat (replace-regexp-in-string "/" "/" module-name)
|
||||||
|
".el")
|
||||||
|
fscotto/modules-dir)))
|
||||||
|
(unless (file-exists-p path)
|
||||||
|
(error "Module not found: %s" path))
|
||||||
|
(load path nil 'nomessage)))
|
||||||
|
|
||||||
|
(defun fscotto/load-modules (&rest modules)
|
||||||
|
"Load MODULES."
|
||||||
|
(mapc #'fscotto/load-module modules))
|
||||||
|
|
||||||
|
;;=====================================================================================
|
||||||
|
;; Load modules
|
||||||
|
;;=====================================================================================
|
||||||
|
(fscotto/load-modules
|
||||||
|
;; Core
|
||||||
|
'core/packages
|
||||||
|
'core/ui
|
||||||
|
'core/performance
|
||||||
|
'core/editor
|
||||||
|
'core/keybindings
|
||||||
|
'core/buffer
|
||||||
|
|
||||||
|
;; Tools
|
||||||
|
'tools/completion
|
||||||
|
'tools/project
|
||||||
|
'tools/lsp
|
||||||
|
'tools/dap
|
||||||
|
'tools/treesitter
|
||||||
|
|
||||||
|
;; Languages
|
||||||
|
'lang/c
|
||||||
|
'lang/golang
|
||||||
|
'lang/shell
|
||||||
|
|
||||||
|
;; Misc
|
||||||
|
'misc/custom-functions
|
||||||
|
'misc/doom-modeline
|
||||||
|
'misc/which-key
|
||||||
|
'misc/email
|
||||||
|
'misc/rss
|
||||||
|
'misc/terminal
|
||||||
|
'misc/vcs
|
||||||
|
;; FIXME PDF viewer with annotations
|
||||||
|
;; 'misc/pdf
|
||||||
|
'misc/epub
|
||||||
|
'misc/i3-config)
|
||||||
|
|
||||||
|
(message "...user configuration loaded")
|
||||||
21
emacs/.emacs.d/lisp/core/buffer.el
Normal file
21
emacs/.emacs.d/lisp/core/buffer.el
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
;;; buffer.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package ibuffer
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
(use-package ibuffer-tramp
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
(use-package ibuffer-vc
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
(use-package ibuffer-projectile
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
(add-hook 'ibuffer-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(ibuffer-projectile-set-filter-groups)))
|
||||||
|
|
||||||
|
(provide 'buffer)
|
||||||
|
|
||||||
|
;;; buffer.el ends here
|
||||||
14
emacs/.emacs.d/lisp/core/editor.el
Normal file
14
emacs/.emacs.d/lisp/core/editor.el
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
;;; core-editor
|
||||||
|
|
||||||
|
(setq standard-indent 4)
|
||||||
|
(setq tab-stop-list nil)
|
||||||
|
(setq indent-tabs-mode nil)
|
||||||
|
|
||||||
|
;; Setting variables
|
||||||
|
(setq vc-follow-symlinks 't)
|
||||||
|
(prefer-coding-system 'utf-8-unix)
|
||||||
|
(setq custom-file (null-device))
|
||||||
|
|
||||||
|
(provide 'editor)
|
||||||
|
|
||||||
|
;;; editor.el ends here
|
||||||
160
emacs/.emacs.d/lisp/core/keybindings.el
Normal file
160
emacs/.emacs.d/lisp/core/keybindings.el
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
;;; keybindings.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;; Global / Core
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-x C-b") #'ibuffer)
|
||||||
|
|
||||||
|
(defvar fscotto/leader-map (make-sparse-keymap)
|
||||||
|
"Keymap per comandi sotto C-c.")
|
||||||
|
|
||||||
|
(define-key global-map (kbd "C-c") fscotto/leader-map)
|
||||||
|
|
||||||
|
;;;; Git / Magit
|
||||||
|
(defun fscotto/enable-magit-keymap ()
|
||||||
|
"Enable Git keybindings if current buffer is inside a Git repository."
|
||||||
|
(when (and (require 'magit nil 'noerror)
|
||||||
|
(magit-toplevel))
|
||||||
|
(local-set-key (kbd "C-c g") fscotto/git-map)))
|
||||||
|
|
||||||
|
(defvar fscotto/git-map (make-sparse-keymap)
|
||||||
|
"Keymap for Git commands under C-c g.")
|
||||||
|
|
||||||
|
(add-hook 'find-file-hook #'fscotto/enable-magit-keymap)
|
||||||
|
(add-hook 'prog-mode-hook #'fscotto/enable-magit-keymap)
|
||||||
|
(add-hook 'conf-mode-hook #'fscotto/enable-magit-keymap)
|
||||||
|
|
||||||
|
;; autoload: il tasto carica magit
|
||||||
|
(autoload 'magit-status "magit" nil t)
|
||||||
|
(autoload 'magit-branch "magit" nil t)
|
||||||
|
(autoload 'magit-commit "magit" nil t)
|
||||||
|
(autoload 'magit-push "magit" nil t)
|
||||||
|
(autoload 'magit-fetch "magit" nil t)
|
||||||
|
|
||||||
|
;; keybinding (sempre definite nella mappa)
|
||||||
|
(define-key fscotto/git-map (kbd "s") #'magit-status)
|
||||||
|
(define-key fscotto/git-map (kbd "b") #'magit-branch)
|
||||||
|
(define-key fscotto/git-map (kbd "c") #'magit-commit)
|
||||||
|
(define-key fscotto/git-map (kbd "p") #'magit-push)
|
||||||
|
(define-key fscotto/git-map (kbd "f") #'magit-fetch)
|
||||||
|
|
||||||
|
;;;; Open / Tools
|
||||||
|
(defvar fscotto/open (make-sparse-keymap))
|
||||||
|
(define-key fscotto/leader-map (kbd "o") fscotto/open)
|
||||||
|
|
||||||
|
;; -------- vterm --------
|
||||||
|
(autoload 'vterm "vterm" nil t)
|
||||||
|
(define-key fscotto/open (kbd "T") #'vterm)
|
||||||
|
|
||||||
|
(with-eval-after-load 'vterm
|
||||||
|
(define-key vterm-mode-map (kbd "C-c C-t") #'vterm-copy-mode))
|
||||||
|
|
||||||
|
;; -------- mu4e --------
|
||||||
|
(autoload 'mu4e "mu4e" nil t)
|
||||||
|
(define-key fscotto/open (kbd "m") #'mu4e)
|
||||||
|
|
||||||
|
;; -------- elfeed --------
|
||||||
|
(autoload 'elfeed "elfeed" nil t)
|
||||||
|
(define-key fscotto/open (kbd "f") #'elfeed)
|
||||||
|
|
||||||
|
;;;; Elfeed mode maps
|
||||||
|
(with-eval-after-load 'elfeed
|
||||||
|
(define-key elfeed-search-mode-map (kbd "w") #'elfeed-search-yank)
|
||||||
|
(define-key elfeed-search-mode-map (kbd "R") #'elfeed-update)
|
||||||
|
(define-key elfeed-search-mode-map (kbd "q") #'elfeed-kill-buffer)
|
||||||
|
|
||||||
|
(define-key elfeed-show-mode-map (kbd "S") #'elfeed-show-new-live-search)
|
||||||
|
(define-key elfeed-show-mode-map (kbd "f") #'elfeed-show-fetch-full-text)
|
||||||
|
(define-key elfeed-show-mode-map (kbd "w") #'elfeed-show-yank))
|
||||||
|
|
||||||
|
;;;; hl-todo
|
||||||
|
(with-eval-after-load 'hl-todo
|
||||||
|
(define-key hl-todo-mode-map (kbd "C-t p") #'hl-todo-previous)
|
||||||
|
(define-key hl-todo-mode-map (kbd "C-t n") #'hl-todo-next)
|
||||||
|
(define-key hl-todo-mode-map (kbd "C-t o") #'hl-todo-occur)
|
||||||
|
(define-key hl-todo-mode-map (kbd "C-t i") #'hl-todo-insert))
|
||||||
|
|
||||||
|
;; Projectile keybindings
|
||||||
|
(define-key fscotto/leader-map (kbd "p") 'projectile-command-map)
|
||||||
|
|
||||||
|
(with-eval-after-load 'projectile
|
||||||
|
(define-key projectile-command-map (kbd "v") #'fscotto/project-vterm)
|
||||||
|
(define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status))
|
||||||
|
|
||||||
|
;;;; LSP
|
||||||
|
(defvar fscotto/lsp-map (make-sparse-keymap))
|
||||||
|
|
||||||
|
(autoload 'lsp-find-definition "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-find-type-definition "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-find-implementation "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-execute-code-action "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-rename "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-format-buffer "lsp-mode" nil t)
|
||||||
|
(autoload 'lsp-restart-workspace "lsp-mode" nil t)
|
||||||
|
|
||||||
|
(autoload 'consult-lsp-symbols "consult-lsp" nil t)
|
||||||
|
(autoload 'consult-lsp-diagnostics "consult-lsp" nil t)
|
||||||
|
|
||||||
|
(define-key fscotto/lsp-map (kbd "s") #'consult-lsp-symbols)
|
||||||
|
(define-key fscotto/lsp-map (kbd "e") #'consult-lsp-diagnostics)
|
||||||
|
(define-key fscotto/lsp-map (kbd "d") #'lsp-find-definition)
|
||||||
|
(define-key fscotto/lsp-map (kbd "D") #'lsp-find-type-definition)
|
||||||
|
(define-key fscotto/lsp-map (kbd "i") #'lsp-find-implementation)
|
||||||
|
(define-key fscotto/lsp-map (kbd "a") #'lsp-execute-code-action)
|
||||||
|
(define-key fscotto/lsp-map (kbd "r") #'lsp-rename)
|
||||||
|
(define-key fscotto/lsp-map (kbd "f") #'lsp-format-buffer)
|
||||||
|
(define-key fscotto/lsp-map (kbd "R") #'lsp-restart-workspace)
|
||||||
|
|
||||||
|
(defun fscotto/enable-lsp-keymap ()
|
||||||
|
"Enable LSP keybindings if LSP is active in the current buffer."
|
||||||
|
(when (and (bound-and-true-p lsp-mode)
|
||||||
|
(lsp-workspaces))
|
||||||
|
(local-set-key (kbd "C-c l") fscotto/lsp-map)))
|
||||||
|
|
||||||
|
(add-hook 'lsp-mode-hook #'fscotto/enable-lsp-keymap)
|
||||||
|
(add-hook 'lsp-after-initialize-hook #'fscotto/enable-lsp-keymap)
|
||||||
|
(add-hook 'lsp-after-open-hook #'fscotto/enable-lsp-keymap)
|
||||||
|
|
||||||
|
;;;; DAP
|
||||||
|
(defvar fscotto/dap-map (make-sparse-keymap)
|
||||||
|
"Keymap for DAP commands under C-c d.")
|
||||||
|
|
||||||
|
(autoload 'dap-debug "dap-mode" nil t)
|
||||||
|
(autoload 'dap-breakpoint-toggle "dap-mode" nil t)
|
||||||
|
(autoload 'dap-continue "dap-mode" nil t)
|
||||||
|
(autoload 'dap-next "dap-mode" nil t)
|
||||||
|
(autoload 'dap-step-in "dap-mode" nil t)
|
||||||
|
(autoload 'dap-step-out "dap-mode" nil t)
|
||||||
|
(autoload 'dap-restart-frame "dap-mode" nil t)
|
||||||
|
(autoload 'dap-disconnect "dap-mode" nil t)
|
||||||
|
|
||||||
|
(define-key fscotto/dap-map (kbd "d") #'dap-debug)
|
||||||
|
(define-key fscotto/dap-map (kbd "b") #'dap-breakpoint-toggle)
|
||||||
|
(define-key fscotto/dap-map (kbd "c") #'dap-continue)
|
||||||
|
(define-key fscotto/dap-map (kbd "n") #'dap-next)
|
||||||
|
(define-key fscotto/dap-map (kbd "i") #'dap-step-in)
|
||||||
|
(define-key fscotto/dap-map (kbd "o") #'dap-step-out)
|
||||||
|
(define-key fscotto/dap-map (kbd "r") #'dap-restart-frame)
|
||||||
|
(define-key fscotto/dap-map (kbd "q") #'dap-disconnect)
|
||||||
|
|
||||||
|
(defun fscotto/enable-dap-keymap ()
|
||||||
|
"Enable DAP keybindings if dap-mode is active in the current buffer."
|
||||||
|
(when (bound-and-true-p dap-mode)
|
||||||
|
(local-set-key (kbd "C-c d") fscotto/dap-map)))
|
||||||
|
|
||||||
|
(add-hook 'dap-mode-hook #'fscotto/enable-dap-keymap)
|
||||||
|
(add-hook 'dap-session-created-hook #'fscotto/enable-dap-keymap)
|
||||||
|
(add-hook 'dap-terminated-hook #'fscotto/enable-dap-keymap)
|
||||||
|
|
||||||
|
;;;; Go
|
||||||
|
|
||||||
|
(with-eval-after-load 'go-ts-mode
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c m t") #'fscotto/go-mod-tidy)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c m d") #'fscotto/go-mod-download)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t p") #'fscotto/go-test-package)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t a") #'fscotto/go-test-module)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t t") #'fscotto/go-test-current-test)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c d t") #'dap-debug))
|
||||||
|
|
||||||
|
(provide 'core/keybindings)
|
||||||
|
|
||||||
|
;;; keybindings.el ends here
|
||||||
15
emacs/.emacs.d/lisp/core/packages.el
Normal file
15
emacs/.emacs.d/lisp/core/packages.el
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
;; core-packages.el -*- lexical-binding: t; -*-
|
||||||
|
(require 'use-package)
|
||||||
|
|
||||||
|
(use-package package
|
||||||
|
:config
|
||||||
|
;; Setting repo priorities
|
||||||
|
(setq package-archive-priorities
|
||||||
|
'(("melpa-stable" . 2)
|
||||||
|
("MELPA" . 1)
|
||||||
|
("gnu" . 0)))
|
||||||
|
;; Setting repo URL
|
||||||
|
(setq package-archives
|
||||||
|
'(("melpa-stable" . "https://stable.melpa.org/packages/")
|
||||||
|
("MELPA" . "https://melpa.org/packages/")
|
||||||
|
("gnu" . "https://elpa.gnu.org/packages/"))))
|
||||||
22
emacs/.emacs.d/lisp/core/performance.el
Normal file
22
emacs/.emacs.d/lisp/core/performance.el
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
;;; core-performance.el -*-
|
||||||
|
|
||||||
|
;; --- Startup speed tweaks ----------------------------------------------------
|
||||||
|
;; Temporarily increase GC threshold during init
|
||||||
|
(defvar fscotto/gc-cons-threshold-orig gc-cons-threshold)
|
||||||
|
(setq gc-cons-threshold (* 50 1000 1000)) ;; 50MB for init
|
||||||
|
|
||||||
|
;; Speedup file-name-handler during init
|
||||||
|
(defvar fscotto/file-name-handler-alist-orig file-name-handler-alist)
|
||||||
|
(setq file-name-handler-alist nil)
|
||||||
|
|
||||||
|
;; Restore after init
|
||||||
|
(add-hook 'emacs-startup-hook
|
||||||
|
(lambda ()
|
||||||
|
(setq gc-cons-threshold fscotto/gc-cons-threshold-orig)
|
||||||
|
(setq file-name-handler-alist fscotto/file-name-handler-alist-orig)
|
||||||
|
(garbage-collect)))
|
||||||
|
|
||||||
|
;; LSP responsiveness
|
||||||
|
(setq read-process-output-max (* 1024 1024)) ;; 1MB, utile per lsp-mode
|
||||||
|
(setq lsp-idle-delay 0.5) ;; meno ritardo prima che LSP aggiorni info
|
||||||
|
(setq inhibit-compacting-font-caches t)
|
||||||
70
emacs/.emacs.d/lisp/core/ui.el
Normal file
70
emacs/.emacs.d/lisp/core/ui.el
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
;;;; core-ui.el -*-
|
||||||
|
|
||||||
|
;; Load default theme
|
||||||
|
(load-theme 'wombat)
|
||||||
|
|
||||||
|
;; Setting default font
|
||||||
|
(set-frame-font "Iosevka Nerd Font 14" nil t)
|
||||||
|
|
||||||
|
;; Remove toolbar
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
|
||||||
|
;; Remove menu
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
|
||||||
|
;; Disable startup screen
|
||||||
|
(setq inhibit-startup-screen t)
|
||||||
|
|
||||||
|
;; Disable splash screen
|
||||||
|
(setq inhibit-splash-screen t)
|
||||||
|
|
||||||
|
;; Start all frames maximized
|
||||||
|
(add-to-list 'default-frame-alist '(fullscreen . maximized))
|
||||||
|
|
||||||
|
;; Remove scrollbar
|
||||||
|
(scroll-bar-mode -1)
|
||||||
|
|
||||||
|
;; Simple 'y' for 'yes' and 'n' for 'no'
|
||||||
|
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||||
|
|
||||||
|
;; Set global value for paragraph witdh
|
||||||
|
(setq-default fill-column 120)
|
||||||
|
|
||||||
|
;; Stop Emacs from losing informations
|
||||||
|
(setq undo-limit 8000000)
|
||||||
|
(setq undo-strong-limit 12000000)
|
||||||
|
|
||||||
|
;; Smooth scroll
|
||||||
|
(setq scroll-step 3)
|
||||||
|
(setq ring-bell-function 'ignore)
|
||||||
|
|
||||||
|
;; Add column number in the status line
|
||||||
|
(column-number-mode)
|
||||||
|
|
||||||
|
;; View clock in the status line
|
||||||
|
(display-time)
|
||||||
|
|
||||||
|
;; Enable line numbers in the programming mode only
|
||||||
|
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
||||||
|
|
||||||
|
;; Enable line numbers in the configuration mode only
|
||||||
|
(add-hook 'conf-mode-hook 'display-line-numbers-mode)
|
||||||
|
|
||||||
|
;; Setting default directory for Org files
|
||||||
|
(setq org-directory "~/Remotes/pCloud/Org")
|
||||||
|
|
||||||
|
;; Highlight keywords to remember the activity when coding.
|
||||||
|
(use-package hl-todo
|
||||||
|
:ensure t
|
||||||
|
:commands (global-hl-todo-mode)
|
||||||
|
:init (global-hl-todo-mode))
|
||||||
|
|
||||||
|
(setq hl-todo-keyword-faces
|
||||||
|
'(("TODO" . "#94e2d5")
|
||||||
|
("FIXME" . "#f38ba8")
|
||||||
|
("DEBUG" . "#cba6f7")
|
||||||
|
("GOTCHA" . "#eba0ac")
|
||||||
|
("STUB" . "#89b4fa")))
|
||||||
|
|
||||||
|
(provide 'ui)
|
||||||
|
;;; ui.el ends here
|
||||||
39
emacs/.emacs.d/lisp/lang/c.el
Normal file
39
emacs/.emacs.d/lisp/lang/c.el
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
;; c.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; C / C++ fallback style (Linux-like)
|
||||||
|
(setq c-default-style "linux"
|
||||||
|
c-basic-offset 4
|
||||||
|
tab-width 8)
|
||||||
|
|
||||||
|
(add-hook 'c-mode-common-hook
|
||||||
|
(lambda ()
|
||||||
|
(setq indent-tabs-mode t)))
|
||||||
|
|
||||||
|
;; Tree-sitter C/C++
|
||||||
|
(setq c-ts-mode-indent-offset 4)
|
||||||
|
(setq c++-ts-mode-indent-offset 4)
|
||||||
|
|
||||||
|
(with-eval-after-load 'lsp
|
||||||
|
;; Clangd configurations
|
||||||
|
(setq lsp-clients-clangd-args
|
||||||
|
'("--background-index"
|
||||||
|
"--clang-tidy"
|
||||||
|
"--completion-style=detailed"
|
||||||
|
"--header-insertion=never"
|
||||||
|
"--header-insertion-decorators"
|
||||||
|
"--pch-storage=memory"
|
||||||
|
"--log=error"
|
||||||
|
"--ranking-model=heuristics"
|
||||||
|
"--malloc-trim"
|
||||||
|
"--limit-results=500"
|
||||||
|
"--limit-references=2000")))
|
||||||
|
|
||||||
|
(with-eval-after-load 'dap-mode
|
||||||
|
(require 'dap-cpptools))
|
||||||
|
|
||||||
|
(add-hook 'c-ts-mode-hook #'fscotto/disable-c-formatting)
|
||||||
|
(add-hook 'c-mode-hook #'fscotto/disable-c-formatting)
|
||||||
|
|
||||||
|
(provide 'c)
|
||||||
|
|
||||||
|
;;; c.el ends here
|
||||||
106
emacs/.emacs.d/lisp/lang/golang.el
Normal file
106
emacs/.emacs.d/lisp/lang/golang.el
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
;;=================================================================
|
||||||
|
;; Go Language Support
|
||||||
|
;;=================================================================
|
||||||
|
|
||||||
|
(use-package go-ts-mode
|
||||||
|
:ensure nil
|
||||||
|
:mode "\\.go\\'"
|
||||||
|
:hook
|
||||||
|
((go-ts-mode . lsp-deferred)
|
||||||
|
(go-ts-mode . fscotto/go-format-on-save))
|
||||||
|
:config
|
||||||
|
;; Go project commands
|
||||||
|
;; Modules
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c m t") #'fscotto/go-mod-tidy)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c m d") #'fscotto/go-mod-download)
|
||||||
|
;; Test
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t p") #'fscotto/go-test-package)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t a") #'fscotto/go-test-module)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c t t") #'fscotto/go-test-current-test)
|
||||||
|
;; Debug tests
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c d t") #'dap-debug)
|
||||||
|
(define-key go-ts-mode-map (kbd "C-c d T")
|
||||||
|
(lambda ()
|
||||||
|
(interactive)
|
||||||
|
(dap-debug
|
||||||
|
(dap--debug-configuration
|
||||||
|
"Go :: Debug test at point")))))
|
||||||
|
|
||||||
|
(use-package go-mod-ts-mode
|
||||||
|
:ensure nil
|
||||||
|
:mode
|
||||||
|
(("/go\\.mod\\'" . go-mod-ts-mode)
|
||||||
|
("/go\\.sum\\'" . go-mod-ts-mode))
|
||||||
|
:hook
|
||||||
|
((go-mod-ts-mode . lsp-deferred)
|
||||||
|
;; restart gopls only when go.mod/go.sum are saved (buffer-local)
|
||||||
|
(go-mod-ts-mode . (lambda ()
|
||||||
|
(add-hook 'after-save-hook
|
||||||
|
(lambda ()
|
||||||
|
(when (lsp-workspaces)
|
||||||
|
(lsp-restart-workspace)))
|
||||||
|
nil t)))))
|
||||||
|
|
||||||
|
(with-eval-after-load 'project
|
||||||
|
(add-to-list 'project-vc-extra-root-markers "go.mod"))
|
||||||
|
|
||||||
|
(with-eval-after-load 'lsp-mode
|
||||||
|
;; gopls settings (single source of truth)
|
||||||
|
(lsp-register-custom-settings
|
||||||
|
'(("gopls.staticcheck" t)
|
||||||
|
("gopls.gofumpt" t)
|
||||||
|
;; ("gopls.experimentalWorkspaceModule" t)
|
||||||
|
("gopls.expandWorkspaceToModule" t)
|
||||||
|
("gopls.directoryFilters" ["-vendor"])
|
||||||
|
("gopls.analyses.unusedparams" t)
|
||||||
|
("gopls.analyses.shadow" t)
|
||||||
|
("gopls.analyses.nilness" t)
|
||||||
|
("gopls.analyses.useany" t)
|
||||||
|
("gopls.env" ((GO111MODULE . "on"))))))
|
||||||
|
|
||||||
|
(with-eval-after-load 'flycheck
|
||||||
|
;; Usa golangci-lint in Go
|
||||||
|
(add-hook 'go-ts-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(setq-local flycheck-checker 'golangci-lint)
|
||||||
|
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
|
||||||
|
(flycheck-mode 1))))
|
||||||
|
|
||||||
|
(use-package dap-dlv-go
|
||||||
|
:after (dap-mode go-ts-mode))
|
||||||
|
|
||||||
|
(with-eval-after-load 'dap-dlv-go
|
||||||
|
;; Debug all tests in module
|
||||||
|
(dap-register-debug-template
|
||||||
|
"Go :: Debug all tests"
|
||||||
|
(list :type "go"
|
||||||
|
:request "launch"
|
||||||
|
:name "Go :: Debug all tests"
|
||||||
|
:mode "test"
|
||||||
|
:program "${workspaceFolder}"
|
||||||
|
:cwd "${workspaceFolder}"))
|
||||||
|
|
||||||
|
;; Debug tests in current package
|
||||||
|
(dap-register-debug-template
|
||||||
|
"Go :: Debug package tests"
|
||||||
|
(list :type "go"
|
||||||
|
:request "launch"
|
||||||
|
:name "Go :: Debug package tests"
|
||||||
|
:mode "test"
|
||||||
|
:program "${fileDirname}"
|
||||||
|
:cwd "${fileDirname}"))
|
||||||
|
|
||||||
|
;; Debug test at point
|
||||||
|
(dap-register-debug-template
|
||||||
|
"Go :: Debug test at point"
|
||||||
|
(list :type "go"
|
||||||
|
:request "launch"
|
||||||
|
:name "Go :: Debug test at point"
|
||||||
|
:mode "test"
|
||||||
|
:program "${fileDirname}"
|
||||||
|
:cwd "${fileDirname}"
|
||||||
|
:args (list "-test.run" "${input:testName}"))))
|
||||||
|
|
||||||
|
(add-hook 'dap-terminated-hook
|
||||||
|
(lambda (_)
|
||||||
|
(delete-other-windows)))
|
||||||
11
emacs/.emacs.d/lisp/lang/shell.el
Normal file
11
emacs/.emacs.d/lisp/lang/shell.el
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
(with-eval-after-load 'flycheck
|
||||||
|
(add-hook 'bash-ts-mode-hook 'flycheck-mode))
|
||||||
|
|
||||||
|
(use-package reformatter
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(reformatter-define shfmt-format
|
||||||
|
:program "shfmt"
|
||||||
|
:args '("-i" "2" "-ci")))
|
||||||
|
|
||||||
|
(add-hook 'bash-ts-mode-hook #'shfmt-format-on-save-mode)
|
||||||
89
emacs/.emacs.d/lisp/misc/custom-functions.el
Normal file
89
emacs/.emacs.d/lisp/misc/custom-functions.el
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
;;functions to support syncing .elfeed between machines
|
||||||
|
;;makes sure elfeed reads index from disk before launching
|
||||||
|
(defun fscotto/elfeed-load-db-and-open ()
|
||||||
|
"Wrapper to load the elfeed db from disk before opening URL https://pragmaticemacs.wordpress.com/2016/08/17/read-your-rss-feeds-in-emacs-with-elfeed/
|
||||||
|
Created: 2016-08-17
|
||||||
|
Updated: 2025-06-13"
|
||||||
|
(interactive)
|
||||||
|
(elfeed)
|
||||||
|
(elfeed-db-load)
|
||||||
|
;; (elfeed-search-update--force)
|
||||||
|
(elfeed-update)
|
||||||
|
(elfeed-db-save))
|
||||||
|
|
||||||
|
(defun fscotto/project-root ()
|
||||||
|
"Return projectile project root or fallback to default-directory."
|
||||||
|
(if (featurep 'projectile)
|
||||||
|
(or (projectile-project-root) default-directory)
|
||||||
|
default-directory))
|
||||||
|
|
||||||
|
(defun fscotto/project-vterm ()
|
||||||
|
"Open vterm in project root."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (fscotto/project-root)))
|
||||||
|
(vterm)))
|
||||||
|
|
||||||
|
(defun fscotto/project-magit-status ()
|
||||||
|
"Open magit-status in project root."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (fscotto/project-root)))
|
||||||
|
(magit-status)))
|
||||||
|
|
||||||
|
(defun fscotto/magit-dispatch ()
|
||||||
|
"Load Magit if necessary and open magit-dispatch."
|
||||||
|
(interactive)
|
||||||
|
(require 'magit)
|
||||||
|
(call-interactively #'magit-dispatch))
|
||||||
|
|
||||||
|
(defun fscotto/disable-c-formatting ()
|
||||||
|
(setq-local lsp-enable-on-type-formatting nil))
|
||||||
|
|
||||||
|
;; Golang development support functions
|
||||||
|
(defun fscotto/go-format-on-save ()
|
||||||
|
"Format Go buffers on save using gofmt."
|
||||||
|
(add-hook 'before-save-hook #'lsp-format-buffer nil t))
|
||||||
|
|
||||||
|
(defun fscotto/go-mod-tidy ()
|
||||||
|
"Esegue go mod tidy nella root del progetto."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (project-root (project-current t))))
|
||||||
|
(compile "go mod tidy")))
|
||||||
|
|
||||||
|
(defun fscotto/go-mod-download ()
|
||||||
|
"Scarica i moduli Go."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (project-root (project-current t))))
|
||||||
|
(compile "go mod download")))
|
||||||
|
|
||||||
|
(defun fscotto/go-mod-after-save ()
|
||||||
|
(when (and (eq major-mode 'go-mod-ts-mode)
|
||||||
|
(lsp-workspaces))
|
||||||
|
(lsp-restart-workspace)))
|
||||||
|
|
||||||
|
(defun fscotto/go-test-package ()
|
||||||
|
"Run `go test` in the current package."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (project-root (project-current t))))
|
||||||
|
(compile "go test")))
|
||||||
|
|
||||||
|
(defun fscotto/go-test-module ()
|
||||||
|
"Run `go test ./...` in the current Go module."
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (project-root (project-current t))))
|
||||||
|
(compile "go test ./...")))
|
||||||
|
|
||||||
|
(defun fscotto/go-test-current-test ()
|
||||||
|
"Run `go test -run` for the test at point."
|
||||||
|
(interactive)
|
||||||
|
(let* ((test-name (thing-at-point 'symbol t))
|
||||||
|
(default-directory (project-root (project-current t))))
|
||||||
|
(unless test-name
|
||||||
|
(user-error "No test name at point"))
|
||||||
|
(compile (format "go test -run '^%s$'" test-name))))
|
||||||
|
|
||||||
|
(defun fscotto/go-test-at-point ()
|
||||||
|
"Return Go test name at point."
|
||||||
|
(let ((sym (thing-at-point 'symbol t)))
|
||||||
|
(unless (and sym (string-prefix-p "Test" sym))
|
||||||
|
(user-error "No Go test at point"))
|
||||||
|
sym))
|
||||||
9
emacs/.emacs.d/lisp/misc/doom-modeline.el
Normal file
9
emacs/.emacs.d/lisp/misc/doom-modeline.el
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
;;; doom-modeline.el -*-
|
||||||
|
|
||||||
|
(use-package doom-modeline
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(setq doom-modeline-height 25
|
||||||
|
doom-modeline-bar-width 3
|
||||||
|
doom-modeline-project-detection 'projectile)
|
||||||
|
:init (doom-modeline-mode 1))
|
||||||
51
emacs/.emacs.d/lisp/misc/email.el
Normal file
51
emacs/.emacs.d/lisp/misc/email.el
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
;;; email.el -*-
|
||||||
|
|
||||||
|
(use-package mu4e
|
||||||
|
:ensure nil
|
||||||
|
;; :load-path "/usr/share/emacs/site-lisp/mu4e/"
|
||||||
|
:defer 20 ; Wait until 20 seconds after startup
|
||||||
|
:config
|
||||||
|
;; This is set to 't' to avoid mail syncing issues when using mbsync
|
||||||
|
(setq mu4e-change-filenames-when-moving t)
|
||||||
|
|
||||||
|
;; Refresh mail using isync every 10 minutes
|
||||||
|
(setq mu4e-update-interval (* 10 60))
|
||||||
|
(setq mu4e-get-mail-command "~/.emacs.d/scripts/email_sync.sh")
|
||||||
|
(setq mu4e-maildir "~/Maildir")
|
||||||
|
|
||||||
|
;; Configure email accounts
|
||||||
|
(setq mu4e-contexts
|
||||||
|
(list
|
||||||
|
;; Protonmail Account
|
||||||
|
(make-mu4e-context
|
||||||
|
:name "Protonmail"
|
||||||
|
:match-func
|
||||||
|
(lambda (msg)
|
||||||
|
(when msg
|
||||||
|
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
|
||||||
|
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
|
||||||
|
(user-full-name . "Fabio Scotto di Santolo")
|
||||||
|
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
|
||||||
|
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
|
||||||
|
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
|
||||||
|
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
|
||||||
|
|
||||||
|
;; iCloud Account
|
||||||
|
(make-mu4e-context
|
||||||
|
:name "iCloud Mail"
|
||||||
|
:match-func
|
||||||
|
(lambda (msg)
|
||||||
|
(when msg
|
||||||
|
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
|
||||||
|
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
|
||||||
|
(user-full-name . "Fabio Scotto di Santolo")
|
||||||
|
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
|
||||||
|
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
|
||||||
|
(mu4e-refile-folder . "/iCloudAccount/INBOX")
|
||||||
|
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
|
||||||
|
|
||||||
|
(setq sendmail-program "/usr/bin/msmtp"
|
||||||
|
send-mail-function 'sendmail-send-it
|
||||||
|
message-sendmail-f-is-evil t
|
||||||
|
message-sendmail-extra-arguments '("--read-envelope-from")
|
||||||
|
message-send-mail-function 'message-send-mail-with-sendmail))
|
||||||
3
emacs/.emacs.d/lisp/misc/epub.el
Normal file
3
emacs/.emacs.d/lisp/misc/epub.el
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
(use-package nov
|
||||||
|
:ensure t
|
||||||
|
:mode ("\\.epub\\'" . nov-mode))
|
||||||
2
emacs/.emacs.d/lisp/misc/i3-config.el
Normal file
2
emacs/.emacs.d/lisp/misc/i3-config.el
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
(use-package i3wm-config-mode
|
||||||
|
:ensure t)
|
||||||
4
emacs/.emacs.d/lisp/misc/pdf.el
Normal file
4
emacs/.emacs.d/lisp/misc/pdf.el
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
(use-package pdf-tools
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(pdf-tools-install))
|
||||||
27
emacs/.emacs.d/lisp/misc/rss.el
Normal file
27
emacs/.emacs.d/lisp/misc/rss.el
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
;;; rss.el -*-
|
||||||
|
|
||||||
|
(use-package elfeed
|
||||||
|
:ensure t
|
||||||
|
:custom
|
||||||
|
(elfeed-enclosure-default-dir "~/Downloads/")
|
||||||
|
(elfeed-search-remain-on-entry t)
|
||||||
|
(elfeed-search-title-max-width 100)
|
||||||
|
(elfeed-search-title-min-width 30)
|
||||||
|
(elfeed-search-trailing-width 25)
|
||||||
|
(elfeed-show-truncate-long-urls t)
|
||||||
|
(elfeed-sort-order 'descending)
|
||||||
|
(elfeed-search-filter "+unread")
|
||||||
|
:hook
|
||||||
|
(elfeed-show-mode . visual-line-mode))
|
||||||
|
|
||||||
|
(use-package elfeed-org
|
||||||
|
:ensure t
|
||||||
|
:after elfeed
|
||||||
|
:custom
|
||||||
|
;; Optionally specify a number of files containing elfeed
|
||||||
|
;; configuration. If not set then the location below is used.
|
||||||
|
;; Note: The customize interface is also supported.
|
||||||
|
(rmh-elfeed-org-files (list "~/.emacs.d/elfeed.org")))
|
||||||
|
|
||||||
|
(with-eval-after-load 'elfeed
|
||||||
|
(elfeed-org))
|
||||||
4
emacs/.emacs.d/lisp/misc/terminal.el
Normal file
4
emacs/.emacs.d/lisp/misc/terminal.el
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
;;; terminal.el -*-
|
||||||
|
|
||||||
|
(use-package vterm
|
||||||
|
:ensure t)
|
||||||
16
emacs/.emacs.d/lisp/misc/vcs.el
Normal file
16
emacs/.emacs.d/lisp/misc/vcs.el
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
(use-package magit
|
||||||
|
:ensure t
|
||||||
|
:commands (magit-status magit-log)
|
||||||
|
:init
|
||||||
|
;; Entry point principale
|
||||||
|
(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
|
||||||
|
:config
|
||||||
|
;; Performance & UX
|
||||||
|
(setq magit-refresh-status-buffer nil)
|
||||||
|
(setq magit-repository-directories
|
||||||
|
'(("~/Projects" . 2)
|
||||||
|
("~/Work" . 2))))
|
||||||
|
|
||||||
|
(provide 'vcs)
|
||||||
|
|
||||||
|
;;; vcs.el ends here
|
||||||
161
emacs/.emacs.d/lisp/misc/which-key.el
Normal file
161
emacs/.emacs.d/lisp/misc/which-key.el
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
;;; which-key.el -*-
|
||||||
|
|
||||||
|
(use-package which-key
|
||||||
|
:ensure t
|
||||||
|
:defer 1
|
||||||
|
:config
|
||||||
|
(which-key-mode)
|
||||||
|
(setq which-key-idle-delay 0.45
|
||||||
|
which-key-idle-secondary-delay 0.05
|
||||||
|
which-key-max-display-columns 3
|
||||||
|
which-key-max-description-length 45))
|
||||||
|
|
||||||
|
(with-eval-after-load 'which-key
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Top-level prefixes
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c !" "Analyze"
|
||||||
|
"C-c o" "Open"
|
||||||
|
"C-c v" "Version control"
|
||||||
|
"C-c l" "LSP"
|
||||||
|
"C-c t" "TODO / Annotations"
|
||||||
|
"C-c b" "Buffers"
|
||||||
|
"C-c p" "Project"
|
||||||
|
"C-c d" "Debug"
|
||||||
|
"C-c g" "Git"
|
||||||
|
"C-c e" "Email / Elfeed")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Open (C-c o …)
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c o f" "RSS (Elfeed)"
|
||||||
|
"C-c o m" "mu4e (Email Client)"
|
||||||
|
"C-c o T" "Terminal (vterm)")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Version control
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c v g" "Magit status (legacy)")
|
||||||
|
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
;; Core
|
||||||
|
"C-c g g" "Status"
|
||||||
|
"C-c g s" "Status"
|
||||||
|
;; "C-c g b" "Branch"
|
||||||
|
;; "C-c g c" "Commit"
|
||||||
|
"C-c g p" "Push / Pull"
|
||||||
|
"C-c g f" "Fetch"
|
||||||
|
"C-c g l" "Log"
|
||||||
|
"C-c g S" "Stash"
|
||||||
|
|
||||||
|
;; Files
|
||||||
|
"C-c g d" "Diff"
|
||||||
|
"C-c g D" "Diff (cached)"
|
||||||
|
"C-c g B" "Blame"
|
||||||
|
|
||||||
|
;; Rebase / Reset
|
||||||
|
"C-c g r" "Rebase"
|
||||||
|
"C-c g R" "Reset"
|
||||||
|
|
||||||
|
;; Remote
|
||||||
|
"C-c g y" "Show refs"
|
||||||
|
"C-c g o" "Browse remote")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Buffers
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-x C-b" "ibuffer")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; TODO / hl-todo
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-t" "hl-todo"
|
||||||
|
"C-t p" "Previous TODO"
|
||||||
|
"C-t n" "Next TODO"
|
||||||
|
"C-t o" "Occur (list)"
|
||||||
|
"C-t i" "Insert TODO")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; LSP (C-c l …)
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
;; Navigation
|
||||||
|
"C-c l d" "Go to definition"
|
||||||
|
"C-c l D" "Go to type definition"
|
||||||
|
"C-c l i" "Go to implementation"
|
||||||
|
|
||||||
|
;; Symbols / diagnostics
|
||||||
|
"C-c l s" "Workspace symbols"
|
||||||
|
"C-c l e" "Diagnostics"
|
||||||
|
|
||||||
|
;; Actions
|
||||||
|
"C-c l a" "Code actions"
|
||||||
|
"C-c l r" "Rename symbol"
|
||||||
|
"C-c l f" "Format buffer"
|
||||||
|
|
||||||
|
;; Control
|
||||||
|
"C-c l R" "Restart workspace")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Elfeed modes
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"w" "Yank"
|
||||||
|
"R" "Update feeds"
|
||||||
|
"q" "Quit")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Debug / DAP
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c d d" "Start debug session"
|
||||||
|
"C-c d b" "Toggle breakpoint")
|
||||||
|
;; "C-c d c" "Continue"
|
||||||
|
;; "C-c d n" "Next"
|
||||||
|
;; "C-c d i" "Step in"
|
||||||
|
;; "C-c d o" "Step out")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Project (future)
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
;; Core
|
||||||
|
"C-c p p" "Switch project"
|
||||||
|
"C-c p f" "Find file"
|
||||||
|
"C-c p d" "Find directory"
|
||||||
|
"C-c p b" "Switch buffer"
|
||||||
|
"C-c p k" "Kill project buffers"
|
||||||
|
"C-c p r" "Recent files"
|
||||||
|
|
||||||
|
;; Search
|
||||||
|
"C-c p s" "Search"
|
||||||
|
"C-c p s g" "Grep (ripgrep)"
|
||||||
|
"C-c p s r" "Replace in project"
|
||||||
|
|
||||||
|
;; Actions
|
||||||
|
"C-c p c" "Compile"
|
||||||
|
"C-c p t" "Test"
|
||||||
|
"C-c p v" "Open term in project"
|
||||||
|
"C-c p e" "Edit project config"
|
||||||
|
"C-c p g" "Project Git status"
|
||||||
|
"C-c p x" "Open Terminal"
|
||||||
|
"C-c p 4" "Other Window"
|
||||||
|
"C-c p 5" "Other Frame"
|
||||||
|
"C-c p x 4" "Other Window"
|
||||||
|
|
||||||
|
;; Cache
|
||||||
|
"C-c p i" "Invalidate cache")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Cleanup annoying +prefix
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"+prefix" "Prefix"
|
||||||
|
"+lsp" "LSP"
|
||||||
|
"+debug" "Debug"
|
||||||
|
"+project" "Project"))
|
||||||
32
emacs/.emacs.d/lisp/tools/completion.el
Normal file
32
emacs/.emacs.d/lisp/tools/completion.el
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
;;; completion.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package ivy
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(ivy-mode 1))
|
||||||
|
|
||||||
|
(use-package consult
|
||||||
|
:ensure t
|
||||||
|
:defer t)
|
||||||
|
|
||||||
|
(use-package company
|
||||||
|
:ensure t
|
||||||
|
:custom
|
||||||
|
(company-tooltip-align-annotations 't)
|
||||||
|
(company-minimum-prefix-length 1)
|
||||||
|
(company-idle-delay 0.1)
|
||||||
|
:hook (prog-mode . company-mode))
|
||||||
|
|
||||||
|
(with-eval-after-load 'company
|
||||||
|
(add-hook 'bash-ts-mode-hook 'company-mode))
|
||||||
|
|
||||||
|
;; Static analysis for code base
|
||||||
|
(use-package flycheck
|
||||||
|
:ensure t
|
||||||
|
:hook (prog-mode . flycheck-mode)
|
||||||
|
:config
|
||||||
|
(setq flycheck-check-syntax-automatically '(save mode-enabled)))
|
||||||
|
|
||||||
|
(provide 'completion)
|
||||||
|
|
||||||
|
;;; completion.el ends here
|
||||||
24
emacs/.emacs.d/lisp/tools/dap.el
Normal file
24
emacs/.emacs.d/lisp/tools/dap.el
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
(use-package dap-mode
|
||||||
|
:ensure t
|
||||||
|
:after lsp-mode
|
||||||
|
:hook (lsp-mode . dap-mode)
|
||||||
|
:init
|
||||||
|
;; Enabling only some features
|
||||||
|
(setq dap-auto-configure-features '(sessions locals expressions repl))
|
||||||
|
:config
|
||||||
|
(dap-mode 1)
|
||||||
|
(dap-ui-mode 1)
|
||||||
|
(dap-ui-controls-mode 1)
|
||||||
|
;; Auto show breakpoints + REPL
|
||||||
|
(setq dap-ui-buffer-configurations
|
||||||
|
'(;; RIGHT SIDE — Debug data (like IntelliJ)
|
||||||
|
(dap-ui-locals . ((side . right) (slot . 1) (window-width . 0.30)))
|
||||||
|
(dap-ui-sessions . ((side . right) (slot . 2) (window-width . 0.30)))
|
||||||
|
(dap-ui-expressions . ((side . right) (slot . 3) (window-width . 0.30)))
|
||||||
|
;; BOTTOM — Console / REPL
|
||||||
|
(dap-ui-repl . ((side . bottom) (slot . 1) (window-height . 0.25)))
|
||||||
|
(dap-ui-console . ((side . bottom) (slot . 2) (window-height . 0.25)))))
|
||||||
|
;; Loading DAP adapters
|
||||||
|
;; For Python
|
||||||
|
(require 'dap-python)
|
||||||
|
(setq dap-python-debugger 'debugpy))
|
||||||
49
emacs/.emacs.d/lisp/tools/lsp.el
Normal file
49
emacs/.emacs.d/lisp/tools/lsp.el
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
;;; lsp.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package lsp-mode
|
||||||
|
:ensure t
|
||||||
|
:commands (lsp lsp-deferred)
|
||||||
|
:hook
|
||||||
|
((c-mode
|
||||||
|
c-ts-mode
|
||||||
|
c++-mode
|
||||||
|
c++-ts-mode
|
||||||
|
python-mode
|
||||||
|
python-ts-mode
|
||||||
|
sh-mode
|
||||||
|
bash-ts-mode) . lsp-deferred)
|
||||||
|
:config
|
||||||
|
;; Performance
|
||||||
|
(setq lsp-enable-symbol-highlighting t
|
||||||
|
lsp-enable-snippet t
|
||||||
|
lsp-log-io nil
|
||||||
|
lsp-modeline-code-actions-enable nil
|
||||||
|
lsp-modeline-diagnostics-enable nil
|
||||||
|
lsp-signature-auto-activate nil
|
||||||
|
lsp-enable-on-type-formatting nil
|
||||||
|
lsp-completion-provider :capf
|
||||||
|
lsp-diagnostics-provider :flycheck
|
||||||
|
lsp-headerline-breadcrumb-enable nil
|
||||||
|
lsp-enable-indentation nil
|
||||||
|
;; Disable for huge projects
|
||||||
|
lsp-enable-file-watchers nil
|
||||||
|
lsp-idle-delay 0.5))
|
||||||
|
|
||||||
|
(use-package lsp-ui
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(setq lsp-ui-doc-enable t
|
||||||
|
lsp-ui-doc-delay 0.3
|
||||||
|
lsp-ui-sideline-enable t
|
||||||
|
lsp-ui-sideline-show-code-actions t))
|
||||||
|
|
||||||
|
(use-package consult-lsp
|
||||||
|
:ensure t
|
||||||
|
:after (consult lsp-mode)
|
||||||
|
:commands
|
||||||
|
(consult-lsp-symbols
|
||||||
|
consult-lsp-diagnostics))
|
||||||
|
|
||||||
|
(provide 'lsp)
|
||||||
|
|
||||||
|
;;; lsp.el ends here
|
||||||
25
emacs/.emacs.d/lisp/tools/project.el
Normal file
25
emacs/.emacs.d/lisp/tools/project.el
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
;;; project.el - lexical-binding *-*
|
||||||
|
|
||||||
|
(use-package projectile
|
||||||
|
:ensure t
|
||||||
|
:defer 1
|
||||||
|
:init
|
||||||
|
;; Root detection
|
||||||
|
(setq projectile-project-search-path '("~/Projects" "~/Work"))
|
||||||
|
(setq projectile-completion-system 'ivy)
|
||||||
|
:config
|
||||||
|
;; Performance
|
||||||
|
(setq projectile-enable-caching t)
|
||||||
|
(setq projectile-indexing-method 'hybrid)
|
||||||
|
(setq projectile-sort-order 'recently-active)
|
||||||
|
;; Projectile as single source of truth
|
||||||
|
(setq projectile-switch-project-action #'projectile-dired)
|
||||||
|
;; Use ripgrep if available
|
||||||
|
(when (executable-find "rg")
|
||||||
|
(setq projectile-generic-command "rg --files --hidden --glob '!.git'"))
|
||||||
|
;; Enable globally
|
||||||
|
(projectile-mode 1))
|
||||||
|
|
||||||
|
(provide 'project)
|
||||||
|
|
||||||
|
;;; project.el ends here
|
||||||
25
emacs/.emacs.d/lisp/tools/treesitter.el
Normal file
25
emacs/.emacs.d/lisp/tools/treesitter.el
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
;;; treesitter.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package treesit
|
||||||
|
:ensure nil
|
||||||
|
:config
|
||||||
|
(setq treesit-font-lock-level 4)
|
||||||
|
(setq treesit-auto-install t)
|
||||||
|
(setq major-mode-remap-alist
|
||||||
|
'((c-mode . c-ts-mode)
|
||||||
|
(c++-mode . c++-ts-mode)
|
||||||
|
(go-mode . go-ts-mode)
|
||||||
|
(go-mod-mode . go-mod-ts-mode)
|
||||||
|
(python-mode . python-ts-mode)
|
||||||
|
(sh-mode . bash-ts-mode)))
|
||||||
|
(setq treesit-language-source-alist
|
||||||
|
'((c "https://github.com/tree-sitter/tree-sitter-c")
|
||||||
|
(cpp "https://github.com/tree-sitter/tree-sitter-cpp")
|
||||||
|
(python "https://github.com/tree-sitter/tree-sitter-python")
|
||||||
|
(bash "https://github.com/tree-sitter/tree-sitter-bash")
|
||||||
|
(go "https://github.com/tree-sitter/tree-sitter-go")
|
||||||
|
(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))))
|
||||||
|
|
||||||
|
(provide 'treesitter)
|
||||||
|
|
||||||
|
;;; treesitter.el ends here
|
||||||
7
emacs/.emacs.d/scripts/email_sync.sh
Executable file
7
emacs/.emacs.d/scripts/email_sync.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
mbsync Gmail & pid1=$!
|
||||||
|
wait $pid1
|
||||||
|
|
||||||
|
mu index
|
||||||
|
|
||||||
47
emacs/.mbsyncrc
Normal file
47
emacs/.mbsyncrc
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
##################### iCloud Account ##################################
|
||||||
|
IMAPStore iCloud-remote
|
||||||
|
Host imap.mail.me.com
|
||||||
|
Port 993
|
||||||
|
User fscottodisantolo@icloud.com
|
||||||
|
PassCmd "pass show icloud-mail"
|
||||||
|
AuthMechs *
|
||||||
|
SSLType IMAPS
|
||||||
|
SSLVersions TLSv1.2 TLSv1.3
|
||||||
|
PipelineDepth 1
|
||||||
|
|
||||||
|
MaildirStore iCloud-local
|
||||||
|
Path ~/Maildir/iCloudAccount/
|
||||||
|
Inbox ~/Maildir/iCloudAccount/INBOX
|
||||||
|
SubFolders Verbatim
|
||||||
|
|
||||||
|
Channel iCloud
|
||||||
|
Far :iCloud-remote:
|
||||||
|
Near :iCloud-local:
|
||||||
|
Patterns *
|
||||||
|
Create Both
|
||||||
|
Expunge Both
|
||||||
|
SyncState *
|
||||||
|
|
||||||
|
##################### Protonmail Account ##################################
|
||||||
|
IMAPStore protonmail-remote
|
||||||
|
Host 127.0.0.1
|
||||||
|
Port 1143
|
||||||
|
User fscottodisantolo@protonmail.com
|
||||||
|
PassCmd "pass show protonmail-bridge"
|
||||||
|
AuthMechs *
|
||||||
|
SSLType STARTTLS
|
||||||
|
PipelineDepth 1
|
||||||
|
CertificateFile ~/.config/protonmail/bridge-v3/cert.pem
|
||||||
|
|
||||||
|
MaildirStore protonmail-local
|
||||||
|
Path ~/Maildir/ProtonMailAccount/
|
||||||
|
Inbox ~/Maildir/ProtonMailAccount/INBOX
|
||||||
|
SubFolders Verbatim
|
||||||
|
|
||||||
|
Channel Protonmail
|
||||||
|
Far :protonmail-remote:
|
||||||
|
Near :protonmail-local:
|
||||||
|
Patterns *
|
||||||
|
Create Both
|
||||||
|
Expunge Both
|
||||||
|
SyncState *
|
||||||
51
emacs/.msmtprc
Normal file
51
emacs/.msmtprc
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Set default values for all following accounts.
|
||||||
|
defaults
|
||||||
|
|
||||||
|
# Always use TLS
|
||||||
|
tls on
|
||||||
|
|
||||||
|
# Set a list of trusted CAs for TLS. The default is to use system settings,
|
||||||
|
# but you can select your own file.
|
||||||
|
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||||
|
logfile ~/.cache/msmtp.log
|
||||||
|
|
||||||
|
# Account iCloud
|
||||||
|
account icloud
|
||||||
|
|
||||||
|
# Host name of the SMTP server
|
||||||
|
host smtp.mail.me.com
|
||||||
|
|
||||||
|
# Use the mail submission port 587 instead of the SMTP port 25
|
||||||
|
port 587
|
||||||
|
|
||||||
|
# Envelop-from address
|
||||||
|
from fscottodisantolo@icloud.com
|
||||||
|
|
||||||
|
# Authentication. The password is given using one of five methods
|
||||||
|
auth on
|
||||||
|
user fscottodisantolo@icloud.com
|
||||||
|
passwordeval "pass show icloud-mail"
|
||||||
|
|
||||||
|
# Account Protonmail
|
||||||
|
account protonmail
|
||||||
|
|
||||||
|
# Hostname of the Protonmail bridge
|
||||||
|
host 127.0.0.1
|
||||||
|
|
||||||
|
# Port of the Protonmail bridge
|
||||||
|
port 1025
|
||||||
|
|
||||||
|
# Envelop-from address
|
||||||
|
from fscottodisantolo@protonmail.com
|
||||||
|
|
||||||
|
# Security
|
||||||
|
tls on
|
||||||
|
tls_trust_file ~/.config/protonmail/bridge-v3/cert.pem
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
auth on
|
||||||
|
user fscottodisantolo@protonmail.com
|
||||||
|
passwordeval "pass show protonmail-bridge"
|
||||||
|
|
||||||
|
# Set a default account
|
||||||
|
account default : icloud
|
||||||
@@ -6,4 +6,5 @@ saveAsFileExtension=png
|
|||||||
savePath=/home/fscotto/Pictures/Screenshots
|
savePath=/home/fscotto/Pictures/Screenshots
|
||||||
savePathFixed=true
|
savePathFixed=true
|
||||||
showStartupLaunchMessage=false
|
showStartupLaunchMessage=false
|
||||||
startupLaunch=false
|
startupLaunch=true
|
||||||
|
useJpgForClipboard=true
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
name = Fabio Scotto di Santolo
|
name = Fabio Scotto di Santolo
|
||||||
email = fabio.scottodisantolo@gmail.com
|
email = fabio.scottodisantolo@gmail.com
|
||||||
signingkey = 9DDD59AD62494FB2
|
signingkey = 9DDD59AD62494FB2
|
||||||
editor = nvim
|
|
||||||
|
|
||||||
[fetch]
|
[fetch]
|
||||||
prune = true
|
prune = true
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# -*- mode: i3wm-config -*-
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
#
|
#
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||||
@@ -9,6 +10,39 @@
|
|||||||
# layout, use the i3-config-wizard
|
# layout, use the i3-config-wizard
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# use these keys for focus, movement, and resize directions when reaching for
|
||||||
|
# the arrows is not convenient
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
|
||||||
|
set $term 'alacritty'
|
||||||
|
set $editor 'emacs'
|
||||||
|
set $filemanager 'nemo'
|
||||||
|
set $notification 'dunst'
|
||||||
|
set $browser 'org.mozilla.firefox'
|
||||||
|
set $clipboard 'diodon'
|
||||||
|
|
||||||
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
|
set $ws1 "1"
|
||||||
|
set $ws2 "2"
|
||||||
|
set $ws3 "3"
|
||||||
|
set $ws4 "4"
|
||||||
|
set $ws5 "5"
|
||||||
|
set $ws6 "6"
|
||||||
|
set $ws7 "7"
|
||||||
|
set $ws8 "8"
|
||||||
|
set $ws9 "9"
|
||||||
|
set $ws10 "10"
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
################## LOOK AND FEEL ##################
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
|
||||||
# Import Catppuccin theme defined colors
|
# Import Catppuccin theme defined colors
|
||||||
set $rosewater #f5e0dc
|
set $rosewater #f5e0dc
|
||||||
set $flamingo #f2cdcd
|
set $flamingo #f2cdcd
|
||||||
@@ -48,9 +82,6 @@ client.background $base
|
|||||||
# Setting cursor
|
# Setting cursor
|
||||||
# seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25
|
# seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25
|
||||||
|
|
||||||
# Logo key. Use Mod1 for Alt.
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
# Font for window titles. Will also be used by the bar unless a different font
|
# Font for window titles. Will also be used by the bar unless a different font
|
||||||
# is used in the bar {} block below.
|
# is used in the bar {} block below.
|
||||||
font pango:Noto Sans Regular 10
|
font pango:Noto Sans Regular 10
|
||||||
@@ -59,58 +90,18 @@ font pango:Noto Sans Regular 10
|
|||||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||||
#font pango:DejaVu Sans Mono 8
|
#font pango:DejaVu Sans Mono 8
|
||||||
|
|
||||||
# Start XDG autostart .desktop files using dex. See also
|
|
||||||
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
|
||||||
exec --no-startup-id dex --autostart --environment i3
|
|
||||||
|
|
||||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
|
||||||
# they are included here as an example. Modify as you see fit.
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
|
||||||
|
|
||||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
|
||||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
|
||||||
exec --no-startup-id nm-applet
|
|
||||||
|
|
||||||
# Polkit Authentication agent
|
|
||||||
exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
|
||||||
# bindsym XF86MonBrightnessUp exec --no-startup-id swayosd-client --brightness +5
|
|
||||||
# bindsym XF86MonBrightnessDown exec --no-startup-id swayosd-client --brightness -5
|
|
||||||
bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
|
|
||||||
|
|
||||||
# use these keys for focus, movement, and resize directions when reaching for
|
|
||||||
# the arrows is not convenient
|
|
||||||
set $left h
|
|
||||||
set $down j
|
|
||||||
set $up k
|
|
||||||
set $right l
|
|
||||||
|
|
||||||
# use Mouse+Mod4 to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# move tiling windows via drag & drop by left-clicking into the title bar,
|
|
||||||
# or left-clicking anywhere into the window while holding the floating modifier.
|
|
||||||
tiling_drag modifier titlebar
|
|
||||||
|
|
||||||
set $term 'alacritty'
|
|
||||||
set $browser 'firefox'
|
|
||||||
set $editor 'emacs'
|
|
||||||
|
|
||||||
# Windows configuration
|
# Windows configuration
|
||||||
default_border pixel 3
|
default_border pixel 3
|
||||||
default_floating_border pixel 3
|
default_floating_border pixel 3
|
||||||
gaps inner 5
|
gaps inner 5
|
||||||
gaps outer 5
|
gaps outer 5
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
################## WORKSPACES ##################
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
|
||||||
# Floating/sticky windows
|
# Floating/sticky windows
|
||||||
for_window [class="Pop-up"] floating enable
|
for_window [class="Pop-up"] floating enable
|
||||||
for_window [class="Bubble"] floating enable
|
for_window [class="Bubble"] floating enable
|
||||||
@@ -126,28 +117,67 @@ for_window [class="Webconsole"] floating enable
|
|||||||
for_window [class="Authy"] floating enable
|
for_window [class="Authy"] floating enable
|
||||||
for_window [class="Termfloat"] floating enable, resize set 960 540
|
for_window [class="Termfloat"] floating enable, resize set 960 540
|
||||||
for_window [class="Mpv"] floating enable, resize set 960 540
|
for_window [class="Mpv"] floating enable, resize set 960 540
|
||||||
|
for_window [class="Spotify"] floating enable, resize set 1280 1024, move scratchpad
|
||||||
|
|
||||||
# Workspaces
|
# Workspaces
|
||||||
assign [class="Emacs"] 1
|
assign [class="Emacs"] 1
|
||||||
assign [class="Firefox"] 2 # FIXME: change class name
|
assign [class="firefox"] 2
|
||||||
assign [class="Telegram"] 3
|
assign [class="Telegram"] 3
|
||||||
|
assign [class="discord"] 3
|
||||||
|
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
################## KEYBINDINGS ##################
|
||||||
|
###############################################################
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
# Logo key. Use Mod1 for Alt.
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
# start a terminal
|
# start a terminal
|
||||||
bindsym $mod+Return exec $term
|
bindsym $mod+Return exec $term
|
||||||
|
|
||||||
# kill focused window
|
# kill focused window
|
||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
# start default menu application
|
# define mode for launcher
|
||||||
bindsym $mod+d exec "rofi -show drun"
|
mode "launcher" {
|
||||||
bindsym $mod+Shift+s exec "rofi -show ssh"
|
bindsym d exec "rofi -show drun"
|
||||||
bindsym $mod+Shift+w exec "rofi -show window"
|
bindsym s exec "rofi -show ssh"
|
||||||
bindsym $mod+Shift+f exec "rofi -show filebrowser"
|
bindsym w exec "rofi -show window"
|
||||||
|
bindsym f exec "rofi -show filebrowser"
|
||||||
|
bindsym q exec ~/.config/i3/scripts/poweroff.sh
|
||||||
|
|
||||||
bindsym $mod+Shift+b exec $browser
|
bindsym $mod+d mode "default"
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
bindsym $mod+d mode "launcher"
|
||||||
|
|
||||||
|
bindsym $mod+Shift+f exec "nemo"
|
||||||
|
bindsym $mod+Shift+b exec "flatpak run org.mozilla.firefox"
|
||||||
|
bindsym $mod+Shift+t exec "flatpak run org.telegram.desktop"
|
||||||
|
bindsym $mod+Shift+e exec $editor
|
||||||
bindsym Print exec flameshot gui
|
bindsym Print exec flameshot gui
|
||||||
# bindsym $mod+Shift+v exec xfce4-clipman-history
|
bindsym $mod+Shift+v exec --no-startup-id $clipboard
|
||||||
|
|
||||||
|
# Use pactl to adjust volume in PulseAudio.
|
||||||
|
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
|
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||||
|
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||||
|
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
|
||||||
|
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
|
||||||
|
bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
|
||||||
|
|
||||||
|
# use Mouse+Mod4 to drag floating windows to their wanted position
|
||||||
|
floating_modifier $mod
|
||||||
|
|
||||||
|
# move tiling windows via drag & drop by left-clicking into the title bar,
|
||||||
|
# or left-clicking anywhere into the window while holding the floating modifier.
|
||||||
|
tiling_drag modifier titlebar
|
||||||
|
|
||||||
# change focus
|
# change focus
|
||||||
bindsym $mod+$left focus left
|
bindsym $mod+$left focus left
|
||||||
@@ -174,7 +204,7 @@ bindsym $mod+Shift+Up move up
|
|||||||
bindsym $mod+Shift+Right move right
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
# split in horizontal orientation
|
# split in horizontal orientation
|
||||||
# bindsym $mod+h split h
|
bindsym Mod1+h split h
|
||||||
|
|
||||||
# split in vertical orientation
|
# split in vertical orientation
|
||||||
bindsym $mod+v split v
|
bindsym $mod+v split v
|
||||||
@@ -197,7 +227,7 @@ bindsym $mod+space focus mode_toggle
|
|||||||
bindsym $mod+a focus parent
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
# focus the child container
|
# focus the child container
|
||||||
#bindsym Mod4+d focus child
|
bindsym Mod1+d focus child
|
||||||
|
|
||||||
# move the currently focused window to the scratchpad
|
# move the currently focused window to the scratchpad
|
||||||
bindsym $mod+Shift+minus move scratchpad
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
@@ -206,19 +236,6 @@ bindsym $mod+Shift+minus move scratchpad
|
|||||||
# If there are multiple scratchpad windows, this command cycles through them.
|
# If there are multiple scratchpad windows, this command cycles through them.
|
||||||
bindsym $mod+minus scratchpad show
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
# switch to workspace
|
||||||
bindsym $mod+1 workspace number $ws1
|
bindsym $mod+1 workspace number $ws1
|
||||||
bindsym $mod+2 workspace number $ws2
|
bindsym $mod+2 workspace number $ws2
|
||||||
@@ -251,7 +268,7 @@ bindsym $mod+Shift+c reload
|
|||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||||
bindsym $mod+Shift+r restart
|
bindsym $mod+Shift+r restart
|
||||||
# exit i3 (logs you out of your X session)
|
# exit i3 (logs you out of your X session)
|
||||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
#bindsym $mod+Shift+e exec ~/.config/i3/scripts/poweroff.sh
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
# resize window (you can also use the mouse for that)
|
||||||
mode "resize" {
|
mode "resize" {
|
||||||
@@ -280,38 +297,52 @@ mode "resize" {
|
|||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
###############################################################
|
||||||
# finds out, if available)
|
###############################################################
|
||||||
# bar {
|
################## AUTOSTART ##################
|
||||||
# status_command i3bar
|
###############################################################
|
||||||
# }
|
###############################################################
|
||||||
|
|
||||||
#######################################################################
|
# Start XDG autostart .desktop files using dex. See also
|
||||||
# automatically start i3-config-wizard to offer the user to create a
|
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
||||||
# keysym-based config which used their favorite modifier (alt or windows)
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
#
|
|
||||||
# i3-config-wizard will not launch if there already is a config file
|
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||||
# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or
|
# they are included here as an example. Modify as you see fit.
|
||||||
# ~/.i3/config.
|
|
||||||
#
|
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||||
# Please remove the following exec line:
|
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||||
#######################################################################
|
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
||||||
# exec i3-config-wizard
|
|
||||||
|
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||||
|
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||||
|
exec --no-startup-id nm-applet
|
||||||
|
|
||||||
|
# Polkit Authentication agent
|
||||||
|
exec_always --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
|
||||||
### Apply wallpaper
|
### Apply wallpaper
|
||||||
exec feh --bg-scale ~/.config/i3/wallpaper.jpg
|
exec_always --no-startup-id feh --bg-scale ~/.config/i3/wallpaper.jpg
|
||||||
|
|
||||||
### Run status bar
|
### Run status bar
|
||||||
exec ~/.config/polybar/launch.sh
|
exec_always --no-startup-id ~/.config/polybar/launch.sh
|
||||||
|
|
||||||
### Run in background X11 compositor
|
### Run in background X11 compositor
|
||||||
exec picom --config ~/.config/picom/picom.conf
|
exec_always --no-startup-id picom --config ~/.config/picom/picom.conf
|
||||||
|
|
||||||
### Run in background notification daemon
|
### Run in background notification daemon
|
||||||
exec $notification
|
exec_always --no-startup-id $notification
|
||||||
|
|
||||||
|
exec --no-startup-id $clipboard
|
||||||
|
|
||||||
### Enable autolock
|
### Enable autolock
|
||||||
exec xautolock -time 5 -locker ~/.config/i3/scripts/lockscreen.sh -detectsleep
|
exec_always xautolock -time 5 -locker ~/.config/i3/scripts/lockscreen.sh -detectsleep
|
||||||
|
|
||||||
### Screenshot tool
|
### Run screenshot tool
|
||||||
exec flameshot
|
exec flameshot
|
||||||
|
|
||||||
|
### Run my preferred editor
|
||||||
|
# exec $editor
|
||||||
|
|
||||||
|
### Run my preferred browser
|
||||||
|
exec flatpak run $browser
|
||||||
|
|||||||
12
i3/.config/i3/scripts/poweroff.sh
Executable file
12
i3/.config/i3/scripts/poweroff.sh
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
chosen=$(echo -e "⏻ Shutdown\n Restart\n Logout\n Suspend\n Hibernate" | rofi -dmenu -p "Power Menu:" -theme-str 'window {width: 20%;}')
|
||||||
|
|
||||||
|
case "$chosen" in
|
||||||
|
"⏻ Shutdown") systemctl poweroff ;;
|
||||||
|
" Restart") systemctl reboot ;;
|
||||||
|
" Logout") loginctl terminate-session $XDG_SESSION_ID ;;
|
||||||
|
" Suspend") systemctl suspend ;;
|
||||||
|
" Hibernate") systemctl hibernate ;;
|
||||||
|
*) exit 0 ;;
|
||||||
|
esac
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 249 KiB |
109
i3/.config/picom/picom.conf
Normal file
109
i3/.config/picom/picom.conf
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
## Modified to have rules organized to the rules section at bottom, legacy options commented out.
|
||||||
|
|
||||||
|
# OPACITY
|
||||||
|
# inactive-opacity = 0.8;
|
||||||
|
# frame-opacity = 0.7;
|
||||||
|
|
||||||
|
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
|
||||||
|
# inactive-opacity-override = true;
|
||||||
|
|
||||||
|
# if for some reason you want all windows transparent
|
||||||
|
# active-opacity = 1.0
|
||||||
|
|
||||||
|
# inactive-dim = 0.05
|
||||||
|
|
||||||
|
# fixed inactive dim value
|
||||||
|
# inactive-dim-fixed = 1.0
|
||||||
|
|
||||||
|
# focus-exclude = [ "class_g = 'dwm'" ];
|
||||||
|
|
||||||
|
# opacity-rule = [
|
||||||
|
# "100:class_g = 'example'"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# ROUNDED CORNERS
|
||||||
|
corner-radius = 3
|
||||||
|
|
||||||
|
# uncommented for square notification box
|
||||||
|
rounded-corners-exclude = [
|
||||||
|
"class_g = 'Polybar'",
|
||||||
|
"class_g = 'Dunst'"
|
||||||
|
];
|
||||||
|
|
||||||
|
# BLURRING
|
||||||
|
# methods: none, gaussian, box, kernel (define custom kernel), dual_kawase
|
||||||
|
blur:
|
||||||
|
{
|
||||||
|
method = "dual_kawase";
|
||||||
|
size = 10;
|
||||||
|
strength = 3;
|
||||||
|
# default deviation is 0.84
|
||||||
|
# deviation = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# semi-transparent
|
||||||
|
blur-background = true
|
||||||
|
|
||||||
|
# blur-background-frame = true
|
||||||
|
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||||
|
blur-background-fixed = true
|
||||||
|
|
||||||
|
# set custom blur kernel (method to kernel), preset examples:
|
||||||
|
# blur-kern = "3x3box";
|
||||||
|
# blur-kern = "5x5gaussian";
|
||||||
|
|
||||||
|
# SHADOWS
|
||||||
|
# shadow = true;
|
||||||
|
shadow-radius = 1; #blur radius
|
||||||
|
shadow-opacity = .1
|
||||||
|
shadow-offset-x = 0;
|
||||||
|
shadow-offset-y = 0;
|
||||||
|
shadow-color = "#000000"
|
||||||
|
# shadow-exclude = [];
|
||||||
|
|
||||||
|
# FADING
|
||||||
|
fading = true;
|
||||||
|
fade-in-step = 0.03;
|
||||||
|
fade-out-step = 0.03;
|
||||||
|
fade-delta = 3
|
||||||
|
|
||||||
|
# OTHER SETTINGS
|
||||||
|
# dbus = true
|
||||||
|
# daemon = false
|
||||||
|
|
||||||
|
# backends: `xrender`, `glx`, `egl` or `xr_glx_hybrid`
|
||||||
|
backend = "egl";
|
||||||
|
dithered-present = false;
|
||||||
|
vsync = true;
|
||||||
|
# mark-wmwin-focused = true;
|
||||||
|
# mark-ovredir-focused = true;
|
||||||
|
detect-rounded-corners = false
|
||||||
|
detect-client-opacity = true;
|
||||||
|
use-ewmh-active-win = true
|
||||||
|
detect-transient = true;
|
||||||
|
# glx-no-stencil = true
|
||||||
|
use-damage = true;
|
||||||
|
log-level = "warn";
|
||||||
|
|
||||||
|
# LEGACY
|
||||||
|
# wintypes:
|
||||||
|
# {
|
||||||
|
# tooltip = { fade = true; shadow = true; opacity = 0.5; focus = true; full-shadow = false; };
|
||||||
|
# dock = { shadow = false; clip-shadow-above = true; }
|
||||||
|
# dnd = { shadow = false; }
|
||||||
|
# popup_menu = { opacity = 0.7; }
|
||||||
|
# dropdown_menu = { opacity = 0.7; }
|
||||||
|
# normal = { opacity = 1;}
|
||||||
|
# };
|
||||||
|
|
||||||
|
# WINDOW RULES
|
||||||
|
rules = (
|
||||||
|
# { match = "name = 'dwm'"; opacity = 1; },
|
||||||
|
{ match = "focused"; opacity = 1; },
|
||||||
|
{ match = "!focused"; opacity = 0.85; },
|
||||||
|
{ match = "tooltip"; fade = true; shadow = true; opacity = 0.5; focus = true; full-shadow = false; },
|
||||||
|
{ match = "popup_menu"; opacity = 0.7; },
|
||||||
|
{ match = "dropdown_menu"; opacity = 0.7; }
|
||||||
|
)
|
||||||
|
|
||||||
|
# picom -b to daemonize
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
;==========================================================
|
;==========================================================
|
||||||
;
|
;
|
||||||
;
|
|
||||||
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
@@ -9,179 +8,203 @@
|
|||||||
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; To learn more about how to configure Polybar
|
; To learn more about how to configure Polybar
|
||||||
; go to https://github.com/polybar/polybar
|
; go to https://github.com/polybar/polybar
|
||||||
;
|
;
|
||||||
; The README contains a lot of information
|
; The README contains a lot of information
|
||||||
;
|
;
|
||||||
;==========================================================
|
;==========================================================
|
||||||
|
|
||||||
[global/wm]
|
[global/wm]
|
||||||
include-file = $HOME/.config/polybar/themes/mocha.ini
|
include-file = $HOME/.config/polybar/themes/mocha.ini
|
||||||
|
include-file = $HOME/.config/polybar/modules.ini
|
||||||
|
margin-top = 0
|
||||||
|
margin-bottom = 0
|
||||||
|
|
||||||
[colors]
|
; FIXME remove radius on left and right borders
|
||||||
|
[bar/mainbar]
|
||||||
|
; monitor = eDP-1 ; xrandr --query | grep " connected"
|
||||||
|
; monitor = ${env:POLYBAR_MONITOR:}
|
||||||
|
|
||||||
|
; Require the monitor to be in connected state
|
||||||
|
; XRandR sometimes reports my monitor as being disconnected (when in use)
|
||||||
|
monitor-strict = false
|
||||||
|
|
||||||
|
; Tell the Window Manager not to configure the window.
|
||||||
|
; Use this to detach the bar if your WM is locking its size/position.
|
||||||
|
override-redirect = false
|
||||||
|
|
||||||
|
; Put the bar at the bottom of the screen
|
||||||
|
bottom = false
|
||||||
|
|
||||||
|
; Prefer fixed center position for the `modules-center` block
|
||||||
|
;
|
||||||
|
; When false, the center position will be based on the size of the other blocks.
|
||||||
|
fixed-center = true
|
||||||
|
|
||||||
|
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
||||||
|
; the percentage can optionally be extended with a pixel offset like so:
|
||||||
|
; 50%:-10, this will result in an offset in the x or y direction
|
||||||
|
; of 50% minus 10 pixels
|
||||||
|
offset-x = 0%
|
||||||
|
offset-y = 0%
|
||||||
|
|
||||||
|
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||||
background = ${colors.base}
|
background = ${colors.base}
|
||||||
background-alt = ${colors.mantle}
|
|
||||||
|
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||||
foreground = ${colors.text}
|
foreground = ${colors.text}
|
||||||
primary = ${colors.blue}
|
|
||||||
secondary = ${colors.sapphire}
|
|
||||||
alert = ${colors.red}
|
|
||||||
disabled = ${colors.crust}
|
|
||||||
|
|
||||||
[bar/mybar]
|
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
|
||||||
|
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
|
||||||
|
; the percentage can optionally be extended with a pixel offset like so:
|
||||||
width = 100%
|
width = 100%
|
||||||
height = 24pt
|
height = 26pt
|
||||||
radius = 6
|
|
||||||
|
|
||||||
; dpi = 96
|
; Value used for drawing rounded corners
|
||||||
|
; Note: This shouldn't be used together with border-size because the border
|
||||||
|
; doesn't get rounded
|
||||||
|
; Individual top/bottom values can be defined using:
|
||||||
|
; radius-{top,bottom}
|
||||||
|
radius-top = 0
|
||||||
|
radius-bottom = 0.0
|
||||||
|
|
||||||
background = ${colors.background}
|
; Under-/overline pixel size and argb color
|
||||||
foreground = ${colors.foreground}
|
; Individual values can be defined using:
|
||||||
|
; {overline,underline}-size
|
||||||
|
; {overline,underline}-color
|
||||||
|
underline-size = 2
|
||||||
|
underline-color = ${color.foreground}
|
||||||
|
|
||||||
line-size = 3pt
|
; Values applied to all borders
|
||||||
|
; Individual side values can be defined using:
|
||||||
border-size = 4pt
|
; border-{left,top,right,bottom}-size
|
||||||
border-color = #00000000
|
; border-{left,top,right,bottom}-color
|
||||||
|
; The top and bottom borders are added to the bar height, so the effective
|
||||||
|
; window height is:
|
||||||
|
; height + border-top-size + border-bottom-size
|
||||||
|
; Meanwhile the effective window width is defined entirely by the width key and
|
||||||
|
; the border is placed withing this area. So you effectively only have the
|
||||||
|
; following horizontal space on the bar:
|
||||||
|
; width - border-right-size - border-left-size
|
||||||
|
border-size = 0
|
||||||
|
border-color = ${colors.base}
|
||||||
|
|
||||||
|
; Number of spaces to add at the beginning/end of the bar
|
||||||
|
; Individual side values can be defined using:
|
||||||
|
; padding-{left,right}
|
||||||
padding-left = 0
|
padding-left = 0
|
||||||
padding-right = 1
|
padding-right = 0
|
||||||
|
|
||||||
|
; Number of spaces to add before/after each module
|
||||||
|
; Individual side values can be defined using:
|
||||||
|
; module-margin-{left,right}
|
||||||
|
;module-margin-left = 0
|
||||||
|
;module-margin-right = 0
|
||||||
module-margin = 1
|
module-margin = 1
|
||||||
|
|
||||||
|
; The separator will be inserted between the output of each module
|
||||||
separator = |
|
separator = |
|
||||||
separator-foreground = ${colors.disabled}
|
separator-foreground = ${colors.crust}
|
||||||
|
|
||||||
font-0 = ComicShannsMono Nerd Font;2
|
; Fonts are defined using <font-name>;<vertical-offset>
|
||||||
|
; Font names are specified using a fontconfig pattern.
|
||||||
|
; font-0 = NotoSans-Regular:size=8;2
|
||||||
|
; font-1 = MaterialIcons:size=10
|
||||||
|
; font-2 = Termsynu:size=8;-1
|
||||||
|
; font-3 = FontAwesome:size=10
|
||||||
|
; See the Fonts wiki page for more details
|
||||||
|
font-0 = "JetBrainsMono Nerd Font:size=12;2"
|
||||||
|
|
||||||
modules-left = xworkspaces xwindow
|
; Modules are added to one of the available blocks
|
||||||
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
; modules-center = xwindow xbacklight
|
||||||
|
; modules-right = ipc clock
|
||||||
|
modules-left = xworkspaces
|
||||||
|
modules-center =
|
||||||
|
modules-right = spotify filesystem memory cpu pulseaudio backlight battery0 battery1 xkeyboard date systray
|
||||||
|
|
||||||
cursor-click = pointer
|
; Value to be used to set the WM_NAME atom
|
||||||
cursor-scroll = ns-resize
|
; If the value is empty or undefined, the atom value
|
||||||
|
; will be created from the following template: polybar-[BAR]_[MONITOR]
|
||||||
|
; NOTE: The placeholders are not available for custom values
|
||||||
|
;wm-name =
|
||||||
|
|
||||||
|
; Locale used to localize various module data (e.g. date)
|
||||||
|
; Expects a valid libc locale, for example: sv_SE.UTF-8
|
||||||
|
;locale =
|
||||||
|
|
||||||
|
; Position of the system tray window
|
||||||
|
; If empty or undefined, tray support will be disabled
|
||||||
|
; NOTE: A center aligned tray will cover center aligned modules
|
||||||
|
;
|
||||||
|
; Available positions:
|
||||||
|
; left
|
||||||
|
; center
|
||||||
|
; right
|
||||||
|
; none
|
||||||
|
tray-position = none
|
||||||
|
|
||||||
|
; If true, the bar will not shift its
|
||||||
|
; contents when the tray changes
|
||||||
|
tray-detached = false
|
||||||
|
|
||||||
|
; Tray icon max size
|
||||||
|
tray-maxsize = 20
|
||||||
|
|
||||||
|
; Background color for the tray container
|
||||||
|
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||||
|
; By default the tray container will use the bar
|
||||||
|
; background color.
|
||||||
|
tray-background = ${color.base}
|
||||||
|
|
||||||
|
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
||||||
|
tray-offset-x = 0
|
||||||
|
tray-offset-y = 0
|
||||||
|
|
||||||
|
; Pad the sides of each tray icon
|
||||||
|
tray-padding = 0
|
||||||
|
|
||||||
|
; Scale factor for tray clients
|
||||||
|
tray-scale = 0.5
|
||||||
|
|
||||||
|
; Restack the bar window and put it above the
|
||||||
|
; selected window manager's root
|
||||||
|
;
|
||||||
|
; Fixes the issue where the bar is being drawn
|
||||||
|
; on top of fullscreen window's
|
||||||
|
;
|
||||||
|
; Currently supported WM's:
|
||||||
|
; bspwm
|
||||||
|
; i3 (requires: `override-redirect = true`)
|
||||||
|
wm-restack = i3
|
||||||
|
|
||||||
|
; Set a DPI values used when rendering text
|
||||||
|
; This only affects scalable fonts
|
||||||
|
; dpi =
|
||||||
|
|
||||||
|
; Enable support for inter-process messaging
|
||||||
|
; See the Messaging wiki page for more details.
|
||||||
enable-ipc = true
|
enable-ipc = true
|
||||||
|
|
||||||
; wm-restack = generic
|
; Fallback click handlers that will be called if
|
||||||
; wm-restack = bspwm
|
; there's no matching module handler found.
|
||||||
; wm-restack = i3
|
click-left =
|
||||||
|
click-middle =
|
||||||
|
click-right =
|
||||||
|
scroll-up =
|
||||||
|
scroll-down =
|
||||||
|
double-click-left =
|
||||||
|
double-click-middle =
|
||||||
|
double-click-right =
|
||||||
|
|
||||||
; override-redirect = true
|
; Requires polybar to be built with xcursor support (xcb-util-cursor)
|
||||||
|
; Possible values are:
|
||||||
; This module is not active by default (to enable it, add it to one of the
|
; - default : The default pointer as before, can also be an empty string (default)
|
||||||
; modules-* list above).
|
; - pointer : Typically in the form of a hand
|
||||||
; Please note that only a single tray can exist at any time. If you launch
|
; - ns-resize : Up and down arrows, can be used to indicate scrolling
|
||||||
; multiple bars with this module, only a single one will show it, the others
|
cursor-click = pointer
|
||||||
; will produce a warning. Which bar gets the module is timing dependent and can
|
cursor-scroll = ns-resize
|
||||||
; be quite random.
|
|
||||||
; For more information, see the documentation page for this module:
|
|
||||||
; https://polybar.readthedocs.io/en/stable/user/modules/tray.html
|
|
||||||
[module/systray]
|
|
||||||
type = internal/tray
|
|
||||||
|
|
||||||
format-margin = 8pt
|
|
||||||
tray-spacing = 16pt
|
|
||||||
|
|
||||||
[module/xworkspaces]
|
|
||||||
type = internal/xworkspaces
|
|
||||||
|
|
||||||
label-active = %name%
|
|
||||||
label-active-background = ${colors.background-alt}
|
|
||||||
label-active-underline= ${colors.primary}
|
|
||||||
label-active-padding = 1
|
|
||||||
|
|
||||||
label-occupied = %name%
|
|
||||||
label-occupied-padding = 1
|
|
||||||
|
|
||||||
label-urgent = %name%
|
|
||||||
label-urgent-background = ${colors.alert}
|
|
||||||
label-urgent-padding = 1
|
|
||||||
|
|
||||||
label-empty = %name%
|
|
||||||
label-empty-foreground = ${colors.disabled}
|
|
||||||
label-empty-padding = 1
|
|
||||||
|
|
||||||
[module/xwindow]
|
|
||||||
type = internal/xwindow
|
|
||||||
label = %title:0:60:...%
|
|
||||||
|
|
||||||
[module/filesystem]
|
|
||||||
type = internal/fs
|
|
||||||
interval = 25
|
|
||||||
|
|
||||||
mount-0 = /
|
|
||||||
|
|
||||||
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
|
||||||
|
|
||||||
label-unmounted = %mountpoint% not mounted
|
|
||||||
label-unmounted-foreground = ${colors.disabled}
|
|
||||||
|
|
||||||
[module/pulseaudio]
|
|
||||||
type = internal/pulseaudio
|
|
||||||
|
|
||||||
format-volume-prefix = "VOL "
|
|
||||||
format-volume-prefix-foreground = ${colors.primary}
|
|
||||||
format-volume = <label-volume>
|
|
||||||
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
label-muted = muted
|
|
||||||
label-muted-foreground = ${colors.disabled}
|
|
||||||
|
|
||||||
[module/xkeyboard]
|
|
||||||
type = internal/xkeyboard
|
|
||||||
blacklist-0 = num lock
|
|
||||||
|
|
||||||
label-layout = %layout%
|
|
||||||
label-layout-foreground = ${colors.primary}
|
|
||||||
|
|
||||||
label-indicator-padding = 2
|
|
||||||
label-indicator-margin = 1
|
|
||||||
label-indicator-foreground = ${colors.background}
|
|
||||||
label-indicator-background = ${colors.secondary}
|
|
||||||
|
|
||||||
[module/memory]
|
|
||||||
type = internal/memory
|
|
||||||
interval = 2
|
|
||||||
format-prefix = "RAM "
|
|
||||||
format-prefix-foreground = ${colors.primary}
|
|
||||||
label = %percentage_used:2%%
|
|
||||||
|
|
||||||
[module/cpu]
|
|
||||||
type = internal/cpu
|
|
||||||
interval = 2
|
|
||||||
format-prefix = "CPU "
|
|
||||||
format-prefix-foreground = ${colors.primary}
|
|
||||||
label = %percentage:2%%
|
|
||||||
|
|
||||||
[network-base]
|
|
||||||
type = internal/network
|
|
||||||
interval = 5
|
|
||||||
format-connected = <label-connected>
|
|
||||||
format-disconnected = <label-disconnected>
|
|
||||||
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
|
||||||
|
|
||||||
[module/wlan]
|
|
||||||
inherit = network-base
|
|
||||||
interface-type = wireless
|
|
||||||
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
|
||||||
|
|
||||||
[module/eth]
|
|
||||||
inherit = network-base
|
|
||||||
interface-type = wired
|
|
||||||
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
|
||||||
|
|
||||||
[module/date]
|
|
||||||
type = internal/date
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
date = %H:%M
|
|
||||||
date-alt = %Y-%m-%d %H:%M:%S
|
|
||||||
|
|
||||||
label = %date%
|
|
||||||
label-foreground = ${colors.primary}
|
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
screenchange-reload = true
|
screenchange-reload = true
|
||||||
pseudo-transparency = true
|
pseudo-transparency = true
|
||||||
|
|
||||||
; vim:ft=dosini
|
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ polybar-msg cmd quit
|
|||||||
|
|
||||||
# Launch barxs
|
# Launch barxs
|
||||||
echo "---" | tee -a /tmp/polybar-mybar.log
|
echo "---" | tee -a /tmp/polybar-mybar.log
|
||||||
polybar mybar 2>&1 | tee -a /tmp/polybar-mybar.log & disown
|
polybar mainbar 2>&1 | tee -a /tmp/polybar-mybar.log & disown
|
||||||
|
|
||||||
echo "Bars launched..."
|
echo "Bars launched..."
|
||||||
|
|||||||
585
i3/.config/polybar/modules.ini
Normal file
585
i3/.config/polybar/modules.ini
Normal file
@@ -0,0 +1,585 @@
|
|||||||
|
; FIXME adapt systray icons to other status bar icons
|
||||||
|
[module/systray]
|
||||||
|
type = internal/tray
|
||||||
|
format-margin = 8pt
|
||||||
|
tray-spacing = 14pt
|
||||||
|
|
||||||
|
[module/xworkspaces]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
label-active = %name%
|
||||||
|
label-active-background = ${colors.mantle}
|
||||||
|
label-active-foreground = ${colors.mauve}
|
||||||
|
label-active-underline= ${colors.mauve}
|
||||||
|
label-active-padding = 1
|
||||||
|
label-occupied = %name%
|
||||||
|
label-occupied-padding = 1
|
||||||
|
label-urgent = %name%
|
||||||
|
label-urgent-background = ${colors.red}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
label-empty = %name%
|
||||||
|
label-empty-foreground = ${colors.crust}
|
||||||
|
label-empty-padding = 1
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:60:...%
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
mount-0 = /
|
||||||
|
mount-1 = /home
|
||||||
|
label-mounted = %{F#F2CDCD}%mountpoint%%{F-} %percentage_used%%
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.crust}
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
;format-volume-prefix = "VOL "
|
||||||
|
;format-volume-prefix-foreground = ${colors.blue}
|
||||||
|
|
||||||
|
format-volume = <ramp-volume> <label-volume>
|
||||||
|
label-volume = %percentage%%
|
||||||
|
ramp-volume-foreground = ${colors.rosewater}
|
||||||
|
|
||||||
|
format-muted = <label-muted>
|
||||||
|
label-muted = %percentage%%
|
||||||
|
ramp-muted-foreground = ${colors.red}
|
||||||
|
|
||||||
|
ramp-volume-0 =
|
||||||
|
ramp-volume-1 =
|
||||||
|
ramp-volume-2 =
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-foreground = ${colors.maroon}
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-foreground = ${colors.base}
|
||||||
|
label-indicator-background = ${colors.peach}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.teal}
|
||||||
|
label = %gb_used%/%gb_total%
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.pink}
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[network-base]
|
||||||
|
type = internal/network
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wireless
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wired
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1
|
||||||
|
date = %H:%M
|
||||||
|
date-alt = %Y-%m-%d %H:%M:%S
|
||||||
|
label = %date%
|
||||||
|
;label-foreground = ${colors.blue}
|
||||||
|
|
||||||
|
[module/battery0]
|
||||||
|
type = internal/battery
|
||||||
|
|
||||||
|
; This is useful in case the battery never reports 100% charge
|
||||||
|
; Default: 100
|
||||||
|
full-at = 100
|
||||||
|
|
||||||
|
; format-low once this charge percentage is reached
|
||||||
|
; Default: 10
|
||||||
|
; New in version 3.6.0
|
||||||
|
low-at = 20
|
||||||
|
|
||||||
|
; Use the following command to list batteries and adapters:
|
||||||
|
; $ ls -1 /sys/class/power_supply/
|
||||||
|
battery = BAT0
|
||||||
|
adapter = ADP1
|
||||||
|
|
||||||
|
; If an inotify event haven't been reported in this many
|
||||||
|
; seconds, manually poll for new values.
|
||||||
|
;
|
||||||
|
; Needed as a fallback for systems that don't report events
|
||||||
|
; on sysfs/procfs.
|
||||||
|
;
|
||||||
|
; Disable polling by setting the interval to 0.
|
||||||
|
;
|
||||||
|
; Default: 5
|
||||||
|
poll-interval = 5
|
||||||
|
|
||||||
|
; see "man date" for details on how to format the time string
|
||||||
|
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||||
|
; Default: %H:%M:%S
|
||||||
|
time-format = %H:%M
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-charging> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; <animation-charging>
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
animation-charging-foreground = ${colors.green}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-discharging> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; <animation-discharging>
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
ramp-capacity-foreground = ${colors.yellow}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-full> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
format-full = <ramp-capacity> <label-full>
|
||||||
|
format-full-foreground = ${colors.green}
|
||||||
|
|
||||||
|
; Format used when battery level drops to low-at
|
||||||
|
; If not defined, format-discharging is used instead.
|
||||||
|
; Available tags:
|
||||||
|
; <label-low>
|
||||||
|
; <animation-low>
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; New in version 3.6.0
|
||||||
|
format-low = <ramp-capacity> <label-low>
|
||||||
|
format-low-foreground = ${colors.red}
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current charge rate in watts)
|
||||||
|
;label-charging = Charging %percentage%%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current discharge rate in watts)
|
||||||
|
;label-discharging = Discharging %percentage%%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
;label-full = Fully charged
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current discharge rate in watts)
|
||||||
|
; New in versinon 3.6.0
|
||||||
|
; label-low = BATTERY LOW
|
||||||
|
|
||||||
|
; Only applies if <ramp-capacity> is used
|
||||||
|
ramp-capacity-0 =
|
||||||
|
ramp-capacity-1 =
|
||||||
|
ramp-capacity-2 =
|
||||||
|
ramp-capacity-3 =
|
||||||
|
ramp-capacity-4 =
|
||||||
|
|
||||||
|
; Only applies if <bar-capacity> is used
|
||||||
|
bar-capacity-width = 10
|
||||||
|
|
||||||
|
; Only applies if <animation-charging> is used
|
||||||
|
animation-charging-0 =
|
||||||
|
animation-charging-1 =
|
||||||
|
animation-charging-2 =
|
||||||
|
animation-charging-3 =
|
||||||
|
animation-charging-4 =
|
||||||
|
; Framerate in milliseconds
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
; Only applies if <animation-discharging> is used
|
||||||
|
animation-discharging-0 =
|
||||||
|
animation-discharging-1 =
|
||||||
|
animation-discharging-2 =
|
||||||
|
animation-discharging-3 =
|
||||||
|
animation-discharging-4 =
|
||||||
|
; Framerate in milliseconds
|
||||||
|
animation-discharging-framerate = 500
|
||||||
|
|
||||||
|
; Only applies if <animation-low> is used
|
||||||
|
; New in version 3.6.0
|
||||||
|
;animation-low-0 = !
|
||||||
|
;animation-low-1 =
|
||||||
|
;animation-low-framerate = 200
|
||||||
|
|
||||||
|
[module/battery1]
|
||||||
|
type = internal/battery
|
||||||
|
|
||||||
|
; This is useful in case the battery never reports 100% charge
|
||||||
|
; Default: 100
|
||||||
|
full-at = 100
|
||||||
|
|
||||||
|
; format-low once this charge percentage is reached
|
||||||
|
; Default: 10
|
||||||
|
; New in version 3.6.0
|
||||||
|
low-at = 20
|
||||||
|
|
||||||
|
; Use the following command to list batteries and adapters:
|
||||||
|
; $ ls -1 /sys/class/power_supply/
|
||||||
|
battery = BAT1
|
||||||
|
adapter = ADP1
|
||||||
|
|
||||||
|
; If an inotify event haven't been reported in this many
|
||||||
|
; seconds, manually poll for new values.
|
||||||
|
;
|
||||||
|
; Needed as a fallback for systems that don't report events
|
||||||
|
; on sysfs/procfs.
|
||||||
|
;
|
||||||
|
; Disable polling by setting the interval to 0.
|
||||||
|
;
|
||||||
|
; Default: 5
|
||||||
|
poll-interval = 5
|
||||||
|
|
||||||
|
; see "man date" for details on how to format the time string
|
||||||
|
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||||
|
; Default: %H:%M:%S
|
||||||
|
time-format = %H:%M
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-charging> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; <animation-charging>
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
animation-charging-foreground = ${colors.green}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-discharging> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; <animation-discharging>
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
ramp-capacity-foreground = ${colors.yellow}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-full> (default)
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
format-full = <ramp-capacity> <label-full>
|
||||||
|
format-full-foreground = ${colors.green}
|
||||||
|
|
||||||
|
; Format used when battery level drops to low-at
|
||||||
|
; If not defined, format-discharging is used instead.
|
||||||
|
; Available tags:
|
||||||
|
; <label-low>
|
||||||
|
; <animation-low>
|
||||||
|
; <bar-capacity>
|
||||||
|
; <ramp-capacity>
|
||||||
|
; New in version 3.6.0
|
||||||
|
format-low = <ramp-capacity> <label-low>
|
||||||
|
format-low-foreground = ${colors.red}
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current charge rate in watts)
|
||||||
|
;label-charging = Charging %percentage%%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current discharge rate in watts)
|
||||||
|
;label-discharging = Discharging %percentage%%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
;label-full = Fully charged
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default) - is set to 100 if full-at is reached
|
||||||
|
; %percentage_raw%
|
||||||
|
; %time%
|
||||||
|
; %consumption% (shows current discharge rate in watts)
|
||||||
|
; New in versinon 3.6.0
|
||||||
|
; label-low = BATTERY LOW
|
||||||
|
|
||||||
|
; Only applies if <ramp-capacity> is used
|
||||||
|
ramp-capacity-0 =
|
||||||
|
ramp-capacity-1 =
|
||||||
|
ramp-capacity-2 =
|
||||||
|
ramp-capacity-3 =
|
||||||
|
ramp-capacity-4 =
|
||||||
|
|
||||||
|
; Only applies if <bar-capacity> is used
|
||||||
|
bar-capacity-width = 10
|
||||||
|
|
||||||
|
; Only applies if <animation-charging> is used
|
||||||
|
animation-charging-0 =
|
||||||
|
animation-charging-1 =
|
||||||
|
animation-charging-2 =
|
||||||
|
animation-charging-3 =
|
||||||
|
animation-charging-4 =
|
||||||
|
; Framerate in milliseconds
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
; Only applies if <animation-discharging> is used
|
||||||
|
animation-discharging-0 =
|
||||||
|
animation-discharging-1 =
|
||||||
|
animation-discharging-2 =
|
||||||
|
animation-discharging-3 =
|
||||||
|
animation-discharging-4 =
|
||||||
|
; Framerate in milliseconds
|
||||||
|
animation-discharging-framerate = 500
|
||||||
|
|
||||||
|
; Only applies if <animation-low> is used
|
||||||
|
; New in version 3.6.0
|
||||||
|
;animation-low-0 = !
|
||||||
|
;animation-low-1 =
|
||||||
|
;animation-low-framerate = 200
|
||||||
|
|
||||||
|
[module/backlight]
|
||||||
|
type = internal/backlight
|
||||||
|
|
||||||
|
; Use the following command to list available cards:
|
||||||
|
; $ ls -1 /sys/class/backlight/
|
||||||
|
; Default: first usable card in /sys/class/backlight (new in version 3.7.0)
|
||||||
|
card = intel_backlight
|
||||||
|
|
||||||
|
; Use the `/sys/class/backlight/.../actual-brightness` file
|
||||||
|
; rather than the regular `brightness` file.
|
||||||
|
; New in version 3.6.0
|
||||||
|
; Changed in version: 3.7.0: Defaults to true also on amdgpu backlights
|
||||||
|
; Default: true
|
||||||
|
use-actual-brightness = true
|
||||||
|
|
||||||
|
; Interval in seconds after which after which the current brightness is read
|
||||||
|
; (even if no update is detected).
|
||||||
|
; Use this as a fallback if brightness updates are not registering in polybar
|
||||||
|
; (which happens if the use-actual-brightness is false).
|
||||||
|
; There is no guarantee on the precisio of this timing.
|
||||||
|
; Set to 0 to turn off
|
||||||
|
; New in version 3.7.0
|
||||||
|
; Default: 0 (5 if use-actual-brightness is false)
|
||||||
|
poll-interval = 0
|
||||||
|
|
||||||
|
; Enable changing the backlight with the scroll wheel
|
||||||
|
; NOTE: This may require additional configuration on some systems. Polybar will
|
||||||
|
; write to `/sys/class/backlight/${self.card}/brightness` which requires polybar
|
||||||
|
; to have write access to that file.
|
||||||
|
; DO NOT RUN POLYBAR AS ROOT.
|
||||||
|
; The recommended way is to add the user to the
|
||||||
|
; `video` group and give that group write-privileges for the `brightness` file.
|
||||||
|
; See the ArchWiki for more information:
|
||||||
|
; https://wiki.archlinux.org/index.php/Backlight#ACPI
|
||||||
|
; Default: false
|
||||||
|
enable-scroll = true
|
||||||
|
|
||||||
|
; Interval for changing the brightness (in percentage points).
|
||||||
|
; New in version 3.7.0
|
||||||
|
; Default: 5
|
||||||
|
scroll-interval = 10
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label> (default)
|
||||||
|
; <ramp>
|
||||||
|
; <bar>
|
||||||
|
format = <ramp> <label>
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %percentage% (default)
|
||||||
|
label = %percentage%%
|
||||||
|
|
||||||
|
; Only applies if <ramp> is used
|
||||||
|
ramp-foreground = ${colors.peach}
|
||||||
|
ramp-0 = ""
|
||||||
|
ramp-1 = ""
|
||||||
|
ramp-2 = ""
|
||||||
|
ramp-3 = ""
|
||||||
|
ramp-4 = ""
|
||||||
|
ramp-5 = ""
|
||||||
|
ramp-6 = ""
|
||||||
|
ramp-7 = ""
|
||||||
|
ramp-8 = ""
|
||||||
|
|
||||||
|
; Only applies if <bar> is used
|
||||||
|
bar-width = 10
|
||||||
|
bar-indicator = |
|
||||||
|
bar-fill = ─
|
||||||
|
bar-empty = ─
|
||||||
|
|
||||||
|
[module/mpd]
|
||||||
|
type = internal/mpd
|
||||||
|
|
||||||
|
; Host where mpd is running (either ip or domain name)
|
||||||
|
; Can also be the full path to a unix socket where mpd is running.
|
||||||
|
host = 127.0.0.1
|
||||||
|
port = 6600
|
||||||
|
; password = mysecretpassword
|
||||||
|
|
||||||
|
; Seconds to sleep between progressbar/song timer sync
|
||||||
|
; Default: 1
|
||||||
|
interval = 2
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-song> (default)
|
||||||
|
; <label-time>
|
||||||
|
; <bar-progress>
|
||||||
|
; <toggle> - gets replaced with <icon-(pause|play)>
|
||||||
|
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
||||||
|
; <icon-random>
|
||||||
|
; <icon-repeat>
|
||||||
|
; <icon-repeatone> (deprecated)
|
||||||
|
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
||||||
|
; <icon-consume>
|
||||||
|
; <icon-prev>
|
||||||
|
; <icon-stop>
|
||||||
|
; <icon-play>
|
||||||
|
; <icon-pause>
|
||||||
|
; <icon-next>
|
||||||
|
; <icon-seekb>
|
||||||
|
; <icon-seekf>
|
||||||
|
format-online = <icon-prev> <icon-seekb> <icon-stop> <toggle> <icon-seekf> <icon-next> <icon-repeat> <icon-random> <bar-progress> <label-time> <label-song>
|
||||||
|
;format-playing = ${self.format-online}
|
||||||
|
;format-paused = ${self.format-online}
|
||||||
|
;format-stopped = ${self.format-online}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-offline>
|
||||||
|
; Default: ""
|
||||||
|
;format-offline = <label-offline>
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %artist%
|
||||||
|
; %album-artist%
|
||||||
|
; %album%
|
||||||
|
; %date%
|
||||||
|
; %title%
|
||||||
|
; Default: %artist% - %title%
|
||||||
|
label-song = 𝄞 %artist% - %title%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %elapsed%
|
||||||
|
; %total%
|
||||||
|
; Default: %elapsed% / %total%
|
||||||
|
;label-time = %elapsed% / %total%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; None
|
||||||
|
label-offline = 🎜 mpd is offline
|
||||||
|
|
||||||
|
; Only applies if <icon-X> is used
|
||||||
|
icon-play = ⏵
|
||||||
|
icon-pause = ⏸
|
||||||
|
icon-stop = ⏹
|
||||||
|
icon-prev = ⏮
|
||||||
|
icon-next = ⏭
|
||||||
|
icon-seekb = ⏪
|
||||||
|
icon-seekf = ⏩
|
||||||
|
icon-random = 🔀
|
||||||
|
icon-repeat = 🔁
|
||||||
|
icon-repeatone = 🔂
|
||||||
|
icon-single = 🔂
|
||||||
|
icon-consume = ✀
|
||||||
|
|
||||||
|
; Used to display the state of random/repeat/repeatone/single
|
||||||
|
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
||||||
|
toggle-on-foreground = #ff
|
||||||
|
toggle-off-foreground = #55
|
||||||
|
|
||||||
|
; Only applies if <bar-progress> is used
|
||||||
|
bar-progress-width = 45
|
||||||
|
bar-progress-indicator = |
|
||||||
|
bar-progress-fill = ─
|
||||||
|
bar-progress-empty = ─
|
||||||
|
|
||||||
|
[module/github]
|
||||||
|
type = internal/github
|
||||||
|
|
||||||
|
; Accessing an access token stored in file
|
||||||
|
;token = ${file:/path/to/file/containing/github/access.token}
|
||||||
|
|
||||||
|
; Accessing an access token stored in an environment variable
|
||||||
|
token = ${env:GITHUB_ACCESS_TOKEN}
|
||||||
|
|
||||||
|
; The github user for the token
|
||||||
|
; Effectively required; otherwise the module uses a deprecated method of fetching
|
||||||
|
; notifications, which has stopped working
|
||||||
|
user = fscotto
|
||||||
|
|
||||||
|
; Whether empty notifications should be displayed or not
|
||||||
|
empty-notifications = false
|
||||||
|
|
||||||
|
; Number of seconds in between requests
|
||||||
|
interval = 10
|
||||||
|
|
||||||
|
; Github API URL
|
||||||
|
; Default: https://api.github.com/
|
||||||
|
;api-url = https://hub.example.org/api/v3/
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label> (default)
|
||||||
|
format = <label>
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %notifications% (default)
|
||||||
|
; Default: Notifications: %notifications%
|
||||||
|
label = %notifications%
|
||||||
|
|
||||||
|
; Used when GitHub can't be reached
|
||||||
|
; Available tags:
|
||||||
|
; <label-offline> (default)
|
||||||
|
format-offline = <label-offline>
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; None
|
||||||
|
; Default: Offline
|
||||||
|
label-offline = Offline
|
||||||
|
|
||||||
|
[module/spotify]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
interval = 1
|
||||||
|
; prefix symbol is shown before the text
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.blue}
|
||||||
|
format = <label>
|
||||||
|
format-foreground = ${colors.sapphire}
|
||||||
|
exec = ~/.config/polybar/scripts/scroll_spotify_status.sh
|
||||||
|
|
||||||
|
[module/spotify-prev]
|
||||||
|
type = custom/script
|
||||||
|
exec = echo " "
|
||||||
|
format = <label>
|
||||||
|
click-left = playerctl previous -p spotify
|
||||||
|
|
||||||
|
[module/spotify-play-pause]
|
||||||
|
type = custom/ipc
|
||||||
|
hook-0 = echo " "
|
||||||
|
hook-1 = echo " "
|
||||||
|
initial = 1
|
||||||
|
click-left = playerctl play-pause -p spotify
|
||||||
|
|
||||||
|
[module/spotify-next]
|
||||||
|
type = custom/script
|
||||||
|
exec = echo " "
|
||||||
|
format = <label>
|
||||||
|
click-left = playerctl next -p spotify
|
||||||
21
i3/.config/polybar/scripts/battery_combo.sh
Executable file
21
i3/.config/polybar/scripts/battery_combo.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Paths to battery capacity files
|
||||||
|
battery0_capacity="/sys/class/power_supply/BAT0/capacity"
|
||||||
|
battery1_capacity="/sys/class/power_supply/BAT1/capacity"
|
||||||
|
|
||||||
|
# Check if the capacity files exist
|
||||||
|
if [[ -f "$battery0_capacity" && -f "$battery1_capacity" ]]; then
|
||||||
|
# Read the battery percentages
|
||||||
|
battery0_charge=$(cat "$battery0_capacity")
|
||||||
|
battery1_charge=$(cat "$battery1_capacity")
|
||||||
|
|
||||||
|
# Calculate the average charge
|
||||||
|
average_charge=$(( (battery0_charge + battery1_charge) / 2 ))
|
||||||
|
|
||||||
|
# Print the average percentage
|
||||||
|
echo "$average_charge%"
|
||||||
|
else
|
||||||
|
# If one of the files is missing, print an error
|
||||||
|
echo "Error: one or more battery capacity files not found."
|
||||||
|
fi
|
||||||
51
i3/.config/polybar/scripts/get_spotify_status.sh
Executable file
51
i3/.config/polybar/scripts/get_spotify_status.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# The name of polybar bar which houses the main spotify module and the control modules.
|
||||||
|
PARENT_BAR="now-playing"
|
||||||
|
PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)
|
||||||
|
|
||||||
|
# Set the source audio player here.
|
||||||
|
# Players supporting the MPRIS spec are supported.
|
||||||
|
# Examples: spotify, vlc, chrome, mpv and others.
|
||||||
|
# Use `playerctld` to always detect the latest player.
|
||||||
|
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
|
||||||
|
PLAYER="playerctld"
|
||||||
|
|
||||||
|
# Format of the information displayed
|
||||||
|
# Eg. {{ artist }} - {{ album }} - {{ title }}
|
||||||
|
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
|
||||||
|
FORMAT="{{ title }} - {{ artist }}"
|
||||||
|
|
||||||
|
# Sends $2 as message to all polybar PIDs that are part of $1
|
||||||
|
update_hooks() {
|
||||||
|
while IFS= read -r id
|
||||||
|
do
|
||||||
|
polybar-msg -p "$id" hook spotify-play-pause $2 1>/dev/null 2>&1
|
||||||
|
done < <(echo "$1")
|
||||||
|
}
|
||||||
|
|
||||||
|
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
if [ $EXIT_CODE -eq 0 ]; then
|
||||||
|
STATUS=$PLAYERCTL_STATUS
|
||||||
|
else
|
||||||
|
STATUS="No player is running"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "--status" ]; then
|
||||||
|
echo "$STATUS"
|
||||||
|
else
|
||||||
|
if [ "$STATUS" = "Stopped" ]; then
|
||||||
|
echo "No music is playing"
|
||||||
|
elif [ "$STATUS" = "Paused" ]; then
|
||||||
|
update_hooks "$PARENT_BAR_PID" 2
|
||||||
|
playerctl --player=$PLAYER metadata --format "$FORMAT"
|
||||||
|
elif [ "$STATUS" = "No player is running" ]; then
|
||||||
|
echo "$STATUS"
|
||||||
|
else
|
||||||
|
update_hooks "$PARENT_BAR_PID" 1
|
||||||
|
playerctl --player=$PLAYER metadata --format "$FORMAT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
65
i3/.config/polybar/scripts/launch.sh
Normal file
65
i3/.config/polybar/scripts/launch.sh
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DIR="$HOME/.config/polybar"
|
||||||
|
|
||||||
|
get_bars () {
|
||||||
|
find -H $DIR -name "config.ini" | xargs cat | grep -e "\[bar\/" | sort -u | sed "s/\[bar\// /g" | sed "s/.$//g"
|
||||||
|
}
|
||||||
|
|
||||||
|
error () {
|
||||||
|
cat <<- EOF
|
||||||
|
Usage : launch.sh [bar] [theme]
|
||||||
|
|
||||||
|
bars (defined in any config.ini):
|
||||||
|
EOF
|
||||||
|
|
||||||
|
get_bars
|
||||||
|
|
||||||
|
cat <<- EOF
|
||||||
|
themes:
|
||||||
|
rounded
|
||||||
|
grayblocks
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Launch the bar
|
||||||
|
launch-bar () {
|
||||||
|
# Terminate already running bar instances
|
||||||
|
killall -q polybar
|
||||||
|
|
||||||
|
if [[ -f ~/.config/bspwm/bspwmrc ]]; then
|
||||||
|
sed -i -e "s/polybar.*/polybar\/launch\.sh $bar $style \&/g" ~/.config/bspwm/bspwmrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Wait until the processes have been shut down
|
||||||
|
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||||
|
|
||||||
|
if type "xrandr"; then
|
||||||
|
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
|
||||||
|
POLYBAR_MONITOR=$m polybar --reload $bar -c "$DIR"/"$style"/config.ini &
|
||||||
|
done
|
||||||
|
|
||||||
|
else
|
||||||
|
polybar --reload $bar -c "$DIR"/"$style"/config.ini &
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$1" = "bspwm" ]]; then
|
||||||
|
bar="bspwm"
|
||||||
|
elif [[ "$1" = "awesomewm" ]]; then
|
||||||
|
bar="awesomewm"
|
||||||
|
else
|
||||||
|
error
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$2" = "rounded" ]]; then
|
||||||
|
style="rounded"
|
||||||
|
launch-bar
|
||||||
|
elif [[ "$2" = "grayblocks" ]]; then
|
||||||
|
style="grayblocks"
|
||||||
|
launch-bar
|
||||||
|
else
|
||||||
|
error
|
||||||
|
fi
|
||||||
13
i3/.config/polybar/scripts/scroll_spotify_status.sh
Executable file
13
i3/.config/polybar/scripts/scroll_spotify_status.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# see man zscroll for documentation of the following parameters
|
||||||
|
zscroll -l 30 \
|
||||||
|
--delay 0.1 \
|
||||||
|
--scroll-padding " " \
|
||||||
|
--match-command "`dirname $0`/get_spotify_status.sh --status" \
|
||||||
|
--match-text "Playing" "--scroll 1" \
|
||||||
|
--match-text "Paused" "--scroll 0" \
|
||||||
|
--update-check true "`dirname $0`/get_spotify_status.sh" &
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[options]
|
|
||||||
background=1e1e2e
|
|
||||||
overlay_text_color=cdd6f4
|
|
||||||
overlay_background_color=11111b
|
|
||||||
@@ -1,468 +0,0 @@
|
|||||||
# Config relating to the Lazygit UI
|
|
||||||
gui:
|
|
||||||
# The number of lines you scroll by when scrolling the main window
|
|
||||||
scrollHeight: 2
|
|
||||||
# If true, allow scrolling past the bottom of the content in the main window
|
|
||||||
scrollPastBottom: true
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin
|
|
||||||
scrollOffMargin: 2
|
|
||||||
# One of: 'margin' (default) | 'jump'
|
|
||||||
scrollOffBehavior: margin
|
|
||||||
# If true, capture mouse events.
|
|
||||||
# When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.
|
|
||||||
mouseEvents: true
|
|
||||||
# If true, do not show a warning when discarding changes in the staging view.
|
|
||||||
skipDiscardChangeWarning: false
|
|
||||||
# If true, do not show warning when applying/popping the stash
|
|
||||||
skipStashWarning: false
|
|
||||||
# If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files.
|
|
||||||
skipNoStagedFilesWarning: false
|
|
||||||
# If true, do not show a warning when rewording a commit via an external editor
|
|
||||||
skipRewordInEditorWarning: false
|
|
||||||
# Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section.
|
|
||||||
# Number from 0 to 1.0.
|
|
||||||
sidePanelWidth: 0.3333
|
|
||||||
# If true, increase the height of the focused side window; creating an accordion effect.
|
|
||||||
expandFocusedSidePanel: false
|
|
||||||
# The weight of the expanded side panel, relative to the other panels. 2 means
|
|
||||||
# twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true.
|
|
||||||
expandedSidePanelWeight: 2
|
|
||||||
# Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split.
|
|
||||||
# Options are:
|
|
||||||
# - 'horizontal': split the window horizontally
|
|
||||||
# - 'vertical': split the window vertically
|
|
||||||
# - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically
|
|
||||||
mainPanelSplitMode: flexible
|
|
||||||
# How the window is split when in half screen mode (i.e. after hitting '+' once).
|
|
||||||
# Possible values:
|
|
||||||
# - 'left': split the window horizontally (side panel on the left, main view on the right)
|
|
||||||
# - 'top': split the window vertically (side panel on top, main view below)
|
|
||||||
enlargedSideViewLocation: left
|
|
||||||
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'
|
|
||||||
language: auto
|
|
||||||
# Format used when displaying time e.g. commit time.
|
|
||||||
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
|
||||||
timeFormat: 02 Jan 06
|
|
||||||
# Format used when displaying time if the time is less than 24 hours ago.
|
|
||||||
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
|
||||||
shortTimeFormat: 3:04PM
|
|
||||||
# Config relating to colors and styles.
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
|
|
||||||
theme:
|
|
||||||
# Border color of focused window
|
|
||||||
activeBorderColor:
|
|
||||||
- "#8caaee"
|
|
||||||
- bold
|
|
||||||
# Border color of non-focused windows
|
|
||||||
inactiveBorderColor:
|
|
||||||
- "#a5adce"
|
|
||||||
# Border color of focused window when searching in that window
|
|
||||||
searchingActiveBorderColor:
|
|
||||||
- "#e5c890"
|
|
||||||
# Color of keybindings help text in the bottom line
|
|
||||||
optionsTextColor:
|
|
||||||
- "#8caaee"
|
|
||||||
# Background color of selected line.
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line
|
|
||||||
selectedLineBgColor:
|
|
||||||
- "#414559"
|
|
||||||
# Foreground color of copied commit
|
|
||||||
cherryPickedCommitFgColor:
|
|
||||||
- "#8caaee"
|
|
||||||
# Background color of copied commit
|
|
||||||
cherryPickedCommitBgColor:
|
|
||||||
- "#51576d"
|
|
||||||
# Color for file with unstaged changes
|
|
||||||
unstagedChangesColor:
|
|
||||||
- "#e78284"
|
|
||||||
# Default text color
|
|
||||||
defaultFgColor:
|
|
||||||
- "#c6d0f5"
|
|
||||||
authorColors:
|
|
||||||
"Fabio Scotto di Santolo": "#babbf1"
|
|
||||||
branchColors:
|
|
||||||
develop: yellow
|
|
||||||
feature: blue
|
|
||||||
fix: red
|
|
||||||
hotfix: red
|
|
||||||
# Config relating to the commit length indicator
|
|
||||||
commitLength:
|
|
||||||
# If true, show an indicator of commit message length
|
|
||||||
show: true
|
|
||||||
# If true, show the '5 of 20' footer at the bottom of list views
|
|
||||||
showListFooter: true
|
|
||||||
# If true, display the files in the file views as a tree. If false, display the files as a flat list.
|
|
||||||
# This can be toggled from within Lazygit with the '~' key, but that will not change the default.
|
|
||||||
showFileTree: true
|
|
||||||
# If true, show a random tip in the command log when Lazygit starts
|
|
||||||
showRandomTip: true
|
|
||||||
# If true, show the command log
|
|
||||||
showCommandLog: true
|
|
||||||
# If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action.
|
|
||||||
showBottomLine: true
|
|
||||||
# If true, show jump-to-window keybindings in window titles.
|
|
||||||
showPanelJumps: true
|
|
||||||
# Deprecated: use nerdFontsVersion instead
|
|
||||||
showIcons: false
|
|
||||||
# Nerd fonts version to use.
|
|
||||||
# One of: '2' | '3' | empty string (default)
|
|
||||||
# If empty, do not show icons.
|
|
||||||
nerdFontsVersion: "3"
|
|
||||||
# If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.
|
|
||||||
showFileIcons: true
|
|
||||||
# Length of author name in (non-expanded) commits view. 2 means show initials only.
|
|
||||||
commitAuthorShortLength: 2
|
|
||||||
# Length of author name in expanded commits view. 2 means show initials only.
|
|
||||||
commitAuthorLongLength: 17
|
|
||||||
# Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.
|
|
||||||
commitHashLength: 8
|
|
||||||
# If true, show commit hashes alongside branch names in the branches view.
|
|
||||||
showBranchCommitHash: false
|
|
||||||
# Whether to show the divergence from the base branch in the branches view.
|
|
||||||
# One of: 'none' | 'onlyArrow' | 'arrowAndNumber'
|
|
||||||
showDivergenceFromBaseBranch: none
|
|
||||||
# Height of the command log view
|
|
||||||
commandLogSize: 8
|
|
||||||
# Whether to split the main window when viewing file changes.
|
|
||||||
# One of: 'auto' | 'always'
|
|
||||||
# If 'auto', only split the main window when a file has both staged and unstaged changes
|
|
||||||
splitDiff: auto
|
|
||||||
# Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default).
|
|
||||||
# One of: 'normal' (default) | 'half' | 'full'
|
|
||||||
screenMode: normal
|
|
||||||
# Window border style.
|
|
||||||
# One of 'rounded' (default) | 'single' | 'double' | 'hidden'
|
|
||||||
border: rounded
|
|
||||||
# If true, show a seriously epic explosion animation when nuking the working tree.
|
|
||||||
animateExplosion: true
|
|
||||||
# Whether to stack UI components on top of each other.
|
|
||||||
# One of 'auto' (default) | 'always' | 'never'
|
|
||||||
portraitMode: auto
|
|
||||||
# How things are filtered when typing '/'.
|
|
||||||
# One of 'substring' (default) | 'fuzzy'
|
|
||||||
filterMode: substring
|
|
||||||
# Config relating to the spinner.
|
|
||||||
spinner:
|
|
||||||
# The frames of the spinner animation.
|
|
||||||
frames:
|
|
||||||
- "|"
|
|
||||||
- /
|
|
||||||
- "-"
|
|
||||||
- \
|
|
||||||
# The "speed" of the spinner in milliseconds.
|
|
||||||
rate: 50
|
|
||||||
# Status panel view.
|
|
||||||
# One of 'dashboard' (default) | 'allBranchesLog'
|
|
||||||
statusPanelView: dashboard
|
|
||||||
# Config relating to git
|
|
||||||
git:
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
|
|
||||||
paging:
|
|
||||||
# Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
|
|
||||||
colorArg: always
|
|
||||||
# e.g.
|
|
||||||
# diff-so-fancy
|
|
||||||
# delta --dark --paging=never
|
|
||||||
# ydiff -p cat -s --wrap --width={{columnWidth}}
|
|
||||||
pager: "delta --paging=never"
|
|
||||||
# If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager).
|
|
||||||
useConfig: false
|
|
||||||
# e.g. 'difft --color=always'
|
|
||||||
externalDiffCommand: ""
|
|
||||||
# Config relating to committing
|
|
||||||
commit:
|
|
||||||
# If true, pass '--signoff' flag when committing
|
|
||||||
signOff: false
|
|
||||||
# Automatic WYSIWYG wrapping of the commit message as you type
|
|
||||||
autoWrapCommitMessage: true
|
|
||||||
# If autoWrapCommitMessage is true, the width to wrap to
|
|
||||||
autoWrapWidth: 72
|
|
||||||
# Config relating to merging
|
|
||||||
merging:
|
|
||||||
# If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang
|
|
||||||
# Only applicable to unix users.
|
|
||||||
manualCommit: false
|
|
||||||
# Extra args passed to `git merge`, e.g. --no-ff
|
|
||||||
args: "--no-ff"
|
|
||||||
# The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders.
|
|
||||||
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
|
|
||||||
# list of branches that are considered 'main' branches, used when displaying commits
|
|
||||||
mainBranches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
# Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP'
|
|
||||||
skipHookPrefix: WIP
|
|
||||||
# If true, periodically fetch from remote
|
|
||||||
autoFetch: true
|
|
||||||
# If true, periodically refresh files and submodules
|
|
||||||
autoRefresh: true
|
|
||||||
# If true, pass the --all arg to git fetch
|
|
||||||
fetchAll: true
|
|
||||||
# Command used when displaying the current branch git log in the main window
|
|
||||||
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
|
|
||||||
# If true, do not spawn a separate process when using GPG
|
|
||||||
overrideGpg: false
|
|
||||||
# If true, do not allow force pushes
|
|
||||||
disableForcePushing: false
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
|
|
||||||
commitPrefix:
|
|
||||||
- # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*"
|
|
||||||
pattern: ""
|
|
||||||
# Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] "
|
|
||||||
replace: ""
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix
|
|
||||||
branchPrefix: ""
|
|
||||||
# If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
|
|
||||||
# (This should really be under 'gui', not 'git')
|
|
||||||
parseEmoji: true
|
|
||||||
# Config for showing the log in the commits view
|
|
||||||
log:
|
|
||||||
# One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
|
|
||||||
# 'topo-order' makes it easier to read the git log graph, but commits may not
|
|
||||||
# appear chronologically. See https://git-scm.com/docs/
|
|
||||||
#
|
|
||||||
# Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default).
|
|
||||||
order: topo-order
|
|
||||||
# This determines whether the git graph is rendered in the commits panel
|
|
||||||
# One of 'always' | 'never' | 'when-maximised'
|
|
||||||
#
|
|
||||||
# Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default).
|
|
||||||
showGraph: always
|
|
||||||
# displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)
|
|
||||||
showWholeGraph: false
|
|
||||||
# When copying commit hashes to the clipboard, truncate them to this
|
|
||||||
# length. Set to 40 to disable truncation.
|
|
||||||
truncateCopiedCommitHashesTo: 12
|
|
||||||
allBranchesLogCmds:
|
|
||||||
- git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
|
|
||||||
# Periodic update checks
|
|
||||||
update:
|
|
||||||
# One of: 'prompt' (default) | 'background' | 'never'
|
|
||||||
method: prompt
|
|
||||||
# Period in days between update checks
|
|
||||||
days: 14
|
|
||||||
# Background refreshes
|
|
||||||
refresher:
|
|
||||||
# File/submodule refresh interval in seconds.
|
|
||||||
# Auto-refresh can be disabled via option 'git.autoRefresh'.
|
|
||||||
refreshInterval: 10
|
|
||||||
# Re-fetch interval in seconds.
|
|
||||||
# Auto-fetch can be disabled via option 'git.autoFetch'.
|
|
||||||
fetchInterval: 60
|
|
||||||
# If true, show a confirmation popup before quitting Lazygit
|
|
||||||
confirmOnQuit: false
|
|
||||||
# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
|
|
||||||
quitOnTopLevelReturn: false
|
|
||||||
# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc
|
|
||||||
os:
|
|
||||||
# Command for editing a file. Should contain "{{filename}}".
|
|
||||||
edit: ""
|
|
||||||
# Command for editing a file at a given line number. Should contain
|
|
||||||
# "{{filename}}", and may optionally contain "{{line}}".
|
|
||||||
editAtLine: ""
|
|
||||||
# Same as EditAtLine, except that the command needs to wait until the
|
|
||||||
# window is closed.
|
|
||||||
editAtLineAndWait: ""
|
|
||||||
# For opening a directory in an editor
|
|
||||||
openDirInEditor: ""
|
|
||||||
# A built-in preset that sets all of the above settings. Supported presets
|
|
||||||
# are defined in the getPreset function in editor_presets.go.
|
|
||||||
editPreset: ""
|
|
||||||
# Command for opening a file, as if the file is double-clicked. Should
|
|
||||||
# contain "{{filename}}", but doesn't support "{{line}}".
|
|
||||||
open: ""
|
|
||||||
# Command for opening a link. Should contain "{{link}}".
|
|
||||||
openLink: ""
|
|
||||||
# EditCommand is the command for editing a file.
|
|
||||||
# Deprecated: use Edit instead. Note that semantics are different:
|
|
||||||
# EditCommand is just the command itself, whereas Edit contains a
|
|
||||||
# "{{filename}}" variable.
|
|
||||||
editCommand: ""
|
|
||||||
# EditCommandTemplate is the command template for editing a file
|
|
||||||
# Deprecated: use EditAtLine instead.
|
|
||||||
editCommandTemplate: ""
|
|
||||||
# OpenCommand is the command for opening a file
|
|
||||||
# Deprecated: use Open instead.
|
|
||||||
openCommand: ""
|
|
||||||
# OpenLinkCommand is the command for opening a link
|
|
||||||
# Deprecated: use OpenLink instead.
|
|
||||||
openLinkCommand: ""
|
|
||||||
# CopyToClipboardCmd is the command for copying to clipboard.
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
|
||||||
copyToClipboardCmd: ""
|
|
||||||
# ReadFromClipboardCmd is the command for reading the clipboard.
|
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
|
||||||
readFromClipboardCmd: ""
|
|
||||||
# If true, don't display introductory popups upon opening Lazygit.
|
|
||||||
disableStartupPopups: true
|
|
||||||
# What to do when opening Lazygit outside of a git repo.
|
|
||||||
# - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo
|
|
||||||
# - 'create': initialize a new repo
|
|
||||||
# - 'skip': open most recent repo
|
|
||||||
# - 'quit': exit Lazygit
|
|
||||||
notARepository: prompt
|
|
||||||
# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit.
|
|
||||||
promptToReturnFromSubprocess: true
|
|
||||||
# Keybindings
|
|
||||||
keybinding:
|
|
||||||
universal:
|
|
||||||
quit: q
|
|
||||||
quit-alt1: <c-c>
|
|
||||||
return: <esc>
|
|
||||||
quitWithoutChangingDirectory: Q
|
|
||||||
togglePanel: <tab>
|
|
||||||
prevItem: <up>
|
|
||||||
nextItem: <down>
|
|
||||||
prevItem-alt: k
|
|
||||||
nextItem-alt: j
|
|
||||||
prevPage: ","
|
|
||||||
nextPage: .
|
|
||||||
scrollLeft: H
|
|
||||||
scrollRight: L
|
|
||||||
gotoTop: <
|
|
||||||
gotoBottom: ">"
|
|
||||||
toggleRangeSelect: v
|
|
||||||
rangeSelectDown: <s-down>
|
|
||||||
rangeSelectUp: <s-up>
|
|
||||||
prevBlock: <left>
|
|
||||||
nextBlock: <right>
|
|
||||||
prevBlock-alt: h
|
|
||||||
nextBlock-alt: l
|
|
||||||
nextBlock-alt2: <tab>
|
|
||||||
prevBlock-alt2: <backtab>
|
|
||||||
jumpToBlock:
|
|
||||||
- "1"
|
|
||||||
- "2"
|
|
||||||
- "3"
|
|
||||||
- "4"
|
|
||||||
- "5"
|
|
||||||
nextMatch: "n"
|
|
||||||
prevMatch: "N"
|
|
||||||
startSearch: /
|
|
||||||
optionMenu: <disabled>
|
|
||||||
optionMenu-alt1: "?"
|
|
||||||
select: <space>
|
|
||||||
goInto: <enter>
|
|
||||||
confirm: <enter>
|
|
||||||
confirmInEditor: <a-enter>
|
|
||||||
remove: d
|
|
||||||
new: "n"
|
|
||||||
edit: e
|
|
||||||
openFile: o
|
|
||||||
scrollUpMain: <pgup>
|
|
||||||
scrollDownMain: <pgdown>
|
|
||||||
scrollUpMain-alt1: K
|
|
||||||
scrollDownMain-alt1: J
|
|
||||||
scrollUpMain-alt2: <c-u>
|
|
||||||
scrollDownMain-alt2: <c-d>
|
|
||||||
executeShellCommand: ":"
|
|
||||||
createRebaseOptionsMenu: m
|
|
||||||
# 'Files' appended for legacy reasons
|
|
||||||
pushFiles: P
|
|
||||||
# 'Files' appended for legacy reasons
|
|
||||||
pullFiles: p
|
|
||||||
refresh: R
|
|
||||||
createPatchOptionsMenu: <c-p>
|
|
||||||
nextTab: "]"
|
|
||||||
prevTab: "["
|
|
||||||
nextScreenMode: +
|
|
||||||
prevScreenMode: _
|
|
||||||
undo: z
|
|
||||||
redo: <c-z>
|
|
||||||
filteringMenu: <c-s>
|
|
||||||
diffingMenu: W
|
|
||||||
diffingMenu-alt: <c-e>
|
|
||||||
copyToClipboard: <c-o>
|
|
||||||
openRecentRepos: <c-r>
|
|
||||||
submitEditorText: <enter>
|
|
||||||
extrasMenu: "@"
|
|
||||||
toggleWhitespaceInDiffView: <c-w>
|
|
||||||
increaseContextInDiffView: "}"
|
|
||||||
decreaseContextInDiffView: "{"
|
|
||||||
increaseRenameSimilarityThreshold: )
|
|
||||||
decreaseRenameSimilarityThreshold: (
|
|
||||||
openDiffTool: <c-t>
|
|
||||||
status:
|
|
||||||
checkForUpdate: u
|
|
||||||
recentRepos: <enter>
|
|
||||||
allBranchesLogGraph: a
|
|
||||||
files:
|
|
||||||
commitChanges: c
|
|
||||||
commitChangesWithoutHook: w
|
|
||||||
amendLastCommit: A
|
|
||||||
commitChangesWithEditor: C
|
|
||||||
findBaseCommitForFixup: <c-f>
|
|
||||||
confirmDiscard: x
|
|
||||||
ignoreFile: i
|
|
||||||
refreshFiles: r
|
|
||||||
stashAllChanges: s
|
|
||||||
viewStashOptions: S
|
|
||||||
toggleStagedAll: a
|
|
||||||
viewResetOptions: D
|
|
||||||
fetch: f
|
|
||||||
toggleTreeView: "`"
|
|
||||||
openMergeTool: M
|
|
||||||
openStatusFilter: <c-b>
|
|
||||||
copyFileInfoToClipboard: "y"
|
|
||||||
branches:
|
|
||||||
createPullRequest: o
|
|
||||||
viewPullRequestOptions: O
|
|
||||||
copyPullRequestURL: <c-y>
|
|
||||||
checkoutBranchByName: c
|
|
||||||
forceCheckoutBranch: F
|
|
||||||
rebaseBranch: r
|
|
||||||
renameBranch: R
|
|
||||||
mergeIntoCurrentBranch: M
|
|
||||||
viewGitFlowOptions: i
|
|
||||||
fastForward: f
|
|
||||||
createTag: T
|
|
||||||
pushTag: P
|
|
||||||
setUpstream: u
|
|
||||||
fetchRemote: f
|
|
||||||
sortOrder: s
|
|
||||||
worktrees:
|
|
||||||
viewWorktreeOptions: w
|
|
||||||
commits:
|
|
||||||
squashDown: s
|
|
||||||
renameCommit: r
|
|
||||||
renameCommitWithEditor: R
|
|
||||||
viewResetOptions: g
|
|
||||||
markCommitAsFixup: f
|
|
||||||
createFixupCommit: F
|
|
||||||
squashAboveCommits: S
|
|
||||||
moveDownCommit: <c-j>
|
|
||||||
moveUpCommit: <c-k>
|
|
||||||
amendToCommit: A
|
|
||||||
resetCommitAuthor: a
|
|
||||||
pickCommit: p
|
|
||||||
revertCommit: t
|
|
||||||
cherryPickCopy: C
|
|
||||||
pasteCommits: V
|
|
||||||
markCommitAsBaseForRebase: B
|
|
||||||
tagCommit: T
|
|
||||||
checkoutCommit: <space>
|
|
||||||
resetCherryPick: <c-R>
|
|
||||||
copyCommitAttributeToClipboard: "y"
|
|
||||||
openLogMenu: <c-l>
|
|
||||||
openInBrowser: o
|
|
||||||
viewBisectOptions: b
|
|
||||||
startInteractiveRebase: i
|
|
||||||
amendAttribute:
|
|
||||||
resetAuthor: a
|
|
||||||
setAuthor: A
|
|
||||||
addCoAuthor: c
|
|
||||||
stash:
|
|
||||||
popStash: g
|
|
||||||
renameStash: r
|
|
||||||
commitFiles:
|
|
||||||
checkoutCommitFile: c
|
|
||||||
main:
|
|
||||||
toggleSelectHunk: a
|
|
||||||
pickBothHunks: b
|
|
||||||
editSelectHunk: E
|
|
||||||
submodules:
|
|
||||||
init: i
|
|
||||||
update: u
|
|
||||||
bulkMenu: b
|
|
||||||
commitMessage:
|
|
||||||
commitMenu: <c-o>
|
|
||||||
8
lazyvim/.config/nvim/.gitignore
vendored
8
lazyvim/.config/nvim/.gitignore
vendored
@@ -1,8 +0,0 @@
|
|||||||
tt.*
|
|
||||||
.tests
|
|
||||||
doc/tags
|
|
||||||
debug
|
|
||||||
.repro
|
|
||||||
foo.*
|
|
||||||
*.log
|
|
||||||
data
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"neodev": {
|
|
||||||
"library": {
|
|
||||||
"enabled": true,
|
|
||||||
"plugins": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"neoconf": {
|
|
||||||
"plugins": {
|
|
||||||
"lua_ls": {
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
|
||||||
require("config.lazy")
|
|
||||||
require("user.utils")
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" },
|
|
||||||
"SchemaStore.nvim": { "branch": "main", "commit": "8e74c08998fd786239caba373344f4e4601e21fe" },
|
|
||||||
"alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" },
|
|
||||||
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
|
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
|
||||||
"catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" },
|
|
||||||
"clangd_extensions.nvim": { "branch": "main", "commit": "b67cc417d9020fb4b83d46662351b4d16894905e" },
|
|
||||||
"conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" },
|
|
||||||
"dial.nvim": { "branch": "master", "commit": "7c8baea9f058c6ab25381b731baba7f7d8a34cef" },
|
|
||||||
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
|
||||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
|
||||||
"fzf-lua": { "branch": "main", "commit": "c045825f99a2618ee7453d46dd6e84a61ee53a56" },
|
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
|
|
||||||
"grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" },
|
|
||||||
"hardtime.nvim": { "branch": "main", "commit": "6d7664d5bdfaea44c5f50b29f5239fab7b00c273" },
|
|
||||||
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" },
|
|
||||||
"hydra.nvim": { "branch": "main", "commit": "8c4a9f621ec7cdc30411a1f3b6d5eebb12b469dc" },
|
|
||||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
|
||||||
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
|
||||||
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
|
|
||||||
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
|
||||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "86389a3dd687cfaa647b6f44731e492970034baa" },
|
|
||||||
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
|
||||||
"mini.ai": { "branch": "main", "commit": "45a26d032d8703f280c69c2ed9fb4e1bfc8f24f9" },
|
|
||||||
"mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" },
|
|
||||||
"mini.nvim": { "branch": "main", "commit": "ddb70da6ec6aa896cfde87350d1e8dffb57ddef0" },
|
|
||||||
"mini.pairs": { "branch": "main", "commit": "6e1cc569130f25b2c6fa16d8b21b31ddb1420a4a" },
|
|
||||||
"multicursors.nvim": { "branch": "main", "commit": "72225ea9e4443c3f4b9df91d0193e07c4ee8d382" },
|
|
||||||
"neo-tree.nvim": { "branch": "main", "commit": "46fa0c22ca39e05fe15744102d21feb07fe9a94a" },
|
|
||||||
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
|
||||||
"none-ls.nvim": { "branch": "main", "commit": "53ec77181d96494b9dc9457110dd62dc623cc78d" },
|
|
||||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
|
||||||
"nvim-dap": { "branch": "master", "commit": "7891b01beedc37cef4eaf2e92563bd0a5b6e9c58" },
|
|
||||||
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
|
|
||||||
"nvim-dap-python": { "branch": "master", "commit": "030385d03363988370adaa5cf21fa465daddb088" },
|
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
|
||||||
"nvim-lint": { "branch": "master", "commit": "f126af5345c7472e9a0cdbe1d1a29209be72c4c4" },
|
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "408cf07b97535825cca6f1afa908d98348712ba6" },
|
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
|
||||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
|
|
||||||
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "f66cdfef5e84112045b9ebc3119fee9bddb3c687" },
|
|
||||||
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
|
|
||||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
|
||||||
"refactoring.nvim": { "branch": "master", "commit": "74b608dfee827c2372250519d433cc21cb083407" },
|
|
||||||
"render-markdown.nvim": { "branch": "main", "commit": "e76eb2e4262f0f0a1a7bd7a454dd7d44f1299afd" },
|
|
||||||
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
|
|
||||||
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
|
||||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
|
||||||
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
|
|
||||||
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
|
||||||
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
|
|
||||||
"venv-selector.nvim": { "branch": "regexp", "commit": "d2326e7433fdeb10f7d0d1237c18b91b353f9f8b" },
|
|
||||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
|
||||||
"yazi.nvim": { "branch": "main", "commit": "8ce0abb50c30fdc486c465ddfab28510346e6bd7" }
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"extras": [
|
|
||||||
"lazyvim.plugins.extras.dap.core",
|
|
||||||
"lazyvim.plugins.extras.editor.dial",
|
|
||||||
"lazyvim.plugins.extras.editor.fzf",
|
|
||||||
"lazyvim.plugins.extras.editor.refactoring",
|
|
||||||
"lazyvim.plugins.extras.editor.telescope",
|
|
||||||
"lazyvim.plugins.extras.lang.clangd",
|
|
||||||
"lazyvim.plugins.extras.lang.git",
|
|
||||||
"lazyvim.plugins.extras.lang.go",
|
|
||||||
"lazyvim.plugins.extras.lang.json",
|
|
||||||
"lazyvim.plugins.extras.lang.markdown",
|
|
||||||
"lazyvim.plugins.extras.lang.python",
|
|
||||||
"lazyvim.plugins.extras.lang.toml",
|
|
||||||
"lazyvim.plugins.extras.lang.yaml",
|
|
||||||
"lazyvim.plugins.extras.lang.zig",
|
|
||||||
"lazyvim.plugins.extras.lsp.none-ls",
|
|
||||||
"lazyvim.plugins.extras.ui.alpha"
|
|
||||||
],
|
|
||||||
"install_version": 7,
|
|
||||||
"news": {
|
|
||||||
"NEWS.md": "10960"
|
|
||||||
},
|
|
||||||
"version": 8
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- Autocmds are automatically loaded on the VeryLazy event
|
|
||||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
|
||||||
-- Add any additional autocmds here
|
|
||||||
|
|
||||||
local augroup = vim.api.nvim_create_augroup
|
|
||||||
local autocmd = vim.api.nvim_create_autocmd
|
|
||||||
local view_group = augroup("auto_view", { clear = true })
|
|
||||||
|
|
||||||
autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, {
|
|
||||||
desc = "Save view with mkview for real files",
|
|
||||||
group = view_group,
|
|
||||||
callback = function(args)
|
|
||||||
if vim.b[args.buf].view_activated then
|
|
||||||
vim.cmd.mkview({ mods = { emsg_silent = true } })
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
autocmd("BufWinEnter", {
|
|
||||||
desc = "Try to load file view if available and enable view saving for real files",
|
|
||||||
group = view_group,
|
|
||||||
callback = function(args)
|
|
||||||
if not vim.b[args.buf].view_activated then
|
|
||||||
local filetype = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
|
|
||||||
local buftype = vim.api.nvim_get_option_value("buftype", { buf = args.buf })
|
|
||||||
local ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" }
|
|
||||||
if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then
|
|
||||||
vim.b[args.buf].view_activated = true
|
|
||||||
vim.cmd.loadview({ mods = { emsg_silent = true } })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
-- Keymaps are automatically loaded on the VeryLazy event
|
|
||||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
|
||||||
-- Add any additional keymaps here
|
|
||||||
|
|
||||||
local map = vim.keymap.set
|
|
||||||
|
|
||||||
-- Buffer management
|
|
||||||
map("n", "<leader>bn", ":bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
|
||||||
map("n", "<leader>bp", ":bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
|
||||||
map("n", "<leader>bd", ":bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
|
||||||
|
|
||||||
-- Copy to system clipboard (if not already mapped)
|
|
||||||
map({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" })
|
|
||||||
|
|
||||||
-- Paste from system clipboard
|
|
||||||
map("n", "<leader>p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>cc", function()
|
|
||||||
local file1 = vim.fn.expand("%")
|
|
||||||
|
|
||||||
local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
|
||||||
if project_root == "" then
|
|
||||||
project_root = vim.fn.getcwd()
|
|
||||||
end
|
|
||||||
|
|
||||||
require("telescope.builtin").find_files({
|
|
||||||
prompt_title = "Compare with...",
|
|
||||||
cwd = project_root,
|
|
||||||
hidden = true,
|
|
||||||
follow = true,
|
|
||||||
attach_mappings = function(_, map)
|
|
||||||
map("i", "<CR>", function(prompt_bufnr)
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local action_state = require("telescope.actions.state")
|
|
||||||
local file2 = action_state.get_selected_entry().path
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
require("user.utils").meld_diff(file1, file2)
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end, { desc = "Compare with" })
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|
||||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
|
||||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
|
||||||
if vim.v.shell_error ~= 0 then
|
|
||||||
vim.api.nvim_echo({
|
|
||||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
|
||||||
{ out, "WarningMsg" },
|
|
||||||
{ "\nPress any key to exit..." },
|
|
||||||
}, true, {})
|
|
||||||
vim.fn.getchar()
|
|
||||||
os.exit(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- Start LazyVim plugins
|
|
||||||
require("lazy").setup({
|
|
||||||
spec = {
|
|
||||||
-- add LazyVim and import its plugins
|
|
||||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
|
||||||
-- import/override with your plugins
|
|
||||||
{ import = "plugins" },
|
|
||||||
},
|
|
||||||
defaults = {
|
|
||||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
|
||||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
|
||||||
lazy = false,
|
|
||||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
|
||||||
-- have outdated releases, which may break your Neovim install.
|
|
||||||
version = false, -- always use the latest git commit
|
|
||||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
|
||||||
},
|
|
||||||
checker = { enabled = true }, -- automatically check for plugin updates
|
|
||||||
performance = {
|
|
||||||
rtp = {
|
|
||||||
-- disable some rtp plugins
|
|
||||||
disabled_plugins = {
|
|
||||||
"gzip",
|
|
||||||
"matchit",
|
|
||||||
"matchparen",
|
|
||||||
"netrwPlugin",
|
|
||||||
"tarPlugin",
|
|
||||||
"tohtml",
|
|
||||||
"tutor",
|
|
||||||
"zipPlugin",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cache = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Configure status bar
|
|
||||||
require("config.statusline")
|
|
||||||
|
|
||||||
-- Configure Markdown rendering rules
|
|
||||||
require("render-markdown").setup({
|
|
||||||
heading = { position = "inline" },
|
|
||||||
quote = { repeat_linebreak = true },
|
|
||||||
win_options = {
|
|
||||||
showbreak = {
|
|
||||||
default = "",
|
|
||||||
rendered = " ",
|
|
||||||
},
|
|
||||||
breakindent = {
|
|
||||||
default = false,
|
|
||||||
rendered = true,
|
|
||||||
},
|
|
||||||
breakindentopt = {
|
|
||||||
default = "",
|
|
||||||
rendered = "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
checkbox = {
|
|
||||||
unchecked = { icon = "✘ " },
|
|
||||||
checked = { icon = "✔ " },
|
|
||||||
},
|
|
||||||
code = {
|
|
||||||
position = "right",
|
|
||||||
width = "block",
|
|
||||||
right_pad = 10,
|
|
||||||
},
|
|
||||||
latex = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
link = {
|
|
||||||
custom = {
|
|
||||||
c = {
|
|
||||||
pattern = "%.[ch]$",
|
|
||||||
icon = " ",
|
|
||||||
},
|
|
||||||
golang = {
|
|
||||||
pattern = "%.go$",
|
|
||||||
icon = " ",
|
|
||||||
},
|
|
||||||
python = {
|
|
||||||
pattern = "%.py$",
|
|
||||||
icon = " ",
|
|
||||||
},
|
|
||||||
lua = {
|
|
||||||
pattern = "%.lua$",
|
|
||||||
icon = " ",
|
|
||||||
},
|
|
||||||
-- shell = {
|
|
||||||
-- pattern = "%.[sh|zsh]$",
|
|
||||||
-- icon = " ",
|
|
||||||
-- },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Configure TreeSitter syntax parsers
|
|
||||||
require("nvim-treesitter.configs").setup({
|
|
||||||
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
|
||||||
ensure_installed = {
|
|
||||||
"c",
|
|
||||||
"lua",
|
|
||||||
"bash",
|
|
||||||
"go",
|
|
||||||
"gomod",
|
|
||||||
"gowork",
|
|
||||||
"gosum",
|
|
||||||
"json",
|
|
||||||
"markdown",
|
|
||||||
"markdown_inline",
|
|
||||||
"python",
|
|
||||||
"zig",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Install parsers synchronously (only applied to `ensure_installed`)
|
|
||||||
sync_install = false,
|
|
||||||
|
|
||||||
-- Automatically install missing parsers when entering buffer
|
|
||||||
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
|
||||||
auto_install = true,
|
|
||||||
|
|
||||||
-- List of parsers to ignore installing (or "all")
|
|
||||||
ignore_install = { "javascript" },
|
|
||||||
|
|
||||||
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
|
||||||
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
|
||||||
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
|
|
||||||
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
|
|
||||||
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
|
|
||||||
-- the name of the parser)
|
|
||||||
-- list of language that will be disabled
|
|
||||||
disable = {},
|
|
||||||
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
|
|
||||||
disable = function(lang, buf)
|
|
||||||
local max_filesize = 100 * 1024 -- 100 KB
|
|
||||||
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
|
||||||
if ok and stats and stats.size > max_filesize then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
|
|
||||||
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
|
|
||||||
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
|
|
||||||
-- Using this option may slow down your editor, and you may see some duplicate highlights.
|
|
||||||
-- Instead of true it can also be a list of languages
|
|
||||||
additional_vim_regex_highlighting = false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Configure Mini.AI for textobjects command
|
|
||||||
require("mini.ai").setup()
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
-- Options are automatically loaded before lazy.nvim startup
|
|
||||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
|
||||||
-- Add any additional options here
|
|
||||||
|
|
||||||
local opt = vim.opt
|
|
||||||
|
|
||||||
-- Encoding
|
|
||||||
opt.encoding = "utf-8"
|
|
||||||
opt.fileencoding = "utf-8"
|
|
||||||
|
|
||||||
-- Line numbers
|
|
||||||
opt.number = true
|
|
||||||
opt.relativenumber = true
|
|
||||||
|
|
||||||
-- Enable mouse in all modes
|
|
||||||
opt.mouse = "a"
|
|
||||||
|
|
||||||
-- Better searching
|
|
||||||
opt.ignorecase = true
|
|
||||||
opt.smartcase = true
|
|
||||||
|
|
||||||
-- Highlight current line
|
|
||||||
opt.cursorline = true
|
|
||||||
opt.cursorlineopt = "number"
|
|
||||||
|
|
||||||
-- Enable true color support
|
|
||||||
opt.termguicolors = true
|
|
||||||
|
|
||||||
-- Enable system clipboard
|
|
||||||
opt.clipboard = "unnamedplus"
|
|
||||||
|
|
||||||
-- Indentation
|
|
||||||
-- opt.softtabstop = 8
|
|
||||||
-- opt.shiftwidth = 8
|
|
||||||
-- opt.tabstop = 8
|
|
||||||
opt.expandtab = true
|
|
||||||
opt.smartindent = true
|
|
||||||
|
|
||||||
-- Split behavior
|
|
||||||
opt.splitright = true
|
|
||||||
opt.splitbelow = true
|
|
||||||
|
|
||||||
-- Enable undo file to persist undo history
|
|
||||||
opt.undofile = true
|
|
||||||
|
|
||||||
-- Set upbar similar to statusline (optional)
|
|
||||||
opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P"
|
|
||||||
|
|
||||||
-- Persistent signcolumn to avoid text shifting
|
|
||||||
opt.signcolumn = "yes"
|
|
||||||
|
|
||||||
-- Show file name and modified flag in the window bar
|
|
||||||
opt.winbar = "%=%m %f"
|
|
||||||
|
|
||||||
-- Backup files
|
|
||||||
opt.swapfile = false
|
|
||||||
opt.backup = false
|
|
||||||
@@ -1,219 +0,0 @@
|
|||||||
-- Eviline config for lualine
|
|
||||||
-- Author: shadmansaleh
|
|
||||||
-- Credit: glepnir
|
|
||||||
local lualine = require("lualine")
|
|
||||||
|
|
||||||
-- Color table for highlights
|
|
||||||
-- stylua: ignore
|
|
||||||
local colors = {
|
|
||||||
bg = '#202328',
|
|
||||||
fg = '#bbc2cf',
|
|
||||||
yellow = '#ECBE7B',
|
|
||||||
cyan = '#008080',
|
|
||||||
darkblue = '#081633',
|
|
||||||
green = '#98be65',
|
|
||||||
orange = '#FF8800',
|
|
||||||
violet = '#a9a1e1',
|
|
||||||
magenta = '#c678dd',
|
|
||||||
blue = '#51afef',
|
|
||||||
red = '#ec5f67',
|
|
||||||
}
|
|
||||||
|
|
||||||
local conditions = {
|
|
||||||
buffer_not_empty = function()
|
|
||||||
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
|
||||||
end,
|
|
||||||
hide_in_width = function()
|
|
||||||
return vim.fn.winwidth(0) > 80
|
|
||||||
end,
|
|
||||||
check_git_workspace = function()
|
|
||||||
local filepath = vim.fn.expand("%:p:h")
|
|
||||||
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
|
||||||
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Config
|
|
||||||
local config = {
|
|
||||||
options = {
|
|
||||||
-- Disable sections and component separators
|
|
||||||
component_separators = "",
|
|
||||||
section_separators = "",
|
|
||||||
theme = "catppuccin",
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
-- these are to remove the defaults
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {},
|
|
||||||
-- These will be filled later
|
|
||||||
lualine_c = {},
|
|
||||||
lualine_x = {},
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
-- these are to remove the defaults
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {},
|
|
||||||
lualine_c = {},
|
|
||||||
lualine_x = {},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Inserts a component in lualine_c at left section
|
|
||||||
local function ins_left(component)
|
|
||||||
table.insert(config.sections.lualine_c, component)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Inserts a component in lualine_x at right section
|
|
||||||
local function ins_right(component)
|
|
||||||
table.insert(config.sections.lualine_x, component)
|
|
||||||
end
|
|
||||||
|
|
||||||
ins_left({
|
|
||||||
function()
|
|
||||||
return "▊"
|
|
||||||
end,
|
|
||||||
color = { fg = colors.blue }, -- Sets highlighting of component
|
|
||||||
padding = { left = 0, right = 1 }, -- We don't need space before this
|
|
||||||
})
|
|
||||||
|
|
||||||
-- -- Function to get the current mode indicator as a single character
|
|
||||||
local function mode()
|
|
||||||
-- Map of modes to their respective shorthand indicators
|
|
||||||
local mode_map = {
|
|
||||||
n = "NORMAL", -- Normal mode
|
|
||||||
v = "VISUAL", -- Visual mode
|
|
||||||
[""] = "VISUAL BLOCK", -- Visual block mode
|
|
||||||
V = "VISUAL LINE", -- Visual line mode
|
|
||||||
c = "COMMAND", -- Command-line mode
|
|
||||||
no = "N-INSERT", -- NInsert mode
|
|
||||||
s = "SELECT", -- Select mode
|
|
||||||
S = "SELECT-LINE", -- Select line mode
|
|
||||||
ic = "INSERT", -- Insert mode (completion)
|
|
||||||
R = "REPLACE", -- Replace mode
|
|
||||||
Rv = "VISUAL REPLACE", -- Virtual Replace mode
|
|
||||||
cv = "COMMAND-LINE", -- Command-line mode
|
|
||||||
ce = "C", -- Ex mode
|
|
||||||
r = "R", -- Prompt mode
|
|
||||||
rm = "M", -- More mode
|
|
||||||
["r?"] = "?", -- Confirm mode
|
|
||||||
["!"] = "!", -- Shell mode
|
|
||||||
t = "TERMINAL", -- Terminal mode
|
|
||||||
}
|
|
||||||
-- Return the mode shorthand or [UNKNOWN] if no match
|
|
||||||
return mode_map[vim.fn.mode()] or "[UNKNOWN]"
|
|
||||||
end
|
|
||||||
|
|
||||||
ins_left({
|
|
||||||
-- mode component
|
|
||||||
mode,
|
|
||||||
color = function()
|
|
||||||
-- auto change color according to neovims mode
|
|
||||||
local mode_color = {
|
|
||||||
n = colors.red,
|
|
||||||
i = colors.green,
|
|
||||||
v = colors.blue,
|
|
||||||
[""] = colors.blue,
|
|
||||||
V = colors.blue,
|
|
||||||
c = colors.magenta,
|
|
||||||
no = colors.red,
|
|
||||||
s = colors.orange,
|
|
||||||
S = colors.orange,
|
|
||||||
[""] = colors.orange,
|
|
||||||
ic = colors.yellow,
|
|
||||||
R = colors.violet,
|
|
||||||
Rv = colors.violet,
|
|
||||||
cv = colors.red,
|
|
||||||
ce = colors.red,
|
|
||||||
r = colors.cyan,
|
|
||||||
rm = colors.cyan,
|
|
||||||
["r?"] = colors.cyan,
|
|
||||||
["!"] = colors.red,
|
|
||||||
t = colors.red,
|
|
||||||
}
|
|
||||||
return { fg = mode_color[vim.fn.mode()] }
|
|
||||||
end,
|
|
||||||
padding = { right = 1 },
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_left({
|
|
||||||
-- filesize component
|
|
||||||
"filesize",
|
|
||||||
cond = conditions.buffer_not_empty,
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_left({
|
|
||||||
"filename",
|
|
||||||
cond = conditions.buffer_not_empty,
|
|
||||||
color = { fg = colors.magenta, gui = "bold" },
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_left({ "location" })
|
|
||||||
|
|
||||||
ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
|
|
||||||
|
|
||||||
ins_left({
|
|
||||||
"diagnostics",
|
|
||||||
sources = { "nvim_diagnostic" },
|
|
||||||
symbols = { error = " ", warn = " ", info = " " },
|
|
||||||
diagnostics_color = {
|
|
||||||
error = { fg = colors.red },
|
|
||||||
warn = { fg = colors.yellow },
|
|
||||||
info = { fg = colors.cyan },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Insert mid section. You can make any number of sections in neovim :)
|
|
||||||
-- for lualine it's any number greater then 2
|
|
||||||
ins_left({
|
|
||||||
function()
|
|
||||||
return "%="
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Add components to right sections
|
|
||||||
ins_right({
|
|
||||||
"o:encoding", -- option component same as &encoding in viml
|
|
||||||
fmt = string.upper, -- I'm not sure why it's upper case either ;)
|
|
||||||
cond = conditions.hide_in_width,
|
|
||||||
color = { fg = colors.green, gui = "bold" },
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_right({
|
|
||||||
"fileformat",
|
|
||||||
fmt = string.upper,
|
|
||||||
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
|
|
||||||
color = { fg = colors.green, gui = "bold" },
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_right({
|
|
||||||
"branch",
|
|
||||||
icon = "",
|
|
||||||
color = { fg = colors.violet, gui = "bold" },
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_right({
|
|
||||||
"diff",
|
|
||||||
-- Is it me or the symbol for modified us really weird
|
|
||||||
symbols = { added = " ", modified = " ", removed = " " },
|
|
||||||
diff_color = {
|
|
||||||
added = { fg = colors.green },
|
|
||||||
modified = { fg = colors.orange },
|
|
||||||
removed = { fg = colors.red },
|
|
||||||
},
|
|
||||||
cond = conditions.hide_in_width,
|
|
||||||
})
|
|
||||||
|
|
||||||
ins_right({
|
|
||||||
function()
|
|
||||||
return "▊"
|
|
||||||
end,
|
|
||||||
color = { fg = colors.blue },
|
|
||||||
padding = { left = 1 },
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Now don't forget to initialize lualine
|
|
||||||
lualine.setup(config)
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
return {
|
|
||||||
"goolord/alpha-nvim",
|
|
||||||
opts = function(_, opts)
|
|
||||||
local logo = [[
|
|
||||||
███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
|
|
||||||
████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║
|
|
||||||
██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║
|
|
||||||
██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
|
|
||||||
██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
|
|
||||||
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
|
|
||||||
|
|
||||||
[ @elijahmanor ]
|
|
||||||
]]
|
|
||||||
opts.section.header.val = vim.split(logo, "\n", { trimempty = true })
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
"mason-org/mason.nvim",
|
|
||||||
opts = {
|
|
||||||
ui = {
|
|
||||||
icons = {
|
|
||||||
package_installed = "✓",
|
|
||||||
package_pending = "➜",
|
|
||||||
package_uninstalled = "✗",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ensure_installed = {
|
|
||||||
-- LSP servers
|
|
||||||
"clangd", -- C / C++
|
|
||||||
"gopls", -- Go
|
|
||||||
"python-lsp-server", -- Python
|
|
||||||
"bash-language-server", -- Bash
|
|
||||||
"zls", -- Zig
|
|
||||||
"lua-language-server", -- Lua
|
|
||||||
-- Formatters / Linters
|
|
||||||
"stylua", -- Lua formatter
|
|
||||||
"shfmt", -- Shell formatter
|
|
||||||
"black", -- Python formatter
|
|
||||||
"clang-format", -- C/C++ formatter
|
|
||||||
"goimports", -- Go formatter
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
dependencies = {
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-buffer",
|
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
"hrsh7th/cmp-nvim-lua",
|
|
||||||
"saadparwaiz1/cmp_luasnip",
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
"onsails/lspkind.nvim", -- icone carine nel completamento
|
|
||||||
},
|
|
||||||
opts = function(_, opts)
|
|
||||||
local cmp = require("cmp")
|
|
||||||
local luasnip = require("luasnip")
|
|
||||||
local lspkind = require("lspkind")
|
|
||||||
|
|
||||||
-- Carica snippet
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
|
||||||
|
|
||||||
opts.snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
luasnip.lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
elseif luasnip.expand_or_jumpable() then
|
|
||||||
luasnip.expand_or_jump()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, { "i", "s" }),
|
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
elseif luasnip.jumpable(-1) then
|
|
||||||
luasnip.jump(-1)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, { "i", "s" }),
|
|
||||||
})
|
|
||||||
|
|
||||||
opts.sources = cmp.config.sources({
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "luasnip" },
|
|
||||||
{ name = "nvim_lua" },
|
|
||||||
{ name = "buffer" },
|
|
||||||
{ name = "path" },
|
|
||||||
})
|
|
||||||
|
|
||||||
opts.formatting = {
|
|
||||||
format = lspkind.cmp_format({
|
|
||||||
mode = "symbol_text",
|
|
||||||
maxwidth = 50,
|
|
||||||
ellipsis_char = "...",
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
|
|
||||||
return opts
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
return {
|
|
||||||
"catppuccin/nvim",
|
|
||||||
name = "catppuccin",
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
opts = {
|
|
||||||
flavour = "mocha",
|
|
||||||
transparent_background = false,
|
|
||||||
},
|
|
||||||
config = function(_, opts)
|
|
||||||
require("catppuccin").setup(opts)
|
|
||||||
-- vim.cmd.colorscheme("catppuccin-mocha")
|
|
||||||
vim.cmd.colorscheme("tokyonight-night")
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
"mfussenegger/nvim-dap",
|
|
||||||
dependencies = {
|
|
||||||
"leoluz/nvim-dap-go",
|
|
||||||
"rcarriga/nvim-dap-ui",
|
|
||||||
"theHamsta/nvim-dap-virtual-text",
|
|
||||||
"nvim-neotest/nvim-nio",
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
"jay-babu/mason-nvim-dap.nvim", -- Dependency for managing DAP adapters with Mason
|
|
||||||
"mfussenegger/nvim-dap-python", -- Dependency for Python debugging
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local dap = require("dap")
|
|
||||||
local dapui = require("dapui")
|
|
||||||
local mason_dap = require("mason-nvim-dap")
|
|
||||||
|
|
||||||
-- Configure mason-nvim-dap to automatically install DAP adapters
|
|
||||||
mason_dap.setup({
|
|
||||||
ensure_installed = {
|
|
||||||
"delve", -- Go Debugger Adapter
|
|
||||||
"codelldb", -- C/C++ Debugger Adapter
|
|
||||||
"debugpy", -- Python Debugger Adapter
|
|
||||||
},
|
|
||||||
handlers = {},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Set up the DAP UI
|
|
||||||
dapui.setup()
|
|
||||||
|
|
||||||
-- Set up the Go debugging configurations
|
|
||||||
require("dap-go").setup()
|
|
||||||
|
|
||||||
-- Set up the Python debugging configurations
|
|
||||||
require("dap-python").setup()
|
|
||||||
|
|
||||||
-- Configure nvim-dap-virtual-text
|
|
||||||
require("nvim-dap-virtual-text").setup({
|
|
||||||
display_callback = function(variable)
|
|
||||||
local name = string.lower(variable.name)
|
|
||||||
local value = string.lower(variable.value)
|
|
||||||
if name:match("secret") or name:match("api") or value:match("secret") or value:match("api") then
|
|
||||||
return "*****"
|
|
||||||
end
|
|
||||||
|
|
||||||
if #variable.value > 15 then
|
|
||||||
return " " .. string.sub(variable.value, 1, 15) .. "... "
|
|
||||||
end
|
|
||||||
|
|
||||||
return " " .. variable.value
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Configure the CodeLLDB adapter for C/C++
|
|
||||||
dap.adapters.codelldb = {
|
|
||||||
type = "server",
|
|
||||||
port = "${port}",
|
|
||||||
executable = {
|
|
||||||
command = vim.fn.stdpath("data") .. "/mason/bin/codelldb",
|
|
||||||
args = { "--port", "${port}" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Define launch configurations for C/C++
|
|
||||||
dap.configurations.c = {
|
|
||||||
{
|
|
||||||
name = "Launch C",
|
|
||||||
type = "codelldb",
|
|
||||||
request = "launch",
|
|
||||||
program = function()
|
|
||||||
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
|
||||||
end,
|
|
||||||
cwd = "${workspaceFolder}",
|
|
||||||
stopOnEntry = false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
dap.configurations.cpp = dap.configurations.c
|
|
||||||
|
|
||||||
-- Your keyboard shortcuts for debugging
|
|
||||||
vim.keymap.set("n", "<space>b", dap.toggle_breakpoint)
|
|
||||||
vim.keymap.set("n", "<space>gb", dap.run_to_cursor)
|
|
||||||
vim.keymap.set("n", "<space>?", function()
|
|
||||||
dapui.eval(nil, { enter = true })
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<F9>", dap.continue)
|
|
||||||
vim.keymap.set("n", "<F7>", dap.step_into)
|
|
||||||
vim.keymap.set("n", "<F8>", dap.step_over)
|
|
||||||
vim.keymap.set("n", "<F6>", dap.step_out)
|
|
||||||
vim.keymap.set("n", "<F5>", dap.step_back)
|
|
||||||
vim.keymap.set("n", "<F12>", dap.restart)
|
|
||||||
|
|
||||||
-- Listeners to open and close the DAP UI automatically
|
|
||||||
dap.listeners.before.attach.dapui_config = function()
|
|
||||||
dapui.open()
|
|
||||||
end
|
|
||||||
dap.listeners.before.launch.dapui_config = function()
|
|
||||||
dapui.open()
|
|
||||||
end
|
|
||||||
dap.listeners.before.event_terminated.dapui_config = function()
|
|
||||||
dapui.close()
|
|
||||||
end
|
|
||||||
dap.listeners.before.event_exited.dapui_config = function()
|
|
||||||
dapui.close()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
return {
|
|
||||||
{ "windwp/nvim-spectre", enabled = false },
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvimtools/none-ls.nvim",
|
|
||||||
config = function()
|
|
||||||
local null_ls = require("null-ls")
|
|
||||||
|
|
||||||
null_ls.setup({
|
|
||||||
sources = {
|
|
||||||
-- C
|
|
||||||
null_ls.builtins.formatting.clang_format.with({
|
|
||||||
extra_args = {
|
|
||||||
"--style={BasedOnStyle: LLVM, IndentWidth: 8, TabWith: 8, UseTab: Always, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, AllowShortLoopsOnASingleLine: false, AllowShortFunctionsOnASingleLine: InlineOnly, ColumnLimit: 80, AlignConsecutiveDeclarations: false, AlignConsecutiveAssignments: false, AlignEscapedNewlines: Left, AlignOperands: false, IndentCaseLabels: false, SpaceBeforeParens: ControlStatements }",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
|
|
||||||
-- Go
|
|
||||||
null_ls.builtins.formatting.goimports,
|
|
||||||
|
|
||||||
-- Zig
|
|
||||||
-- null_ls.builtins.formatting.zigfmt,
|
|
||||||
|
|
||||||
-- Lua
|
|
||||||
null_ls.builtins.formatting.stylua.with({
|
|
||||||
extra_args = {
|
|
||||||
"--indent-type",
|
|
||||||
"Spaces",
|
|
||||||
"--indent-width",
|
|
||||||
"2",
|
|
||||||
"--column-width",
|
|
||||||
"120",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
|
|
||||||
-- Python
|
|
||||||
null_ls.builtins.formatting.black.with({
|
|
||||||
extra_args = { "--line-length", "79" },
|
|
||||||
}),
|
|
||||||
|
|
||||||
-- Shell
|
|
||||||
null_ls.builtins.formatting.shfmt.with({
|
|
||||||
extra_args = { "-i", "2", "-ci", "-bn", "-sr", "-p" },
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Auto-format on save
|
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
if client.supports_method("textDocument/formatting") then
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.format({ async = false })
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
"m4xshen/hardtime.nvim",
|
|
||||||
lazy = false,
|
|
||||||
dependencies = { "MunifTanjim/nui.nvim" },
|
|
||||||
enabled = false,
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
return {
|
|
||||||
"ThePrimeagen/harpoon",
|
|
||||||
branch = "harpoon2",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
return {
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
|
|
||||||
-- How to add an LSP for a specific programming language?
|
|
||||||
-- 1. Use `:Mason` to install the corresponding LSP.
|
|
||||||
-- 2. Add the configuration below. The syntax is `lspconfig.<name>.setup(...)`
|
|
||||||
-- Hint (find <name> here): https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
|
||||||
config = function()
|
|
||||||
-- Set different settings for different languages' LSP.
|
|
||||||
-- Support List: https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
|
|
||||||
-- Case 1. For CMake Users
|
|
||||||
-- $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
|
|
||||||
-- Case 2. For Bazel Users, use https://github.com/hedronvision/bazel-compile-commands-extractor
|
|
||||||
-- Case 3. If you don't use any build tool and all files in a project use the same build flags
|
|
||||||
-- Place your compiler flags in the compile_flags.txt file, located in the root directory
|
|
||||||
-- of your project. Each line in the file should contain a single compiler flag.
|
|
||||||
-- src: https://clangd.llvm.org/installation#compile_commandsjson
|
|
||||||
lspconfig.clangd.setup({})
|
|
||||||
lspconfig.gopls.setup({})
|
|
||||||
lspconfig.bashls.setup({})
|
|
||||||
lspconfig.zls.setup({})
|
|
||||||
lspconfig.pylsp.setup({
|
|
||||||
settings = {
|
|
||||||
-- configure plugins in pylsp
|
|
||||||
pylsp = {
|
|
||||||
plugins = {
|
|
||||||
pyflakes = { enabled = false },
|
|
||||||
pycodestyle = { enabled = false },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
lspconfig.lua_ls.setup({
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
runtime = {
|
|
||||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim).
|
|
||||||
version = "LuaJIT",
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
-- Get the language server to recognize the `vim` global.
|
|
||||||
globals = { "vim" },
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
-- Make the server aware of Neovim runtime files.
|
|
||||||
library = vim.api.nvim_get_runtime_file("", true),
|
|
||||||
},
|
|
||||||
-- Do not send telemetry data containing a randomized but unique identifier.
|
|
||||||
telemetry = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
return {
|
|
||||||
"MeanderingProgrammer/render-markdown.nvim",
|
|
||||||
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite
|
|
||||||
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
|
|
||||||
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
|
||||||
---@module 'render-markdown'
|
|
||||||
---@type render.md.UserConfig
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
return {
|
|
||||||
"smoka7/multicursors.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
dependencies = {
|
|
||||||
"nvimtools/hydra.nvim",
|
|
||||||
},
|
|
||||||
opts = {},
|
|
||||||
cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" },
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
mode = { "v", "n" },
|
|
||||||
"<Leader>m",
|
|
||||||
"<cmd>MCstart<cr>",
|
|
||||||
desc = "Create a selection for selected text or word under the cursor",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
|
||||||
enabled = false,
|
|
||||||
}
|
|
||||||
@@ -1,522 +0,0 @@
|
|||||||
return {
|
|
||||||
"folke/snacks.nvim",
|
|
||||||
priority = 1000,
|
|
||||||
lazy = false,
|
|
||||||
---@type snacks.Config
|
|
||||||
opts = {
|
|
||||||
bigfile = { enabled = true },
|
|
||||||
dashboard = { enabled = false },
|
|
||||||
explorer = { enabled = false },
|
|
||||||
indent = { enabled = true },
|
|
||||||
input = { enabled = true },
|
|
||||||
notifier = {
|
|
||||||
enabled = true,
|
|
||||||
timeout = 3000,
|
|
||||||
},
|
|
||||||
picker = { enabled = true },
|
|
||||||
quickfile = { enabled = true },
|
|
||||||
scope = { enabled = true },
|
|
||||||
scroll = { enabled = true },
|
|
||||||
statuscolumn = { enabled = true },
|
|
||||||
words = { enabled = true },
|
|
||||||
styles = {
|
|
||||||
notification = {
|
|
||||||
-- wo = { wrap = true } -- Wrap notifications
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
-- Top Pickers & Explorer
|
|
||||||
{
|
|
||||||
"<leader><space>",
|
|
||||||
function()
|
|
||||||
Snacks.picker.smart()
|
|
||||||
end,
|
|
||||||
desc = "Smart Find Files",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>,",
|
|
||||||
function()
|
|
||||||
Snacks.picker.buffers()
|
|
||||||
end,
|
|
||||||
desc = "Buffers",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>/",
|
|
||||||
function()
|
|
||||||
Snacks.picker.grep()
|
|
||||||
end,
|
|
||||||
desc = "Grep",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>:",
|
|
||||||
function()
|
|
||||||
Snacks.picker.command_history()
|
|
||||||
end,
|
|
||||||
desc = "Command History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>n",
|
|
||||||
function()
|
|
||||||
Snacks.picker.notifications()
|
|
||||||
end,
|
|
||||||
desc = "Notification History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>fb",
|
|
||||||
function()
|
|
||||||
Snacks.picker.buffers()
|
|
||||||
end,
|
|
||||||
desc = "Buffers",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>fc",
|
|
||||||
function()
|
|
||||||
Snacks.picker.files({ cwd = vim.fn.stdpath("config") })
|
|
||||||
end,
|
|
||||||
desc = "Find Config File",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>ff",
|
|
||||||
function()
|
|
||||||
Snacks.picker.files()
|
|
||||||
end,
|
|
||||||
desc = "Find Files",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>fg",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_files()
|
|
||||||
end,
|
|
||||||
desc = "Find Git Files",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>fp",
|
|
||||||
function()
|
|
||||||
Snacks.picker.projects()
|
|
||||||
end,
|
|
||||||
desc = "Projects",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>fr",
|
|
||||||
function()
|
|
||||||
Snacks.picker.recent()
|
|
||||||
end,
|
|
||||||
desc = "Recent",
|
|
||||||
},
|
|
||||||
-- git
|
|
||||||
{
|
|
||||||
"<leader>gb",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_branches()
|
|
||||||
end,
|
|
||||||
desc = "Git Branches",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gl",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_log()
|
|
||||||
end,
|
|
||||||
desc = "Git Log",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gL",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_log_line()
|
|
||||||
end,
|
|
||||||
desc = "Git Log Line",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gs",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_status()
|
|
||||||
end,
|
|
||||||
desc = "Git Status",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gS",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_stash()
|
|
||||||
end,
|
|
||||||
desc = "Git Stash",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gd",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_diff()
|
|
||||||
end,
|
|
||||||
desc = "Git Diff (Hunks)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gf",
|
|
||||||
function()
|
|
||||||
Snacks.picker.git_log_file()
|
|
||||||
end,
|
|
||||||
desc = "Git Log File",
|
|
||||||
},
|
|
||||||
-- Grep
|
|
||||||
{
|
|
||||||
"<leader>sb",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lines()
|
|
||||||
end,
|
|
||||||
desc = "Buffer Lines",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sB",
|
|
||||||
function()
|
|
||||||
Snacks.picker.grep_buffers()
|
|
||||||
end,
|
|
||||||
desc = "Grep Open Buffers",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sg",
|
|
||||||
function()
|
|
||||||
Snacks.picker.grep()
|
|
||||||
end,
|
|
||||||
desc = "Grep",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sw",
|
|
||||||
function()
|
|
||||||
Snacks.picker.grep_word()
|
|
||||||
end,
|
|
||||||
desc = "Visual selection or word",
|
|
||||||
mode = { "n", "x" },
|
|
||||||
},
|
|
||||||
-- search
|
|
||||||
{
|
|
||||||
'<leader>s"',
|
|
||||||
function()
|
|
||||||
Snacks.picker.registers()
|
|
||||||
end,
|
|
||||||
desc = "Registers",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>s/",
|
|
||||||
function()
|
|
||||||
Snacks.picker.search_history()
|
|
||||||
end,
|
|
||||||
desc = "Search History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sa",
|
|
||||||
function()
|
|
||||||
Snacks.picker.autocmds()
|
|
||||||
end,
|
|
||||||
desc = "Autocmds",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sb",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lines()
|
|
||||||
end,
|
|
||||||
desc = "Buffer Lines",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sc",
|
|
||||||
function()
|
|
||||||
Snacks.picker.command_history()
|
|
||||||
end,
|
|
||||||
desc = "Command History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sC",
|
|
||||||
function()
|
|
||||||
Snacks.picker.commands()
|
|
||||||
end,
|
|
||||||
desc = "Commands",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sd",
|
|
||||||
function()
|
|
||||||
Snacks.picker.diagnostics()
|
|
||||||
end,
|
|
||||||
desc = "Diagnostics",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sD",
|
|
||||||
function()
|
|
||||||
Snacks.picker.diagnostics_buffer()
|
|
||||||
end,
|
|
||||||
desc = "Buffer Diagnostics",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sh",
|
|
||||||
function()
|
|
||||||
Snacks.picker.help()
|
|
||||||
end,
|
|
||||||
desc = "Help Pages",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sH",
|
|
||||||
function()
|
|
||||||
Snacks.picker.highlights()
|
|
||||||
end,
|
|
||||||
desc = "Highlights",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>si",
|
|
||||||
function()
|
|
||||||
Snacks.picker.icons()
|
|
||||||
end,
|
|
||||||
desc = "Icons",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sj",
|
|
||||||
function()
|
|
||||||
Snacks.picker.jumps()
|
|
||||||
end,
|
|
||||||
desc = "Jumps",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sk",
|
|
||||||
function()
|
|
||||||
Snacks.picker.keymaps()
|
|
||||||
end,
|
|
||||||
desc = "Keymaps",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sl",
|
|
||||||
function()
|
|
||||||
Snacks.picker.loclist()
|
|
||||||
end,
|
|
||||||
desc = "Location List",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sm",
|
|
||||||
function()
|
|
||||||
Snacks.picker.marks()
|
|
||||||
end,
|
|
||||||
desc = "Marks",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sM",
|
|
||||||
function()
|
|
||||||
Snacks.picker.man()
|
|
||||||
end,
|
|
||||||
desc = "Man Pages",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sp",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lazy()
|
|
||||||
end,
|
|
||||||
desc = "Search for Plugin Spec",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sq",
|
|
||||||
function()
|
|
||||||
Snacks.picker.qflist()
|
|
||||||
end,
|
|
||||||
desc = "Quickfix List",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sR",
|
|
||||||
function()
|
|
||||||
Snacks.picker.resume()
|
|
||||||
end,
|
|
||||||
desc = "Resume",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>su",
|
|
||||||
function()
|
|
||||||
Snacks.picker.undo()
|
|
||||||
end,
|
|
||||||
desc = "Undo History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>uC",
|
|
||||||
function()
|
|
||||||
Snacks.picker.colorschemes()
|
|
||||||
end,
|
|
||||||
desc = "Colorschemes",
|
|
||||||
},
|
|
||||||
-- LSP
|
|
||||||
{
|
|
||||||
"gd",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_definitions()
|
|
||||||
end,
|
|
||||||
desc = "Goto Definition",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gD",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_declarations()
|
|
||||||
end,
|
|
||||||
desc = "Goto Declaration",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gr",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_references()
|
|
||||||
end,
|
|
||||||
nowait = true,
|
|
||||||
desc = "References",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gI",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_implementations()
|
|
||||||
end,
|
|
||||||
desc = "Goto Implementation",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gy",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_type_definitions()
|
|
||||||
end,
|
|
||||||
desc = "Goto T[y]pe Definition",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>ss",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_symbols()
|
|
||||||
end,
|
|
||||||
desc = "LSP Symbols",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>sS",
|
|
||||||
function()
|
|
||||||
Snacks.picker.lsp_workspace_symbols()
|
|
||||||
end,
|
|
||||||
desc = "LSP Workspace Symbols",
|
|
||||||
},
|
|
||||||
-- Other
|
|
||||||
{
|
|
||||||
"<leader>z",
|
|
||||||
function()
|
|
||||||
Snacks.zen()
|
|
||||||
end,
|
|
||||||
desc = "Toggle Zen Mode",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>Z",
|
|
||||||
function()
|
|
||||||
Snacks.zen.zoom()
|
|
||||||
end,
|
|
||||||
desc = "Toggle Zoom",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>.",
|
|
||||||
function()
|
|
||||||
Snacks.scratch()
|
|
||||||
end,
|
|
||||||
desc = "Toggle Scratch Buffer",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>S",
|
|
||||||
function()
|
|
||||||
Snacks.scratch.select()
|
|
||||||
end,
|
|
||||||
desc = "Select Scratch Buffer",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>n",
|
|
||||||
function()
|
|
||||||
Snacks.notifier.show_history()
|
|
||||||
end,
|
|
||||||
desc = "Notification History",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>bd",
|
|
||||||
function()
|
|
||||||
Snacks.bufdelete()
|
|
||||||
end,
|
|
||||||
desc = "Delete Buffer",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>cR",
|
|
||||||
function()
|
|
||||||
Snacks.rename.rename_file()
|
|
||||||
end,
|
|
||||||
desc = "Rename File",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gB",
|
|
||||||
function()
|
|
||||||
Snacks.gitbrowse()
|
|
||||||
end,
|
|
||||||
desc = "Git Browse",
|
|
||||||
mode = { "n", "v" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>gg",
|
|
||||||
function()
|
|
||||||
Snacks.lazygit()
|
|
||||||
end,
|
|
||||||
desc = "Lazygit",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>un",
|
|
||||||
function()
|
|
||||||
Snacks.notifier.hide()
|
|
||||||
end,
|
|
||||||
desc = "Dismiss All Notifications",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<c-/>",
|
|
||||||
function()
|
|
||||||
Snacks.terminal()
|
|
||||||
end,
|
|
||||||
desc = "Toggle Terminal",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<c-_>",
|
|
||||||
function()
|
|
||||||
Snacks.terminal()
|
|
||||||
end,
|
|
||||||
desc = "which_key_ignore",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"]]",
|
|
||||||
function()
|
|
||||||
Snacks.words.jump(vim.v.count1)
|
|
||||||
end,
|
|
||||||
desc = "Next Reference",
|
|
||||||
mode = { "n", "t" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"[[",
|
|
||||||
function()
|
|
||||||
Snacks.words.jump(-vim.v.count1)
|
|
||||||
end,
|
|
||||||
desc = "Prev Reference",
|
|
||||||
mode = { "n", "t" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>N",
|
|
||||||
desc = "Neovim News",
|
|
||||||
function()
|
|
||||||
Snacks.win({
|
|
||||||
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
|
|
||||||
width = 0.6,
|
|
||||||
height = 0.6,
|
|
||||||
wo = {
|
|
||||||
spell = false,
|
|
||||||
wrap = false,
|
|
||||||
signcolumn = "yes",
|
|
||||||
statuscolumn = " ",
|
|
||||||
conceallevel = 3,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
init = function()
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
|
||||||
pattern = "VeryLazy",
|
|
||||||
callback = function()
|
|
||||||
-- Setup some globals for debugging (lazy-loaded)
|
|
||||||
_G.dd = function(...)
|
|
||||||
Snacks.debug.inspect(...)
|
|
||||||
end
|
|
||||||
_G.bt = function()
|
|
||||||
Snacks.debug.backtrace()
|
|
||||||
end
|
|
||||||
vim.print = _G.dd -- Override print to use snacks for `:=` command
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
tag = "0.1.8",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
return {
|
|
||||||
"mikavilpas/yazi.nvim",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
|
||||||
opts = {},
|
|
||||||
keys = {
|
|
||||||
{ "<leader>e", "<cmd>Yazi<cr>", desc = "Open Yazi" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
file1=$(fzf --prompt="Select first file: " < <(find . -type f))
|
|
||||||
[ -z "$file1" ] && echo "Aborted." && exit 1
|
|
||||||
|
|
||||||
file2=$(fzf --prompt="Select second file: " < <(find . -type f))
|
|
||||||
[ -z "$file2" ] && echo "Aborted." && exit 1
|
|
||||||
|
|
||||||
echo "🔍 Comparing:"
|
|
||||||
echo " 1: $file1"
|
|
||||||
echo " 2: $file2"
|
|
||||||
|
|
||||||
meld "$file1" "$file2" &
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
-- This file contains all custom functions for integrate external tools.
|
|
||||||
|
|
||||||
-- Meld for comparing and merging files
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M.meld_diff(file1, file2)
|
|
||||||
if not file1 or not file2 then
|
|
||||||
print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local cmd = string.format("meld '%s' '%s' &", file1, file2)
|
|
||||||
os.execute(cmd)
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
indent_type = "Spaces"
|
|
||||||
indent_width = 2
|
|
||||||
column_width = 120
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,435 +0,0 @@
|
|||||||
|
|
||||||
# An example configuration file for MPD.
|
|
||||||
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
|
|
||||||
|
|
||||||
|
|
||||||
# Files and directories #######################################################
|
|
||||||
#
|
|
||||||
# This setting controls the top directory which MPD will search to discover the
|
|
||||||
# available audio files and add them to the daemon's online database. This
|
|
||||||
# setting defaults to the XDG directory, otherwise the music directory will be
|
|
||||||
# be disabled and audio files will only be accepted over ipc socket (using
|
|
||||||
# file:// protocol) or streaming files over an accepted protocol.
|
|
||||||
#
|
|
||||||
#music_directory "~/music"
|
|
||||||
music_directory "~/Music"
|
|
||||||
#
|
|
||||||
# This setting sets the MPD internal playlist directory. The purpose of this
|
|
||||||
# directory is storage for playlists created by MPD. The server will use
|
|
||||||
# playlist files not created by the server but only if they are in the MPD
|
|
||||||
# format. This setting defaults to playlist saving being disabled.
|
|
||||||
#
|
|
||||||
#playlist_directory "~/.mpd/playlists"
|
|
||||||
playlist_directory "~/.config/mpd/playlists"
|
|
||||||
#
|
|
||||||
# This setting sets the location of the MPD database. This file is used to
|
|
||||||
# load the database at server start up and store the database while the
|
|
||||||
# server is not up. This setting defaults to disabled which will allow
|
|
||||||
# MPD to accept files over ipc socket (using file:// protocol) or streaming
|
|
||||||
# files over an accepted protocol.
|
|
||||||
#
|
|
||||||
db_file "~/.config/mpd/database"
|
|
||||||
#db_file "~/.mpd/database"
|
|
||||||
|
|
||||||
# These settings are the locations for the daemon log files for the daemon.
|
|
||||||
#
|
|
||||||
# The special value "syslog" makes MPD use the local syslog daemon. This
|
|
||||||
# setting defaults to logging to syslog.
|
|
||||||
#
|
|
||||||
# If you use systemd, do not configure a log_file. With systemd, MPD
|
|
||||||
# defaults to the systemd journal, which is fine.
|
|
||||||
#
|
|
||||||
#log_file "~/.mpd/log"
|
|
||||||
|
|
||||||
# This setting sets the location of the file which stores the process ID
|
|
||||||
# for use of mpd --kill and some init scripts. This setting is disabled by
|
|
||||||
# default and the pid file will not be stored.
|
|
||||||
#
|
|
||||||
# If you use systemd, do not configure a pid_file.
|
|
||||||
#
|
|
||||||
#pid_file "~/.mpd/pid"
|
|
||||||
pid_file "~/.config/mpd/pid"
|
|
||||||
|
|
||||||
# This setting sets the location of the file which contains information about
|
|
||||||
# most variables to get MPD back into the same general shape it was in before
|
|
||||||
# it was brought down. This setting is disabled by default and the server
|
|
||||||
# state will be reset on server start up.
|
|
||||||
#
|
|
||||||
#state_file "~/.mpd/state"
|
|
||||||
state_file "~/.config/mpd/state"
|
|
||||||
#
|
|
||||||
# The location of the sticker database. This is a database which
|
|
||||||
# manages dynamic information attached to songs.
|
|
||||||
#
|
|
||||||
#sticker_file "~/.mpd/sticker.sql"
|
|
||||||
sticker_file "~/.config/mpd/sticker.sql"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# General music daemon options ################################################
|
|
||||||
#
|
|
||||||
# This setting specifies the user that MPD will run as. MPD should never run as
|
|
||||||
# root and you may use this setting to make MPD change its user ID after
|
|
||||||
# initialization. This setting is disabled by default and MPD is run as the
|
|
||||||
# current user.
|
|
||||||
#
|
|
||||||
#user "nobody"
|
|
||||||
#
|
|
||||||
# This setting specifies the group that MPD will run as. If not specified
|
|
||||||
# primary group of user specified with "user" setting will be used (if set).
|
|
||||||
# This is useful if MPD needs to be a member of group such as "audio" to
|
|
||||||
# have permission to use sound card.
|
|
||||||
#
|
|
||||||
#group "nogroup"
|
|
||||||
#
|
|
||||||
# This setting sets the address for the daemon to listen on. Careful attention
|
|
||||||
# should be paid if this is assigned to anything other than the default, any.
|
|
||||||
# This setting can deny access to control of the daemon. Not effective if
|
|
||||||
# systemd socket activation is in use.
|
|
||||||
#
|
|
||||||
# For network
|
|
||||||
#bind_to_address "any"
|
|
||||||
#
|
|
||||||
# And for Unix Socket
|
|
||||||
#bind_to_address "~/.mpd/socket"
|
|
||||||
#
|
|
||||||
# This setting is the TCP port that is desired for the daemon to get assigned
|
|
||||||
# to.
|
|
||||||
#
|
|
||||||
#port "6600"
|
|
||||||
#
|
|
||||||
# Suppress all messages below the given threshold. Use "verbose" for
|
|
||||||
# troubleshooting. Available setting arguments are "notice", "info", "verbose",
|
|
||||||
# "warning" and "error".
|
|
||||||
#
|
|
||||||
#log_level "notice"
|
|
||||||
#
|
|
||||||
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
|
|
||||||
# of starting playback after startup.
|
|
||||||
#
|
|
||||||
#restore_paused "no"
|
|
||||||
#
|
|
||||||
# This setting enables MPD to create playlists in a format usable by other
|
|
||||||
# music players.
|
|
||||||
#
|
|
||||||
#save_absolute_paths_in_playlists "no"
|
|
||||||
#
|
|
||||||
# This setting defines a list of tag types that will be extracted during the
|
|
||||||
# audio file discovery process. The complete list of possible values can be
|
|
||||||
# found in the user manual.
|
|
||||||
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
|
|
||||||
#
|
|
||||||
# This example just enables the "comment" tag without disabling all
|
|
||||||
# the other supported tags:
|
|
||||||
#metadata_to_use "+comment"
|
|
||||||
#
|
|
||||||
# This setting enables automatic update of MPD's database when files in
|
|
||||||
# music_directory are changed.
|
|
||||||
#
|
|
||||||
auto_update "yes"
|
|
||||||
#
|
|
||||||
# Limit the depth of the directories being watched, 0 means only watch
|
|
||||||
# the music directory itself. There is no limit by default.
|
|
||||||
#
|
|
||||||
#auto_update_depth "3"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Symbolic link behavior ######################################################
|
|
||||||
#
|
|
||||||
# If this setting is set to "yes", MPD will discover audio files by following
|
|
||||||
# symbolic links outside of the configured music_directory.
|
|
||||||
#
|
|
||||||
#follow_outside_symlinks "yes"
|
|
||||||
#
|
|
||||||
# If this setting is set to "yes", MPD will discover audio files by following
|
|
||||||
# symbolic links inside of the configured music_directory.
|
|
||||||
#
|
|
||||||
#follow_inside_symlinks "yes"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Zeroconf / Avahi Service Discovery ##########################################
|
|
||||||
#
|
|
||||||
# If this setting is set to "yes", service information will be published with
|
|
||||||
# Zeroconf / Avahi.
|
|
||||||
#
|
|
||||||
#zeroconf_enabled "yes"
|
|
||||||
#
|
|
||||||
# The argument to this setting will be the Zeroconf / Avahi unique name for
|
|
||||||
# this MPD server on the network. %h will be replaced with the hostname.
|
|
||||||
#
|
|
||||||
#zeroconf_name "Music Player @ %h"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Permissions #################################################################
|
|
||||||
#
|
|
||||||
# If this setting is set, MPD will require password authorization. The password
|
|
||||||
# setting can be specified multiple times for different password profiles.
|
|
||||||
#
|
|
||||||
#password "password@read,add,control,admin"
|
|
||||||
#
|
|
||||||
# This setting specifies the permissions a user has who has not yet logged in.
|
|
||||||
#
|
|
||||||
#default_permissions "read,add,control,admin"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Database #######################################################################
|
|
||||||
#
|
|
||||||
# An example of a database section instead of the old 'db_file' setting.
|
|
||||||
# It enables mounting other storages into the music directory.
|
|
||||||
#
|
|
||||||
#database {
|
|
||||||
# plugin "simple"
|
|
||||||
# path "~/.local/share/mpd/db
|
|
||||||
# cache_directory "~/.local/share/mpd/cache"
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of database config for a satellite setup
|
|
||||||
#
|
|
||||||
#music_directory "nfs://fileserver.local/srv/mp3"
|
|
||||||
#database {
|
|
||||||
# plugin "proxy"
|
|
||||||
# host "other.mpd.host"
|
|
||||||
# port "6600"
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Input #######################################################################
|
|
||||||
#
|
|
||||||
input {
|
|
||||||
plugin "curl"
|
|
||||||
# proxy "proxy.isp.com:8080"
|
|
||||||
# proxy_user "user"
|
|
||||||
# proxy_password "password"
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
# Audio Output ################################################################
|
|
||||||
#
|
|
||||||
# MPD supports various audio output types, as well as playing through multiple
|
|
||||||
# audio outputs at the same time, through multiple audio_output settings
|
|
||||||
# blocks. Setting this block is optional, though the server will only attempt
|
|
||||||
# autodetection for one sound card.
|
|
||||||
#
|
|
||||||
# An example of an ALSA output:
|
|
||||||
#
|
|
||||||
audio_output {
|
|
||||||
type "pulse"
|
|
||||||
name "pulse audio"
|
|
||||||
}
|
|
||||||
|
|
||||||
# audio_output {
|
|
||||||
# type "pipewire"
|
|
||||||
# name "PipeWire Sound Server"
|
|
||||||
# }
|
|
||||||
|
|
||||||
#audio_output {
|
|
||||||
# type "alsa"
|
|
||||||
# name "My ALSA Device"
|
|
||||||
## device "hw:0,0" # optional
|
|
||||||
## mixer_type "hardware" # optional
|
|
||||||
## mixer_device "default" # optional
|
|
||||||
## mixer_control "PCM" # optional
|
|
||||||
## mixer_index "0" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of an OSS output:
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "oss"
|
|
||||||
# name "My OSS Device"
|
|
||||||
## device "/dev/dsp" # optional
|
|
||||||
## mixer_type "hardware" # optional
|
|
||||||
## mixer_device "/dev/mixer" # optional
|
|
||||||
## mixer_control "PCM" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a shout output (for streaming to Icecast):
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "shout"
|
|
||||||
# encoder "vorbis" # optional
|
|
||||||
# name "My Shout Stream"
|
|
||||||
# host "localhost"
|
|
||||||
# port "8000"
|
|
||||||
# mount "/mpd.ogg"
|
|
||||||
# password "hackme"
|
|
||||||
# quality "5.0"
|
|
||||||
# bitrate "128"
|
|
||||||
# format "44100:16:1"
|
|
||||||
## protocol "icecast2" # optional
|
|
||||||
## user "source" # optional
|
|
||||||
## description "My Stream Description" # optional
|
|
||||||
## url "http://example.com" # optional
|
|
||||||
## genre "jazz" # optional
|
|
||||||
## public "no" # optional
|
|
||||||
## timeout "2" # optional
|
|
||||||
## mixer_type "software" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a recorder output:
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "recorder"
|
|
||||||
# name "My recorder"
|
|
||||||
# encoder "vorbis" # optional, vorbis or lame
|
|
||||||
# path "/var/lib/mpd/recorder/mpd.ogg"
|
|
||||||
## quality "5.0" # do not define if bitrate is defined
|
|
||||||
# bitrate "128" # do not define if quality is defined
|
|
||||||
# format "44100:16:1"
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a httpd output (built-in HTTP streaming server):
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "httpd"
|
|
||||||
# name "My HTTP Stream"
|
|
||||||
# encoder "vorbis" # optional, vorbis or lame
|
|
||||||
# port "8000"
|
|
||||||
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
|
|
||||||
## quality "5.0" # do not define if bitrate is defined
|
|
||||||
# bitrate "128" # do not define if quality is defined
|
|
||||||
# format "44100:16:1"
|
|
||||||
# max_clients "0" # optional 0=no limit
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "pulse"
|
|
||||||
# name "My Pulse Output"
|
|
||||||
## server "remote_server" # optional
|
|
||||||
## sink "remote_server_sink" # optional
|
|
||||||
## media_role "media_role" #optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a winmm output (Windows multimedia API).
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "winmm"
|
|
||||||
# name "My WinMM output"
|
|
||||||
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
|
||||||
# or
|
|
||||||
## device "0" # optional
|
|
||||||
## mixer_type "hardware" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of a wasapi output (Windows multimedia API).
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "wasapi"
|
|
||||||
# name "My WASAPI output"
|
|
||||||
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
|
||||||
# or
|
|
||||||
## device "0" # optional
|
|
||||||
## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
|
|
||||||
## exclusive "no" # optional
|
|
||||||
## Enumerate all devices in log.
|
|
||||||
## enumerate "no" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of an openal output.
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "openal"
|
|
||||||
# name "My OpenAL output"
|
|
||||||
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of an sndio output.
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "sndio"
|
|
||||||
# name "sndio output"
|
|
||||||
# mixer_type "hardware"
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
# An example of an OS X output:
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "osx"
|
|
||||||
# name "My OS X Device"
|
|
||||||
## device "Built-in Output" # optional
|
|
||||||
## channel_map "-1,-1,0,1" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
## Example "pipe" output:
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "pipe"
|
|
||||||
# name "my pipe"
|
|
||||||
# command "aplay -f cd 2>/dev/null"
|
|
||||||
## Or if you're want to use AudioCompress
|
|
||||||
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
|
|
||||||
## Or to send raw PCM stream through PCM:
|
|
||||||
# command "nc example.org 8765"
|
|
||||||
# format "44100:16:2"
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
## An example of a null output (for no audio output):
|
|
||||||
#
|
|
||||||
#audio_output {
|
|
||||||
# type "null"
|
|
||||||
# name "My Null Output"
|
|
||||||
# mixer_type "none" # optional
|
|
||||||
#}
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Normalization automatic volume adjustments ##################################
|
|
||||||
#
|
|
||||||
# This setting specifies the type of ReplayGain to use. This setting can have
|
|
||||||
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
|
|
||||||
# chooses between "track" and "album" depending on the current state of
|
|
||||||
# random playback. If random playback is enabled then "track" mode is used.
|
|
||||||
# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
|
|
||||||
# more details about ReplayGain.
|
|
||||||
# This setting is off by default.
|
|
||||||
#
|
|
||||||
#replaygain "album"
|
|
||||||
#
|
|
||||||
# This setting sets the pre-amp used for files that have ReplayGain tags. By
|
|
||||||
# default this setting is disabled.
|
|
||||||
#
|
|
||||||
#replaygain_preamp "0"
|
|
||||||
#
|
|
||||||
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
|
|
||||||
# By default this setting is disabled.
|
|
||||||
#
|
|
||||||
#replaygain_missing_preamp "0"
|
|
||||||
#
|
|
||||||
# This setting enables or disables ReplayGain limiting.
|
|
||||||
# MPD calculates actual amplification based on the ReplayGain tags
|
|
||||||
# and replaygain_preamp / replaygain_missing_preamp setting.
|
|
||||||
# If replaygain_limit is enabled MPD will never amplify audio signal
|
|
||||||
# above its original level. If replaygain_limit is disabled such amplification
|
|
||||||
# might occur. By default this setting is enabled.
|
|
||||||
#
|
|
||||||
#replaygain_limit "yes"
|
|
||||||
#
|
|
||||||
# This setting enables on-the-fly normalization volume adjustment. This will
|
|
||||||
# result in the volume of all playing audio to be adjusted so the output has
|
|
||||||
# equal "loudness". This setting is disabled by default.
|
|
||||||
#
|
|
||||||
#volume_normalization "no"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
# Character Encoding ##########################################################
|
|
||||||
#
|
|
||||||
# If file or directory names do not display correctly for your locale then you
|
|
||||||
# may need to modify this setting.
|
|
||||||
#
|
|
||||||
#filesystem_charset "UTF-8"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
sw_volume: 100
|
|
||||||
audio_device_state:1:pulse audio
|
|
||||||
state: play
|
|
||||||
current: 11
|
|
||||||
time: 15.469000
|
|
||||||
random: 1
|
|
||||||
repeat: 0
|
|
||||||
single: 0
|
|
||||||
consume: 0
|
|
||||||
crossfade: 0
|
|
||||||
mixrampdb: 0.000000
|
|
||||||
mixrampdelay: -1.000000
|
|
||||||
playlist_begin
|
|
||||||
0:佐々木恵梨 - Ring of Fortune.mp3
|
|
||||||
1:放課後ティータイム - わたしの恋はホッチキス.mp3
|
|
||||||
2:早見沙織 - ここから、ここから -白石結月 ソロver.-.mp3
|
|
||||||
3:瀬戸麻沙美,黒沢ともよ,小澤亜李 - さよなら。ありがとう。.mp3
|
|
||||||
4:コアラモード. - 七色シンフォニー.mp3
|
|
||||||
5:泠鸢yousa - 前前前世(Slow Ver.).mp3
|
|
||||||
6:放課後ティータイム - わたしの恋はホッチキス.mp3
|
|
||||||
7:佐々木恵梨 - Ring of Fortune.mp3
|
|
||||||
8:放課後ティータイム - わたしの恋はホッチキス.mp3
|
|
||||||
9:早見沙織 - ここから、ここから -白石結月 ソロver.-.mp3
|
|
||||||
10:瀬戸麻沙美,黒沢ともよ,小澤亜李 - さよなら。ありがとう。.mp3
|
|
||||||
11:コアラモード. - 七色シンフォニー.mp3
|
|
||||||
12:泠鸢yousa - 前前前世(Slow Ver.).mp3
|
|
||||||
playlist_end
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
|
|
||||||
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
|
|
||||||
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
|
|
||||||
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
|
|
||||||
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
|
|
||||||
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
|
|
||||||
|
|
||||||
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
hwdec=auto
|
|
||||||
# vo=gpu-next #This will break Anime4K
|
|
||||||
gpu-api=opengl
|
|
||||||
script-opts=ytdl_hook-ytdl_path=yt-dlp
|
|
||||||
|
|
||||||
# Main mpv options
|
|
||||||
background-color='#1e1e2e'
|
|
||||||
osd-back-color='#11111b'
|
|
||||||
osd-border-color='#11111b'
|
|
||||||
osd-color='#cdd6f4'
|
|
||||||
osd-shadow-color='#1e1e2e'
|
|
||||||
|
|
||||||
# Stats script options
|
|
||||||
# Options are on separate lines for clarity
|
|
||||||
# Colors are in #BBGGRR format
|
|
||||||
script-opts-append=stats-border_color=251818
|
|
||||||
script-opts-append=stats-font_color=f4d6cd
|
|
||||||
script-opts-append=stats-plot_bg_border_color=afe2f9
|
|
||||||
script-opts-append=stats-plot_bg_color=251818
|
|
||||||
script-opts-append=stats-plot_color=afe2f9
|
|
||||||
|
|
||||||
# External script options
|
|
||||||
# It is fine to leave these here even if one does not use these scripts because they are just ignored unless a script uses them
|
|
||||||
|
|
||||||
# UOSC options
|
|
||||||
script-opts-append=uosc-color=foreground=f9e2af,foreground_text=313244,background=1e1e2e,background_text=cdd6f4,curtain=181825,success=a6e3a1,error=f38ba8
|
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user