55 Commits

Author SHA1 Message Date
Fabio Scotto di Santolo
2d510d289c Added YAML and Dockerfile treesitter grammar 2025-12-25 09:54:19 +01:00
Fabio Scotto di Santolo
6e20358ad6 Compact Emacs C-lang configuration 2025-12-24 16:16:29 +01:00
Fabio Scotto di Santolo
fc6f51343d Organize Emacs configuration 2025-12-24 15:56:55 +01:00
Fabio Scotto di Santolo
0e396c05b2 Fix keybindings module 2025-12-23 15:55:26 +01:00
Fabio Scotto di Santolo
dc7a0d0987 Added declarative abstraction for loading module 2025-12-23 13:33:57 +01:00
Fabio Scotto di Santolo
7711e4156f Split Emacs configuration in modules 2025-12-23 10:29:49 +01:00
Fabio Scotto di Santolo
c793146ebb Intellij debug layout 2025-12-22 16:48:29 +01:00
Fabio Scotto di Santolo
56bfec57ca Configure LSP and DAP for Golang development 2025-12-19 22:26:37 +01:00
Fabio Scotto di Santolo
009385e3fd Fix Bash configuration 2025-12-17 23:17:42 +01:00
Fabio Scotto di Santolo
bf00633d7c Configure DAP for C/C++ 2025-12-16 22:26:37 +01:00
Fabio Scotto di Santolo
db782bb84a Configure LSP for Shell Development 2025-12-16 09:48:57 +01:00
Fabio Scotto di Santolo
70b7da4461 Configure LSP for C development 2025-12-15 16:33:56 +01:00
Fabio Scotto di Santolo
4b1509acf7 Improved init performance and added configuration for LSP and DAP 2025-12-15 00:07:51 +01:00
Fabio Scotto di Santolo
457fa93727 Added package Elfeed Org in the Emacs custom config 2025-12-12 21:33:03 +01:00
Fabio Scotto di Santolo
414317c19f Fix Starship prompt 2025-12-12 21:31:29 +01:00
Fabio Scotto di Santolo
2e14989a23 Add LSP, Flycheck and others in the Emacs configuration 2025-12-06 23:44:06 +01:00
Fabio Scotto di Santolo
1839f9e875 Change Emacs configuration 2025-12-06 00:01:31 +01:00
Fabio Scotto di Santolo
c80216989c Fix path loading in .profile 2025-12-02 09:57:56 +01:00
Fabio Scotto di Santolo
7c620dba19 Fix Mise commit 2025-12-02 09:51:37 +01:00
Fabio Scotto di Santolo
d1ee31378d Fix Mise loading 2025-12-02 09:47:53 +01:00
Fabio Scotto di Santolo
bf33a8bbd7 Align Sway and i3 configurations 2025-11-29 11:47:37 +01:00
Fabio Scotto di Santolo
42deab7c3e Added Wayland environment with Sway 2025-11-28 23:35:14 +01:00
Fabio Scotto di Santolo
ed2c9d2b6a Change Rofi theme 2025-11-22 18:01:10 +01:00
Fabio Scotto di Santolo
3e4baa2b63 Add Youtube RSS feeds 2025-11-08 21:26:36 +01:00
Fabio Scotto di Santolo
1d937b9316 Fix SMTP client config 2025-11-08 17:22:02 +01:00
Fabio Scotto di Santolo
75de8dcadb Update mu4e configuration
- Added ProtonMail account
- Added iCloud Mail account
- Remove Gmail account
2025-11-07 22:13:14 +01:00
Fabio Scotto di Santolo
04bc54a80c Add i3 binding for launch Emacs 2025-10-26 18:03:37 +01:00
Fabio Scotto di Santolo
754aa9d191 Change i3 wallpaper 2025-10-25 17:16:27 +02:00
Fabio Scotto di Santolo
9acf200418 Fix Doom config 2025-10-25 17:10:48 +02:00
Fabio Scotto di Santolo
90fa090890 Update Starship prompt 2025-10-25 14:10:14 +02:00
Fabio Scotto di Santolo
07785f0f99 Remove Ranger file manager 2025-10-25 14:01:38 +02:00
Fabio Scotto di Santolo
e89bb2627c Added Doom Emacs configuration 2025-10-25 13:57:41 +02:00
Fabio Scotto di Santolo
161dc09e25 Change Bash prompt using Starship 2025-10-17 22:07:53 +02:00
Fabio Scotto di Santolo
846b5541f9 Change Flameshot options 2025-10-04 19:42:43 +02:00
Fabio Scotto di Santolo
6a03bc9198 Added Emacs plugins for view PDF and EPub 2025-10-04 19:42:10 +02:00
Fabio Scotto di Santolo
85d13e762f Added Elfeed an RSS feed reader for Emacs 2025-10-04 15:29:21 +02:00
Fabio Scotto di Santolo
a575826bb6 Added mu4e config on Emacs 2025-10-03 12:16:06 +02:00
Fabio Scotto di Santolo
8561e961eb Remove default editor from Gitconfig 2025-10-03 12:15:20 +02:00
Fabio Scotto di Santolo
c7126a86ef Added Which-key and Company Emacs plugins and other fixes 2025-09-08 23:25:03 +02:00
Fabio Scotto di Santolo
1ea23f4510 Fix Bash profile enviroments 2025-09-08 22:44:49 +02:00
Fabio Scotto di Santolo
274ec45f75 Fix Picom exclude Polybar to apply radius 2025-09-08 22:41:22 +02:00
Fabio Scotto di Santolo
04bd67e289 Added Magit on Emacs 2025-09-07 22:32:57 +02:00
Fabio Scotto di Santolo
ad83e5a63a Added clipboard manager and fix battery module on Polybar 2025-09-07 22:32:39 +02:00
Fabio Scotto di Santolo
9e70682bd3 Added Ranger file manager 2025-09-06 00:10:19 +02:00
Fabio Scotto di Santolo
7d2ffb2fc9 Added power menu with Rofi 2025-09-04 23:10:49 +02:00
Fabio Scotto di Santolo
56af90de63 Setting Polybar 2025-09-04 10:22:25 +02:00
Fabio Scotto di Santolo
c8566553cf Enable i3 syntax highlighting 2025-09-02 19:42:39 +02:00
Fabio Scotto di Santolo
37e092c031 Update Emacs configuration with LSP capability 2025-09-02 19:34:51 +02:00
Fabio Scotto di Santolo
ea7b586c3c Modify Polybar config 2025-09-02 19:21:14 +02:00
Fabio Scotto di Santolo
b1a91911c8 Added basic Emacs configuration 2025-09-01 23:53:26 +02:00
Fabio Scotto di Santolo
a2645ca3e3 Fix Picom config 2025-09-01 22:13:49 +02:00
Fabio Scotto di Santolo
79deef489a Update .bashrc 2025-09-01 21:02:21 +02:00
Fabio Scotto di Santolo
909b6423e0 Update mise.sh 2025-09-01 20:55:14 +02:00
Fabio Scotto di Santolo
485841b483 Change Picom config as BreadOnPenguin 2025-09-01 20:07:56 +02:00
Fabio Scotto di Santolo
1591397b9c Remove Wayland environment 2025-09-01 14:23:47 +02:00
199 changed files with 2659 additions and 11488 deletions

