48 Commits

Author SHA1 Message Date
Fabio Scotto di Santolo
80e6cc23c3 Added aliases for use SSH Windows implementation 2025-12-16 17:10:12 +01:00
Fabio Scotto di Santolo
aa1364ef29 Configure LSP for Shell Development 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
32bf8c73a8 Configure LSP for C development 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
39000ec304 Improved init performance and added configuration for LSP and DAP 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
a3de598466 Added package Elfeed Org in the Emacs custom config 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
4915a1fce2 Fix Starship prompt 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
58773ba594 Add LSP, Flycheck and others in the Emacs configuration 2025-12-12 09:20:25 +01:00
Fabio Scotto di Santolo
7b0d1bf03a Change Emacs configuration 2025-12-12 09:20:25 +01:00
Fabio Scotto di Santolo
fc1478567e Fix path loading in .profile 2025-12-02 09:58:42 +01:00
Fabio Scotto di Santolo
44a425d2df Fix Mise commit 2025-12-02 09:52:04 +01:00
Fabio Scotto di Santolo
16ca912724 Fix Mise loading 2025-12-02 09:49:07 +01:00
Fabio Scotto di Santolo
babbceb247 Align Sway and i3 configurations 2025-12-01 12:09:40 +01:00
Fabio Scotto di Santolo
f4d92f747e Added Wayland environment with Sway 2025-12-01 12:09:40 +01:00
Fabio Scotto di Santolo
ca92392993 Change Rofi theme 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
8a6e022bd6 Add Youtube RSS feeds 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
366ea24fb5 Fix SMTP client config 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
385d306017 Update mu4e configuration
- Added ProtonMail account
- Added iCloud Mail account
- Remove Gmail account
2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
dd7498294a Added Emacs Client alias 2025-10-30 16:20:38 +01:00
Fabio Scotto di Santolo
cd1a6c1252 Fix .gitconfig for WSL 2025-10-30 15:41:34 +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
171 changed files with 2365 additions and 11482 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): > Example usage (from the repository root):
> >
> ```bash > ```bash
> stow nvim > stow bash
> stow zsh > stow i3
> stow doom
> ``` > ```
### 🧩 Included Tools & Configurations ### 🧩 Included Tools & Configurations
@@ -20,34 +21,31 @@ Each directory in this repository corresponds to a specific application or tool,
This repository contains my configuration files for the following tools: This repository contains my configuration files for the following tools:
- **Shells & Prompt** - **Shells & Prompt**
- `zsh` + `starship` - `bash` (Oh My Bash)
- `starship`
- **Terminal Emulators & Multiplexer** - **Terminal Emulators & Multiplexer**
- `alacritty` - `alacritty`
- `foot`
- `tmux` - `tmux`
- **Editors & CLI Tools** - **Editors & CLI Tools**
- `neovim` (with LazyVim) - `doom` (Doom Emacs config)
- `doom emacs` - `emacs` (Custom config)
- `git` - `git`
- `lazygit`
- **X11 Environment** - **X11 Environment**
- `rofi` (launcher) - `i3` (Window Manager)
- `polybar` (status bar)
- `dunst` (notification daemon)
- `i3` (window manager)
- `picom` (X11 compositor) - `picom` (X11 compositor)
- **Wayland Environment** - `polybar` (status bar)
- `fuzzel` (launcher) - `rofi` (launcher)
- `waybar` (status bar) - `dunst` (notification daemon)
- **Wayland Environment**
- `sway` (Window Manager)
- `waybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon) - `dunst` (notification daemon)
- `sway` (window manager)
- **Utilities** - **Utilities**
- `fastfetch` - `fastfetch`
- `zoxide` - `zoxide`
- `mpv`
- `yt-dlp` - `yt-dlp`
- `flameshot` - `flameshot`
- `newsboat`
--- ---

View File

@@ -9,7 +9,7 @@ export OSH='/home/fscotto/.oh-my-bash'
# Set name of the theme to load. Optionally, if you set this to "random" # Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-bash is loaded. # it'll load a random theme each time that oh-my-bash is loaded.
OSH_THEME="robbyrussell" # OSH_THEME="robbyrussell"
# If you set OSH_THEME to "random", you can ignore themes you don't like. # If you set OSH_THEME to "random", you can ignore themes you don't like.
# OMB_THEME_RANDOM_IGNORED=("powerbash10k" "wanelo") # OMB_THEME_RANDOM_IGNORED=("powerbash10k" "wanelo")
@@ -164,8 +164,30 @@ source "$OSH"/oh-my-bash.sh
# Set personal aliases, overriding those provided by oh-my-bash libs, # Set personal aliases, overriding those provided by oh-my-bash libs,
# plugins, and themes. Aliases can be placed here, though oh-my-bash # plugins, and themes. Aliases can be placed here, though oh-my-bash
# users are encouraged to define aliases within the OSH_CUSTOM folder. # users are encouraged to define aliases within the OSH_CUSTOM folder.
# For a full list of active aliases, run `alias`. # For a full list of active aliases, run `
#
# Example aliases alias ls='ls --color=auto --group-directories-first'
# alias bashconfig="mate ~/.bashrc"
# alias ohmybash="mate ~/.oh-my-bash" # Replace grep command tool
alias grep='grep --color=auto'
alias egrep='grep -E'
alias fgrep='grep -F'
# Other aliases
alias paths='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
alias userlist="cut -d: -f1 /etc/passwd | sort"
alias ip='ip -color'
alias stow='stow -d $DOTFILES '
alias em='emacsclient -t'
alias ssh='ssh.exe'
alias ssh-add='ssh-add.exe'
# Starship prompt
if command -v starship > /dev/null 2>&1; then
eval "$(starship init bash)"
fi
# Load Mise en dev
if command -v mise > /dev/null 2>&1; then
eval "$(mise activate 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 # XDG variables
export XDG_CONFIG_HOME=${HOME}/.config export XDG_CONFIG_HOME=${HOME}/.config
export XDG_DATA_HOME=${HOME}/.local/share export XDG_DATA_HOME=${HOME}/.local/share
@@ -21,33 +9,48 @@ export GTK2_RC_FILES=${XDG_CONFIG_HOME}/gtk-2.0/gtkrc-2.0
# Enable QT apps to have gtk theme # Enable QT apps to have gtk theme
export QT_QPA_PLATFORMTHEME=qt5ct export QT_QPA_PLATFORMTHEME=qt5ct
export QT_STYLE_OVERRIDE=kvantum
# Make Qt apps honour DPI settings. # Make Qt apps honour DPI settings.
export QT_AUTO_SCREEN_SCALE_FACTOR=1 export QT_AUTO_SCREEN_SCALE_FACTOR=1
export ZSH_HOME="$HOME/.zsh"
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
export EDITOR=nvim export EDITOR=nano
export HELPDIR=/usr/share/zsh/"${ZSH_VERSION}"/help
# SSH socket # SSH socket
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh" export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
export FZF_DEFAULT_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git" # export FZF_DEFAULT_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
export FZF_CTRL_T_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git" # export FZF_CTRL_T_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
export FZF_ALT_C_COMMAND="fd --hidden --type directory --strip-cwd-prefix --exclude .git" # export FZF_ALT_C_COMMAND="fdfind --hidden --type directory --strip-cwd-prefix --exclude .git"
# Export Catppuccin Mocha theme for FZF # # Export Catppuccin Mocha theme for FZF
export FZF_DEFAULT_OPTS=" \ # export FZF_DEFAULT_OPTS=" \
--height 60% --layout=reverse --border \ # --height 60% --layout=reverse --border \
--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \ # --color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \ # --color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \ # --color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
--color=selected-bg:#45475A \ # --color=selected-bg:#45475A \
--color=border:#313244,label:#CDD6F4" # --color=border:#313244,label:#CDD6F4"
export FZF_TMUX_OPTS=" -p90%,70%" # export FZF_TMUX_OPTS=" -p90%,70%"
export VIRTUAL_ENV_DISABLE_PROMPT=1 export VIRTUAL_ENV_DISABLE_PROMPT=1
source "$HOME/.profile.d/mise.sh" # Export Golang enviroments
source "$HOME/.profile.d/golang.sh" export GOPATH="$HOME/.local/share/Go"
source "$HOME/.profile.d/java.sh" export GOBIN="$GOPATH/bin"
appendpath() {
local location="${1}"
case ":$PATH:" in
*":$location:"*) ;;
*) export PATH="$PATH:$location" ;;
esac
}
appendpath "$HOME/.local/bin"
appendpath "$GOBIN"
appendpath "$HOME/.cargo/bin"
unset appendpath
source "$HOME/.profile.d/homebrew.sh"
source "$HOME/.profile.d/mise.sh"
source "$HOME/.profile.d/java.sh"

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