View File

@@ -11,8 +11,9 @@ Each directory in this repository corresponds to a specific application or tool,
> Example usage (from the repository root):
>
> ```bash
> stow nvim
> stow zsh
> stow bash
> stow i3
> stow doom
> ```
### 🧩 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:
- **Shells & Prompt**
- `zsh` + `starship`
- `bash` (Oh My Bash)
- `starship`
- **Terminal Emulators & Multiplexer**
- `alacritty`
- `foot`
- `tmux`
- **Editors & CLI Tools**
- `neovim` (with LazyVim)
- `doom emacs`
- `doom` (Doom Emacs config)
- `emacs` (Custom config)
- `git`
- `lazygit`
- **X11 Environment**
- `rofi` (launcher)
- `polybar` (status bar)
- `dunst` (notification daemon)
- `i3` (window manager)
- `i3` (Window Manager)
- `picom` (X11 compositor)
- **Wayland Environment**
- `fuzzel` (launcher)
- `waybar` (status bar)
- `polybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon)
- **Wayland Environment**
- `sway` (Window Manager)
- `waybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon)
- `sway` (window manager)
- **Utilities**
- `fastfetch`
- `zoxide`
- `mpv`
- `yt-dlp`
- `flameshot`
- `newsboat`
---

View File

@@ -1,7 +1,7 @@
# Enable the subsequent settings only in interactive sessions
case $- in
*i*) ;;
*) return;;
*) return ;;
esac
# 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"
# 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.
# 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,
# plugins, and themes. Aliases can be placed here, though oh-my-bash
# users are encouraged to define aliases within the OSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias bashconfig="mate ~/.bashrc"
# alias ohmybash="mate ~/.oh-my-bash"
# For a full list of active aliases, run `
alias ls='ls --color=auto --group-directories-first'
# 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
View 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
View 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
View 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

View 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

View File

@@ -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
export XDG_CONFIG_HOME=${HOME}/.config
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
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_STYLE_OVERRIDE=kvantum
# Make Qt apps honour DPI settings.
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export ZSH_HOME="$HOME/.zsh"
export DOTFILES="$HOME/.dotfiles"
export EDITOR=nvim
export HELPDIR=/usr/share/zsh/"${ZSH_VERSION}"/help
export EDITOR=nano
# SSH socket
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
export FZF_DEFAULT_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git"
export FZF_CTRL_T_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git"
export FZF_ALT_C_COMMAND="fd --hidden --type directory --strip-cwd-prefix --exclude .git"
# Export Catppuccin Mocha theme for FZF
export FZF_DEFAULT_OPTS=" \
--height 60% --layout=reverse --border \
--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
--color=selected-bg:#45475A \
--color=border:#313244,label:#CDD6F4"
export FZF_TMUX_OPTS=" -p90%,70%"
# export FZF_DEFAULT_COMMAND="fdfind --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="fdfind --hidden --type directory --strip-cwd-prefix --exclude .git"
# # Export Catppuccin Mocha theme for FZF
# export FZF_DEFAULT_OPTS=" \
# --height 60% --layout=reverse --border \
# --color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
# --color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
# --color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
# --color=selected-bg:#45475A \
# --color=border:#313244,label:#CDD6F4"
# export FZF_TMUX_OPTS=" -p90%,70%"
export VIRTUAL_ENV_DISABLE_PROMPT=1
source "$HOME/.profile.d/mise.sh"
source "$HOME/.profile.d/golang.sh"
source "$HOME/.profile.d/java.sh"
# Export Golang enviroments
export GOPATH="$HOME/.local/share/Go"
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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
if command -v mise > /dev/null 2>&1; then
eval "$(mise activate zsh)"
fi

View File

@@ -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

View File