5
bash/.profile.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

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if command -v java > /dev/null 2>&1; then if command -v java > /dev/null 2>&1; then
export JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))" JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))"
export JAVA_HOME
fi fi

View File

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

View File

@@ -21,18 +21,21 @@
;; See 'C-h v doom-font' for documentation and more examples of what they ;; See 'C-h v doom-font' for documentation and more examples of what they
;; accept. For example: ;; accept. For example:
;; ;;
(setq doom-font (font-spec :family "0xProto Nerd Font" :size 18 :weight 'regular)) ;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
;;
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them ;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to ;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
;; refresh your font settings. If Emacs still can't find your font, it likely ;; refresh your font settings. If Emacs still can't find your font, it likely
;; wasn't installed correctly. Font issues are rarely Doom issues! ;; wasn't installed correctly. Font issues are rarely Doom issues!
(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 16 :weight 'regular)
doom-big-font (font-spec :family "FiraCode Nerd Font" :size 18 :weight 'bold)
doom-variable-pitch-font (font-spec :family "Noto Sans" :size 16 :weight 'regular))
;; There are two ways to load a theme. Both assume the theme is installed and ;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the ;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default: ;; `load-theme' function. This is the default:
(setq doom-theme 'catppuccin) (setq doom-theme 'catppuccin)
(setq catppuccin-flavor 'mocha) ;; or 'latte, 'macchiato, or 'mocha
;; This determines the style of line numbers in effect. If set to `nil', line ;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'. ;; numbers are disabled. For relative line numbers, set this to `relative'.
@@ -40,8 +43,7 @@
;; If you use `org' and don't want your org files in the default location below, ;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads! ;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/Documents") (setq org-directory "~/Remotes/pCloud/Org")
;; Whenever you reconfigure a package, make sure to wrap your config in an ;; Whenever you reconfigure a package, make sure to wrap your config in an
;; `after!' block, otherwise Doom's defaults may override your settings. E.g. ;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
@@ -74,3 +76,81 @@
;; ;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how ;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented. ;; they are implemented.
;; Maximize each Emacs frames at startup
(add-to-list 'default-frame-alist '(fullscreen . maximized))
(after! mu4e
;; This is set to 't' to avoid mail syncing issues when using mbsync
(setq mu4e-change-filenames-when-moving t)
;; Refresh mail using isync every 10 minutes
(setq mu4e-update-interval (* 10 60))
(setq mu4e-get-mail-command "~/.config/doom/scripts/email_sync.sh")
(setq mu4e-maildir "~/Maildir")
;; Configure email accounts
(setq mu4e-contexts
(list
;; Protonmail Account
(make-mu4e-context
:name "Protonmail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
;; iCloud Account
(make-mu4e-context
:name "iCloud Mail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
(mu4e-refile-folder . "/iCloudAccount/INBOX")
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
;; Configure SMTP client for send emails
(setq sendmail-program "/usr/bin/msmtp"
send-mail-function 'sendmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function 'message-send-mail-with-sendmail))
;; Configure Elfeed
(after! elfeed
(setq rmh-elfeed-org-files '("~/.config/doom/elfeed.org"))
(setq elfeed-db-directory "~/.elfeed")
(setq elfeed-enclosure-default-dir "~/Downloads/")
(setq elfeed-sort-order 'descending)
(setq elfeed-search-filter "6-months-ago +unread")
;; Key bindings
(map! :map elfeed-search-mode-map
:n "d" #'elfeed-download-current-entry
:n "O" #'elfeed-search-browse-url)
;; Update hourly
(run-at-time nil (* 60 60) #'elfeed-update))
(after! elfeed-tube
(elfeed-tube-setup))
;; PDF config
(after! pdf-tools
:defer t
:commands (pdf-loader-install)
:mode "\\.pdf\\'"
:init (pdf-loader-install)
:config (add-to-list 'revert-without-query ".pdf"))

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 :completion
company ; the ultimate code completion backend company ; the ultimate code completion backend
(corfu +orderless) ; complete with cap(f), cape and a flying feather! ;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;helm ; the *other* search engine for love and life ;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine... ;;ido ; the other *other* search engine...
;;ivy ; a search engine for love and life ivy ; a search engine for love and life
vertico ; the search engine of the future ;;vertico ; the search engine of the future
:ui :ui
;;deft ; notational velocity for Emacs ;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs doom-dashboard ; a nifty splash screen for Emacs
;;doom-quit ; DOOM quit-message prompts when you quit Emacs ;;doom-quit ; DOOM quit-message prompts when you quit Emacs
;;(emoji +unicode) ; 🙂 (emoji +unicode) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;indent-guides ; highlighted indent columns ;;indent-guides ; highlighted indent columns
ligatures ; ligatures and symbols to make your code pretty again ligatures ; ligatures and symbols to make your code pretty again
@@ -54,37 +54,39 @@
;;zen ; distraction-free coding or writing ;;zen ; distraction-free coding or writing
:editor :editor
(evil +everywhere); come to the dark side, we have cookies ;;(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness ;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys ;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim ;;lispy ; vim for lisp, for people who don't like vim
;;multiple-cursors ; editing in many places at once multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent ;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of ;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates ;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to snippets ; my elves. They type so I don't have to
(whitespace +guess +trim) ; a butler for your whitespace
;;word-wrap ; soft wrapping with language-aware indent ;;word-wrap ; soft wrapping with language-aware indent
:emacs :emacs
dired ; making dired pretty [functional] dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent electric ; smarter, keyword-based electric-indent
;;eww ; the internet is gross eww ; the internet is gross
;;ibuffer ; interactive buffer management ibuffer ; interactive buffer management
tramp ; remote files at your arthritic fingertips
undo ; persistent, smarter undo for your inevitable mistakes undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree vc ; version-control and Emacs, sitting in a tree
:term :term
;;eshell ; the elisp shell that works everywhere eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs ;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs ;;term ; basic terminal emulator for Emacs
vterm ; the best terminal emulation in Emacs vterm ; the best terminal emulation in Emacs
:checkers :checkers
syntax ; tasing you for every semicolon you forget syntax ; tasing you for every semicolon you forget
;;(spell +flyspell) ; tasing you for misspelling mispelling (spell +flyspell) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make grammar ; tasing grammar mistake every you make
:tools :tools
ansible ansible
@@ -98,10 +100,10 @@
(eval +overlay) ; run code, run (also, repls) (eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation lookup ; navigate your code and its documentation
;;llm ; when I said you needed friends, I didn't mean... ;;llm ; when I said you needed friends, I didn't mean...
lsp ; M-x vscode ;;(lsp +eglot) ; M-x vscode
magit ; a git porcelain for Emacs magit ; a git porcelain for Emacs
make ; run make tasks from Emacs make ; run make tasks from Emacs
;;pass ; password manager for nerds pass ; password manager for nerds
pdf ; pdf enhancements pdf ; pdf enhancements
;;terraform ; infrastructure as code ;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux ;;tmux ; an API for interacting with tmux
@@ -113,10 +115,11 @@
;;tty ; improve the terminal Emacs experience ;;tty ; improve the terminal Emacs experience
:lang :lang
;;ada ; In strong typing we (blindly) trust
;;agda ; types of types of types of types... ;;agda ; types of types of types of types...
;;beancount ; mind the GAAP ;;beancount ; mind the GAAP
(cc +lsp) ; C > C++ == 1 (cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all ;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs ;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c ;;crystal ; ruby at the speed of c
@@ -146,10 +149,10 @@
;;javascript ; all(hope(abandon(ye(who(enter(here)))))) ;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB ;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script) ;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun latex ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove ;;lean ; for folks with too much to prove
;;ledger ; be audit you can be ;;ledger ; be audit you can be
;;lua ; one-based indices? one-based indices lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c ;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!" ;;nix ; I hereby declare "nix geht mehr!"
@@ -168,7 +171,7 @@
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() ;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good ;;scala ; java, but good
;;(scheme +guile) ; a fully conniving family of lisps (scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml ;;sml
;;solidity ; do you need a blockchain? No. ;;solidity ; do you need a blockchain? No.
@@ -178,18 +181,21 @@
yaml ; JSON, but readable yaml ; JSON, but readable
zig ; C, but simpler zig ; C, but simpler
:tools
lsp ; lsp mode
:email :email
;;(mu4e +org +gmail) (mu4e +org +gmail)
;;notmuch ;;notmuch
;;(wanderlust +gmail) ;;(wanderlust +gmail)
:app :app
;;calendar calendar
;;emms emms
;;everywhere ; *leave* Emacs!? You must be joking everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize ;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader (rss +org) ; emacs as an RSS reader
:config :config
;; literate ;;literate
(default +bindings +smartparens)) (default +bindings +smartparens))

View File

@@ -1,8 +1,13 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el ;;; $DOOMDIR/packages.el
;; To install a package with Doom you must declare them here and run 'doom sync' ;; To install a package:
;; on the command line, then restart Emacs for the changes to take effect -- or ;;
;; 1. Declare them here in a `package!' statement,
;; 2. Run 'doom sync' in the shell,
;; 3. Restart Emacs.
;;
;; Use 'C-h f package\!' to look up documentation for the `package!' macro.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
@@ -49,4 +54,6 @@
;; (unpin! t) ;; (unpin! t)
(package! catppuccin-theme) (package! catppuccin-theme)
(package! go-mode) (package! org-caldav)
(package! elfeed-tube)
(package! elfeed-tube-mpv)

View File

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

View File

@@ -0,0 +1 @@
#s(hash-table test equal data ("/var/home/fscotto/Projects/toyforth/toyforth.c" ((:point 1061))))

58
emacs/.emacs.d/.gitignore vendored Executable file
View File

@@ -0,0 +1,58 @@
# 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/
# 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
# directory configuration
.dir-locals.el
# network security
/network-security.data
# End of https://www.toptal.com/developers/gitignore/api/emacs

View File

@@ -0,0 +1 @@
#s(lsp-session ("/var/home/fscotto/.dotfiles/emacs/.emacs.d/scripts" "/var/home/fscotto/Projects/toyforth") nil #s(hash-table test equal) #s(hash-table test equal) #s(hash-table test equal))

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:

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

@@ -0,0 +1,760 @@
;; Initial greeting for debugging
(message "Welcome to Emacs")
(message "Loading user configuration...")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LOOK AND FEEL ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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")
;; --- 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)
;; ---------------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; EDITOR OPTIONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq standard-indent 4)
(setq tab-stop-list nil)
(setq indent-tabs-mode nil)
;; 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)
;; Setting variables
(setq vc-follow-symlinks 't)
(prefer-coding-system 'utf-8-unix)
(setq custom-file (null-device))
;;;;;;;;;;;;;;;;;;;;
;; USER FUNCTIONS ;;
;;;;;;;;;;;;;;;;;;;;
;;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-dashboard ()
"Open a project dashboard: root + Magit + LSP."
(interactive)
(let ((root (fscotto/project-root)))
(dired root)
(magit-status root)
(lsp)))
(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))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PACKAGES ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialize package system via use-package
;; (package-initialize)
(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/"))))
;; Status line like Doom Emacs
(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))
;; Help to remember or discover keybindings
(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))
;; ============================================================================
;; Doom-style which-key hierarchy for fscotto
;; ============================================================================
(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 D" "Project Dashboard"
"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"))
;; Configuration for mu4e, an interface for mu email index, running inside Emacs
(use-package mu4e
:ensure nil
;; :load-path "/usr/share/emacs/site-lisp/mu4e/"
:defer 20 ; Wait until 20 seconds after startup
:bind (:map global-map ("C-c o m" . mu4e))
: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))
;; Configure elfeed for RSS feed
(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")
:bind
("C-c o f" . fscotto/elfeed-load-db-and-open)
(:map elfeed-search-mode-map
("w" . elfeed-search-yank)
("R" . elfeed-update)
("q" . elfeed-kill-buffer))
(:map elfeed-show-mode-map
("S" . elfeed-show-new-live-search) ; moved to free up 's'
("c" . (lambda () (interactive) (org-capture nil "capture")))
("e" . email-elfeed-entry)
("f" . elfeed-show-fetch-full-text)
("w" . elfeed-show-yank))
: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))
;; Terminal
(use-package vterm
:ensure t
:bind (:map global-map
("C-c o T" . vterm)
("C-c C-t" . vterm-copy-mode)))
;; FIXME PDF viewer with annotations
;; (use-package pdf-tools
;; :ensure t
;; :config
;; (pdf-tools-install))
;; EPub viewer
(use-package nov
:ensure t
:mode ("\\.epub\\'" . nov-mode))
(use-package visual-fill-column
:ensure t)
;; Git plugin
(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))))
;; Legacy alias (keep muscle memory)
(global-set-key (kbd "C-c v g") #'magit-status)
(global-set-key (kbd "C-c g") #'fscotto/magit-dispatch)
;; Git leader key (Doom-style)
;; (with-eval-after-load 'magit
;; (define-key global-map (kbd "C-c g") 'magit-dispatch))
;; 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")))
(keymap-set hl-todo-mode-map "C-t p" #'hl-todo-previous)
(keymap-set hl-todo-mode-map "C-t n" #'hl-todo-next)
(keymap-set hl-todo-mode-map "C-t o" #'hl-todo-occur)
(keymap-set hl-todo-mode-map "C-t i" #'hl-todo-insert)
;; Highlight for i3 config file
(use-package i3wm-config-mode
:ensure t)
(use-package ivy
:ensure t
:config
(ivy-mode 1))
(use-package consult
:ensure t
:defer t)
(use-package ibuffer
:ensure t
:bind (:map global-map ("C-x C-b" . ibuffer)))
(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)))
;; ============================================================================
;; Projectile - Project management
;; ============================================================================
(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))
;; Projectile keybindings (Doom-style)
(with-eval-after-load 'projectile
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map))
(with-eval-after-load 'projectile
(define-key projectile-command-map (kbd "v") #'fscotto/project-vterm))
(with-eval-after-load 'projectile
(define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status))
(global-set-key (kbd "C-c p D") #'fscotto/project-dashboard)
;; Add autocomplete feature to Emacs
(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))
(with-eval-after-load 'flycheck
(add-hook 'bash-ts-mode-hook 'flycheck-mode))
(use-package treesit
:ensure nil
:config
(setq treesit-font-lock-level 4)
(setq treesit-auto-install 'prompt)
(setq major-mode-remap-alist
'((c-mode . c-ts-mode)
(c++-mode . c++-ts-mode)
(python-mode . python-ts-mode)
(sh-mode . bash-ts-mode)))
(setq treesit-language-source-alist
'((c "https://github.com/tree-sitter/tree-sitter-c")
(cpp "https://github.com/tree-sitter/tree-sitter-cpp")
(python "https://github.com/tree-sitter/tree-sitter-python")
(bash "https://github.com/tree-sitter/tree-sitter-bash")
(go "https://github.com/tree-sitter/tree-sitter-go"))))
(use-package lsp-mode
:ensure t
:commands (lsp lsp-deferred)
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l")
:hook
((c-mode
c-ts-mode
c++-mode
c++-ts-mode
python-mode
python-ts-mode
go-mode
go-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)
;; Clangd configuration
(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")))
(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))
(with-eval-after-load 'lsp-mode
;; Attach bash-language-server when open a shell scripts
(add-hook 'sh-mode-hook #'lsp)
;; Symbols
(global-set-key (kbd "C-c l s") #'consult-lsp-symbols)
;; Diagnostics
(global-set-key (kbd "C-c l e") #'consult-lsp-diagnostics)
;; Navigation (LSP core)
(global-set-key (kbd "C-c l d") #'lsp-find-definition)
(global-set-key (kbd "C-c l D") #'lsp-find-type-definition)
(global-set-key (kbd "C-c l i") #'lsp-find-implementation)
;; Actions
(global-set-key (kbd "C-c l a") #'lsp-execute-code-action)
(global-set-key (kbd "C-c l r") #'lsp-rename)
(global-set-key (kbd "C-c l f") #'lsp-format-buffer)
;; Control
(global-set-key (kbd "C-c l R") #'lsp-restart-workspace))
;;;;;;;;;;;;;;;;;;;;;;
;; Enable debuggers ;;
;;;;;;;;;;;;;;;;;;;;;;
(use-package dap-mode
:ensure t
:after lsp-mode
:commands dap-debug
:init
;; Debug prefix
(setq dap-auto-configure-features '(sessions locals controls tooltip))
:config
(dap-mode 1)
(dap-ui-mode 1)
(dap-tooltip-mode 1)
;; Auto show breakpoints + REPL
(setq dap-ui-buffer-configurations
'((dap-ui-repl . ((side . right) (slot . 1) (window-width . 0.33)))
(dap-ui-locals . ((side . right) (slot . 2) (window-width . 0.33)))
(dap-ui-breakpoints . ((side . left) (slot . 1) (window-width . 0.20))))))
;; For C/C++
(require 'dap-gdb-lldb)
(setq dap-gdb-lldb-debug-program '("gdb"))
;; For Go
(require 'dap-go)
;; For Python
(require 'dap-python)
(setq dap-python-debugger 'debugpy)
(with-eval-after-load 'dap-mode
(global-set-key (kbd "C-c d d") #'dap-debug)
(global-set-key (kbd "C-c d b") #'dap-breakpoint-toggle)
(global-set-key (kbd "C-c d c") #'dap-continue)
(global-set-key (kbd "C-c d n") #'dap-next)
(global-set-key (kbd "C-c d i") #'dap-step-in)
(global-set-key (kbd "C-c d o") #'dap-step-out)
(global-set-key (kbd "C-c d r") #'dap-restart-frame)
(global-set-key (kbd "C-c d q") #'dap-disconnect))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;; Formatters ;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GOTCHA review this region
(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)
(add-hook 'c-ts-mode-hook #'fscotto/disable-c-formatting)
(add-hook 'c-mode-hook #'fscotto/disable-c-formatting)
(message "...user configuration loaded")

View File

@@ -0,0 +1 @@
("~/.dotfiles/" "~/Projects/toyforth/" "~/Projects/workstation/" "~/Projects/system-programming/" "~/Projects/pymorg/" "~/Projects/operating-systems/" "~/Projects/fileserver/" "~/Projects/exkernel/" "~/Projects/docker-compose/")

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 savePath=/home/fscotto/Pictures/Screenshots
savePathFixed=true savePathFixed=true
showStartupLaunchMessage=false showStartupLaunchMessage=false
startupLaunch=false startupLaunch=true
useJpgForClipboard=true

View File

@@ -4,12 +4,12 @@
[core] [core]
excludesfile = ~/.gitignore_global excludesfile = ~/.gitignore_global
pager = delta pager = delta
sshcommand = ssh.exe
[user] [user]
name = Fabio Scotto di Santolo name = Fabio Scotto di Santolo
email = fabio.scottodisantolo@gmail.com email = fabio.scottodisantolo@gmail.com
signingkey = 9DDD59AD62494FB2 signingkey = 9DDD59AD62494FB2
editor = nvim
[fetch] [fetch]
prune = true prune = true
@@ -25,13 +25,6 @@
[merge] [merge]
conflictstyle = diff3 conflictstyle = diff3
tool = meld
[mergetool]
prompt = false
[diff]
tool = meld
[color] [color]
ui = always ui = always
@@ -82,3 +75,6 @@
colorMoved = default colorMoved = default
tabs = 4 tabs = 4
side-by-side = true side-by-side = true
[credential]
helper = manager-core

View File

@@ -1,3 +1,4 @@
# -*- mode: i3wm-config -*-
# i3 config file (v4) # i3 config file (v4)
# #
# Please see https://i3wm.org/docs/userguide.html for a complete reference! # Please see https://i3wm.org/docs/userguide.html for a complete reference!
@@ -9,6 +10,39 @@
# layout, use the i3-config-wizard # layout, use the i3-config-wizard
# #
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $left h
set $down j
set $up k
set $right l
set $term 'alacritty'
set $editor 'emacs'
set $filemanager 'nemo'
set $notification 'dunst'
set $browser 'org.mozilla.firefox'
set $clipboard 'diodon'
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
###############################################################
###############################################################
################## LOOK AND FEEL ##################
###############################################################
###############################################################
# Import Catppuccin theme defined colors # Import Catppuccin theme defined colors
set $rosewater #f5e0dc set $rosewater #f5e0dc
set $flamingo #f2cdcd set $flamingo #f2cdcd
@@ -48,9 +82,6 @@ client.background $base
# Setting cursor # Setting cursor
# seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25 # seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font # Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below. # is used in the bar {} block below.
font pango:Noto Sans Regular 10 font pango:Noto Sans Regular 10
@@ -59,58 +90,18 @@ font pango:Noto Sans Regular 10
# text rendering and scalability on retina/hidpi displays (thanks to pango). # text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8 #font pango:DejaVu Sans Mono 8
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Polkit Authentication agent
exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# bindsym XF86MonBrightnessUp exec --no-startup-id swayosd-client --brightness +5
# bindsym XF86MonBrightnessDown exec --no-startup-id swayosd-client --brightness -5
bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $left h
set $down j
set $up k
set $right l
# use Mouse+Mod4 to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
set $term 'alacritty'
set $browser 'firefox'
set $editor 'emacs'
# Windows configuration # Windows configuration
default_border pixel 3 default_border pixel 3
default_floating_border pixel 3 default_floating_border pixel 3
gaps inner 5 gaps inner 5
gaps outer 5 gaps outer 5
###############################################################
###############################################################
################## WORKSPACES ##################
###############################################################
###############################################################
# Floating/sticky windows # Floating/sticky windows
for_window [class="Pop-up"] floating enable for_window [class="Pop-up"] floating enable
for_window [class="Bubble"] floating enable for_window [class="Bubble"] floating enable
@@ -126,28 +117,67 @@ for_window [class="Webconsole"] floating enable
for_window [class="Authy"] floating enable for_window [class="Authy"] floating enable
for_window [class="Termfloat"] floating enable, resize set 960 540 for_window [class="Termfloat"] floating enable, resize set 960 540
for_window [class="Mpv"] floating enable, resize set 960 540 for_window [class="Mpv"] floating enable, resize set 960 540
for_window [class="Spotify"] floating enable, resize set 1280 1024, move scratchpad
# Workspaces # Workspaces
assign [class="Emacs"] 1 assign [class="Emacs"] 1
assign [class="Firefox"] 2 # FIXME: change class name assign [class="firefox"] 2
assign [class="Telegram"] 3 assign [class="Telegram"] 3
assign [class="discord"] 3
focus_follows_mouse no focus_follows_mouse no
###############################################################
###############################################################
################## KEYBINDINGS ##################
###############################################################
###############################################################
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# start a terminal # start a terminal
bindsym $mod+Return exec $term bindsym $mod+Return exec $term
# kill focused window # kill focused window
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
# start default menu application # define mode for launcher
bindsym $mod+d exec "rofi -show drun" mode "launcher" {
bindsym $mod+Shift+s exec "rofi -show ssh" bindsym d exec "rofi -show drun"
bindsym $mod+Shift+w exec "rofi -show window" bindsym s exec "rofi -show ssh"
bindsym $mod+Shift+f exec "rofi -show filebrowser" bindsym w exec "rofi -show window"
bindsym f exec "rofi -show filebrowser"
bindsym q exec ~/.config/i3/scripts/poweroff.sh
bindsym $mod+Shift+b exec $browser bindsym $mod+d mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+d mode "launcher"
bindsym $mod+Shift+f exec "nemo"
bindsym $mod+Shift+b exec "flatpak run org.mozilla.firefox"
bindsym $mod+Shift+t exec "flatpak run org.telegram.desktop"
bindsym $mod+Shift+e exec $editor
bindsym Print exec flameshot gui bindsym Print exec flameshot gui
# bindsym $mod+Shift+v exec xfce4-clipman-history bindsym $mod+Shift+v exec --no-startup-id $clipboard
# Use pactl to adjust volume in PulseAudio.
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
# use Mouse+Mod4 to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# change focus # change focus
bindsym $mod+$left focus left bindsym $mod+$left focus left
@@ -174,7 +204,7 @@ bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right bindsym $mod+Shift+Right move right
# split in horizontal orientation # split in horizontal orientation
# bindsym $mod+h split h bindsym Mod1+h split h
# split in vertical orientation # split in vertical orientation
bindsym $mod+v split v bindsym $mod+v split v
@@ -197,7 +227,7 @@ bindsym $mod+space focus mode_toggle
bindsym $mod+a focus parent bindsym $mod+a focus parent
# focus the child container # focus the child container
#bindsym Mod4+d focus child bindsym Mod1+d focus child
# move the currently focused window to the scratchpad # move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad bindsym $mod+Shift+minus move scratchpad
@@ -206,19 +236,6 @@ bindsym $mod+Shift+minus move scratchpad
# If there are multiple scratchpad windows, this command cycles through them. # If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show bindsym $mod+minus scratchpad show
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace # switch to workspace
bindsym $mod+1 workspace number $ws1 bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2 bindsym $mod+2 workspace number $ws2
@@ -251,7 +268,7 @@ bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session) # exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" #bindsym $mod+Shift+e exec ~/.config/i3/scripts/poweroff.sh
# resize window (you can also use the mouse for that) # resize window (you can also use the mouse for that)
mode "resize" { mode "resize" {
@@ -280,38 +297,52 @@ mode "resize" {
bindsym $mod+r mode "resize" bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status ###############################################################
# finds out, if available) ###############################################################
# bar { ################## AUTOSTART ##################
# status_command i3bar ###############################################################
# } ###############################################################
####################################################################### # Start XDG autostart .desktop files using dex. See also
# automatically start i3-config-wizard to offer the user to create a # https://wiki.archlinux.org/index.php/XDG_Autostart
# keysym-based config which used their favorite modifier (alt or windows) exec --no-startup-id dex --autostart --environment i3
#
# i3-config-wizard will not launch if there already is a config file # The combination of xss-lock, nm-applet and pactl is a popular choice, so
# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or # they are included here as an example. Modify as you see fit.
# ~/.i3/config.
# # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# Please remove the following exec line: # screen before suspend. Use loginctl lock-session to lock your screen.
####################################################################### exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# exec i3-config-wizard
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Polkit Authentication agent
exec_always --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
### Apply wallpaper ### Apply wallpaper
exec feh --bg-scale ~/.config/i3/wallpaper.jpg exec_always --no-startup-id feh --bg-scale ~/.config/i3/wallpaper.jpg
### Run status bar ### Run status bar
exec ~/.config/polybar/launch.sh exec_always --no-startup-id ~/.config/polybar/launch.sh
### Run in background X11 compositor ### Run in background X11 compositor
exec picom --config ~/.config/picom/picom.conf exec_always --no-startup-id picom --config ~/.config/picom/picom.conf
### Run in background notification daemon ### Run in background notification daemon
exec $notification exec_always --no-startup-id $notification
exec --no-startup-id $clipboard
### Enable autolock ### Enable autolock
exec xautolock -time 5 -locker ~/.config/i3/scripts/lockscreen.sh -detectsleep exec_always xautolock -time 5 -locker ~/.config/i3/scripts/lockscreen.sh -detectsleep
### Screenshot tool ### Run screenshot tool
exec flameshot exec flameshot
### Run my preferred editor
# exec $editor
### Run my preferred browser
exec flatpak run $browser

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 ; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar ; go to https://github.com/polybar/polybar
; ;
; The README contains a lot of information ; The README contains a lot of information
; ;
;========================================================== ;==========================================================
[global/wm] [global/wm]
include-file = $HOME/.config/polybar/themes/mocha.ini include-file = $HOME/.config/polybar/themes/mocha.ini
include-file = $HOME/.config/polybar/modules.ini
margin-top = 0
margin-bottom = 0
[colors] ; FIXME remove radius on left and right borders
[bar/mainbar]
; monitor = eDP-1 ; xrandr --query | grep " connected"
; monitor = ${env:POLYBAR_MONITOR:}
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = false
; Prefer fixed center position for the `modules-center` block
;
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${colors.base} background = ${colors.base}
background-alt = ${colors.mantle}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${colors.text} foreground = ${colors.text}
primary = ${colors.blue}
secondary = ${colors.sapphire}
alert = ${colors.red}
disabled = ${colors.crust}
[bar/mybar] ; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
; the percentage can optionally be extended with a pixel offset like so:
width = 100% width = 100%
height = 24pt height = 26pt
radius = 6
; dpi = 96 ; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0
radius-bottom = 0.0
background = ${colors.background} ; Under-/overline pixel size and argb color
foreground = ${colors.foreground} ; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
underline-size = 2
underline-color = ${color.foreground}
line-size = 3pt ; Values applied to all borders
; Individual side values can be defined using:
border-size = 4pt ; border-{left,top,right,bottom}-size
border-color = #00000000 ; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
border-size = 0
border-color = ${colors.base}
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding-left = 0 padding-left = 0
padding-right = 1 padding-right = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
;module-margin-left = 0
;module-margin-right = 0
module-margin = 1 module-margin = 1
; The separator will be inserted between the output of each module
separator = | separator = |
separator-foreground = ${colors.disabled} separator-foreground = ${colors.crust}
font-0 = ComicShannsMono Nerd Font;2 ; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
; font-0 = NotoSans-Regular:size=8;2
; font-1 = MaterialIcons:size=10
; font-2 = Termsynu:size=8;-1
; font-3 = FontAwesome:size=10
; See the Fonts wiki page for more details
font-0 = "JetBrainsMono Nerd Font:size=12;2"
modules-left = xworkspaces xwindow ; Modules are added to one of the available blocks
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date ; modules-center = xwindow xbacklight
; modules-right = ipc clock
modules-left = xworkspaces
modules-center =
modules-right = spotify filesystem memory cpu pulseaudio backlight battery0 battery1 xkeyboard date systray
cursor-click = pointer ; Value to be used to set the WM_NAME atom
cursor-scroll = ns-resize ; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
;wm-name =
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
;locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = none
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 20
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.base}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 0.5
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
wm-restack = i3
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true enable-ipc = true
; wm-restack = generic ; Fallback click handlers that will be called if
; wm-restack = bspwm ; there's no matching module handler found.
; wm-restack = i3 click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; override-redirect = true ; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; This module is not active by default (to enable it, add it to one of the ; - default : The default pointer as before, can also be an empty string (default)
; modules-* list above). ; - pointer : Typically in the form of a hand
; Please note that only a single tray can exist at any time. If you launch ; - ns-resize : Up and down arrows, can be used to indicate scrolling
; multiple bars with this module, only a single one will show it, the others cursor-click = pointer
; will produce a warning. Which bar gets the module is timing dependent and can cursor-scroll = ns-resize
; be quite random.
; For more information, see the documentation page for this module:
; https://polybar.readthedocs.io/en/stable/user/modules/tray.html
[module/systray]
type = internal/tray
format-margin = 8pt
tray-spacing = 16pt
[module/xworkspaces]
type = internal/xworkspaces
label-active = %name%
label-active-background = ${colors.background-alt}
label-active-underline= ${colors.primary}
label-active-padding = 1
label-occupied = %name%
label-occupied-padding = 1
label-urgent = %name%
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
label-empty = %name%
label-empty-foreground = ${colors.disabled}
label-empty-padding = 1
[module/xwindow]
type = internal/xwindow
label = %title:0:60:...%
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.disabled}
[module/pulseaudio]
type = internal/pulseaudio
format-volume-prefix = "VOL "
format-volume-prefix-foreground = ${colors.primary}
format-volume = <label-volume>
label-volume = %percentage%%
label-muted = muted
label-muted-foreground = ${colors.disabled}
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
label-layout = %layout%
label-layout-foreground = ${colors.primary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-foreground = ${colors.background}
label-indicator-background = ${colors.secondary}
[module/memory]
type = internal/memory
interval = 2
format-prefix = "RAM "
format-prefix-foreground = ${colors.primary}
label = %percentage_used:2%%
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = "CPU "
format-prefix-foreground = ${colors.primary}
label = %percentage:2%%
[network-base]
type = internal/network
interval = 5
format-connected = <label-connected>
format-disconnected = <label-disconnected>
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
[module/wlan]
inherit = network-base
interface-type = wireless
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
[module/eth]
inherit = network-base
interface-type = wired
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
[module/date]
type = internal/date
interval = 1
date = %H:%M
date-alt = %Y-%m-%d %H:%M:%S
label = %date%
label-foreground = ${colors.primary}
[settings] [settings]
screenchange-reload = true screenchange-reload = true
pseudo-transparency = true pseudo-transparency = true
; vim:ft=dosini

View File

@@ -8,6 +8,6 @@ polybar-msg cmd quit
# Launch barxs # Launch barxs
echo "---" | tee -a /tmp/polybar-mybar.log echo "---" | tee -a /tmp/polybar-mybar.log
polybar mybar 2>&1 | tee -a /tmp/polybar-mybar.log & disown polybar mainbar 2>&1 | tee -a /tmp/polybar-mybar.log & disown
echo "Bars launched..." echo "Bars launched..."

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

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1 +0,0 @@
249598

View File

@@ -1,7 +0,0 @@
include ~/.newsboat/dark
auto-reload yes # fetch new content when starting program
reload-time 10 # fetch new content every 10 minutes
notify-always yes # update tmux counters after every fetch
notify-format "%d %n %f"
notify-program "~/.tmux/plugins/tmux-newsboat/bin/tmux-newsboat"

View File

@@ -1,18 +0,0 @@
color listnormal color15 default
color listnormal_unread color2 default
color listfocus_unread color2 color0
color listfocus default color0
color background default default
color article default default
color end-of-text-marker color8 default
color info color4 color8
color hint-separator default color8
color hint-description default color8
color title color14 color8
highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold
highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold
highlight article "\\((link|image|video)\\)" color8 default
highlight article "https?://[^ ]+" color4 default
highlight article "\[[0-9]+\]" color6 default bold

View File

@@ -1,8 +0,0 @@
######################################################################
######################################################################
####### FEEDS RSS ######
######################################################################
######################################################################
# Archlinux updates
https://archlinux.org/feeds/packages/

View File

@@ -1,14 +0,0 @@
# Transparency and shadows
shadow = true
shadow-radius = 12
shadow-offset-x = -12
shadow-offset-y = -12
shadow-opacity = 0.3
fading = true
fade-in-step = 0.03
fade-out-step = 0.03
backend = "glx"
vsync = true

View File

@@ -1,4 +1,4 @@
@theme "catppuccin" //@theme "catppuccin"
configuration { configuration {
modi: "drun,window,filebrowser,ssh"; modi: "drun,window,filebrowser,ssh";
@@ -18,3 +18,4 @@ configuration {
display-filebrowser: "󰉋 filebrowser:"; display-filebrowser: "󰉋 filebrowser:";
} }
@theme "/home/fscotto/.config/rofi/themes/catppuccin-lavrent-mocha.rasi"

View File

@@ -9,47 +9,12 @@ $git_metrics\
$git_status\ $git_status\
$hg_branch\ $hg_branch\
$package\ $package\
$bun\
$c\
$cmake\
$elixir\
$erlang\
$gleam\
$golang\
$gradle\
$haskell\
$haxe\
$helm\
$java\
$kotlin\
$lua\
$nodejs\
$ocaml\
$perl\
$php\
$python\
$ruby\
$rust\
$scala\
$swift\
$terraform\
$vagrant\
$zig\
$docker_context\ $docker_context\
$buf\ $buf\
$guix_shell\ $guix_shell\
$nix_shell\ $nix_shell\
$conda\
$meson\ $meson\
$spack\
$memory_usage\
$direnv\
$env_var\
$custom\
$sudo\
$cmd_duration\
$line_break\ $line_break\
$jobs\
$time\ $time\
$status\ $status\
$container\ $container\
@@ -69,7 +34,7 @@ $azure
""" """
# Sets user-defined palette # Sets user-defined palette
palette = "catppuccin_mocha" #palette = "catppuccin_mocha"
# palette tables should be last in the config ⚓️ # palette tables should be last in the config ⚓️
[palettes.catppuccin_macchiato] [palettes.catppuccin_macchiato]
@@ -186,7 +151,7 @@ crust = "#11111b"
[character] [character]
# Note the use of Catppuccin color 'maroon' # Note the use of Catppuccin color 'maroon'
success_symbol = "[[♥](peach) ](maroon)" success_symbol = "[](blue)"
error_symbol = "[](red)" error_symbol = "[](red)"
vimcmd_symbol = "[](green)" vimcmd_symbol = "[](green)"
@@ -202,15 +167,6 @@ symbol = " "
[c] [c]
symbol = " " symbol = " "
[conda]
symbol = " "
[crystal]
symbol = " "
[dart]
symbol = " "
[directory] [directory]
read_only = " 󰌾" read_only = " 󰌾"
truncate_to_repo = false truncate_to_repo = false
@@ -238,12 +194,6 @@ symbol = " "
format = "[$env_value]($style)" format = "[$env_value]($style)"
style = 'green italic' style = 'green italic'
[fennel]
symbol = " "
[fossil_branch]
symbol = " "
[git_branch] [git_branch]
symbol = " " symbol = " "
@@ -263,9 +213,6 @@ symbol = " "
[haskell] [haskell]
symbol = " " symbol = " "
[haxe]
symbol = " "
[hg_branch] [hg_branch]
symbol = " " symbol = " "
@@ -294,85 +241,43 @@ symbol = "󰍛 "
[meson] [meson]
symbol = "󰔷 " symbol = "󰔷 "
[nim]
symbol = "󰆥 "
[nix_shell] [nix_shell]
symbol = " " symbol = " "
[nodejs] [nodejs]
symbol = " " symbol = " "
[ocaml]
symbol = " "
[os] [os]
disabled = false disabled = false
format = "[$symbol ]($style)" format = "[$symbol]($style)"
[os.symbols] [os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " " Arch = " "
Artix = " " Bluefin = " "
CentOS = " "
Debian = " " Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " " EndeavourOS = " "
Fedora = " " Fedora = " "
FreeBSD = " " FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " " Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " " Macos = " "
Manjaro = " " Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " " Mint = " "
NetBSD = " " NetBSD = " "
NixOS = " " NixOS = " "
OpenBSD = "󰈺 " OpenBSD = "󰈺 "
openSUSE = " " openSUSE = " "
OracleLinux = "󰌷 "
Pop = " " Pop = " "
Raspbian = " " Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " " Ubuntu = " "
Unknown = " "
Void = " " Void = " "
Windows = "󰍲 " Windows = "󰍲 "
[package] [package]
symbol = "󰏗 " symbol = "󰏗 "
[perl]
symbol = " "
[php]
symbol = " "
[pijul_channel]
symbol = " "
[python] [python]
symbol = " " symbol = " "
[rlang]
symbol = "󰟔 "
[ruby] [ruby]
symbol = " " symbol = " "
@@ -382,9 +287,6 @@ symbol = " "
[scala] [scala]
symbol = " " symbol = " "
[swift]
symbol = " "
[username] [username]
show_always = true show_always = true

View File

@@ -1,21 +0,0 @@
[main]
font=Noto Sans Regular:size=10
icon-theme=Papirus
include=~/.config/fuzzel/themes/catppuccin-mocha/blue.ini
hide-before-typing=no
fields=filename,name,generic
match-mode=fzf
sort-result=yes
match-counter=yes
show-actions=no
anchor = center
x-margin=0
y-margin=0
lines=10
width=70
tabs=4
horizontal-pad=40
vertical-pad=8
inner-pad=0
layer=overlay # values (top, overlay)

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=8caaeeff
selection=626880ff
selection-text=c6d0f5ff
selection-match=8caaeeff
counter=838ba7ff
border=8caaeeff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=eebebeff
selection=626880ff
selection-text=c6d0f5ff
selection-match=eebebeff
counter=838ba7ff
border=eebebeff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=a6d189ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=a6d189ff
counter=838ba7ff
border=a6d189ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=babbf1ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=babbf1ff
counter=838ba7ff
border=babbf1ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=ea999cff
selection=626880ff
selection-text=c6d0f5ff
selection-match=ea999cff
counter=838ba7ff
border=ea999cff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=ca9ee6ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=ca9ee6ff
counter=838ba7ff
border=ca9ee6ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=ef9f76ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=ef9f76ff
counter=838ba7ff
border=ef9f76ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=f4b8e4ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=f4b8e4ff
counter=838ba7ff
border=f4b8e4ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=e78284ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=e78284ff
counter=838ba7ff
border=e78284ff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=f2d5cfff
selection=626880ff
selection-text=c6d0f5ff
selection-match=f2d5cfff
counter=838ba7ff
border=f2d5cfff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=85c1dcff
selection=626880ff
selection-text=c6d0f5ff
selection-match=85c1dcff
counter=838ba7ff
border=85c1dcff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=99d1dbff
selection=626880ff
selection-text=c6d0f5ff
selection-match=99d1dbff
counter=838ba7ff
border=99d1dbff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=81c8beff
selection=626880ff
selection-text=c6d0f5ff
selection-match=81c8beff
counter=838ba7ff
border=81c8beff

View File

@@ -1,12 +0,0 @@
[colors]
background=303446dd
text=c6d0f5ff
prompt=b5bfe2ff
placeholder=838ba7ff
input=c6d0f5ff
match=e5c890ff
selection=626880ff
selection-text=c6d0f5ff
selection-match=e5c890ff
counter=838ba7ff
border=e5c890ff

View File

@@ -1,12 +0,0 @@
[colors]
background=eff1f5dd
text=4c4f69ff
prompt=5c5f77ff
placeholder=8c8fa1ff
input=4c4f69ff
match=1e66f5ff
selection=acb0beff
selection-text=4c4f69ff
selection-match=1e66f5ff
counter=8c8fa1ff
border=1e66f5ff

View File

@@ -1,12 +0,0 @@
[colors]
background=eff1f5dd
text=4c4f69ff
prompt=5c5f77ff
placeholder=8c8fa1ff
input=4c4f69ff
match=dd7878ff
selection=acb0beff
selection-text=4c4f69ff
selection-match=dd7878ff
counter=8c8fa1ff
border=dd7878ff

View File

@@ -1,12 +0,0 @@
[colors]
background=eff1f5dd
text=4c4f69ff
prompt=5c5f77ff
placeholder=8c8fa1ff
input=4c4f69ff
match=40a02bff
selection=acb0beff
selection-text=4c4f69ff
selection-match=40a02bff
counter=8c8fa1ff
border=40a02bff

View File

@@ -1,12 +0,0 @@
[colors]
background=eff1f5dd
text=4c4f69ff
prompt=5c5f77ff
placeholder=8c8fa1ff
input=4c4f69ff
match=7287fdff
selection=acb0beff
selection-text=4c4f69ff
selection-match=7287fdff
counter=8c8fa1ff
border=7287fdff

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