@@ -21,18 +21,21 @@
;; See 'C-h v doom-font' for documentation and more examples of what they
;; 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
;; 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
;; 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
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(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
;; 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,
;; 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
;; `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
;; 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"))

View 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.
)

View 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:

View File

@@ -22,18 +22,18 @@
:completion
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
;;ido ; the other *other* search engine...
;;ivy ; a search engine for love and life
vertico ; the search engine of the future
ivy ; a search engine for love and life
;;vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
;;(emoji +unicode) ; 🙂
(emoji +unicode) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;indent-guides ; highlighted indent columns
ligatures ; ligatures and symbols to make your code pretty again
@@ -54,37 +54,39 @@
;;zen ; distraction-free coding or writing
: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
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;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
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
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
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
;;eww ; the internet is gross
;;ibuffer ; interactive buffer management
eww ; the internet is gross
ibuffer ; interactive buffer management
tramp ; remote files at your arthritic fingertips
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
;;eshell ; the elisp shell that works everywhere
eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
;;(spell +flyspell) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
(spell +flyspell) ; tasing you for misspelling mispelling
grammar ; tasing grammar mistake every you make
:tools
ansible
@@ -98,10 +100,10 @@
(eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation
;;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
make ; run make tasks from Emacs
;;pass ; password manager for nerds
pass ; password manager for nerds
pdf ; pdf enhancements
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
@@ -113,10 +115,11 @@
;;tty ; improve the terminal Emacs experience
:lang
;;ada ; In strong typing we (blindly) trust
;;agda ; types of types of types of types...
;;beancount ; mind the GAAP
(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
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
@@ -146,10 +149,10 @@
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;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
;;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
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
@@ -168,7 +171,7 @@
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;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
;;sml
;;solidity ; do you need a blockchain? No.
@@ -178,18 +181,21 @@
yaml ; JSON, but readable
zig ; C, but simpler
:tools
lsp ; lsp mode
:email
;;(mu4e +org +gmail)
(mu4e +org +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
;;calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
calendar
emms
everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
(rss +org) ; emacs as an RSS reader
:config
;; literate
;;literate
(default +bindings +smartparens))

View File

@@ -1,8 +1,13 @@
;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el
;; To install a package with Doom you must declare them here and run 'doom sync'
;; on the command line, then restart Emacs for the changes to take effect -- or
;; To install a package:
;;
;; 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:
@@ -49,4 +54,6 @@
;; (unpin! t)
(package! catppuccin-theme)
(package! go-mode)
(package! org-caldav)
(package! elfeed-tube)
(package! elfeed-tube-mpv)

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env sh
mbsync -a & pid1=$!
wait $pid1
mu index

64
emacs/.emacs.d/.gitignore vendored Executable file
View 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
View 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:

64
emacs/.emacs.d/init.el Normal file
View File

@@ -0,0 +1,64 @@
(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/docker
'lang/golang
'lang/shell
'lang/yaml
;; 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")

View 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

View 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

View File

@@ -0,0 +1,161 @@
;;; keybindings.el -*- lexical-binding: t; -*-
;;;; Global / Core
(global-set-key (kbd "C-x C-b") #'ibuffer)
(global-set-key (kbd "C-<return>") 'company-complete)
(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

View 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/"))))

View 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)

View 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

View 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

View File

@@ -0,0 +1,8 @@
;;; docker.el -*- lexical-binding: t; -*-
(use-package dockerfile-mode
:ensure t)
(provide 'docker)
;;; docker.el ends here

View File

@@ -0,0 +1,89 @@
;;=================================================================
;; 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)))
(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)))

View 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)

View File

@@ -0,0 +1,8 @@
;;; yaml.el -*- lexical-binding: t; -*-
(use-package yaml-mode
:ensure t)
(provide 'yaml)
;;; yaml.el ends here

View 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))

View 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))

View 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))

View File

@@ -0,0 +1,3 @@
(use-package nov
:ensure t
:mode ("\\.epub\\'" . nov-mode))

View File

@@ -0,0 +1,2 @@
(use-package i3wm-config-mode
:ensure t)

View File

@@ -0,0 +1,4 @@
(use-package pdf-tools
:ensure t
:config
(pdf-tools-install))

View 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))

View File

@@ -0,0 +1,4 @@
;;; terminal.el -*-
(use-package vterm
:ensure t)

View 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

View 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"))

View 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

View 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))

View 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

View 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

View File

@@ -0,0 +1,29 @@
;;; 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
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
(c "https://github.com/tree-sitter/tree-sitter-c")
(cpp "https://github.com/tree-sitter/tree-sitter-cpp")
(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile")
(go "https://github.com/tree-sitter/tree-sitter-go")
(gomod "https://github.com/camdencheek/tree-sitter-go-mod")
(js "https://github.com/tree-sitter/tree-sitter-javascript")
(json "https://github.com/tree-sitter/tree-sitter-json")
(node "https://github.com/tree-sitter/node-tree-sitter")
(python "https://github.com/tree-sitter/tree-sitter-python"))))
(provide 'treesitter)
;;; treesitter.el ends here

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env sh
mbsync Gmail & pid1=$!
wait $pid1
mu index

47
emacs/.mbsyncrc Normal file
View 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
View 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

View File

@@ -6,4 +6,5 @@ saveAsFileExtension=png
savePath=/home/fscotto/Pictures/Screenshots
savePathFixed=true
showStartupLaunchMessage=false
startupLaunch=false
startupLaunch=true
useJpgForClipboard=true

View File

@@ -9,7 +9,6 @@
name = Fabio Scotto di Santolo
email = fabio.scottodisantolo@gmail.com
signingkey = 9DDD59AD62494FB2
editor = nvim
[fetch]
prune = true

View File

@@ -1,3 +1,4 @@
# -*- mode: i3wm-config -*-
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
@@ -9,6 +10,39 @@
# 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
set $rosewater #f5e0dc
set $flamingo #f2cdcd
@@ -48,9 +82,6 @@ client.background $base
# Setting cursor
# 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
# is used in the bar {} block below.
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).
#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
default_border pixel 3
default_floating_border pixel 3
gaps inner 5
gaps outer 5
###############################################################
###############################################################
################## WORKSPACES ##################
###############################################################
###############################################################
# Floating/sticky windows
for_window [class="Pop-up"] 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="Termfloat"] 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
assign [class="Emacs"] 1
assign [class="Firefox"] 2 # FIXME: change class name
assign [class="firefox"] 2
assign [class="Telegram"] 3
assign [class="discord"] 3
focus_follows_mouse no
###############################################################
###############################################################
################## KEYBINDINGS ##################
###############################################################
###############################################################
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# start a terminal
bindsym $mod+Return exec $term
# kill focused window
bindsym $mod+Shift+q kill
# start default menu application
bindsym $mod+d exec "rofi -show drun"
bindsym $mod+Shift+s exec "rofi -show ssh"
bindsym $mod+Shift+w exec "rofi -show window"
bindsym $mod+Shift+f exec "rofi -show filebrowser"
# define mode for launcher
mode "launcher" {
bindsym d exec "rofi -show drun"
bindsym s exec "rofi -show ssh"
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 $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
bindsym $mod+$left focus left
@@ -174,7 +204,7 @@ bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
# bindsym $mod+h split h
bindsym Mod1+h split h
# split in vertical orientation
bindsym $mod+v split v
@@ -197,7 +227,7 @@ bindsym $mod+space focus mode_toggle
bindsym $mod+a focus parent
# focus the child container
#bindsym Mod4+d focus child
bindsym Mod1+d focus child
# move the currently focused window to the 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.
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
bindsym $mod+1 workspace number $ws1
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)
bindsym $mod+Shift+r restart
# 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)
mode "resize" {
@@ -280,38 +297,52 @@ mode "resize" {
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
# bar {
# status_command i3bar
# }
###############################################################
###############################################################
################## AUTOSTART ##################
###############################################################
###############################################################
#######################################################################
# automatically start i3-config-wizard to offer the user to create a
# keysym-based config which used their favorite modifier (alt or windows)
#
# i3-config-wizard will not launch if there already is a config file
# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or
# ~/.i3/config.
#
# Please remove the following exec line:
#######################################################################
# exec i3-config-wizard
# 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_always --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
### 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
exec ~/.config/polybar/launch.sh
exec_always --no-startup-id ~/.config/polybar/launch.sh
### 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
exec $notification
exec_always --no-startup-id $notification
exec --no-startup-id $clipboard
### 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
### Run my preferred editor
# exec $editor
### Run my preferred browser
exec flatpak run $browser

View 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
View 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

View File

@@ -1,6 +1,5 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
@@ -9,179 +8,203 @@
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
; The README contains a lot of information
;
;==========================================================
[global/wm]
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-alt = ${colors.mantle}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
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%
height = 24pt
radius = 6
height = 26pt
; 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}
foreground = ${colors.foreground}
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
underline-size = 2
underline-color = ${color.foreground}
line-size = 3pt
border-size = 4pt
border-color = #00000000
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; 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-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
; The separator will be inserted between the output of each module
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-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
; Modules are added to one of the available blocks
; 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
cursor-scroll = ns-resize
; Value to be used to set the WM_NAME atom
; 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
; wm-restack = generic
; wm-restack = bspwm
; wm-restack = i3
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; override-redirect = true
; This module is not active by default (to enable it, add it to one of the
; modules-* list above).
; Please note that only a single tray can exist at any time. If you launch
; multiple bars with this module, only a single one will show it, the others
; will produce a warning. Which bar gets the module is timing dependent and can
; 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}
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click = pointer
cursor-scroll = ns-resize
[settings]
screenchange-reload = true
pseudo-transparency = true
; vim:ft=dosini

View File

@@ -8,6 +8,6 @@ polybar-msg cmd quit
# Launch barxs
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..."

View 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

View 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

View 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

View 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

View 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

View File

@@ -1,4 +0,0 @@
[options]
background=1e1e2e
overlay_text_color=cdd6f4
overlay_background_color=11111b

View File

@@ -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>

View File

@@ -1,8 +0,0 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data

View File

@@ -1,15 +0,0 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
}
}

View File

@@ -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.

View File

@@ -1,3 +0,0 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
require("user.utils")

View File

@@ -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" }
}

View File

@@ -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
}

View File

@@ -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,
})

View File

@@ -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" })

View File

@@ -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()

View File

@@ -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

View File

@@ -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)

View File

@@ -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,
}

View File

@@ -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,
},
}

View File

@@ -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,
}

View File

@@ -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,
},
}

View File

@@ -1,3 +0,0 @@
return {
{ "windwp/nvim-spectre", enabled = false },
}

View File

@@ -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,
}

View File

@@ -1,7 +0,0 @@
return {
"m4xshen/hardtime.nvim",
lazy = false,
dependencies = { "MunifTanjim/nui.nvim" },
enabled = false,
opts = {},
}

View File

@@ -1,5 +0,0 @@
return {
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
}

View File

@@ -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,
}

View File

@@ -1,4 +0,0 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
}

View File

@@ -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 = {},
}

View File

@@ -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",
},
},
}

View File

@@ -1,4 +0,0 @@
return {
"nvim-neo-tree/neo-tree.nvim",
enabled = false,
}

View File

@@ -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,
}

View File

@@ -1,5 +0,0 @@
return {
"nvim-telescope/telescope.nvim",
tag = "0.1.8",
dependencies = { "nvim-lua/plenary.nvim" },
}

View File

@@ -1,8 +0,0 @@
return {
"mikavilpas/yazi.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
keys = {
{ "<leader>e", "<cmd>Yazi<cr>", desc = "Open Yazi" },
},
}

View File

@@ -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" &

View File

@@ -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

View File

@@ -1,4 +0,0 @@
indent_type = "Spaces"
indent_width = 2
column_width = 120

Binary file not shown.

View File

@@ -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"
#
###############################################################################

View File

@@ -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

View File

@@ -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"

View File

@@ -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

Some files were not shown because too many files have changed in this diff Show More