Compare commits
207 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6b9bb0e61d | |||
| bc2358a21a | |||
| 401b982820 | |||
| 818df22812 | |||
| 0a00251742 | |||
| d84f20edf0 | |||
| 28714d5f8a | |||
| 692c87e1ba | |||
| 653f44935a | |||
| 714fb7ef37 | |||
| 71f3906774 | |||
| cb4ec4608a | |||
| 0bb9a6f7c0 | |||
| 02ecd3f25f | |||
| d2362ff046 | |||
| b63689815a | |||
| f4c8773056 | |||
| f7af499573 | |||
| cd9ba86fca | |||
| 938db338fc | |||
| c95ee6f650 | |||
| cbe9a6c55c | |||
| d812c32e37 | |||
| 9cf5d8d5e0 | |||
| 2131bb57c4 | |||
| 5210b2a15a | |||
| 158c7a60a3 | |||
| 39a18835a1 | |||
| fa519bd74d | |||
| f98a52e613 | |||
| 44fb8a49fa | |||
| 52b956c423 | |||
| e43a76a132 | |||
| 3029561478 | |||
| f85841cafe | |||
| 140872d0e6 | |||
| 5b9d495de9 | |||
| 42b373b467 | |||
| 9c5c85fe29 | |||
| 6c6bbb47f3 | |||
| 375d135e83 | |||
| 5e87cb1f94 | |||
| 984fd8cfbd | |||
| 624c9ddd24 | |||
| e4c915c224 | |||
| 06e9c790a9 | |||
| a49ce29958 | |||
| ff7880d04d | |||
| b745e15242 | |||
| c6a5e6ba07 | |||
| af26c6978f | |||
| a6d2ce2f22 | |||
| 0a9e6f9dda | |||
| b069c2060b | |||
| 2d40f69d6f | |||
| 30ba1656b4 | |||
| c96fdf218f | |||
| 6ec22356e7 | |||
| f3e3ee0438 | |||
| 58cea70665 | |||
| ba48178f00 | |||
| 06b30a5c3e | |||
| c6d6cdc0aa | |||
| 383c27850a | |||
| 21e72dfb45 | |||
| 1d5e596ce0 | |||
| bcc2772268 | |||
| 757c0d3585 | |||
| 6780915f38 | |||
| c04543aba9 | |||
| 754ebcf1ae | |||
| a4de744aa7 | |||
| 4f11c1a9b9 | |||
| 74e33d46b2 | |||
| 600b328691 | |||
| d06a4e94cf | |||
| c44cd17970 | |||
| b0570700bb | |||
| 30d3ddfc90 | |||
| 3e0def88dd | |||
| d6c6d4f5d1 | |||
| 787bca3373 | |||
| e57be0cfd2 | |||
| 99a78b8e7d | |||
| 86ee7c8bce | |||
| ad02746fc7 | |||
| 7c75eebe62 | |||
| bd286dfa23 | |||
| 5617265cc6 | |||
| 418f122485 | |||
| 0302e76e1f | |||
| c21c9096c9 | |||
| 6b23fdf858 | |||
| 1fe23703f4 | |||
| 20b9e02adb | |||
| c7333aa79a | |||
| 7cb967447a | |||
| e54b358410 | |||
| 1fbd08f657 | |||
| f796d0775e | |||
| ffb20ec8a4 | |||
| 1734908df0 | |||
| 01d09bc9c0 | |||
| 4324070cac | |||
| ebdb4420b6 | |||
| 171c63a070 | |||
| 46a53b7c38 | |||
| a3d16cbff2 | |||
| 8aefb98d32 | |||
| fb43e9e0ea | |||
| 3617161e87 | |||
| 8850ed0668 | |||
| 62c81143bf | |||
| e60dcb4cda | |||
| 9d9a5c9a54 | |||
| 99a6d39916 | |||
| 57ec4f7e2d | |||
| d853923953 | |||
| bd62855dc9 | |||
| 0117c53cb7 | |||
| 62ba0e08fb | |||
| 2633d677c4 | |||
| b00ba05e2b | |||
| e95e3119fc | |||
| 9e616bc68b | |||
| 6188442dcb | |||
| 143b791d6b | |||
| 242a7a02e6 | |||
| 21060f0ef9 | |||
| 7e85124b10 | |||
| 171ed7447e | |||
| 197eafd34d | |||
| 07de246f77 | |||
| e04c89b57a | |||
| fe0c7e7630 | |||
| 4e6384ac3e | |||
| ecf6b9fb6a | |||
| b2e957ba9c | |||
| 150341e4c2 | |||
| 6f637e746e | |||
| d6214ac324 | |||
| d8519974f5 | |||
| f7056eca23 | |||
| f0af5d5b3f | |||
| f6a7fe0563 | |||
| ea12f5ba70 | |||
| 29a815e43c | |||
| 9da1a5ed65 | |||
| f6cebbacb3 | |||
| 48dc36f660 | |||
| 6a1540bcb0 | |||
| 1bae59ca93 | |||
| c89d6b8c39 | |||
| 3c26a04bb6 | |||
| 4f971c9df9 | |||
| e71eae2345 | |||
| 0f0e24d16c | |||
| ba6bb2bfba | |||
| 769acc8605 | |||
| 16194e4431 | |||
| fed96f0ad1 | |||
| a8f7cbdaea | |||
| fe3ee3aefe | |||
| b143fb61a9 | |||
| 216417e85e | |||
| d1cb75acff | |||
| 3b3a46ddfb | |||
| b89c49cb34 | |||
| 9d85245129 | |||
| f0a1460022 | |||
| cf14508462 | |||
| 44336cfb5b | |||
| 9568a1a3c2 | |||
| 7090ff15bf | |||
| b151282f15 | |||
| a726bf12ac | |||
| 025e863c75 | |||
| 783508bf25 | |||
| 829bf55d82 | |||
| f133c72653 | |||
| f24a4e8a47 | |||
| f26fd07e96 | |||
| 99fa23f6ad | |||
| a17b6e79b1 | |||
| 72b109c14a | |||
| b1cf2bbab6 | |||
| 4f07c62070 | |||
| 99517cf4e4 | |||
| c74ed2a1e3 | |||
| 4491310bba | |||
| b53e69beb8 | |||
| 21cbaeb542 | |||
| c1f449ed3d | |||
| df067d434c | |||
| a42946553a | |||
| 4bb4356727 | |||
| 7e6bfc2f4d | |||
| 243ea5a116 | |||
| 4ce449368e | |||
| c65fffdd9c | |||
| 4e4b45bb24 | |||
| e95bbfd0ad | |||
| ea98f4be74 | |||
| c897b57295 | |||
| e9cf99cf8e | |||
| da6ff29448 | |||
| 9dd08b6d18 |
20
.gitignore
vendored
20
.gitignore
vendored
@@ -3,5 +3,25 @@ zsh/.config/zsh/.zhistory
|
|||||||
|
|
||||||
vifm/.config/vifm/vifm-help.txt
|
vifm/.config/vifm/vifm-help.txt
|
||||||
vifm/.config/vifm/vifminfo.json
|
vifm/.config/vifm/vifminfo.json
|
||||||
|
vifm/.config/vifm/vifminfo.json_*
|
||||||
|
|
||||||
nvim/.config/nvim/autoload
|
nvim/.config/nvim/autoload
|
||||||
|
nvim/.config/nvim/plugin
|
||||||
|
|
||||||
|
moc/.moc/last_directory
|
||||||
|
moc/.moc/pid
|
||||||
|
moc/.moc/playlist.m3u
|
||||||
|
moc/.moc/softmixer
|
||||||
|
moc/.moc/equalizer
|
||||||
|
|
||||||
|
newsboat/.newsboat/cache.db
|
||||||
|
newsboat/.newsboat/cache.db.lock
|
||||||
|
newsboat/.newsboat/history.cmdline
|
||||||
|
|
||||||
|
mpd/.config/mpd/database
|
||||||
|
mpd/.config/mpd/state
|
||||||
|
mpd/.config/mpd/playlists/
|
||||||
|
|
||||||
|
aerc/.config/vdirsyncer/status/
|
||||||
|
|
||||||
|
hypr/.config/hypr/monitor-manager.log
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -1 +1,49 @@
|
|||||||
# My dotfiles
|
# My dotfiles
|
||||||
|
|
||||||
|
Géré avec [GNU stow](https://www.gnu.org/software/stow/).
|
||||||
|
|
||||||
|
## Packages
|
||||||
|
|
||||||
|
| Package | Contenu | Notes |
|
||||||
|
|---------|---------|-------|
|
||||||
|
| `alacritty` | Terminal | |
|
||||||
|
| `aerc` | Client mail + infra (msmtp, khard, vdirsyncer) | Remplace neomutt |
|
||||||
|
| `fuzzel` | Launcher (mode dmenu) | Utilisé dans le script screenshot |
|
||||||
|
| `git` | `.gitconfig` | |
|
||||||
|
| `hypr` | Config hyprland (hyprland.conf, hypridle, hyprlock, hyprpaper, monitors, scripts) | `stow --no-folding` requis |
|
||||||
|
| `hyprland` | Waybar, rofi, rofi-pass, mako, gammastep, systemd user units | |
|
||||||
|
| `khal` | Calendrier CLI | |
|
||||||
|
| `moc` | Lecteur audio terminal | |
|
||||||
|
| `mpd` | MPD + ncmpcpp | |
|
||||||
|
| `newsboat` | Lecteur RSS | |
|
||||||
|
| `nvim` | Neovim | |
|
||||||
|
| `qutebrowser` | Navigateur | |
|
||||||
|
| `tmux` | tmux + tmuxp sessions | |
|
||||||
|
| `vifm` | File manager terminal | |
|
||||||
|
| `zsh` | Shell (zshenv, zshrc, plugins, completions) | |
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/.dotfiles
|
||||||
|
|
||||||
|
# Tous les packages sauf hypr
|
||||||
|
stow alacritty aerc fuzzel git hyprland khal moc mpd newsboat nvim qutebrowser tmux vifm zsh
|
||||||
|
|
||||||
|
# hypr nécessite --no-folding (hyprland ne suit pas les symlinks de dossiers)
|
||||||
|
stow --no-folding hypr
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dépendances principales (Hyprland)
|
||||||
|
|
||||||
|
```
|
||||||
|
hyprland hyprlock hypridle hyprpaper waybar rofi fuzzel
|
||||||
|
mako gammastep rofi-pass nm-applet blueman brightnessctl
|
||||||
|
kanata voxtype grim slurp wl-copy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Mail (aerc)
|
||||||
|
|
||||||
|
```
|
||||||
|
aerc mbsync msmtp msmtp-mta notmuch khard vdirsyncer
|
||||||
|
```
|
||||||
|
|||||||
36
aerc/.config/aerc/accounts.conf
Normal file
36
aerc/.config/aerc/accounts.conf
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[bb_opytex]
|
||||||
|
source = maildir://~/Mail/benjamin.bertrand_opytex.org/
|
||||||
|
outgoing = msmtpq -a bb_opytex
|
||||||
|
default = INBOX
|
||||||
|
from = Benjamin Bertrand <benjamin.bertrand@opytex.org>
|
||||||
|
copy-to = Sent Items
|
||||||
|
archive = Archives
|
||||||
|
folders-sort = INBOX, Sent Items, Drafts, Archives, Trash, Todo, Attente
|
||||||
|
|
||||||
|
[jb_opytex]
|
||||||
|
source = maildir://~/Mail/jost_bertrand_opytex.org/
|
||||||
|
outgoing = msmtpq -a jb_opytex
|
||||||
|
default = INBOX
|
||||||
|
from = Margot Jost et Benjamin Bertrand <jost_bertrand@opytex.org>
|
||||||
|
copy-to = Sent Items
|
||||||
|
archive = Archives
|
||||||
|
folders-sort = INBOX, Sent Items, Drafts, Archives, Trash
|
||||||
|
|
||||||
|
[ac_lyon]
|
||||||
|
source = maildir://~/Mail/benjamin.bertrand_ac-lyon.fr/
|
||||||
|
outgoing = msmtpq -a ac-lyon
|
||||||
|
default = INBOX
|
||||||
|
from = Benjamin Bertrand <benjamin.bertrand@ac-lyon.fr>
|
||||||
|
copy-to = Sent
|
||||||
|
archive = Archives
|
||||||
|
folders-sort = INBOX, Sent, Drafts, Archives, Trash, TICE
|
||||||
|
|
||||||
|
# Compte de recherche globale (backend notmuch, lecture seule de fait).
|
||||||
|
# Indexe les 3 comptes via ~/.notmuch-config (path=~/Mail).
|
||||||
|
# Usage : ouvrir cet onglet puis :cf <termes> pour chercher partout.
|
||||||
|
[recherche]
|
||||||
|
source = notmuch://~/Mail
|
||||||
|
from = Benjamin Bertrand <benjamin.bertrand@opytex.org>
|
||||||
|
query-map = ~/.config/aerc/notmuch.qmap
|
||||||
|
exclude-tags = deleted,spam
|
||||||
|
folders-sort = Tout, Non lus, Récents, bb_opytex, jb_opytex, ac_lyon, ──── recherches ↓ ────
|
||||||
904
aerc/.config/aerc/aerc.conf
Normal file
904
aerc/.config/aerc/aerc.conf
Normal file
@@ -0,0 +1,904 @@
|
|||||||
|
#
|
||||||
|
# aerc main configuration
|
||||||
|
|
||||||
|
[general]
|
||||||
|
#
|
||||||
|
# Used as a default path for save operations if no other path is specified.
|
||||||
|
# ~ is expanded to the current user home dir.
|
||||||
|
#
|
||||||
|
#default-save-path=
|
||||||
|
|
||||||
|
# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
|
||||||
|
# operations. If set to "internal", the internal openpgp keyring will be used.
|
||||||
|
# If set to "auto", the system gpg will be preferred unless the internal
|
||||||
|
# keyring already exists, in which case the latter will be used.
|
||||||
|
#
|
||||||
|
# Default: auto
|
||||||
|
#pgp-provider=auto
|
||||||
|
|
||||||
|
# By default, the file permissions of accounts.conf must be restrictive and
|
||||||
|
# only allow reading by the file owner (0600). Set this option to true to
|
||||||
|
# ignore this permission check. Use this with care as it may expose your
|
||||||
|
# credentials.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#unsafe-accounts-conf=false
|
||||||
|
|
||||||
|
# Output log messages to specified file. A path starting with ~/ is expanded to
|
||||||
|
# the user home dir. When redirecting aerc's output to a file using > shell
|
||||||
|
# redirection, this setting is ignored and log messages are printed to stdout.
|
||||||
|
#
|
||||||
|
#log-file=
|
||||||
|
|
||||||
|
# Only log messages above the specified level to log-file. Supported levels
|
||||||
|
# are: trace, debug, info, warn and error. When redirecting aerc's output to
|
||||||
|
# a file using > shell redirection, this setting is ignored and the log level
|
||||||
|
# is forced to trace.
|
||||||
|
#
|
||||||
|
# Default: info
|
||||||
|
#log-level=info
|
||||||
|
|
||||||
|
# Disable IPC entirely. Don't run commands (including mailto:... and mbox:...)
|
||||||
|
# in an existing aerc instance, and don't start an IPC server to allow
|
||||||
|
# subsequent aerc instances to run commands in the current one.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc=false
|
||||||
|
|
||||||
|
# Don't run mailto:... commands over IPC; start a new aerc instance with the
|
||||||
|
# composer instead.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc-mailto=false
|
||||||
|
#
|
||||||
|
# Don't run mbox:... commands over IPC; start a new aerc instance with the mbox
|
||||||
|
# file instead.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc-mbox=false
|
||||||
|
|
||||||
|
# Set the $TERM environment variable used for the embedded terminal.
|
||||||
|
#
|
||||||
|
# Default: xterm-256color
|
||||||
|
#term=xterm-256color
|
||||||
|
# term=tmux split-window -h
|
||||||
|
|
||||||
|
# Display OSC8 strings in the embedded terminal
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#enable-osc8=false
|
||||||
|
|
||||||
|
# Default shell command to use for :menu. This will be executed with sh -c and
|
||||||
|
# will run in an popover dialog.
|
||||||
|
#
|
||||||
|
# Any occurrence of %f will be replaced by a temporary file path where the
|
||||||
|
# command is expected to write output lines to be consumed by :menu. Otherwise,
|
||||||
|
# the lines will be read from the command's standard output.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# default-menu-cmd=fzf
|
||||||
|
# default-menu-cmd=fzf --multi
|
||||||
|
# default-menu-cmd=dmenu -l 20
|
||||||
|
# default-menu-cmd=ranger --choosefiles=%f
|
||||||
|
#
|
||||||
|
#default-menu-cmd=
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
message-view-this-window=false
|
||||||
|
preview-pane=true
|
||||||
|
#
|
||||||
|
# Describes the format for each row in a mailbox view. This is a comma
|
||||||
|
# separated list of column names with an optional align and width suffix. After
|
||||||
|
# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment
|
||||||
|
# characters can be added (by default, left) followed by an optional width
|
||||||
|
# specifier. The width is either an integer representing a fixed number of
|
||||||
|
# characters, or a percentage between 1% and 99% representing a fraction of the
|
||||||
|
# terminal width. It can also be one of the '*' (auto) or '=' (fit) special
|
||||||
|
# width specifiers. Auto width columns will be equally attributed the remaining
|
||||||
|
# terminal width. Fit width columns take the width of their contents. If no
|
||||||
|
# width specifier is set, '*' is used by default.
|
||||||
|
#
|
||||||
|
# Default: flags:4,name<20%,subject,date>=
|
||||||
|
index-columns=flags:4,date>10,name<18%,subject
|
||||||
|
|
||||||
|
#
|
||||||
|
# Each name in index-columns must have a corresponding column-$name setting.
|
||||||
|
# All column-$name settings accept golang text/template syntax. See
|
||||||
|
# aerc-templates(7) for available template attributes and functions.
|
||||||
|
#
|
||||||
|
# Here are some examples to show the To field instead of the From field for
|
||||||
|
# an email (modifying column-name):
|
||||||
|
#
|
||||||
|
# 1. a generic one
|
||||||
|
# column-name={{ .Peer | names | join ", " }}
|
||||||
|
# 2. based upon the selected folder
|
||||||
|
# column-name={{if match .Folder "^(Gesendet|Sent)$"}}{{index (.To | names) 0}}{{else}}{{index (.From | names) 0}}{{end}}
|
||||||
|
#
|
||||||
|
# Default settings
|
||||||
|
#column-flags={{.Flags | join ""}}
|
||||||
|
#column-name={{index (.From | names) 0}}
|
||||||
|
#column-subject={{.ThreadPrefix}}{{.Subject}}
|
||||||
|
#column-date={{.DateAutoFormat .Date.Local}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# String separator inserted between columns. When the column width specifier is
|
||||||
|
# an exact number of characters, the separator is added to it (i.e. the exact
|
||||||
|
# width will be fully available for the column contents).
|
||||||
|
#
|
||||||
|
# Default: " "
|
||||||
|
#column-separator=" "
|
||||||
|
|
||||||
|
#
|
||||||
|
# See time.Time#Format at https://godoc.org/time#Time.Format
|
||||||
|
#
|
||||||
|
# Default: 2006 Jan 02
|
||||||
|
timestamp-format=2006-01-02
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent today.
|
||||||
|
# If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
# Default: 15:04
|
||||||
|
this-day-time-format=15:04
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent within the last
|
||||||
|
# 7 days. If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
# Default: Jan 02
|
||||||
|
this-week-time-format=Mon 15:04
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent this year.
|
||||||
|
# If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
#Default: Jan 02
|
||||||
|
this-year-time-format=Jan 02
|
||||||
|
|
||||||
|
#
|
||||||
|
# Overrides timestamp-format for the message view.
|
||||||
|
#
|
||||||
|
# Default: 2006 Jan 02, 15:04 GMT-0700
|
||||||
|
#message-view-timestamp-format=2006 Jan 02, 15:04 GMT-0700
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set, overrides timestamp-format in the message view for messages
|
||||||
|
# that were received/sent today.
|
||||||
|
#
|
||||||
|
#message-view-this-day-time-format=
|
||||||
|
|
||||||
|
# If set, overrides timestamp-format in the message view for messages
|
||||||
|
# that were received/sent within the last 7 days.
|
||||||
|
#
|
||||||
|
#message-view-this-week-time-format=
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set, overrides *timestamp-format* in the message view for messages
|
||||||
|
# that were received/sent this year.
|
||||||
|
#
|
||||||
|
#message-view-this-year-time-format=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Width of the sidebar, including the border.
|
||||||
|
#
|
||||||
|
# Default: 22
|
||||||
|
sidebar-width=26
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default split layout for message list tabs. The syntax is:
|
||||||
|
#
|
||||||
|
# [<direction>] <size>
|
||||||
|
#
|
||||||
|
# <direction> is optional and defaults to horizontal. It can take one
|
||||||
|
# of the following values: h, horiz, horizontal, v, vert, vertical.
|
||||||
|
#
|
||||||
|
# <size> is a positive integer representing the size (in terminal cells)
|
||||||
|
# of the message list window.
|
||||||
|
#
|
||||||
|
#message-list-split=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Message to display when viewing an empty folder.
|
||||||
|
#
|
||||||
|
# Default: (no messages)
|
||||||
|
#empty-message=(no messages)
|
||||||
|
|
||||||
|
# Message to display when no folders exists or are all filtered
|
||||||
|
#
|
||||||
|
# Default: (no folders)
|
||||||
|
#empty-dirlist=(no folders)
|
||||||
|
#
|
||||||
|
# Value to set {{.Subject}} template to when subject is empty.
|
||||||
|
#
|
||||||
|
# Default: (no subject)
|
||||||
|
#empty-subject=(no subject)
|
||||||
|
|
||||||
|
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#mouse-enabled=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ring the bell when new messages are received
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#new-message-bell=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Account tab titles
|
||||||
|
#
|
||||||
|
# Default: {{.Account}}
|
||||||
|
tab-title-account={{.Account}} {{if .Unread}}({{.Unread}}){{end}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Composer tab titles
|
||||||
|
#
|
||||||
|
# Default: {{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
|
||||||
|
#tab-title-composer={{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Terminal tab titles. Only valid in the global [ui]
|
||||||
|
# section.
|
||||||
|
#
|
||||||
|
# Default: {{.Title}}
|
||||||
|
#tab-title-terminal={{.Title}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Message Viewer tab titles
|
||||||
|
#
|
||||||
|
# Default: {{.Subject}}
|
||||||
|
#tab-title-viewer={{.Subject}}
|
||||||
|
|
||||||
|
|
||||||
|
# Marker to show before a pinned tab's name.
|
||||||
|
#
|
||||||
|
# Default: `
|
||||||
|
#pinned-tab-marker='`'
|
||||||
|
|
||||||
|
# Template for the left side of the directory list.
|
||||||
|
# See aerc-templates(7) for all available fields and functions.
|
||||||
|
#
|
||||||
|
# Default: {{.Folder}}
|
||||||
|
#dirlist-left={{.Folder}}
|
||||||
|
|
||||||
|
# Template for the right side of the directory list.
|
||||||
|
# See aerc-templates(7) for all available fields and functions.
|
||||||
|
#
|
||||||
|
# Default: {{if .Unread}}{{humanReadable .Unread}}{{end}}
|
||||||
|
#dirlist-right={{if .Unread}}{{humanReadable .Unread}}{{end}}
|
||||||
|
|
||||||
|
# Delay after which the messages are actually listed when entering a directory.
|
||||||
|
# This avoids loading messages when skipping over folders and makes the UI more
|
||||||
|
# responsive. If you do not want that, set it to 0s.
|
||||||
|
#
|
||||||
|
# Default: 200ms
|
||||||
|
#dirlist-delay=200ms
|
||||||
|
|
||||||
|
# Display the directory list as a foldable tree that allows to collapse and
|
||||||
|
# expand the folders.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
dirlist-tree=true
|
||||||
|
|
||||||
|
# If dirlist-tree is enabled, set level at which folders are collapsed by
|
||||||
|
# default. Set to 0 to disable.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
dirlist-collapse=1
|
||||||
|
|
||||||
|
# List of space-separated criteria to sort the messages by, see *sort*
|
||||||
|
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
|
||||||
|
# reverses that criterion.
|
||||||
|
#
|
||||||
|
# Example: "from -r date"
|
||||||
|
#
|
||||||
|
#sort=
|
||||||
|
|
||||||
|
# Moves to next message when the current message is deleted
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#next-message-on-delete=true
|
||||||
|
|
||||||
|
# Automatically set the "seen" flag when a message is opened in the message
|
||||||
|
# viewer.
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#auto-mark-read=true
|
||||||
|
|
||||||
|
# Specifies whether the _seen_ flag of messages being previewed in the message
|
||||||
|
# list split should be automatically set to _true_ after a delay, controlled by
|
||||||
|
# _auto-mark-read-split-delay_.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#auto-mark-read-split=false
|
||||||
|
|
||||||
|
# If _auto-mark-read-split_ is true, specifies the number of seconds after
|
||||||
|
# which a message previewed in the message list split must considered _seen_.
|
||||||
|
#
|
||||||
|
# Default: 3s
|
||||||
|
#auto-mark-read-split-delay=3s
|
||||||
|
|
||||||
|
# The directories where the stylesets are stored. It takes a colon-separated
|
||||||
|
# list of directories. If this is unset or if a styleset cannot be found, the
|
||||||
|
# following paths will be used as a fallback in that order:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
|
||||||
|
# /usr/local/share/aerc/stylesets
|
||||||
|
# /usr/share/aerc/stylesets
|
||||||
|
#
|
||||||
|
#stylesets-dirs=
|
||||||
|
|
||||||
|
# Uncomment to use box-drawing characters for vertical and horizontal borders.
|
||||||
|
#
|
||||||
|
# Default: "│" and "─"
|
||||||
|
#border-char-vertical="│"
|
||||||
|
#border-char-horizontal="─"
|
||||||
|
|
||||||
|
# Sets the styleset to use for the aerc ui elements.
|
||||||
|
#
|
||||||
|
# Default: default
|
||||||
|
styleset-name=gruvbox-dark
|
||||||
|
|
||||||
|
# Activates fuzzy search in commands and their arguments: the typed string is
|
||||||
|
# searched in the command or option in any position, and need not be
|
||||||
|
# consecutive characters in the command or option.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#fuzzy-complete=false
|
||||||
|
|
||||||
|
# How long to wait after the last input before auto-completion is triggered.
|
||||||
|
#
|
||||||
|
# Default: 250ms
|
||||||
|
#completion-delay=250ms
|
||||||
|
|
||||||
|
# The minimum required characters to allow auto-completion to be triggered after
|
||||||
|
# completion-delay.
|
||||||
|
#
|
||||||
|
# Setting this to "manual" disables automatic completion, leaving only the
|
||||||
|
# manually triggered completion with the $complete key (see aerc-binds(5) for
|
||||||
|
# more details).
|
||||||
|
#
|
||||||
|
# Default: 1
|
||||||
|
#completion-min-chars=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Global switch for completion popovers
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#completion-popovers=true
|
||||||
|
|
||||||
|
# Uncomment to use UTF-8 symbols to indicate PGP status of messages
|
||||||
|
#
|
||||||
|
# Default: ASCII
|
||||||
|
#icon-unencrypted=
|
||||||
|
#icon-encrypted=✔
|
||||||
|
#icon-signed=✔
|
||||||
|
#icon-signed-encrypted=✔
|
||||||
|
#icon-unknown=✘
|
||||||
|
#icon-invalid=⚠
|
||||||
|
|
||||||
|
# Reverses the order of the message list. By default, the message list is
|
||||||
|
# ordered with the newest (highest UID) message on top. Reversing the order
|
||||||
|
# will put the oldest (lowest UID) message on top. This can be useful in cases
|
||||||
|
# where the backend does not support sorting.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#reverse-msglist-order = false
|
||||||
|
|
||||||
|
# Reverse display of the message threads. Default order is the initial
|
||||||
|
# message is on the top with all the replies being displayed below. The
|
||||||
|
# reverse option will put the initial message at the bottom with the
|
||||||
|
# replies on top.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#reverse-thread-order=false
|
||||||
|
|
||||||
|
# Positions the cursor on the last message in the message list (at the
|
||||||
|
# bottom of the view) when opening a new folder.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#select-last-message=false
|
||||||
|
|
||||||
|
# Sort the thread siblings according to the sort criteria for the messages. If
|
||||||
|
# sort-thread-siblings is false, the thread siblings will be sorted based on
|
||||||
|
# the message UID in ascending order. If this option is set to false and
|
||||||
|
# threading-by-subject is set to true, then siblings will be ordered by subject
|
||||||
|
# headers using UTF-8 sorting.
|
||||||
|
#
|
||||||
|
# This option is only applicable for client-side threading with a backend that
|
||||||
|
# enables sorting. Note that there's a performance impact when sorting is
|
||||||
|
# activated.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#sort-thread-siblings=false
|
||||||
|
|
||||||
|
# Set the scroll offset in number of lines from the top and bottom of the
|
||||||
|
# message list.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
#msglist-scroll-offset = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable a threaded view of messages. If this is not supported by the backend
|
||||||
|
# (IMAP server or notmuch), threads will be built by the client.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#threading-enabled=false
|
||||||
|
|
||||||
|
# Force client-side thread building
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#force-client-threads=false
|
||||||
|
|
||||||
|
# If no References nor In-Reply-To headers can be matched to build client side
|
||||||
|
# threads, fallback to similar subjects. This setting also affects how thread
|
||||||
|
# siblings are ordered when sort-thread-siblings is left to false.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#threading-by-subject=false
|
||||||
|
|
||||||
|
# Show thread context enables messages which do not match the current query (or
|
||||||
|
# belong to the current mailbox) to be shown for context. These messages can be
|
||||||
|
# styled separately using "msglist_thread_context" in a styleset. This feature
|
||||||
|
# is not supported by all backends
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#show-thread-context=false
|
||||||
|
|
||||||
|
# Debounce client-side thread building
|
||||||
|
#
|
||||||
|
# Default: 50ms
|
||||||
|
#client-threads-delay=50ms
|
||||||
|
|
||||||
|
#
|
||||||
|
# Thread prefix customization:
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the arrow head.
|
||||||
|
#
|
||||||
|
# Default: ">"
|
||||||
|
thread-prefix-tip = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the arrow indentation.
|
||||||
|
#
|
||||||
|
# Default: " "
|
||||||
|
#thread-prefix-indent = " "
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the vertical extension of
|
||||||
|
# the arrow.
|
||||||
|
#
|
||||||
|
# Default: "│"
|
||||||
|
thread-prefix-stem = "│ "
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the horizontal extension
|
||||||
|
# of the arrow.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
thread-prefix-limb = "─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the folded thread
|
||||||
|
# indicator.
|
||||||
|
#
|
||||||
|
# Default: "+"
|
||||||
|
#thread-prefix-folded = "+"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the unfolded thread
|
||||||
|
# indicator.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-unfolded = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the first child connector.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
thread-prefix-first-child = "╭─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if
|
||||||
|
# the message has siblings.
|
||||||
|
#
|
||||||
|
# Default: "├─"
|
||||||
|
thread-prefix-has-siblings = "├─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if the
|
||||||
|
# message has no parents and no children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
thread-prefix-lone = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if the
|
||||||
|
# message has no parents and has children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
thread-prefix-orphan = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector for the last
|
||||||
|
# sibling.
|
||||||
|
#
|
||||||
|
# Default: "└─"
|
||||||
|
thread-prefix-last-sibling = "╰─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector for
|
||||||
|
# the last sibling.
|
||||||
|
#
|
||||||
|
# Default: "┌─"
|
||||||
|
#thread-prefix-last-sibling-reverse = "┌─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector for dummy
|
||||||
|
# thread.
|
||||||
|
#
|
||||||
|
# Default: "┬─"
|
||||||
|
#thread-prefix-dummy = "┬─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector for
|
||||||
|
# dummy thread.
|
||||||
|
#
|
||||||
|
# Default: "┴─"
|
||||||
|
#thread-prefix-dummy-reverse = "┴─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the first child
|
||||||
|
# connector.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-first-child-reverse = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector
|
||||||
|
# used if the message has no parents and has children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-orphan-reverse = ""
|
||||||
|
|
||||||
|
[statusline]
|
||||||
|
#
|
||||||
|
# Describes the format for the status line. This is a comma separated list of
|
||||||
|
# column names with an optional align and width suffix. See [ui].index-columns
|
||||||
|
# for more details. To completely mute the status line except for push
|
||||||
|
# notifications, explicitly set status-columns to an empty string.
|
||||||
|
#
|
||||||
|
# Default: left<*,center:=,right>*
|
||||||
|
#status-columns=left<*,center:=,right>*
|
||||||
|
|
||||||
|
#
|
||||||
|
# Each name in status-columns must have a corresponding column-$name setting.
|
||||||
|
# All column-$name settings accept golang text/template syntax. See
|
||||||
|
# aerc-templates(7) for available template attributes and functions.
|
||||||
|
#
|
||||||
|
# Default settings
|
||||||
|
column-left=[{{.Account}}] {{.StatusInfo}}
|
||||||
|
column-center={{.PendingKeys}}
|
||||||
|
column-right={{.TrayInfo}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# String separator inserted between columns.
|
||||||
|
# See [ui].column-separator for more details.
|
||||||
|
#
|
||||||
|
#column-separator=" "
|
||||||
|
|
||||||
|
# Specifies the separator between grouped statusline elements.
|
||||||
|
#
|
||||||
|
# Default: " | "
|
||||||
|
#separator=" | "
|
||||||
|
|
||||||
|
# Defines the mode for displaying the status elements.
|
||||||
|
# Options: text, icon
|
||||||
|
#
|
||||||
|
# Default: text
|
||||||
|
display-mode=icon
|
||||||
|
|
||||||
|
[viewer]
|
||||||
|
#
|
||||||
|
# Specifies the pager to use when displaying emails. Note that some filters
|
||||||
|
# may add ANSI codes to add color to rendered emails, so you may want to use a
|
||||||
|
# pager which supports ANSI codes.
|
||||||
|
#
|
||||||
|
# Default: less -Rc
|
||||||
|
#pager=less -Rc
|
||||||
|
|
||||||
|
#
|
||||||
|
# If an email offers several versions (multipart), you can configure which
|
||||||
|
# mimetype to prefer. For example, this can be used to prefer plaintext over
|
||||||
|
# html emails.
|
||||||
|
#
|
||||||
|
# Default: text/plain,text/html
|
||||||
|
#alternatives=text/plain,text/html
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default setting to determine whether to show full headers or only parsed
|
||||||
|
# ones in message viewer.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#show-headers=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Layout of headers when viewing a message. To display multiple headers in the
|
||||||
|
# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
|
||||||
|
# none of their specified headers are present in the message.
|
||||||
|
#
|
||||||
|
# Default: From|To,Cc|Bcc,Date,Subject
|
||||||
|
#header-layout=From|To,Cc|Bcc,Date,Subject
|
||||||
|
|
||||||
|
# Whether to always show the mimetype of an email, even when it is just a single part
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#always-show-mime=false
|
||||||
|
|
||||||
|
# Define the maximum height of the mimetype switcher before a scrollbar is used.
|
||||||
|
# The height of the mimetype switcher is restricted to half of the display
|
||||||
|
# height. If the provided value for the height is zero, the number of parts will
|
||||||
|
# be used as the height of the type switcher.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
#max-mime-height = 0
|
||||||
|
|
||||||
|
# Parses and extracts http links when viewing a message. Links can then be
|
||||||
|
# accessed with the open-link command.
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#parse-http-links=true
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
#
|
||||||
|
# Specifies the command to run the editor with. It will be shown in an embedded
|
||||||
|
# terminal, though it may also launch a graphical window if the environment
|
||||||
|
# supports it. Defaults to $EDITOR, or vi.
|
||||||
|
# editor=tmux split-window -h nvim
|
||||||
|
|
||||||
|
#
|
||||||
|
# When set, aerc will create and read .eml files for composing that have
|
||||||
|
# non-standard \n linebreaks. This is only relevant if the used editor does not
|
||||||
|
# support CRLF linebreaks.
|
||||||
|
#
|
||||||
|
#lf-editor=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default header fields to display when composing a message. To display
|
||||||
|
# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
|
||||||
|
#
|
||||||
|
# Default: To|From,Subject
|
||||||
|
#header-layout=To|From,Subject
|
||||||
|
|
||||||
|
#
|
||||||
|
# Edit headers into the text editor instead than separate fields.
|
||||||
|
#
|
||||||
|
# When this is true, address-book-cmd is not supported and address completion
|
||||||
|
# is left to the editor itself. Also, displaying multiple headers on the same
|
||||||
|
# line is not possible.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#edit-headers=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sets focus to the email body when the composer window opens.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#focus-body=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specifies the command to be used to tab-complete email addresses. Any
|
||||||
|
# occurrence of "%s" in the address-book-cmd will be replaced with what the
|
||||||
|
# user has typed so far.
|
||||||
|
#
|
||||||
|
# The command must output the completions to standard output, one completion
|
||||||
|
# per line. Each line must be tab-delimited, with an email address occurring as
|
||||||
|
# the first field. Only the email address field is required. The second field,
|
||||||
|
# if present, will be treated as the contact name. Additional fields are
|
||||||
|
# ignored.
|
||||||
|
#
|
||||||
|
# This parameter can also be set per account in accounts.conf.
|
||||||
|
#address-book-cmd = khard email --remove-first-line --parsable '%s'
|
||||||
|
address-book-cmd = addr-book-combine \
|
||||||
|
-c "khard email --remove-first-line --parsable '%s'" \
|
||||||
|
-c "grep -i '%s' ~/.cache/maildir-rank-addr/addressbook.tsv"
|
||||||
|
|
||||||
|
# Specifies the command to be used to select attachments. Any occurrence of
|
||||||
|
# '%s' in the file-picker-cmd will be replaced with the argument <arg>
|
||||||
|
# to :attach -m <arg>. Any occurrence of '%f' will be replaced by the
|
||||||
|
# location of a temporary file, from which aerc will read the selected files.
|
||||||
|
#
|
||||||
|
# If '%f' is not present, the command must output the selected files to
|
||||||
|
# standard output, one file per line. If it is present, then aerc does not
|
||||||
|
# capture the standard output and instead reads the files from the temporary
|
||||||
|
# file which should have the same format.
|
||||||
|
#file-picker-cmd=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Allow to address yourself when replying
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#reply-to-self=true
|
||||||
|
|
||||||
|
# Warn before sending an email with an empty subject.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#empty-subject-warning=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Warn before sending an email that matches the specified regexp but does not
|
||||||
|
# have any attachments. Leave empty to disable this feature.
|
||||||
|
#
|
||||||
|
# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The
|
||||||
|
# "(?im)" flags are set by default (case-insensitive and multi-line).
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# no-attachment-warning=^[^>]*attach(ed|ment)
|
||||||
|
#
|
||||||
|
#no-attachment-warning=
|
||||||
|
|
||||||
|
#
|
||||||
|
# When set, aerc will generate "format=flowed" bodies with a content type of
|
||||||
|
# "text/plain; format=flowed" as described in RFC3676. This format is easier to
|
||||||
|
# handle for some mailing software, and generally just looks like ordinary
|
||||||
|
# text. To actually make use of this format's features, you'll need support in
|
||||||
|
# your editor.
|
||||||
|
#
|
||||||
|
#format-flowed=false
|
||||||
|
|
||||||
|
[multipart-converters]
|
||||||
|
#
|
||||||
|
# Converters allow to generate multipart/alternative messages by converting the
|
||||||
|
# main text/plain part into any other MIME type. Only exact MIME types are
|
||||||
|
# accepted. The commands are invoked with sh -c and are expected to output
|
||||||
|
# valid UTF-8 text.
|
||||||
|
#
|
||||||
|
# Example (obviously, this requires that you write your main text/plain body
|
||||||
|
# using the markdown syntax):
|
||||||
|
#text/html=pandoc -f markdown -t html --standalone
|
||||||
|
|
||||||
|
[filters]
|
||||||
|
#
|
||||||
|
# Filters allow you to pipe an email body through a shell command to render
|
||||||
|
# certain emails differently, e.g. highlighting them with ANSI escape codes.
|
||||||
|
#
|
||||||
|
# The commands are invoked with sh -c. The following folders are prepended to
|
||||||
|
# the system $PATH to allow referencing filters from their name only:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters
|
||||||
|
# ~/.local/libexec/aerc/filters
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters
|
||||||
|
# $PREFIX/libexec/aerc/filters
|
||||||
|
# $PREFIX/share/aerc/filters
|
||||||
|
# /usr/libexec/aerc/filters
|
||||||
|
# /usr/share/aerc/filters
|
||||||
|
#
|
||||||
|
# If you want to run a program in your default $PATH which has the same name
|
||||||
|
# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path.
|
||||||
|
#
|
||||||
|
# The following variables are defined in the filter command environment:
|
||||||
|
#
|
||||||
|
# AERC_MIME_TYPE the part MIME type/subtype
|
||||||
|
# AERC_FORMAT the part content type format= parameter
|
||||||
|
# AERC_FILENAME the attachment filename (if any)
|
||||||
|
# AERC_SUBJECT the message Subject header value
|
||||||
|
# AERC_FROM the message From header value
|
||||||
|
#
|
||||||
|
# The first filter which matches the email's mimetype will be used, so order
|
||||||
|
# them from most to least specific.
|
||||||
|
#
|
||||||
|
# You can also match on non-mimetypes, by prefixing with the header to match
|
||||||
|
# against (non-case-sensitive) and a comma, e.g. subject,text will match a
|
||||||
|
# subject which contains "text". Use header,~regex to match against a regex.
|
||||||
|
#
|
||||||
|
text/plain=colorize
|
||||||
|
text/calendar=calendar
|
||||||
|
message/delivery-status=colorize
|
||||||
|
message/rfc822=colorize
|
||||||
|
#text/html=pandoc -f html -t plain | colorize
|
||||||
|
text/html=! html
|
||||||
|
#text/html=! w3m -T text/html -I UTF-8
|
||||||
|
#text/*=bat -fP --file-name="$AERC_FILENAME"
|
||||||
|
#application/x-sh=bat -fP -l sh
|
||||||
|
#image/*=catimg -w $(tput cols) -
|
||||||
|
#subject,~Git(hub|lab)=lolcat -f
|
||||||
|
#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize
|
||||||
|
|
||||||
|
# This special filter is only used to post-process email headers when
|
||||||
|
# [viewer].show-headers=true
|
||||||
|
# By default, headers are piped directly into the pager.
|
||||||
|
#
|
||||||
|
.headers=colorize
|
||||||
|
|
||||||
|
[openers]
|
||||||
|
#
|
||||||
|
# Openers allow you to specify the command to use for the :open and :open-link
|
||||||
|
# actions on a per-MIME-type basis. The :open-link URL scheme is used to
|
||||||
|
# determine the MIME type as follows: x-scheme-handler/<scheme>.
|
||||||
|
#
|
||||||
|
# {} is expanded as the temporary filename or URL to be opened with proper
|
||||||
|
# shell quoting. If it is not encountered in the command, the filename/URL will
|
||||||
|
# be appended to the end of the command. The command will then be executed with
|
||||||
|
# `sh -c`.
|
||||||
|
#
|
||||||
|
# Like [filters], openers support basic shell globbing. The first opener which
|
||||||
|
# matches the part's MIME type (or URL scheme handler MIME type) will be used,
|
||||||
|
# so order them from most to least specific.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# x-scheme-handler/irc=hexchat
|
||||||
|
# x-scheme-handler/http*=printf '%s' {} | wl-copy
|
||||||
|
# text/html=surf -dfgms
|
||||||
|
# text/plain=gvim {} +125
|
||||||
|
# message/rfc822=thunderbird
|
||||||
|
|
||||||
|
[hooks]
|
||||||
|
#
|
||||||
|
# Hooks are triggered whenever the associated event occurs.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when a new email arrives in the selected folder
|
||||||
|
#mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when mail is deleted from a folder
|
||||||
|
#mail-deleted=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc adds mail to a folder
|
||||||
|
#mail-added=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc starts
|
||||||
|
#aerc-startup=aerc :terminal calcurse && aerc :next-tab
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc shuts down.
|
||||||
|
#aerc-shutdown=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when notmuch tags are modified.
|
||||||
|
#tag-modified=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when flags are changed on a message.
|
||||||
|
#flag-changed=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
[templates]
|
||||||
|
# Templates are used to populate email bodies automatically.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The directories where the templates are stored. It takes a colon-separated
|
||||||
|
# list of directories. If this is unset or if a template cannot be found, the
|
||||||
|
# following paths will be used as a fallback in that order:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
|
||||||
|
# /usr/local/share/aerc/templates
|
||||||
|
# /usr/share/aerc/templates
|
||||||
|
#
|
||||||
|
#template-dirs=
|
||||||
|
|
||||||
|
# The default template to be used for new messages.
|
||||||
|
#
|
||||||
|
# default: new_message
|
||||||
|
#new-message=new_message
|
||||||
|
|
||||||
|
# The default template to be used for quoted replies.
|
||||||
|
#
|
||||||
|
# default: quoted_reply
|
||||||
|
#quoted-reply=quoted_reply
|
||||||
|
|
||||||
|
# The default template to be used for forward as body.
|
||||||
|
#
|
||||||
|
# default: forward_as_body
|
||||||
|
#forwards=forward_as_body
|
||||||
|
|
||||||
|
# Compte de recherche (notmuch) : on ajoute une colonne "dossier" qui montre
|
||||||
|
# où chaque message est rangé, déduite du chemin du fichier (.Filename).
|
||||||
|
# Les longs noms de comptes sont raccourcis en bb / jb / ac.
|
||||||
|
[ui:account=recherche]
|
||||||
|
index-columns=flags:4,date>10,folder<16,name<22%,subject
|
||||||
|
column-folder={{.Filename | replace "^.*/Mail/" "" | replace "/(cur|new)/[^/]*$" "" | replace "benjamin.bertrand_opytex.org" "bb" | replace "jost_bertrand_opytex.org" "jb" | replace "benjamin.bertrand_ac-lyon.fr" "ac"}}
|
||||||
206
aerc/.config/aerc/binds.conf
Normal file
206
aerc/.config/aerc/binds.conf
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
# Binds are of the form <key sequence> = <command to run>
|
||||||
|
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
||||||
|
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
\[t = :prev-tab<Enter>
|
||||||
|
\]t = :next-tab<Enter>
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
? = :help keys<Enter>
|
||||||
|
<C-c> = :prompt 'Quit?' quit<Enter>
|
||||||
|
<C-q> = :prompt 'Quit?' quit<Enter>
|
||||||
|
<C-z> = :suspend<Enter>
|
||||||
|
|
||||||
|
[messages]
|
||||||
|
q = :prompt 'Quit?' quit<Enter>
|
||||||
|
|
||||||
|
ga = :archive year<Enter>
|
||||||
|
gd = :delete<Enter>
|
||||||
|
gt = :move Todo<Enter>
|
||||||
|
gw = :move Attente<Enter>
|
||||||
|
|
||||||
|
j = :next<Enter>
|
||||||
|
<Down> = :next<Enter>
|
||||||
|
<C-d> = :next 50%<Enter>
|
||||||
|
<C-f> = :next 100%<Enter>
|
||||||
|
<PgDn> = :next 100%<Enter>
|
||||||
|
|
||||||
|
k = :prev<Enter>
|
||||||
|
<Up> = :prev<Enter>
|
||||||
|
<C-u> = :prev 50%<Enter>
|
||||||
|
<C-b> = :prev 100%<Enter>
|
||||||
|
<PgUp> = :prev 100%<Enter>
|
||||||
|
g = :select 0<Enter>
|
||||||
|
G = :select -1<Enter>
|
||||||
|
|
||||||
|
J = :next-folder<Enter>
|
||||||
|
<C-Down> = :next-folder<Enter>
|
||||||
|
K = :prev-folder<Enter>
|
||||||
|
<C-Up> = :prev-folder<Enter>
|
||||||
|
H = :collapse-folder<Enter>
|
||||||
|
<C-Left> = :collapse-folder<Enter>
|
||||||
|
L = :expand-folder<Enter>
|
||||||
|
<C-Right> = :expand-folder<Enter>
|
||||||
|
|
||||||
|
v = :mark -t<Enter>
|
||||||
|
<Space> = :mark -t<Enter>:next<Enter>
|
||||||
|
V = :mark -v<Enter>
|
||||||
|
|
||||||
|
T = :toggle-threads<Enter>
|
||||||
|
zc = :fold<Enter>
|
||||||
|
zo = :unfold<Enter>
|
||||||
|
za = :fold -t<Enter>
|
||||||
|
zM = :fold -a<Enter>
|
||||||
|
zR = :unfold -a<Enter>
|
||||||
|
<tab> = :fold -t<Enter>
|
||||||
|
|
||||||
|
zz = :align center<Enter>
|
||||||
|
zt = :align top<Enter>
|
||||||
|
zb = :align bottom<Enter>
|
||||||
|
|
||||||
|
<Enter> = :view<Enter>
|
||||||
|
d = :choose -o y 'Really delete this message' delete-message<Enter>
|
||||||
|
D = :delete<Enter>
|
||||||
|
a = :archive year<Enter>
|
||||||
|
A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter>
|
||||||
|
|
||||||
|
C = :compose<Enter>
|
||||||
|
m = :compose<Enter>
|
||||||
|
|
||||||
|
b = :bounce<space>
|
||||||
|
|
||||||
|
rr = :reply -q<Enter>
|
||||||
|
rq = :reply<Enter>
|
||||||
|
Rr = :reply -aq<Enter>
|
||||||
|
Rq = :reply -a<Enter>
|
||||||
|
|
||||||
|
<F5> = :exec tmux split-window -h -l 25% 'msmtp-queue -r; mbsync -a && notmuch new'<Enter>
|
||||||
|
|
||||||
|
c = :cf<space>
|
||||||
|
$ = :term<space>
|
||||||
|
! = :term<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
|
||||||
|
/ = :search<space>
|
||||||
|
\ = :filter<space>
|
||||||
|
n = :next-result<Enter>
|
||||||
|
N = :prev-result<Enter>
|
||||||
|
<Esc> = :clear<Enter>
|
||||||
|
|
||||||
|
s = :split<Enter>
|
||||||
|
S = :vsplit<Enter>
|
||||||
|
|
||||||
|
pl = :patch list<Enter>
|
||||||
|
pa = :patch apply <Tab>
|
||||||
|
pd = :patch drop <Tab>
|
||||||
|
pb = :patch rebase<Enter>
|
||||||
|
pt = :patch term<Enter>
|
||||||
|
ps = :patch switch <Tab>
|
||||||
|
|
||||||
|
[messages:account=recherche]
|
||||||
|
# / : recherche notmuch GLOBALE (tous comptes/dossiers). Crée un dossier
|
||||||
|
# d'historique nommé d'après la requête, rangé sous les dossiers fixes.
|
||||||
|
/ = :query<space>
|
||||||
|
# \ : affine la liste déjà affichée (= "and")
|
||||||
|
\ = :filter<space>
|
||||||
|
|
||||||
|
[messages:folder=Drafts]
|
||||||
|
<Enter> = :recall<Enter>
|
||||||
|
|
||||||
|
[view]
|
||||||
|
/ = :toggle-key-passthrough<Enter>/
|
||||||
|
q = :close<Enter>
|
||||||
|
O = :open<Enter>
|
||||||
|
o = :open<Enter>
|
||||||
|
S = :save<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
D = :delete<Enter>
|
||||||
|
A = :archive year<Enter>
|
||||||
|
|
||||||
|
ga = :archive year<Enter>
|
||||||
|
gd = :delete<Enter>
|
||||||
|
gt = :move Todo<Enter>
|
||||||
|
gw = :move Attente<Enter>
|
||||||
|
|
||||||
|
<C-y> = :copy-link <space>
|
||||||
|
<C-l> = :open-link <space>
|
||||||
|
|
||||||
|
f = :forward<Enter>
|
||||||
|
rr = :reply -q<Enter>
|
||||||
|
rq = :reply<Enter>
|
||||||
|
Rr = :reply -aq<Enter>
|
||||||
|
Rq = :reply -a<Enter>
|
||||||
|
|
||||||
|
H = :toggle-headers<Enter>
|
||||||
|
<C-k> = :prev-part<Enter>
|
||||||
|
<C-Up> = :prev-part<Enter>
|
||||||
|
<C-j> = :next-part<Enter>
|
||||||
|
<C-Down> = :next-part<Enter>
|
||||||
|
J = :next<Enter>
|
||||||
|
<C-Right> = :next<Enter>
|
||||||
|
K = :prev<Enter>
|
||||||
|
<C-Left> = :prev<Enter>
|
||||||
|
|
||||||
|
[view::passthrough]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<Esc> = :toggle-key-passthrough<Enter>
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
# Keybindings used when the embedded terminal is not selected in the compose
|
||||||
|
# view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
$complete = <C-o>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-Up> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-Down> = :next-field<Enter>
|
||||||
|
<A-p> = :switch-account -p<Enter>
|
||||||
|
<C-Left> = :switch-account -p<Enter>
|
||||||
|
<A-n> = :switch-account -n<Enter>
|
||||||
|
<C-Right> = :switch-account -n<Enter>
|
||||||
|
<tab> = :next-field<Enter>
|
||||||
|
<backtab> = :prev-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
|
||||||
|
[compose::editor]
|
||||||
|
# Keybindings used when the embedded terminal is selected in the compose view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-Up> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-Down> = :next-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
|
||||||
|
[compose::review]
|
||||||
|
# Keybindings used when reviewing a message to be sent
|
||||||
|
# Inline comments are used as descriptions on the review screen
|
||||||
|
y = :send<Enter> # Send
|
||||||
|
n = :abort<Enter> # Abort (discard message, no confirmation)
|
||||||
|
s = :sign<Enter> # Toggle signing
|
||||||
|
x = :encrypt<Enter> # Toggle encryption to all recipients
|
||||||
|
v = :preview<Enter> # Preview message
|
||||||
|
p = :postpone<Enter> # Postpone
|
||||||
|
q = :choose -o d discard abort -o p postpone postpone<Enter> # Abort or postpone
|
||||||
|
e = :edit<Enter> # Edit (body and headers)
|
||||||
|
a = :attach<space> # Add attachment
|
||||||
|
d = :detach<space> # Remove attachment
|
||||||
|
|
||||||
|
[terminal]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
20
aerc/.config/aerc/notmuch.qmap
Normal file
20
aerc/.config/aerc/notmuch.qmap
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Query-map du compte notmuch « recherche » — voir aerc-notmuch(5).
|
||||||
|
# Format : <NOM AFFICHÉ>=<requête notmuch>
|
||||||
|
#
|
||||||
|
# Ce sont les dossiers FIXES, épinglés en haut de la barre (via folders-sort
|
||||||
|
# dans accounts.conf). Les recherches lancées avec « / » (:query) créent des
|
||||||
|
# dossiers nommés d'après la requête, qui s'accumulent EN DESSOUS (historique).
|
||||||
|
#
|
||||||
|
# Recherche globale (sujet/corps/expéditeur, tous comptes) : touche / puis termes
|
||||||
|
# /facture /from:dupont /subject:réunion /body:"compte rendu"
|
||||||
|
# / facture and path:benjamin.bertrand_ac-lyon.fr/** (un seul compte)
|
||||||
|
|
||||||
|
Tout=*
|
||||||
|
Non lus=tag:unread
|
||||||
|
Récents=date:1month..
|
||||||
|
bb_opytex=path:benjamin.bertrand_opytex.org/**
|
||||||
|
jb_opytex=path:jost_bertrand_opytex.org/**
|
||||||
|
ac_lyon=path:benjamin.bertrand_ac-lyon.fr/**
|
||||||
|
# Faux dossier servant de séparateur visuel (requête vide). Pas de virgule
|
||||||
|
# dans le nom (folders-sort est séparé par des virgules).
|
||||||
|
──── recherches ↓ ────=tag:_separateur_inexistant_
|
||||||
123
aerc/.config/aerc/stylesets/gruvbox-dark
Normal file
123
aerc/.config/aerc/stylesets/gruvbox-dark
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
# vim: ft=dosini
|
||||||
|
# aerc gruvbox-dark styleset
|
||||||
|
# Palette: https://github.com/morhetz/gruvbox
|
||||||
|
#
|
||||||
|
# bg0_h=#1d2021 bg0=#282828 bg1=#3c3836 bg2=#504945
|
||||||
|
# bg3=#665c54 bg4=#7c6f64
|
||||||
|
# fg0=#fbf1c7 fg1=#ebdbb2 fg2=#d5c4a1 fg3=#bdae93 fg4=#a89984
|
||||||
|
# red=#cc241d bright-red=#fb4934
|
||||||
|
# green=#98971a bright-green=#b8bb26
|
||||||
|
# yellow=#d79921 bright-yellow=#fabd2f
|
||||||
|
# blue=#458588 bright-blue=#83a598
|
||||||
|
# purple=#b16286 bright-purple=#d3869b
|
||||||
|
# aqua=#689d6a bright-aqua=#8ec07c
|
||||||
|
# orange=#d65d0e bright-orange=#fe8019
|
||||||
|
# gray=#928374
|
||||||
|
|
||||||
|
*.default=true
|
||||||
|
*.normal=true
|
||||||
|
|
||||||
|
default.bg=#282828
|
||||||
|
default.fg=#ebdbb2
|
||||||
|
|
||||||
|
error.fg=#fb4934
|
||||||
|
error.bold=true
|
||||||
|
warning.fg=#fabd2f
|
||||||
|
warning.bold=true
|
||||||
|
success.fg=#b8bb26
|
||||||
|
success.bold=true
|
||||||
|
|
||||||
|
# Tabs
|
||||||
|
tab.bg=#1d2021
|
||||||
|
tab.fg=#a89984
|
||||||
|
tab.selected.bg=#3c3836
|
||||||
|
tab.selected.fg=#ebdbb2
|
||||||
|
tab.selected.bold=true
|
||||||
|
|
||||||
|
# Borders
|
||||||
|
border.fg=#504945
|
||||||
|
border.bold=false
|
||||||
|
|
||||||
|
# Headers (composer/viewer field labels)
|
||||||
|
header.fg=#83a598
|
||||||
|
header.bold=true
|
||||||
|
|
||||||
|
# Message list
|
||||||
|
msglist_unread.bold=true
|
||||||
|
msglist_unread.fg=#fabd2f
|
||||||
|
msglist_flagged.fg=#fe8019
|
||||||
|
msglist_flagged.bold=true
|
||||||
|
msglist_deleted.dim=true
|
||||||
|
msglist_marked.bg=#504945
|
||||||
|
msglist_marked.fg=#ebdbb2
|
||||||
|
msglist_result.fg=#83a598
|
||||||
|
msglist_result.bold=true
|
||||||
|
|
||||||
|
msglist_*.selected.bg=#504945
|
||||||
|
msglist_*.selected.bold=true
|
||||||
|
msglist_unread.selected.bg=#504945
|
||||||
|
msglist_unread.selected.fg=#fabd2f
|
||||||
|
|
||||||
|
# Directory list
|
||||||
|
dirlist_*.selected.bg=#504945
|
||||||
|
dirlist_*.selected.bold=true
|
||||||
|
dirlist_unread.fg=#fabd2f
|
||||||
|
dirlist_recent.fg=#fe8019
|
||||||
|
|
||||||
|
# Status line (matches tmux-gruvbox bar)
|
||||||
|
statusline_default.bg=#3c3836
|
||||||
|
statusline_default.fg=#a89984
|
||||||
|
statusline_error.bg=#cc241d
|
||||||
|
statusline_error.fg=#ebdbb2
|
||||||
|
statusline_error.bold=true
|
||||||
|
statusline_success.fg=#b8bb26
|
||||||
|
statusline_success.bold=true
|
||||||
|
|
||||||
|
# Completion popover
|
||||||
|
completion_default.bg=#282828
|
||||||
|
completion_default.fg=#ebdbb2
|
||||||
|
completion_default.selected.bg=#504945
|
||||||
|
completion_pill.bg=#458588
|
||||||
|
completion_pill.fg=#1d2021
|
||||||
|
completion_description.dim=true
|
||||||
|
|
||||||
|
# MIME type switcher
|
||||||
|
part_mimetype.fg=#928374
|
||||||
|
part_mimetype.selected.bg=#504945
|
||||||
|
part_mimetype.selected.fg=#ebdbb2
|
||||||
|
part_filename.selected.bold=true
|
||||||
|
part_filename.selected.bg=#504945
|
||||||
|
|
||||||
|
# Selector
|
||||||
|
selector_focused.bg=#504945
|
||||||
|
selector_focused.bold=true
|
||||||
|
selector_chooser.bold=true
|
||||||
|
|
||||||
|
[viewer]
|
||||||
|
*.default=true
|
||||||
|
*.normal=true
|
||||||
|
|
||||||
|
url.fg=#fabd2f
|
||||||
|
url.underline=true
|
||||||
|
|
||||||
|
header.bold=true
|
||||||
|
header.fg=#d3869b
|
||||||
|
|
||||||
|
signature.dim=true
|
||||||
|
signature.fg=#928374
|
||||||
|
|
||||||
|
diff_meta.bold=true
|
||||||
|
diff_meta.fg=#a89984
|
||||||
|
diff_chunk.fg=#83a598
|
||||||
|
diff_chunk.dim=true
|
||||||
|
diff_chunk_func.fg=#83a598
|
||||||
|
diff_chunk_func.dim=true
|
||||||
|
diff_add.fg=#b8bb26
|
||||||
|
diff_del.fg=#fb4934
|
||||||
|
|
||||||
|
quote_1.fg=#83a598
|
||||||
|
quote_2.fg=#8ec07c
|
||||||
|
quote_3.fg=#a89984
|
||||||
|
quote_3.dim=true
|
||||||
|
quote_4.fg=#928374
|
||||||
|
quote_4.dim=true
|
||||||
51
aerc/.config/khard/khard.conf
Normal file
51
aerc/.config/khard/khard.conf
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# example configuration file for khard version > 0.14.0
|
||||||
|
# place it under ~/.config/khard/khard.conf
|
||||||
|
# This file is parsed by the configobj library. The syntax is described at
|
||||||
|
# https://configobj.readthedocs.io/en/latest/configobj.html#the-config-file-format
|
||||||
|
|
||||||
|
[addressbooks]
|
||||||
|
[[contacts]]
|
||||||
|
path = ~/.contacts/contacts/contacts/
|
||||||
|
|
||||||
|
[general]
|
||||||
|
debug = no
|
||||||
|
default_action = list
|
||||||
|
# These are either strings or comma seperated lists
|
||||||
|
editor = nvim, -i, NONE
|
||||||
|
merge_editor = vimdiff
|
||||||
|
|
||||||
|
[contact table]
|
||||||
|
# display names by first or last name: first_name / last_name / formatted_name
|
||||||
|
display = first_name
|
||||||
|
# group by address book: yes / no
|
||||||
|
group_by_addressbook = no
|
||||||
|
# reverse table ordering: yes / no
|
||||||
|
reverse = no
|
||||||
|
# append nicknames to name column: yes / no
|
||||||
|
show_nicknames = no
|
||||||
|
# show uid table column: yes / no
|
||||||
|
show_uids = yes
|
||||||
|
# sort by first or last name: first_name / last_name / formatted_name
|
||||||
|
sort = last_name
|
||||||
|
# localize dates: yes / no
|
||||||
|
localize_dates = yes
|
||||||
|
# set a comma separated list of preferred phone number types in descending priority
|
||||||
|
# or nothing for non-filtered alphabetical order
|
||||||
|
preferred_phone_number_type = pref, cell, home
|
||||||
|
# set a comma separated list of preferred email address types in descending priority
|
||||||
|
# or nothing for non-filtered alphabetical order
|
||||||
|
preferred_email_address_type = pref, work, home
|
||||||
|
|
||||||
|
[vcard]
|
||||||
|
# extend contacts with your own private objects
|
||||||
|
# these objects are stored with a leading "X-" before the object name in the vcard files
|
||||||
|
# every object label may only contain letters, digits and the - character
|
||||||
|
# example:
|
||||||
|
# private_objects = Jabber, Skype, Twitter
|
||||||
|
# default: , (the empty list)
|
||||||
|
# preferred vcard version: 3.0 / 4.0
|
||||||
|
preferred_version = 4.0
|
||||||
|
# Look into source vcf files to speed up search queries: yes / no
|
||||||
|
search_in_source_files = no
|
||||||
|
# skip unparsable vcard files: yes / no
|
||||||
|
skip_unparsable = no
|
||||||
50
aerc/.config/msmtp/config
Normal file
50
aerc/.config/msmtp/config
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Example for a user configuration file ~/.msmtprc
|
||||||
|
|
||||||
|
# With modern mail services that publish autoconfiguration information,
|
||||||
|
# you can simply run 'msmtp --configure yourmail@example.com' to get
|
||||||
|
# a basic working configuration.
|
||||||
|
|
||||||
|
# This example focusses on TLS and authentication. Features not used here
|
||||||
|
# include logging, timeouts, SOCKS proxies, TLS parameters, Delivery Status
|
||||||
|
# Notification (DSN) settings, and more.
|
||||||
|
|
||||||
|
# Set default values: use the mail submission port 587, and always use TLS.
|
||||||
|
# On this port, TLS is activated via STARTTLS.
|
||||||
|
defaults
|
||||||
|
port 587
|
||||||
|
tls on
|
||||||
|
tls_starttls on
|
||||||
|
auth on
|
||||||
|
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||||
|
logfile ~/.local/share/msmtp/msmtp.log
|
||||||
|
|
||||||
|
account bb_opytex
|
||||||
|
user Takanuva
|
||||||
|
passwordeval "pass mail/mailfence/Takanuva | grep smtp | awk '{print $2}'"
|
||||||
|
auth on
|
||||||
|
host smtp.mailfence.com
|
||||||
|
port 465
|
||||||
|
# Envelope-from address
|
||||||
|
from benjamin.bertrand@opytex.org
|
||||||
|
tls_starttls off
|
||||||
|
|
||||||
|
account jb_opytex
|
||||||
|
user margot_benjamin
|
||||||
|
passwordeval "pass mail/jost_bertrand@opytex.org/margot_benjamin | head -n1"
|
||||||
|
auth on
|
||||||
|
host smtp.mailfence.com
|
||||||
|
port 465
|
||||||
|
# Envelope-from address
|
||||||
|
from jost_bertrand@opytex.org
|
||||||
|
tls_starttls off
|
||||||
|
|
||||||
|
account ac-lyon
|
||||||
|
user bbertrand
|
||||||
|
passwordeval "pass Prof/aclyon/bbertrand | head -n1"
|
||||||
|
auth on
|
||||||
|
host smtps.ac-lyon.fr
|
||||||
|
# Envelope-from address
|
||||||
|
from benjamin.bertrand@ac-lyon.fr
|
||||||
|
|
||||||
|
# Set a default account
|
||||||
|
account default : bb_opytex
|
||||||
36
aerc/.config/vdirsyncer/config
Normal file
36
aerc/.config/vdirsyncer/config
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[general]
|
||||||
|
status_path = "~/.local/share/vdirsyncer/status/"
|
||||||
|
|
||||||
|
[pair cloud_opytex_contact]
|
||||||
|
a = "cloud_opytex_contact_local"
|
||||||
|
b = "cloud_opytex_contact_remote"
|
||||||
|
collections = ["from a", "from b"]
|
||||||
|
conflict_resolution = "b wins"
|
||||||
|
|
||||||
|
[storage cloud_opytex_contact_local]
|
||||||
|
type = "filesystem"
|
||||||
|
path = "~/.contacts/contacts/"
|
||||||
|
fileext = ".vcf"
|
||||||
|
|
||||||
|
[storage cloud_opytex_contact_remote]
|
||||||
|
type = "carddav"
|
||||||
|
url = "https://cloud.poneyworld.net/remote.php/dav/addressbooks/users/lafrite/contacts/"
|
||||||
|
username = "lafrite"
|
||||||
|
password.fetch = ["command", "pass", "OVH/Panais/docker/cloud.poneyworld.net/lafrite"]
|
||||||
|
|
||||||
|
[pair cloud_opytex_calendar]
|
||||||
|
a = "cloud_opytex_calendar_local"
|
||||||
|
b = "cloud_opytex_calendar_remote"
|
||||||
|
collections = ["from b"]
|
||||||
|
conflict_resolution = "b wins"
|
||||||
|
|
||||||
|
[storage cloud_opytex_calendar_local]
|
||||||
|
type = "filesystem"
|
||||||
|
path = "~/.calendars/"
|
||||||
|
fileext = ".ics"
|
||||||
|
|
||||||
|
[storage cloud_opytex_calendar_remote]
|
||||||
|
type = "caldav"
|
||||||
|
url = "https://cloud.poneyworld.net/remote.php/dav/calendars/lafrite/"
|
||||||
|
username = "lafrite"
|
||||||
|
password.fetch = ["command", "pass", "OVH/Panais/docker/cloud.poneyworld.net/lafrite"]
|
||||||
119
alacritty/.config/alacritty/alacritty.toml
Normal file
119
alacritty/.config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
|
||||||
|
[colors]
|
||||||
|
draw_bold_text_with_bright_colors = true
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
black = "#928374"
|
||||||
|
blue = "#83a598"
|
||||||
|
cyan = "#8ec07c"
|
||||||
|
green = "#b8bb26"
|
||||||
|
magenta = "#d3869b"
|
||||||
|
red = "#fb4934"
|
||||||
|
white = "#ebdbb2"
|
||||||
|
yellow = "#fabd2f"
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
black = "#282828"
|
||||||
|
blue = "#458588"
|
||||||
|
cyan = "#689d6a"
|
||||||
|
green = "#98971a"
|
||||||
|
magenta = "#b16286"
|
||||||
|
red = "#cc241d"
|
||||||
|
white = "#a89984"
|
||||||
|
yellow = "#d79921"
|
||||||
|
|
||||||
|
[colors.primary]
|
||||||
|
background = "#32302f"
|
||||||
|
foreground = "#ebdbb2"
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
style = "Block"
|
||||||
|
unfocused_hollow = true
|
||||||
|
|
||||||
|
[font]
|
||||||
|
size = 12.0
|
||||||
|
|
||||||
|
[font.bold]
|
||||||
|
family = "UbuntuMono Nerd Font"
|
||||||
|
style = "Bold"
|
||||||
|
|
||||||
|
[font.bold_italic]
|
||||||
|
family = "UbuntuMono Nerd Font"
|
||||||
|
style = "Bold Italic"
|
||||||
|
|
||||||
|
[font.glyph_offset]
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
|
||||||
|
[font.italic]
|
||||||
|
family = "UbuntuMono Nerd Font"
|
||||||
|
style = "Italic"
|
||||||
|
|
||||||
|
[font.normal]
|
||||||
|
family = "UbuntuMono Nerd Font"
|
||||||
|
style = "Regular"
|
||||||
|
|
||||||
|
[font.offset]
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "Paste"
|
||||||
|
key = "V"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "Copy"
|
||||||
|
key = "C"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "ResetFontSize"
|
||||||
|
key = "Key0"
|
||||||
|
mods = "Control"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "IncreaseFontSize"
|
||||||
|
key = "Equals"
|
||||||
|
mods = "Control"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "IncreaseFontSize"
|
||||||
|
key = "NumpadAdd"
|
||||||
|
mods = "Control"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "DecreaseFontSize"
|
||||||
|
key = "NumpadSubtract"
|
||||||
|
mods = "Control"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "DecreaseFontSize"
|
||||||
|
key = "Minus"
|
||||||
|
mods = "Control"
|
||||||
|
|
||||||
|
[[mouse.bindings]]
|
||||||
|
action = "PasteSelection"
|
||||||
|
mouse = "Middle"
|
||||||
|
|
||||||
|
[scrolling]
|
||||||
|
history = 10000
|
||||||
|
multiplier = 10
|
||||||
|
|
||||||
|
[selection]
|
||||||
|
save_to_clipboard = true
|
||||||
|
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
||||||
|
|
||||||
|
[window]
|
||||||
|
decorations = "none"
|
||||||
|
|
||||||
|
[window.dimensions]
|
||||||
|
columns = 100
|
||||||
|
lines = 20
|
||||||
|
|
||||||
|
[window.padding]
|
||||||
|
x = 2
|
||||||
|
y = 2
|
||||||
|
|
||||||
|
[general]
|
||||||
|
live_config_reload = true
|
||||||
@@ -45,7 +45,7 @@ font:
|
|||||||
style: Bold Italic
|
style: Bold Italic
|
||||||
|
|
||||||
# Point size
|
# Point size
|
||||||
size: 11.0
|
size: 12.0
|
||||||
|
|
||||||
offset:
|
offset:
|
||||||
x: 0
|
x: 0
|
||||||
@@ -82,6 +82,22 @@ selection:
|
|||||||
|
|
||||||
live_config_reload: true
|
live_config_reload: true
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
# Cursor style
|
||||||
|
#
|
||||||
|
# Values for 'style':
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
style: Block
|
||||||
|
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
unfocused_hollow: true
|
||||||
|
|
||||||
|
mouse_bindings:
|
||||||
|
- { mouse: Middle, action: PasteSelection }
|
||||||
|
|
||||||
key_bindings:
|
key_bindings:
|
||||||
- { key: V, mods: Control|Shift, action: Paste }
|
- { key: V, mods: Control|Shift, action: Paste }
|
||||||
- { key: C, mods: Control|Shift, action: Copy }
|
- { key: C, mods: Control|Shift, action: Copy }
|
||||||
@@ -90,4 +106,3 @@ key_bindings:
|
|||||||
- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
||||||
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
||||||
- { key: Minus, mods: Control, action: DecreaseFontSize }
|
- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
- { key: N, mods: Control, action: SpawnNewInstance }
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
if not functions -q fisher
|
|
||||||
set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config
|
|
||||||
curl https://git.io/fisher --create-dirs -sLo $XDG_CONFIG_HOME/fish/functions/fisher.fish
|
|
||||||
fish -c fisher
|
|
||||||
end
|
|
||||||
|
|
||||||
set -Ux EDITOR vim
|
|
||||||
|
|
||||||
set -Ux FZF_DEFAULT_OPTS '--height 40% --layout=reverse --border'
|
|
||||||
|
|
||||||
#fisher add jethrokuan/fzf
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
jethrokuan/fzf
|
|
||||||
oh-my-fish/plugin-bang-bang
|
|
||||||
14
fuzzel/.config/fuzzel/fuzzel.ini
Normal file
14
fuzzel/.config/fuzzel/fuzzel.ini
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
show-actions=yes
|
||||||
|
width=80
|
||||||
|
[colors]
|
||||||
|
background=1e1e2e99
|
||||||
|
text=cdd6f4ff
|
||||||
|
prompt=bac2deff
|
||||||
|
placeholder=7f849cff
|
||||||
|
input=cdd6f4ff
|
||||||
|
match=f38ba8ff
|
||||||
|
selection=585b70ff
|
||||||
|
selection-text=cdd6f4ff
|
||||||
|
selection-match=f38ba8ff
|
||||||
|
counter=7f849cff
|
||||||
|
border=f38ba8ff
|
||||||
7
git/.gitconfig
Normal file
7
git/.gitconfig
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[user]
|
||||||
|
name = Bertrand Benjamin
|
||||||
|
email = benjamin.bertrand@opytex.org
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
|
[fetch]
|
||||||
|
recurseSubmodules = false
|
||||||
3
hypr/.config/hypr/conf.d/hyprlock.conf
Normal file
3
hypr/.config/hypr/conf.d/hyprlock.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Verrouillage manuel de l'écran
|
||||||
|
# SUPER + X pour verrouiller, mot de passe pour déverrouiller
|
||||||
|
bind = $mainMod, x, exec, hyprlock
|
||||||
33
hypr/.config/hypr/conf.d/voxtype-submap.conf
Normal file
33
hypr/.config/hypr/conf.d/voxtype-submap.conf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Voxtype compositor integration
|
||||||
|
# Fixes modifier key interference when using compositor keybindings
|
||||||
|
# Generated by: voxtype setup compositor hyprland
|
||||||
|
#
|
||||||
|
# Two submaps are used:
|
||||||
|
# - voxtype_recording: Active during recording/transcription. F12 cancels.
|
||||||
|
# - voxtype_suppress: Active during text output. Blocks modifier keys.
|
||||||
|
#
|
||||||
|
# NOTE: Do not bind Escape in voxtype_suppress. Binding Escape causes wtype's
|
||||||
|
# first character to be dropped. See: https://github.com/hyprwm/Hyprland/issues/3165
|
||||||
|
|
||||||
|
bind = $mainMod, v, exec, voxtype record toggle
|
||||||
|
# bindr = SUPER, V, exec, voxtype record stop
|
||||||
|
|
||||||
|
# Recording submap - active during recording and transcription
|
||||||
|
# F12 cancels recording/transcription and returns to normal
|
||||||
|
submap = voxtype_recording
|
||||||
|
bind = , F12, exec, voxtype record cancel
|
||||||
|
bind = , F12, submap, reset
|
||||||
|
submap = reset
|
||||||
|
|
||||||
|
# Output submap - blocks modifier keys during text output
|
||||||
|
submap = voxtype_suppress
|
||||||
|
bind = , SUPER_L, exec, true
|
||||||
|
bind = , SUPER_R, exec, true
|
||||||
|
bind = , Control_L, exec, true
|
||||||
|
bind = , Control_R, exec, true
|
||||||
|
bind = , Alt_L, exec, true
|
||||||
|
bind = , Alt_R, exec, true
|
||||||
|
bind = , Shift_L, exec, true
|
||||||
|
bind = , Shift_R, exec, true
|
||||||
|
bind = , F12, submap, reset # Emergency escape if voxtype crashes
|
||||||
|
submap = reset
|
||||||
20
hypr/.config/hypr/hypridle.conf
Normal file
20
hypr/.config/hypr/hypridle.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
general {
|
||||||
|
lock_cmd = pidof hyprlock || hyprlock
|
||||||
|
before_sleep_cmd = loginctl lock-session
|
||||||
|
after_sleep_cmd = hyprctl dispatch dpms on
|
||||||
|
ignore_dbus_inhibit = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# 5 min → extinction écran
|
||||||
|
listener {
|
||||||
|
timeout = 300
|
||||||
|
on-timeout = hyprctl dispatch dpms off
|
||||||
|
on-resume = hyprctl dispatch dpms on
|
||||||
|
}
|
||||||
|
|
||||||
|
# 10 min → verrouillage
|
||||||
|
listener {
|
||||||
|
timeout = 600
|
||||||
|
on-timeout = loginctl lock-session
|
||||||
|
}
|
||||||
|
|
||||||
0
hypr/.config/hypr/hyprland-gui.conf
Normal file
0
hypr/.config/hypr/hyprland-gui.conf
Normal file
351
hypr/.config/hypr/hyprland.conf
Normal file
351
hypr/.config/hypr/hyprland.conf
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
|
||||||
|
################
|
||||||
|
### MONITORS ###
|
||||||
|
################
|
||||||
|
|
||||||
|
# Configuration dynamique des moniteurs via monitor-manager.sh
|
||||||
|
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||||
|
source = ~/.config/hypr/monitors.conf
|
||||||
|
|
||||||
|
# Exécution du script de gestion automatique des moniteurs
|
||||||
|
exec-once = ~/.config/hypr/monitor-events.sh
|
||||||
|
|
||||||
|
# Configuration des workspaces (sera mise à jour dynamiquement)
|
||||||
|
source = ~/.config/hypr/workspaces.conf
|
||||||
|
|
||||||
|
###################
|
||||||
|
### MY PROGRAMS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
$terminal = alacritty
|
||||||
|
$menu = fuzzel
|
||||||
|
$pass = tessen
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
### AUTOSTART ###
|
||||||
|
#################
|
||||||
|
|
||||||
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
|
# exec-once = $terminal
|
||||||
|
exec-once = nm-applet
|
||||||
|
exec-once = blueman-applet
|
||||||
|
exec-once = waybar -c ~/.config/waybar/config_hyprland &
|
||||||
|
exec-once = hyprpaper
|
||||||
|
exec-once = hyprsunset -t 4500
|
||||||
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
exec-once = hypridle
|
||||||
|
exec-once = [workspace special silent] $terminal ncmpcpp
|
||||||
|
exec-once = [workspace 1] zen-browser
|
||||||
|
exec-once = [workspace 2 silent] thunderbird
|
||||||
|
exec-once = super-whisper-linux
|
||||||
|
|
||||||
|
#############################
|
||||||
|
### ENVIRONMENT VARIABLES ###
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||||
|
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### PERMISSIONS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||||
|
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||||
|
# for security reasons
|
||||||
|
|
||||||
|
# ecosystem {
|
||||||
|
# enforce_permissions = 1
|
||||||
|
# }
|
||||||
|
|
||||||
|
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||||
|
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||||
|
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||||
|
|
||||||
|
|
||||||
|
#####################
|
||||||
|
### LOOK AND FEEL ###
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||||
|
general {
|
||||||
|
gaps_in = 0
|
||||||
|
gaps_out = 0
|
||||||
|
|
||||||
|
border_size = 2
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = true
|
||||||
|
|
||||||
|
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 4
|
||||||
|
rounding_power = 2
|
||||||
|
|
||||||
|
# Change transparency of focused and unfocused windows
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
|
||||||
|
shadow {
|
||||||
|
enabled = true
|
||||||
|
range = 4
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 8
|
||||||
|
passes = 2
|
||||||
|
|
||||||
|
vibrancy = 0.1696
|
||||||
|
special = true # Enable blur for special workspace background
|
||||||
|
popups = true # Enable blur for popups and layer surfaces
|
||||||
|
popups_ignorealpha = 0.2 # Apply blur even on semi-transparent popups
|
||||||
|
}
|
||||||
|
|
||||||
|
dim_special = 0.5 # Darken background behind special workspace (0.0 = no dim, 1.0 = black)
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||||
|
animations {
|
||||||
|
enabled = yes, please :)
|
||||||
|
|
||||||
|
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = easeOutQuint,0.23,1,0.32,1
|
||||||
|
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||||
|
bezier = linear,0,0,1,1
|
||||||
|
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||||
|
bezier = quick,0.15,0,0.1,1
|
||||||
|
|
||||||
|
animation = global, 1, 10, default
|
||||||
|
animation = border, 1, 5.39, easeOutQuint
|
||||||
|
animation = windows, 1, 4.79, easeOutQuint
|
||||||
|
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||||
|
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||||
|
animation = fadeIn, 1, 1.73, almostLinear
|
||||||
|
animation = fadeOut, 1, 1.46, almostLinear
|
||||||
|
animation = fade, 1, 3.03, quick
|
||||||
|
animation = layers, 1, 3.81, easeOutQuint
|
||||||
|
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||||
|
animation = layersOut, 1, 1.5, linear, fade
|
||||||
|
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||||
|
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||||
|
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||||
|
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||||
|
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||||
|
# "Smart gaps" / "No gaps when only"
|
||||||
|
# uncomment all if you wish to use that.
|
||||||
|
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||||
|
# workspace = f[1], gapsout:0, gapsin:0
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||||
|
workspace = special, gapsout:100, gapsin:20
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle {
|
||||||
|
preserve_split = true # You probably want this
|
||||||
|
special_scale_factor = 0.8 # Scale factor for special workspace windows (0.8 = 80% with visible padding)
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||||
|
master {
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
### INPUT ###
|
||||||
|
#############
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||||
|
input {
|
||||||
|
kb_layout = fr
|
||||||
|
kb_variant = azerty
|
||||||
|
# kb_variant = ergol
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configuration souris multi-écrans
|
||||||
|
cursor {
|
||||||
|
no_break_fs_vrr = true
|
||||||
|
min_refresh_rate = 24
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#gestures
|
||||||
|
# gestures {
|
||||||
|
# workspace_swipe = true
|
||||||
|
# workspace_swipe_fingers = 3
|
||||||
|
# }
|
||||||
|
gesture = 3, horizontal, workspace
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### KEYBINDINGS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||||
|
|
||||||
|
# Exit
|
||||||
|
bind = $mainMod SHIFT, e, exec, hyprctl dispatch exit 0 # exit Hyprland
|
||||||
|
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, Return, exec, $terminal
|
||||||
|
bind = $mainMod, q, killactive,
|
||||||
|
bind = $mainMod, f, fullscreen,
|
||||||
|
bind = $mainMod, d, exec, $menu
|
||||||
|
bind = $mainMod, p, exec, $pass
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = $mainMod, h, movefocus, l
|
||||||
|
bind = $mainMod, l, movefocus, r
|
||||||
|
bind = $mainMod, k, movefocus, u
|
||||||
|
bind = $mainMod, j, movefocus, d
|
||||||
|
bind = $mainMod, left, movefocus, l
|
||||||
|
bind = $mainMod, right, movefocus, r
|
||||||
|
bind = $mainMod, up, movefocus, u
|
||||||
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
|
# Navigate between monitors
|
||||||
|
bind = $mainMod CTRL, h, focusmonitor, l
|
||||||
|
bind = $mainMod CTRL, l, focusmonitor, r
|
||||||
|
bind = $mainMod CTRL, left, focusmonitor, l
|
||||||
|
bind = $mainMod CTRL, right, focusmonitor, r
|
||||||
|
|
||||||
|
# Move windows
|
||||||
|
bind = $mainMod SHIFT, left, movewindow, l
|
||||||
|
bind = $mainMod SHIFT, right, movewindow, r
|
||||||
|
bind = $mainMod SHIFT, up, movewindow, u
|
||||||
|
bind = $mainMod SHIFT, down, movewindow, d
|
||||||
|
bind = $mainMod SHIFT, h, movewindow, l
|
||||||
|
bind = $mainMod SHIFT, l, movewindow, r
|
||||||
|
bind = $mainMod SHIFT, k, movewindow, u
|
||||||
|
bind = $mainMod SHIFT, j, movewindow, d
|
||||||
|
|
||||||
|
# Move windows between monitors
|
||||||
|
bind = $mainMod SHIFT CTRL, h, movewindow, mon:l
|
||||||
|
bind = $mainMod SHIFT CTRL, l, movewindow, mon:r
|
||||||
|
bind = $mainMod SHIFT CTRL, left, movewindow, mon:l
|
||||||
|
bind = $mainMod SHIFT CTRL, right, movewindow, mon:r
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, code:10, workspace, 1
|
||||||
|
bind = $mainMod, code:11, workspace, 2
|
||||||
|
bind = $mainMod, code:12, workspace, 3
|
||||||
|
bind = $mainMod, code:13, workspace, 4
|
||||||
|
bind = $mainMod, code:14, workspace, 5
|
||||||
|
bind = $mainMod, code:15, workspace, 6
|
||||||
|
bind = $mainMod, code:16, workspace, 7
|
||||||
|
bind = $mainMod, code:17, workspace, 8
|
||||||
|
bind = $mainMod, code:18, workspace, 9
|
||||||
|
bind = $mainMod, code:19, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, code:10, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, code:11, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, code:12, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, code:13, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, code:14, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, code:15, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, code:16, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, code:17, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, code:18, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, code:19, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, s, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, s, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, Space, workspace, previous
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
|
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||||
|
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||||
|
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||||
|
|
||||||
|
# Requires playerctl
|
||||||
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
# printscreen
|
||||||
|
|
||||||
|
bind = , PRINT, exec, ~/.local/bin/sway/rofi_screenshot.sh 2>> ~/tmp/rofi_debug.log
|
||||||
|
|
||||||
|
bind = $mainMod, R, resizeactive, exact 66% 100%
|
||||||
|
|
||||||
|
# Couvercle laptop
|
||||||
|
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/lid.sh
|
||||||
|
bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/lid.sh
|
||||||
|
|
||||||
|
# Info moniteurs
|
||||||
|
bind = $mainMod SHIFT CTRL, M, exec, notify-send "Monitors" "$(hyprctl monitors | grep -E '^Monitor|^\s+at|^\s+resolution' | sed 's/^\s*/ /')"
|
||||||
|
|
||||||
|
bind = $mainMod SHIFT, R, exec, super-whisper-linux trigger toggle
|
||||||
|
|
||||||
|
##############################
|
||||||
|
### WINDOWS AND WORKSPACES ###
|
||||||
|
##############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||||
|
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
windowrule = match:class nm-connection-editor, float on
|
||||||
|
windowrule = match:class blueman-manager, float on
|
||||||
|
|
||||||
|
source = ~/.config/hypr/hyprland-gui.conf
|
||||||
|
source = ~/.config/hypr/conf.d/*.conf
|
||||||
|
|
||||||
62
hypr/.config/hypr/hyprlock.conf
Normal file
62
hypr/.config/hypr/hyprlock.conf
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
general {
|
||||||
|
hide_cursor = true
|
||||||
|
grace = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fond : screenshot flouté + assombri
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
path = screenshot
|
||||||
|
blur_size = 7
|
||||||
|
blur_passes = 3
|
||||||
|
brightness = 0.7
|
||||||
|
contrast = 0.9
|
||||||
|
vibrancy = 0.2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Heure
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$(date +'%H:%M')"
|
||||||
|
color = rgba(ffffffff)
|
||||||
|
font_size = 80
|
||||||
|
font_family = Noto Sans Mono Bold
|
||||||
|
position = 0, 120
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# Date
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:60000] LC_TIME=fr_FR.UTF-8 date +'%A %d %B'
|
||||||
|
color = rgba(ffffffbb)
|
||||||
|
font_size = 22
|
||||||
|
font_family = Noto Sans Mono
|
||||||
|
position = 0, 40
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# Champ de saisie
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 320, 52
|
||||||
|
outline_thickness = 2
|
||||||
|
dots_size = 0.25
|
||||||
|
dots_spacing = 0.2
|
||||||
|
dots_center = true
|
||||||
|
outer_color = rgba(ffffff44)
|
||||||
|
inner_color = rgba(00000099)
|
||||||
|
font_color = rgba(ffffffff)
|
||||||
|
fade_on_empty = true
|
||||||
|
placeholder_text = <i>Mot de passe</i>
|
||||||
|
check_color = rgba(00ff99cc)
|
||||||
|
fail_color = rgba(ff5555cc)
|
||||||
|
fail_text = <i>Raté ($ATTEMPTS)</i>
|
||||||
|
capslock_color = rgba(ffaa00cc)
|
||||||
|
numlock_color = -1
|
||||||
|
position = 0, -40
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
3
hypr/.config/hypr/hyprpaper.conf
Normal file
3
hypr/.config/hypr/hyprpaper.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
preload = /home/lafrite/Images/Wallpapers/coraill.jpg
|
||||||
|
|
||||||
|
wallpaper = ,/home/lafrite/Images/Wallpapers/coraill.jpg
|
||||||
2
hypr/.config/hypr/lid.sh
Executable file
2
hypr/.config/hypr/lid.sh
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
~/.config/hypr/monitor-manager.sh
|
||||||
29
hypr/.config/hypr/monitor-events.sh
Executable file
29
hypr/.config/hypr/monitor-events.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Écoute les événements Hyprland IPC et reconfigure les moniteurs à chaud
|
||||||
|
|
||||||
|
MANAGER=~/.config/hypr/monitor-manager.sh
|
||||||
|
SOCKET="/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"
|
||||||
|
|
||||||
|
# Attendre que Hyprland soit prêt
|
||||||
|
until [[ -S "$SOCKET" ]]; do sleep 0.2; done
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Configuration initiale
|
||||||
|
"$MANAGER"
|
||||||
|
|
||||||
|
# Debounce : annule et replanifie si plusieurs événements arrivent d'un coup (dock, etc.)
|
||||||
|
PENDING_PID=""
|
||||||
|
configure_debounced() {
|
||||||
|
[[ -n "$PENDING_PID" ]] && kill "$PENDING_PID" 2>/dev/null
|
||||||
|
(sleep 0.8; "$MANAGER") &
|
||||||
|
PENDING_PID=$!
|
||||||
|
}
|
||||||
|
|
||||||
|
# Écouter la socket IPC
|
||||||
|
socat -u "UNIX-CONNECT:$SOCKET" STDOUT | while IFS= read -r line; do
|
||||||
|
case "${line%%>>*}" in
|
||||||
|
monitoradded|monitorremoved)
|
||||||
|
configure_debounced
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
61
hypr/.config/hypr/monitor-manager.sh
Executable file
61
hypr/.config/hypr/monitor-manager.sh
Executable file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Configure les moniteurs via hyprctl keyword (pas de reload, pas d'écriture de fichiers)
|
||||||
|
|
||||||
|
PHILIPS="PHL 223V5"
|
||||||
|
SAMSUNG="LS27A600U"
|
||||||
|
|
||||||
|
is_lid_closed() {
|
||||||
|
for path in /proc/acpi/button/lid/LID0/state \
|
||||||
|
/proc/acpi/button/lid/LID/state \
|
||||||
|
/proc/acpi/button/lid/LID1/state; do
|
||||||
|
[[ -r "$path" ]] && grep -q "closed" "$path" && return 0
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local json
|
||||||
|
json=$(hyprctl monitors all -j 2>/dev/null)
|
||||||
|
|
||||||
|
local philips_name samsung_name
|
||||||
|
philips_name=$(echo "$json" | jq -r '[.[] | select(.description | contains("PHL 223V5"))][0].name // empty')
|
||||||
|
samsung_name=$(echo "$json" | jq -r '[.[] | select(.description | contains("LS27A600U"))][0].name // empty')
|
||||||
|
|
||||||
|
local -a others=()
|
||||||
|
while IFS= read -r name; do
|
||||||
|
[[ -n "$name" ]] && others+=("$name")
|
||||||
|
done < <(echo "$json" | jq -r '.[] | select(.name != "eDP-1") | select(.description | test("PHL 223V5|LS27A600U") | not) | .name')
|
||||||
|
|
||||||
|
local has_externals=false
|
||||||
|
[[ -n "$philips_name" || -n "$samsung_name" || ${#others[@]} -gt 0 ]] && has_externals=true
|
||||||
|
|
||||||
|
# Lid fermé + aucun externe → veille
|
||||||
|
if is_lid_closed && [[ "$has_externals" == false ]]; then
|
||||||
|
systemctl suspend
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# eDP-1 : actif si lid ouvert, désactivé si lid fermé
|
||||||
|
if is_lid_closed; then
|
||||||
|
hyprctl keyword monitor "eDP-1,disable"
|
||||||
|
else
|
||||||
|
hyprctl keyword monitor "eDP-1,preferred,0x0,1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Philips portrait (1920x0, à droite de eDP-1)
|
||||||
|
[[ -n "$philips_name" ]] && \
|
||||||
|
hyprctl keyword monitor "$philips_name,1920x1080@60,1920x0,1,transform,1"
|
||||||
|
|
||||||
|
# Samsung (3000x0 = 1920 eDP-1 + 1080 Philips portrait)
|
||||||
|
[[ -n "$samsung_name" ]] && \
|
||||||
|
hyprctl keyword monitor "$samsung_name,2560x1440@74.971,3000x0,1"
|
||||||
|
|
||||||
|
# Écrans inconnus (à droite de Samsung)
|
||||||
|
local x=5560
|
||||||
|
for name in "${others[@]}"; do
|
||||||
|
hyprctl keyword monitor "$name,preferred,${x}x0,1"
|
||||||
|
((x += 1920))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
36
hypr/.config/hypr/monitor-menu.sh
Executable file
36
hypr/.config/hypr/monitor-menu.sh
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# Menu de sélection des modes d'affichage pour Hyprland
|
||||||
|
# Utilise fuzzel comme sélecteur
|
||||||
|
|
||||||
|
# Options du menu
|
||||||
|
menu_items="🏠 Internal - Écran portable seul
|
||||||
|
🖥️ Desk - Bureau (2 écrans externes)
|
||||||
|
🎒 Nomad - Portable + externe(s)
|
||||||
|
🔄 Auto - Détection automatique"
|
||||||
|
|
||||||
|
# Afficher le menu et capturer la sélection
|
||||||
|
selected=$(echo "$menu_items" | fuzzel --dmenu --prompt="Mode d'affichage: " --width=40 --lines=4)
|
||||||
|
|
||||||
|
# Extraire le mode de la sélection
|
||||||
|
case "$selected" in
|
||||||
|
*"Internal"*)
|
||||||
|
mode="internal"
|
||||||
|
;;
|
||||||
|
*"Desk"*)
|
||||||
|
mode="desk"
|
||||||
|
;;
|
||||||
|
*"Nomad"*)
|
||||||
|
mode="nomad"
|
||||||
|
;;
|
||||||
|
*"Auto"*)
|
||||||
|
mode="auto"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Annulation ou sélection invalide
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Exécuter le changement de mode
|
||||||
|
~/.config/hypr/monitor-manager.sh "$mode"
|
||||||
4
hypr/.config/hypr/monitors.conf
Normal file
4
hypr/.config/hypr/monitors.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# eDP-1 toujours à scale 1 dès le boot
|
||||||
|
monitor=eDP-1,preferred,auto,1
|
||||||
|
# Catch-all pour les autres
|
||||||
|
monitor=,preferred,auto,auto
|
||||||
20
hypr/.config/hypr/workspaces.conf
Normal file
20
hypr/.config/hypr/workspaces.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Quand un moniteur est absent, ses workspaces rejoignent eDP-1 automatiquement
|
||||||
|
# → tous les 10 workspaces sont toujours accessibles
|
||||||
|
|
||||||
|
# eDP-1 (laptop) : 1-4
|
||||||
|
workspace = 1, monitor:eDP-1, default:true
|
||||||
|
workspace = 2, monitor:eDP-1
|
||||||
|
workspace = 3, monitor:eDP-1
|
||||||
|
workspace = 4, monitor:eDP-1
|
||||||
|
|
||||||
|
# DVI-I-1 (Samsung) : 5-7
|
||||||
|
workspace = 5, monitor:DVI-I-1, default:true
|
||||||
|
workspace = 6, monitor:DVI-I-1
|
||||||
|
workspace = 7, monitor:DVI-I-1
|
||||||
|
|
||||||
|
# DVI-I-2 (Philips portrait) : 8-10
|
||||||
|
workspace = 8, monitor:DVI-I-2
|
||||||
|
workspace = 9, monitor:DVI-I-2
|
||||||
|
workspace = 10, monitor:DVI-I-2
|
||||||
|
|
||||||
|
workspace = special, gapsout:100, gapsin:20
|
||||||
58
hyprland/.config/gammastep/config.ini
Normal file
58
hyprland/.config/gammastep/config.ini
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
; Global settings
|
||||||
|
[general]
|
||||||
|
; Set the day and night screen temperatures
|
||||||
|
temp-day=5700
|
||||||
|
temp-night=4000
|
||||||
|
; Disable the smooth fade between temperatures when Redshift starts and stops.
|
||||||
|
; 0 will cause an immediate change between screen temperatures.
|
||||||
|
; 1 will gradually apply the new screen temperature over a couple of seconds.
|
||||||
|
fade=1
|
||||||
|
; Solar elevation thresholds.
|
||||||
|
; By default, Redshift will use the current elevation of the sun to determine
|
||||||
|
; whether it is daytime, night or in transition (dawn/dusk). When the sun is
|
||||||
|
; above the degrees specified with elevation-high it is considered daytime and
|
||||||
|
; below elevation-low it is considered night.
|
||||||
|
;elevation-high=3
|
||||||
|
;elevation-low=-6
|
||||||
|
; Custom dawn/dusk intervals.
|
||||||
|
; Instead of using the solar elevation, the time intervals of dawn and dusk
|
||||||
|
; can be specified manually. The times must be specified as HH:MM in 24-hour
|
||||||
|
; format.
|
||||||
|
;dawn-time=6:00-7:45
|
||||||
|
;dusk-time=18:35-20:15
|
||||||
|
; Set the screen brightness. Default is 1.0.
|
||||||
|
; brightness=0.8
|
||||||
|
; It is also possible to use different settings for day and night
|
||||||
|
; since version 1.8.
|
||||||
|
brightness-day=1
|
||||||
|
brightness-night=0.7
|
||||||
|
; Set the screen gamma (for all colors, or each color channel
|
||||||
|
; individually)
|
||||||
|
; gamma=0.8
|
||||||
|
;gamma=0.8:0.7:0.8
|
||||||
|
; This can also be set individually for day and night since
|
||||||
|
; version 1.10.
|
||||||
|
gamma-day=0.8:0.7:0.8
|
||||||
|
gamma-night=0.7
|
||||||
|
; Set the location-provider: 'geoclue2', 'manual'.
|
||||||
|
; The location provider settings are in a different section.
|
||||||
|
location-provider=manual
|
||||||
|
; Set the adjustment-method: 'randr', 'vidmode', 'drm', 'wayland'.
|
||||||
|
; 'randr' is the preferred X11 method, 'vidmode' is an older API
|
||||||
|
; that works in some cases when 'randr' does not.
|
||||||
|
; The adjustment method settings are in a different section.
|
||||||
|
adjustment-method=wayland
|
||||||
|
; Configuration of the location-provider:
|
||||||
|
; type 'gammastep -l PROVIDER:help' to see the settings.
|
||||||
|
; ex: 'gammastep -l manual:help'
|
||||||
|
; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
|
||||||
|
; are negative numbers.
|
||||||
|
[manual]
|
||||||
|
lat=46.2
|
||||||
|
lon=5.7
|
||||||
|
; Configuration of the adjustment-method
|
||||||
|
; type 'gammastep -m METHOD:help' to see the settings.
|
||||||
|
; ex: 'gammastep -m randr:help'
|
||||||
|
; In this example, randr is configured to adjust only screen 0.
|
||||||
|
; Note that the numbering starts from 0, so this is actually the first screen.
|
||||||
|
; If this option is not specified, Redshift will try to adjust _all_ screens.
|
||||||
23
hyprland/.config/mako/config
Normal file
23
hyprland/.config/mako/config
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
sort=-time
|
||||||
|
layer=overlay
|
||||||
|
background-color=#282828
|
||||||
|
width=300
|
||||||
|
height=110
|
||||||
|
border-size=2
|
||||||
|
border-color=#88c0d0
|
||||||
|
border-radius=5
|
||||||
|
icons=0
|
||||||
|
max-icon-size=64
|
||||||
|
default-timeout=5000
|
||||||
|
ignore-timeout=1
|
||||||
|
font=monospace 10
|
||||||
|
|
||||||
|
[urgency=low]
|
||||||
|
border-color=#ebdbb2
|
||||||
|
|
||||||
|
[urgency=normal]
|
||||||
|
border-color=#d65d0e
|
||||||
|
|
||||||
|
[urgency=high]
|
||||||
|
border-color=#cc241d
|
||||||
|
default-timeout=0
|
||||||
127
hyprland/.config/rofi-pass/config
Normal file
127
hyprland/.config/rofi-pass/config
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# permanently set alternative root dir. Use ":" to separate multiple roots
|
||||||
|
# which can be switched at runtime with shift+left/right
|
||||||
|
# root=/path/to/root
|
||||||
|
|
||||||
|
# rofi command. Make sure to have "$@" as last argument
|
||||||
|
_rofi () {
|
||||||
|
rofi -i -no-auto-select "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# default command to generate passwords
|
||||||
|
_pwgen () {
|
||||||
|
pwgen -y "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# image viewer to display qrcode of selected entry
|
||||||
|
# qrencode is needed to generate the image and a viewer
|
||||||
|
# that can read from pipes. Known viewers to work are feh and display
|
||||||
|
_image_viewer () {
|
||||||
|
# feh -
|
||||||
|
display
|
||||||
|
}
|
||||||
|
|
||||||
|
# It is possible to use wl-copy and wl-paste from wl-clipboard
|
||||||
|
# Just uncomment the lines with wl-copy and wl-paste
|
||||||
|
# and comment the xclip lines
|
||||||
|
#
|
||||||
|
_clip_in_primary() {
|
||||||
|
# xclip
|
||||||
|
wl-copy-p
|
||||||
|
}
|
||||||
|
|
||||||
|
_clip_in_clipboard() {
|
||||||
|
#xclip -selection clipboard
|
||||||
|
wl-copy
|
||||||
|
}
|
||||||
|
|
||||||
|
_clip_out_primary() {
|
||||||
|
# xclip -o
|
||||||
|
wl-paste -p
|
||||||
|
}
|
||||||
|
|
||||||
|
_clip_out_clipboard() {
|
||||||
|
# xclip --selection clipboard -o
|
||||||
|
wl-paste
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# xdotool needs the keyboard layout to be set using setxkbmap
|
||||||
|
# You can do this in your autostart scripts (e.g. xinitrc)
|
||||||
|
|
||||||
|
# If for some reason, you cannot do this, you can set the command here.
|
||||||
|
# and set fix_layout to true
|
||||||
|
fix_layout=true
|
||||||
|
|
||||||
|
layout_cmd () {
|
||||||
|
setxkbmap fr
|
||||||
|
}
|
||||||
|
|
||||||
|
# fields to be used
|
||||||
|
URL_field='url'
|
||||||
|
USERNAME_field='user'
|
||||||
|
AUTOTYPE_field='autotype'
|
||||||
|
|
||||||
|
# delay to be used for :delay keyword
|
||||||
|
delay=2
|
||||||
|
|
||||||
|
# rofi-pass needs to close itself before it can type passwords. Set delay here.
|
||||||
|
wait=0.2
|
||||||
|
|
||||||
|
# delay between keypresses when typing (in ms)
|
||||||
|
xdotool_delay=12
|
||||||
|
|
||||||
|
## Programs to be used
|
||||||
|
# Editor
|
||||||
|
EDITOR='gvim -f'
|
||||||
|
|
||||||
|
# Browser
|
||||||
|
BROWSER='xdg-open'
|
||||||
|
|
||||||
|
## Misc settings
|
||||||
|
|
||||||
|
default_do='menu' # menu, autotype, copyPass, typeUser, typePass, copyUser, copyUrl, viewEntry, typeMenu, actionMenu, copyMenu, openUrl
|
||||||
|
auto_enter='false'
|
||||||
|
notify='false'
|
||||||
|
default_autotype='user :tab pass'
|
||||||
|
|
||||||
|
# color of the help messages
|
||||||
|
# leave empty for autodetection
|
||||||
|
help_color="#4872FF"
|
||||||
|
|
||||||
|
# Clipboard settings
|
||||||
|
# Possible options: primary, clipboard, both
|
||||||
|
clip=primary
|
||||||
|
|
||||||
|
# Seconds before clearing pass from clipboard
|
||||||
|
clip_clear=45
|
||||||
|
|
||||||
|
## Options for generating new password entries
|
||||||
|
|
||||||
|
# open new password entries in editor
|
||||||
|
edit_new_pass="true"
|
||||||
|
|
||||||
|
# default_user is also used for password files that have no user field.
|
||||||
|
default_user=:filename
|
||||||
|
#default_user="${ROFI_PASS_DEFAULT_USER-$(whoami)}"
|
||||||
|
#default_user2=mary_ann
|
||||||
|
#password_length=12
|
||||||
|
|
||||||
|
# Custom Keybindings
|
||||||
|
autotype="Alt+1"
|
||||||
|
type_user="Alt+2"
|
||||||
|
type_pass="Alt+3"
|
||||||
|
open_url="Alt+4"
|
||||||
|
copy_name="Alt+u"
|
||||||
|
copy_url="Alt+l"
|
||||||
|
copy_pass="Alt+p"
|
||||||
|
show="Alt+o"
|
||||||
|
copy_entry="Alt+2"
|
||||||
|
type_entry="Alt+1"
|
||||||
|
copy_menu="Alt+c"
|
||||||
|
action_menu="Alt+a"
|
||||||
|
type_menu="Alt+t"
|
||||||
|
help="Alt+h"
|
||||||
|
switch="Alt+x"
|
||||||
|
|
||||||
|
clipboard_backend=wl-clipboard
|
||||||
|
backend=wtype
|
||||||
18
hyprland/.config/rofi/config.rasi
Normal file
18
hyprland/.config/rofi/config.rasi
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
configuration {
|
||||||
|
terminal: "kitty";
|
||||||
|
modi: "combi,window,drun";
|
||||||
|
combi-modi: "drun,window";
|
||||||
|
font: "Noto Sans Bold 10";
|
||||||
|
show-icons: true;
|
||||||
|
icon-theme: "Tela circle dark";
|
||||||
|
combi-hide-mode-prefix: true;
|
||||||
|
drun-show-actions: true;
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
disable-history: false;
|
||||||
|
fullscreen: false;
|
||||||
|
hide-scrollbar: true;
|
||||||
|
sidebar-mode: false;
|
||||||
|
auto-select: false;
|
||||||
|
}
|
||||||
|
@theme "/home/lafrite/.local/share/rofi/rofi-themes-collection/themes/spotlight-dark.rasi"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/kanata.service
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/msmtp-queue.path
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/usr/lib/systemd/user/pipewire.service
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/voxtype.service
|
||||||
14
hyprland/.config/systemd/user/kanata.service
Normal file
14
hyprland/.config/systemd/user/kanata.service
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Kanata keyboard remapper
|
||||||
|
Documentation=https://github.com/jtroo/kanata
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin
|
||||||
|
Environment=DISPLAY=:0
|
||||||
|
Environment=HOME=/home/lafrite/
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/kanata --cfg /home/lafrite/scripts/Cloned/arsenik/kanata/kanata.kbd
|
||||||
|
Restart=no
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
9
hyprland/.config/systemd/user/mbsync.service
Normal file
9
hyprland/.config/systemd/user/mbsync.service
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=mbsync mail sync
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/mbsync -a
|
||||||
|
ExecStartPost=/usr/bin/notmuch new
|
||||||
|
ExecStartPost=/bin/sh -c 'date > ~/.local/share/mbsync/last-sync'
|
||||||
9
hyprland/.config/systemd/user/mbsync.timer
Normal file
9
hyprland/.config/systemd/user/mbsync.timer
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=mbsync every 5 minutes
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=1m
|
||||||
|
OnUnitActiveSec=5m
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
18
hyprland/.config/systemd/user/mpd.service
Normal file
18
hyprland/.config/systemd/user/mpd.service
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Music Player Daemon
|
||||||
|
Documentation=man:mpd(1) man:mpd.conf(5)
|
||||||
|
After=network.target sound.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/usr/bin/mpd --systemd %E/mpd/mdp.conf
|
||||||
|
|
||||||
|
#WatchdogSec=120
|
||||||
|
|
||||||
|
LimitRTPRIO=40
|
||||||
|
LimitRTTIME=infinity
|
||||||
|
LimitMEMLOCK=64M
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
Also=mpd.socket
|
||||||
9
hyprland/.config/systemd/user/mpd.socket
Normal file
9
hyprland/.config/systemd/user/mpd.socket
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Socket]
|
||||||
|
ListenStream=%t/mpd/socket
|
||||||
|
ListenStream=6600
|
||||||
|
Backlog=5
|
||||||
|
KeepAlive=true
|
||||||
|
PassCredentials=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sockets.target
|
||||||
9
hyprland/.config/systemd/user/msmtp-queue.path
Normal file
9
hyprland/.config/systemd/user/msmtp-queue.path
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Watch msmtp queue and flush immediately
|
||||||
|
|
||||||
|
[Path]
|
||||||
|
PathChanged=%h/.msmtp/queue
|
||||||
|
Unit=msmtp-queue.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
7
hyprland/.config/systemd/user/msmtp-queue.service
Normal file
7
hyprland/.config/systemd/user/msmtp-queue.service
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Flush msmtp queue
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/msmtp-queue --run
|
||||||
|
ExecStartPost=/usr/bin/maildir-rank-addr
|
||||||
9
hyprland/.config/systemd/user/msmtp-queue.timer
Normal file
9
hyprland/.config/systemd/user/msmtp-queue.timer
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Flush msmtp queue every 10 minutes
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=1m
|
||||||
|
OnUnitActiveSec=10m
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
1
hyprland/.config/systemd/user/sockets.target.wants/mpd.socket
Symbolic link
1
hyprland/.config/systemd/user/sockets.target.wants/mpd.socket
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/mpd.socket
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/usr/lib/systemd/user/pipewire.socket
|
||||||
1
hyprland/.config/systemd/user/timers.target.wants/mbsync.timer
Symbolic link
1
hyprland/.config/systemd/user/timers.target.wants/mbsync.timer
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/mbsync.timer
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/msmtp-queue.timer
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/lafrite/.config/systemd/user/vdirsyncer.timer
|
||||||
7
hyprland/.config/systemd/user/vdirsyncer.service
Normal file
7
hyprland/.config/systemd/user/vdirsyncer.service
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=vdirsyncer sync
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/vdirsyncer sync
|
||||||
9
hyprland/.config/systemd/user/vdirsyncer.timer
Normal file
9
hyprland/.config/systemd/user/vdirsyncer.timer
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=vdirsyncer sync every 15 minutes
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=2m
|
||||||
|
OnUnitActiveSec=15m
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
17
hyprland/.config/systemd/user/voxtype.service
Normal file
17
hyprland/.config/systemd/user/voxtype.service
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Voxtype push-to-talk voice-to-text daemon
|
||||||
|
Documentation=https://voxtype.io
|
||||||
|
PartOf=graphical-session.target
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/voxtype daemon
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
# Ensure we have access to the display
|
||||||
|
Environment=XDG_RUNTIME_DIR=%t
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical-session.target
|
||||||
111
hyprland/.config/waybar/config
Normal file
111
hyprland/.config/waybar/config
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
[{
|
||||||
|
"layer": "top",
|
||||||
|
"output": "eDP-1",
|
||||||
|
"height": 30,
|
||||||
|
"modules-left": ["sway/mode","sway/window" ],
|
||||||
|
"modules-center": ["sway/workspaces" ],
|
||||||
|
"modules-right": ["pulseaudio", "battery", "tray", "clock"],
|
||||||
|
"sway/window": {
|
||||||
|
"max-length": 50
|
||||||
|
},
|
||||||
|
"sway/workspaces": {
|
||||||
|
"all-outputs": true
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%a, %d. %b %H:%M}",
|
||||||
|
"on-click": "gnome-calendar"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 21,
|
||||||
|
"spacing": 10,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"layer": "bottom",
|
||||||
|
"position": "bottom",
|
||||||
|
"output": "DP-2",
|
||||||
|
"height": 30,
|
||||||
|
"modules-left": ["sway/workspaces", "sway/mode"],
|
||||||
|
"modules-center": ["sway/window"],
|
||||||
|
"modules-right": ["pulseaudio", "battery", "tray", "clock"],
|
||||||
|
"sway/window": {
|
||||||
|
"max-length": 50
|
||||||
|
},
|
||||||
|
"sway/workspaces": {
|
||||||
|
"all-outputs": true
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%a, %d. %b %H:%M}",
|
||||||
|
"on-click": "gnome-calendar"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 21,
|
||||||
|
"spacing": 10,
|
||||||
|
}
|
||||||
|
}]
|
||||||
72
hyprland/.config/waybar/config_hyprland
Normal file
72
hyprland/.config/waybar/config_hyprland
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
[{
|
||||||
|
"layer": "top",
|
||||||
|
"output": ["eDP-1", "DVI-I-1"],
|
||||||
|
"height": 30,
|
||||||
|
"spacing": 0,
|
||||||
|
"modules-left": ["hyprland/workspaces"],
|
||||||
|
"modules-center": [],
|
||||||
|
"modules-right": ["mpris", "pulseaudio", "battery", "tray", "clock"],
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
"on-click": "activate",
|
||||||
|
"disable-scroll": true,
|
||||||
|
"all-outputs": true,
|
||||||
|
"show-special": false,
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"*": [1, 2, 3, 4]
|
||||||
|
},
|
||||||
|
"format": "{id}"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%a %d %b %H:%M}",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"on-click": "gnome-calendar"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{volume}% {icon}",
|
||||||
|
"format-bluetooth": "{volume}% {icon}",
|
||||||
|
"format-bluetooth-muted": " {icon}",
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 22,
|
||||||
|
"spacing": 10
|
||||||
|
},
|
||||||
|
"mpris": {
|
||||||
|
"format": "{player_icon} ",
|
||||||
|
"format-paused": "{player_icon} ",
|
||||||
|
"format-stopped": "",
|
||||||
|
"tooltip-format": "{title} — {artist}",
|
||||||
|
"player-icons": {
|
||||||
|
"default": "",
|
||||||
|
"spotify": "",
|
||||||
|
"firefox": "",
|
||||||
|
"chromium": "",
|
||||||
|
"mpv": "",
|
||||||
|
"vlc": ""
|
||||||
|
},
|
||||||
|
"on-click": "playerctl play-pause",
|
||||||
|
"on-scroll-up": "playerctl next",
|
||||||
|
"on-scroll-down": "playerctl previous"
|
||||||
|
}
|
||||||
|
}]
|
||||||
23
hyprland/.config/waybar/gruvbox.css
Normal file
23
hyprland/.config/waybar/gruvbox.css
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
@define-color background #282828;
|
||||||
|
@define-color foreground #ebdbb2;
|
||||||
|
@define-color black #282828;
|
||||||
|
@define-color red #cc241d;
|
||||||
|
@define-color green #98971a;
|
||||||
|
@define-color yellow #d79921;
|
||||||
|
@define-color blue #458588;
|
||||||
|
@define-color magenta #b16286;
|
||||||
|
@define-color cyan #689d6a;
|
||||||
|
@define-color white #a89984;
|
||||||
|
@define-color aqua #689d6a;
|
||||||
|
@define-color orange #d65d0e;
|
||||||
|
|
||||||
|
@define-color magenta_b #d3869b;
|
||||||
|
@define-color cyan_b #8ec07c;
|
||||||
|
@define-color yellow_b #fabd2f;
|
||||||
|
@define-color white_b #ebdbb2;
|
||||||
|
@define-color black_b #928374;
|
||||||
|
@define-color red_b #fb4934;
|
||||||
|
@define-color green_b #b8bb26;
|
||||||
|
@define-color blue_b #83a598;
|
||||||
|
@define-color aqua_b #8ec07c;
|
||||||
|
@define-color orange_b #fe8010;
|
||||||
107
hyprland/.config/waybar/style.css
Normal file
107
hyprland/.config/waybar/style.css
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Noto Sans", "JetBrainsMono Nerd Font", monospace;
|
||||||
|
font-size: 16px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@import "gruvbox.css";
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: #32302f;
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workspaces */
|
||||||
|
#workspaces {
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 7px;
|
||||||
|
background: transparent;
|
||||||
|
color: @white;
|
||||||
|
border-radius: 6px;
|
||||||
|
min-width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
color: rgba(168, 153, 132, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background: rgba(214, 93, 14, 0.25);
|
||||||
|
color: @orange_b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.visible:not(.active) {
|
||||||
|
background: rgba(69, 133, 136, 0.25);
|
||||||
|
color: @blue_b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(168, 153, 132, 0.15);
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mode (sway) */
|
||||||
|
#mode {
|
||||||
|
background: @red;
|
||||||
|
color: @foreground;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin: 4px 2px;
|
||||||
|
padding: 0 10px;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Right modules */
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#mpris,
|
||||||
|
#tray {
|
||||||
|
padding: 0 8px;
|
||||||
|
margin: 0;
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: @red_b;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
color: @white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
-gtk-icon-effect: highlight;
|
||||||
|
background-color: @red;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
89
hyprland/.local/bin/sway/rofi_screenshot.sh
Executable file
89
hyprland/.local/bin/sway/rofi_screenshot.sh
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
#! /usr/bin/zsh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PICTURES_DIR="$(xdg-user-dir PICTURES)"
|
||||||
|
ZK_NOTEBOOK_DIR="/home/lafrite/Nextcloud/Documents/zettelkasten/"
|
||||||
|
|
||||||
|
monitor="$(hyprctl monitors -j | jq '[.[].focused] | index(true)')"
|
||||||
|
# monitor="$(swaymsg -t get_outputs | jq '[.[].focused] | index(true)')"
|
||||||
|
alias myrofi="fuzzel --dmenu"
|
||||||
|
# alias myrofi="rofi -dmenu -matching fuzzy -i -sort -sorting-method fzf -monitor $monitor"
|
||||||
|
|
||||||
|
select_window() {
|
||||||
|
declare -A windows
|
||||||
|
|
||||||
|
swaymsg -t get_tree |
|
||||||
|
jq -r '..|.nodes? + .floating_nodes?|arrays|select(length > 0)|.[]|select((.nodes + .floating_nodes | length) == 0)|select(.visible)|(.app_id + ": " + .name + "\n" + (.rect.x | tostring) + "," + (.rect.y | tostring) + " " + (.rect.width | tostring) + "x" + (.rect.height | tostring))' |
|
||||||
|
while read window_name; read geometry; do
|
||||||
|
windows[$window_name]="$geometry"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ${windows[$(print -l ${(@k)windows} | myrofi)]}
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
actions="Copy region to clipboard\nSave region to $PICTURES_DIR\nCopy window to clipboard\nSave window to $PICTURES_DIR\nSave region to zk"
|
||||||
|
|
||||||
|
if [[ "$(swaymsg -t get_outputs | jq length)" == "1" ]]; then
|
||||||
|
actions+="\nCopy screen to clipboard\nSave screen to $PICTURES_DIR"
|
||||||
|
else
|
||||||
|
actions+="\nCopy current monitor to clipboard\nSave current monitor to $PICTURES_DIR\nCopy all monitors to clipboard\nSave all monitors to $PICTURES_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
selection="$(echo "$actions" | myrofi -p "Take a screenshot")"
|
||||||
|
|
||||||
|
filename="$(date +'screenshot_%Y%m%d%H%M%s.png')"
|
||||||
|
imagepath="${PICTURES_DIR}/$filename"
|
||||||
|
zkpath="${ZK_NOTEBOOK_DIR}/fig/$filename"
|
||||||
|
case "$selection" in
|
||||||
|
"Copy region to clipboard")
|
||||||
|
grim -g "$(slurp)" - | wl-copy
|
||||||
|
notify-send "Region copied to clipboard"
|
||||||
|
;;
|
||||||
|
"Save region to $PICTURES_DIR")
|
||||||
|
grim -g "$(slurp)" "$imagepath"
|
||||||
|
reply=$(notify-send -A 'open,Open' -i "$imagepath" "Screenshot saved")
|
||||||
|
;;
|
||||||
|
"Save region to zk")
|
||||||
|
grim -g "$(slurp)" "$zkpath"
|
||||||
|
sh_path="../fig/${zkpath##*/}"
|
||||||
|
wl-copy $sh_path
|
||||||
|
reply=$(notify-send -A 'open,Open' -i "$imagepath" "Screenshot saved" "$sh_path is copied")
|
||||||
|
;;
|
||||||
|
"Copy window to clipboard")
|
||||||
|
grim -g "$(select_window)" - | wl-copy
|
||||||
|
notify-send "Window copied to clipboard"
|
||||||
|
;;
|
||||||
|
"Save window to $PICTURES_DIR")
|
||||||
|
grim -g "$(select_window)" "$imagepath"
|
||||||
|
reply=$(notify-send -A 'open,Open' -i "$imagepath" "Screenshot saved")
|
||||||
|
;;
|
||||||
|
"Copy current monitor to clipboard")
|
||||||
|
monitor="$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')"
|
||||||
|
grim -o $monitor - | wl-copy
|
||||||
|
notify-send "Monitor $monitor copied to clipboard"
|
||||||
|
;;
|
||||||
|
"Save current monitor to $PICTURES_DIR")
|
||||||
|
grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$imagepath"
|
||||||
|
reply=$(notify-send -A 'open,Open' -i "$imagepath" "Screenshot saved")
|
||||||
|
;;
|
||||||
|
"Copy screen to clipboard"|"Copy all monitors to clipboard")
|
||||||
|
grim - | wl-copy
|
||||||
|
notify-send "Screen copied to clipboard"
|
||||||
|
;;
|
||||||
|
"Save screen to $PICTURES_DIR"|"Save all monitors to $PICTURES_DIR")
|
||||||
|
grim "$imagepath"
|
||||||
|
reply=$(notify-send -A 'open,Open' -i "$imagepath" "Screenshot saved")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "$reply" == "2" ]]; then
|
||||||
|
nautilus -s $imagepath
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
51
khal/.config/khal/config
Normal file
51
khal/.config/khal/config
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
[calendars]
|
||||||
|
|
||||||
|
[[perso]]
|
||||||
|
path = ~/.calendars/perso/
|
||||||
|
color = light cyan
|
||||||
|
|
||||||
|
[[famille]]
|
||||||
|
path = ~/.calendars/famille/
|
||||||
|
color = light green
|
||||||
|
|
||||||
|
[[personal_shared_by_margot]]
|
||||||
|
path = ~/.calendars/personal_shared_by_margot/
|
||||||
|
color = light magenta
|
||||||
|
|
||||||
|
[[contact_birthdays]]
|
||||||
|
path = ~/.calendars/contact_birthdays/
|
||||||
|
color = light red
|
||||||
|
|
||||||
|
[sqlite]
|
||||||
|
path = ~/.local/share/khal/khal.db
|
||||||
|
|
||||||
|
[locale]
|
||||||
|
local_timezone = Europe/Paris
|
||||||
|
default_timezone = Europe/Paris
|
||||||
|
timeformat = %H:%M
|
||||||
|
dateformat = %d/%m/%Y
|
||||||
|
datetimeformat = %d/%m/%Y %H:%M
|
||||||
|
longdateformat = %A %d %B %Y
|
||||||
|
longdatetimeformat = %A %d %B %Y %H:%M
|
||||||
|
weeknumbers = left
|
||||||
|
firstweekday = 0
|
||||||
|
|
||||||
|
[default]
|
||||||
|
highlight_event_days = true
|
||||||
|
|
||||||
|
[view]
|
||||||
|
bold_for_light_color = true
|
||||||
|
theme = dark
|
||||||
|
frame = color
|
||||||
|
event_view_always_visible = false
|
||||||
|
|
||||||
|
[highlight_days]
|
||||||
|
method = foreground
|
||||||
|
default_color = light cyan
|
||||||
|
multiple = light magenta
|
||||||
|
|
||||||
|
[keybindings]
|
||||||
|
new = a
|
||||||
|
view = e, enter
|
||||||
|
export = E
|
||||||
|
duplicate = p
|
||||||
14
maildir-rank-addr/.config/maildir-rank-addr/config
Normal file
14
maildir-rank-addr/.config/maildir-rank-addr/config
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
maildir = "~/Mail"
|
||||||
|
addresses = [
|
||||||
|
"benjamin.bertrand@opyte.org",
|
||||||
|
]
|
||||||
|
filters = [
|
||||||
|
"no-reply",
|
||||||
|
"noreply",
|
||||||
|
"newsletter",
|
||||||
|
"mailer-daemon",
|
||||||
|
"postmaster",
|
||||||
|
"bounce",
|
||||||
|
"@.*\\.mailer\\.",
|
||||||
|
]
|
||||||
|
outputpath = "~/.cache/maildir-rank-addr/addressbook.tsv"
|
||||||
@@ -124,7 +124,7 @@ MusicDir = "/media/documents/musique/"
|
|||||||
# Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for
|
# Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for
|
||||||
# debugging). You can enter more than one driver as a colon-separated
|
# debugging). You can enter more than one driver as a colon-separated
|
||||||
# list. The first working driver will be used.
|
# list. The first working driver will be used.
|
||||||
#SoundDriver = JACK:ALSA:OSS
|
SoundDriver = PULSEAUDIO:JACK:ALSA:OSS
|
||||||
|
|
||||||
# Jack output settings.
|
# Jack output settings.
|
||||||
#JackClientName = "moc"
|
#JackClientName = "moc"
|
||||||
|
|||||||
422
mpd/.config/mpd/mdp.conf
Normal file
422
mpd/.config/mpd/mdp.conf
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
# 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 "~/Musique"
|
||||||
|
#
|
||||||
|
# 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 "~/.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"
|
||||||
|
|
||||||
|
# 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 "syslog"
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# 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 "~/.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"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# 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 "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"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
10
mpd/.config/ncmpcpp/bindings
Normal file
10
mpd/.config/ncmpcpp/bindings
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
def_key "j"
|
||||||
|
scroll_down
|
||||||
|
def_key "k"
|
||||||
|
scroll_up
|
||||||
|
|
||||||
|
def_key "g"
|
||||||
|
move_home
|
||||||
|
|
||||||
|
def_key "G"
|
||||||
|
move_end
|
||||||
1
mpd/.config/ncmpcpp/config
Normal file
1
mpd/.config/ncmpcpp/config
Normal file
@@ -0,0 +1 @@
|
|||||||
|
execute_on_song_change = notify-send "Now Playing" "$(mpc --format '%title% \n%artist% - %album%' current)"
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
auto-reload yes
|
auto-reload yes
|
||||||
reload-time 30
|
reload-time 30
|
||||||
browser chromium
|
# browser "chromium --incognito"
|
||||||
macro y set browser "tmux new-window mpv %u"; open-in-browser ; set browser chromium
|
browser "firefox --private-window"
|
||||||
macro Y set browser "mpv %u"; open-in-browser ; set browser chromium
|
macro y set browser "tmux new-window mpv %u"; open-in-browser ; set browser "firefox --private-window"
|
||||||
|
macro Y set browser "mpv %u"; open-in-browser ; set browser "chromium --incognito"
|
||||||
|
|
||||||
unbind-key h
|
unbind-key h
|
||||||
unbind-key j
|
unbind-key j
|
||||||
@@ -14,6 +15,13 @@ bind-key j down
|
|||||||
bind-key k up
|
bind-key k up
|
||||||
bind-key l open
|
bind-key l open
|
||||||
|
|
||||||
|
unbind-key G
|
||||||
|
bind-key G end
|
||||||
|
bind-key s sort
|
||||||
|
unbind-key g
|
||||||
|
bind-key g home
|
||||||
|
bind-key S rev-sort
|
||||||
|
|
||||||
color background default default
|
color background default default
|
||||||
color listnormal default default
|
color listnormal default default
|
||||||
color listnormal_unread default default
|
color listnormal_unread default default
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "Tech"
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw "Tech"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw "Tech"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCeeFfhMcJa1kjtfZAGskOCA "Tech"
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCsRIv1fsbnQRIPKmUQbRzZg "Tech"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCsRIv1fsbnQRIPKmUQbRzZg "Tech"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUQo7nzH1sXVpzL92VesANw "Tech"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCUQo7nzH1sXVpzL92VesANw "Tech"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCV0qA-eDDICsRR9rPcnG7tw "Tech"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg "Tech"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCVRJ6D343dX-x730MRP8tNw "Tech"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCG5Ph9Mm6UEQLJJ-kGIC2AQ "Tech" "OneMarcFifty"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCWedHS9qKebauVIK2J7383g "Tech" "Underscore_"
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC9C07cryUrKzLuAzwITPA3A "SC2" "SC2HL"
|
|
||||||
|
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCr_3nQ4eRCwm_XUDpf62MAg "Information "Partager C'est Sympa"
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCg7HRuQ93hl9v8dTSt_XDHA "Ferme" "~Banabé"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCg7HRuQ93hl9v8dTSt_XDHA "Ferme" "~Banabé"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCsM4_jihNFYe4CtSkXvDR-Q "Ferme" "~permaculture agroécologie etc..."
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCsM4_jihNFYe4CtSkXvDR-Q "Ferme" "~permaculture agroécologie etc..."
|
||||||
@@ -17,21 +20,25 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UC3-gwlrYQi5Q3t00Tyr2tmQ "Fe
|
|||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCSKdJoK73RLL-zOs4Sq_tTQ "Ferme" "Loic le jardineur"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCSKdJoK73RLL-zOs4Sq_tTQ "Ferme" "Loic le jardineur"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCJfcABj0bAqFrK3tjhGsSpw "Ferme" "Theud Bald"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCJfcABj0bAqFrK3tjhGsSpw "Ferme" "Theud Bald"
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCL_r1ELEvAuN0peKUxI0Umw "Permaculture" "Geoff Lawton"
|
|
||||||
|
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCzVy7DiPyVvfiOvXF_XMs4Q "Apnée" "~Adam Freediver"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCzVy7DiPyVvfiOvXF_XMs4Q "Apnée" "~Adam Freediver"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCmCDB-4GipeUL6N9o4gJLqA "Sport" "Running Addict"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCG15zMwAB9qBpYrxL3z3byQ "Sport" "Quentin R Cycling"
|
||||||
|
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCRoFIKcVNGvv9Oimdb9FBGg "Jeux" "Hodgepodge"
|
||||||
|
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCJNItGjNhUx3Zz6W4OCVfHA "Bois" "~Passion renovation"
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCvDpfkniGG6WkX5L7DwyGaA "Bois" "Olivier Verdier"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCvDpfkniGG6WkX5L7DwyGaA "Bois" "Olivier Verdier"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC7TiJ6Tnxc_dSE42byTPMug "Bois" "Copain des copeaux"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC7TiJ6Tnxc_dSE42byTPMug "Bois" "Copain des copeaux"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC9fGq2-6FaftcegcIadLf6A "Bois" "Samuel Mamias"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC9fGq2-6FaftcegcIadLf6A "Bois" "Samuel Mamias"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCOuow_HIYmeaIqi42zVs3qg "Bois" "Kirby Meets Audio"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCOuow_HIYmeaIqi42zVs3qg "Bois" "Kirby Meets Audio"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC7FkqjV8SU5I8FCHXQSQe9Q "Bois" "Ishitani furniture"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC7FkqjV8SU5I8FCHXQSQe9Q "Bois" "Ishitani furniture"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCjaudhGC0gBfEtMyQYzT3pA "Bois" "Atelier Floky"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCJNItGjNhUx3Zz6W4OCVfHA "Chantier" "~Passion renovation"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCKt0CjXg6PRocxlCss90e8g "Chantier" "Clément Beraud"
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCRix1GJvSBNDpEFY561eSzw "DIY" "Laura Kampf"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCRix1GJvSBNDpEFY561eSzw "DIY" "Laura Kampf"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCjED9uS41ioeFuPfbR-OBlw "DIY" "Les frères Poulain"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCWimnuBF27nwOxgUBJ4qNeg "DIY" "Abrege"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC6x7GwJxuoABSosgVXDYtTw "DIY" "I like to make stuff"
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "Electronique" "GreatScott!"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "Electronique" "GreatScott!"
|
||||||
|
|
||||||
@@ -39,13 +46,24 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCP6qAy9q_Lkhzu2reZfun9g "Sk
|
|||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCjHh3N6jUJKdrtTqNorpRhg "Ski" "Bon appetit"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCjHh3N6jUJKdrtTqNorpRhg "Ski" "Bon appetit"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCdtrhMQTlTWNLGcmx1Qy80Q "Ski" "Fabien Maierhofer"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCdtrhMQTlTWNLGcmx1Qy80Q "Ski" "Fabien Maierhofer"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UChkpEJqHjX-tGmYoGf8jdGA "Escalade" "EpicTV Relais Vertical"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UChkpEJqHjX-tGmYoGf8jdGA "Escalade" "EpicTV Relais Vertical"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCJlvyoYGLr3UIV0oD4-aarA "Sports" "Riding zone"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCy0I5Hcl2k7dN4UdZTedfeQ "Sports" "Hit the road"
|
||||||
|
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCgkhWgBGRp0sdFy2MHDWfSg "Math" "El Ji"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCgkhWgBGRp0sdFy2MHDWfSg "Math" "El Ji"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw "Math" "3Blue1Brown"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw "Math" "3Blue1Brown"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA "Science "ScienceEtonnante"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCLXDNUOO3EQ80VmD9nQBHPg "Science "Fouloscopie"
|
||||||
|
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCoJtk2M8bme9KXTe6F3K-Yg "CLI" "The Mouseless Dev"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC8ENHE5xdFSwx71u3fDH5Xw "Vim" "ThePrimeagen"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC8ENHE5xdFSwx71u3fDH5Xw "Vim" "ThePrimeagen"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "Vim" "Greg Hurrel"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "Vim" "Greg Hurrel"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCs_AZuYXi6NA9tkdbhjItHQ "AdminSys" "Xavki"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCs_AZuYXi6NA9tkdbhjItHQ "AdminSys" "Xavki"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCvjgXvBlbQiydffZU7m1_aw "Programmation" "~Coding Train"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCOk-gHyjcWZNj3Br4oxwh0A "Homelab" "Techno Tim"
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCj_iGliGCkLcHSZ8eqVNPDQ "Programmation" "~Grafikart.fr"
|
https://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ "Homelab" "NetworkChuck"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCZNhwA1B5YqiY1nLzmM0ZRg "Homelab" "Christian Lempa"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCWQaM7SpSECp9FELz-cHzuQ "Cording" "Dream of Code"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCYeiozh-4QwuC1sjgCmB92w "Cording" "DevOps Toolbox"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCgdTVe88YVSrOZ9qKumhULQ "Geek" "Hardware Haven"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCLOAPb7ATQUs_nDs9ViLcMw "Programmation" "Benjamin Code"
|
||||||
|
https://www.youtube.com/feeds/videos.xml?channel_id=UCiZxJB0xWfPBE2omVZeWPpQ "Programmation" "Mehdio DataTV"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
" Use completion-nvim in every buffer
|
|
||||||
autocmd BufEnter * lua require'nvim-comp'.on_attach()
|
|
||||||
|
|
||||||
let g:completion_enable_snippet = 'UltiSnips'
|
|
||||||
let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy']
|
|
||||||
|
|
||||||
" Use <Tab> and <S-Tab> to navigate through popup menu
|
|
||||||
" inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
|
||||||
" inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
|
|
||||||
|
|
||||||
"map <c-p> to manually trigger completion
|
|
||||||
"imap <silent> <c-p> <Plug>(completion_trigger)
|
|
||||||
|
|
||||||
" Set completeopt to have a better completion experience
|
|
||||||
set completeopt=menuone,noinsert,noselect
|
|
||||||
|
|
||||||
" Avoid showing message extra message when using completion
|
|
||||||
set shortmess+=c
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
" Better window navigation
|
|
||||||
" nnoremap <C-h> <C-w>h
|
|
||||||
" nnoremap <C-j> <C-w>j
|
|
||||||
" nnoremap <C-k> <C-w>k
|
|
||||||
" nnoremap <C-l> <C-w>l
|
|
||||||
|
|
||||||
" Align blocks of text and keep them selected
|
|
||||||
vmap < <gv
|
|
||||||
vmap > >gv
|
|
||||||
|
|
||||||
" Automatically spell check last error in insert mode
|
|
||||||
inoremap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u
|
|
||||||
|
|
||||||
" Find files using Telescope command-line sugar.
|
|
||||||
nnoremap <leader>e <cmd>Telescope find_files<cr>
|
|
||||||
nnoremap <leader>g <cmd>Telescope live_grep<cr>
|
|
||||||
nnoremap <leader>b <cmd>Telescope buffers<cr>
|
|
||||||
nnoremap <leader>h <cmd>Telescope help_tags<cr>
|
|
||||||
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
" set leader key
|
|
||||||
let g:mapleader = "\<Space>"
|
|
||||||
|
|
||||||
syntax enable " Enables syntax highlighing
|
|
||||||
set hidden " Required to keep multiple buffers open multiple buffers
|
|
||||||
set wrap " Display long lines as just one line
|
|
||||||
set pumheight=10 " Makes popup menu smaller
|
|
||||||
set encoding=utf-8 " The encoding displayed
|
|
||||||
set fileencoding=utf-8 " The encoding written to file
|
|
||||||
set ruler " Show the cursor position all the time
|
|
||||||
set cmdheight=1 " More space for displaying messages
|
|
||||||
set iskeyword+=- " treat dash separated words as a word text object"
|
|
||||||
set mouse=a " Enable your mouse
|
|
||||||
set t_Co=256 " Support 256 colors
|
|
||||||
|
|
||||||
set conceallevel=0 " So that I can see `` in markdown files
|
|
||||||
set tabstop=4 " Insert 2 spaces for a tab
|
|
||||||
set shiftwidth=4 " Change the number of space characters inserted for indentation
|
|
||||||
set smarttab " Makes tabbing smarter will realize you have 2 vs 4
|
|
||||||
set expandtab " Converts tabs to spaces
|
|
||||||
set smartindent " Makes indenting smart
|
|
||||||
set autoindent " Good auto indent
|
|
||||||
set foldmethod=indent
|
|
||||||
|
|
||||||
set laststatus=2 " Always display the status line
|
|
||||||
|
|
||||||
set number " Line number
|
|
||||||
set relativenumber " Relative line number
|
|
||||||
set cursorline " Enable highlighting of the current line
|
|
||||||
set showtabline=1 " show tabs only when there are some
|
|
||||||
|
|
||||||
set background=dark " tell vim what the background color looks like
|
|
||||||
|
|
||||||
set nobackup " This is recommended by coc
|
|
||||||
set nowritebackup " This is recommended by coc
|
|
||||||
set noswapfile
|
|
||||||
|
|
||||||
set updatetime=300 " Faster completion
|
|
||||||
set timeoutlen=500 " By default timeoutlen is 1000 ms
|
|
||||||
|
|
||||||
set clipboard=unnamedplus " Copy paste between vim and everything else
|
|
||||||
|
|
||||||
set showmode " Display edition mode
|
|
||||||
"set noshowmode " We don't need to see things like -- INSERT -- anymore
|
|
||||||
|
|
||||||
set incsearch " hightlight while searching
|
|
||||||
set ignorecase " Ignore case while searching
|
|
||||||
set smartcase " Override ignorecase if search patern contains upper case
|
|
||||||
set wildmenu " Enable wildmenu
|
|
||||||
|
|
||||||
set spell " Enable spell checking
|
|
||||||
set spelllang=fr,en
|
|
||||||
|
|
||||||
set nrformats+=alpha " letter concidered as number for Ctrl-A or Ctrl-X
|
|
||||||
|
|
||||||
"set autochdir " Your working directory will always be the same as your working directory
|
|
||||||
|
|
||||||
execute "set colorcolumn=" . join(range(81,335), ',')
|
|
||||||
|
|
||||||
colorscheme zenburn
|
|
||||||
|
|
||||||
" Set completeopt to have a better completion experience
|
|
||||||
" set completeopt=menuone,noinsert,noselect
|
|
||||||
" set completeopt=menuone,noselect
|
|
||||||
|
|
||||||
" Avoid showing message extra message when using completion
|
|
||||||
set shortmess+=c
|
|
||||||
|
|
||||||
let g:indentLine_setConceal = 0
|
|
||||||
@@ -1,5 +1,20 @@
|
|||||||
require('plugins')
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.uv.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable", -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
vim.g.mapleader = ' ' -- Leaderkey
|
||||||
|
require("lazy").setup("plugins", {
|
||||||
|
concurrency = 5,
|
||||||
|
git = { filter = false },
|
||||||
|
})
|
||||||
require('settings')
|
require('settings')
|
||||||
require('mappings')
|
require('mappings')
|
||||||
|
|
||||||
require('lsp')
|
|
||||||
|
|||||||
36
nvim/.config/nvim/lazy-lock.json
Normal file
36
nvim/.config/nvim/lazy-lock.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "18aeab3d63d350dcf44d64c462cc489a3412af40" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
|
||||||
|
"gruvbox": { "branch": "master", "commit": "697c00291db857ca0af00ec154e5bd514a79191f" },
|
||||||
|
"harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" },
|
||||||
|
"mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "8e921c2b68571e978db5d4d3fef9c9a7f8755473" },
|
||||||
|
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" },
|
||||||
|
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "665525810630701b84181e4d9eefd24b49845b29" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "f9349d4d99e7d66403ae8bf4fbd357b154dca7a7" },
|
||||||
|
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "2795c26c916bb3c57dde308b82be51971fa92747" },
|
||||||
|
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
|
||||||
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" },
|
||||||
|
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
|
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
|
||||||
|
"vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
|
||||||
|
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
|
||||||
|
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
||||||
|
"vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" },
|
||||||
|
"vimtex": { "branch": "master", "commit": "182ad387e3f3107699483606c9a2b6648f8437b2" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||||
|
}
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
local has_words_before = function()
|
|
||||||
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
|
||||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
|
||||||
end
|
|
||||||
|
|
||||||
local feedkey = function(key, mode)
|
|
||||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
|
|
||||||
end
|
|
||||||
|
|
||||||
local lsp_symbols = {
|
|
||||||
Text = " (Text) ",
|
|
||||||
Method = " (Method)",
|
|
||||||
Function = " (Function)",
|
|
||||||
Constructor = " (Constructor)",
|
|
||||||
Field = " ﴲ (Field)",
|
|
||||||
Variable = "[] (Variable)",
|
|
||||||
Class = " (Class)",
|
|
||||||
Interface = " ﰮ (Interface)",
|
|
||||||
Module = " (Module)",
|
|
||||||
Property = " 襁 (Property)",
|
|
||||||
Unit = " (Unit)",
|
|
||||||
Value = " (Value)",
|
|
||||||
Enum = " 練 (Enum)",
|
|
||||||
Keyword = " (Keyword)",
|
|
||||||
Snippet = " (Snippet)",
|
|
||||||
Color = " (Color)",
|
|
||||||
File = " (File)",
|
|
||||||
Reference = " (Reference)",
|
|
||||||
Folder = " (Folder)",
|
|
||||||
EnumMember = " (EnumMember)",
|
|
||||||
Constant = " ﲀ (Constant)",
|
|
||||||
Struct = " ﳤ (Struct)",
|
|
||||||
Event = " (Event)",
|
|
||||||
Operator = " (Operator)",
|
|
||||||
TypeParameter = " (TypeParameter)",
|
|
||||||
}
|
|
||||||
|
|
||||||
local cmp = require'cmp'
|
|
||||||
cmp.setup{
|
|
||||||
completion = {
|
|
||||||
completeopt = "menuone,noinsert,noselect",
|
|
||||||
},
|
|
||||||
formatting = {
|
|
||||||
format = function(entry, vim_item)
|
|
||||||
-- fancy icons and a name of kind
|
|
||||||
vim_item.kind = lsp_symbols[vim_item.kind]
|
|
||||||
-- set a name for each source
|
|
||||||
vim_item.menu = ({
|
|
||||||
buffer = "[Buffer]",
|
|
||||||
nvim_lsp = "[LSP]",
|
|
||||||
vsnip = "[vSnip]",
|
|
||||||
path = "[Path]",
|
|
||||||
spell = "[Spell]",
|
|
||||||
})[entry.source.name]
|
|
||||||
return vim_item
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
vim.fn["vsnip#anonymous"](args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
-- ["<cr>"] = cmp.mapping.confirm({select = true, behavior = cmp.ConfirmBehavior.Replace}),
|
|
||||||
["<cr>"] = cmp.mapping.confirm({select = true, behavior = cmp.ConfirmBehavior.Insert}),
|
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
|
||||||
if vim.fn.pumvisible() == 1 then
|
|
||||||
feedkey("<C-n>", "n")
|
|
||||||
elseif vim.fn["vsnip#available"]() == 1 then
|
|
||||||
feedkey("<Plug>(vsnip-expand-or-jump)", "")
|
|
||||||
elseif has_words_before() then
|
|
||||||
cmp.complete()
|
|
||||||
else
|
|
||||||
fallback() -- The fallback function sends a already mapped key. In this case, it's probably `<Tab>`.
|
|
||||||
end
|
|
||||||
end, { "i", "s" }),
|
|
||||||
|
|
||||||
["<S-Tab>"] = cmp.mapping(function()
|
|
||||||
if vim.fn.pumvisible() == 1 then
|
|
||||||
feedkey("<C-p>", "n")
|
|
||||||
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
|
|
||||||
feedkey("<Plug>(vsnip-jump-prev)", "")
|
|
||||||
end
|
|
||||||
end, { "i", "s" }),
|
|
||||||
},
|
|
||||||
source = {
|
|
||||||
{ name = 'buffer' },
|
|
||||||
{ name = 'vsnip' },
|
|
||||||
{ name = 'path' },
|
|
||||||
{ name = 'spell' },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.cmd [[autocmd FileType TelescopePrompt lua require('cmp').setup.buffer { enabled = false }]]
|
|
||||||
vim.g.vsnip_snippet_dir = '~/.config/nvim/vsnips'
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
vim.g.maplocalleader = " "
|
|
||||||
|
|
||||||
vim.g.vimtex_compiler_latex = {}
|
|
||||||
vim.g.vimtex_compiler_latex["backend"] = 'nvim'
|
|
||||||
|
|
||||||
vim.g.vimtex_compiler_latex['backend'] = 'nvim'
|
|
||||||
vim.g.vimtex_compiler_latex['background'] = 1
|
|
||||||
vim.g.vimtex_compiler_latex[ 'build_dir'] = ''
|
|
||||||
vim.g.vimtex_compiler_latex[ 'callback'] = 0
|
|
||||||
vim.g.vimtex_compiler_latex[ 'continuous'] = 1
|
|
||||||
vim.g.vimtex_compiler_latex[ 'options'] = { '-pdf',
|
|
||||||
'-verbose',
|
|
||||||
'-file-line-error',
|
|
||||||
'-synctex=1',
|
|
||||||
'-interaction=nonstopmode',
|
|
||||||
'-silent',
|
|
||||||
'-shell-escape',
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.g.vimtex_view_method = 'zathura'
|
|
||||||
|
|
||||||
-- Les fichiers sty et cls sont vus comme des fichiers tex
|
|
||||||
vim.cmd("autocmd BufRead,BufNewFile *.{sty,cls} setlocal syntax=tex")
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
|
|
||||||
local nvim_lsp = require('lspconfig')
|
|
||||||
|
|
||||||
-- Use an on_attach function to only map the following keys
|
|
||||||
-- after the language server attaches to the current buffer
|
|
||||||
local on_attach = function(client, bufnr)
|
|
||||||
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
|
|
||||||
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
|
|
||||||
|
|
||||||
--Enable completion triggered by <c-x><c-o>
|
|
||||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
local opts = { noremap=true, silent=true }
|
|
||||||
|
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
-- See references
|
|
||||||
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
|
||||||
-- show documentation
|
|
||||||
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
|
||||||
-- Rename
|
|
||||||
buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
|
||||||
|
|
||||||
-- je sais pas ce c'est que ces workspaces
|
|
||||||
buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
|
||||||
buf_set_keymap('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
|
||||||
buf_set_keymap('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
|
||||||
-- ??
|
|
||||||
buf_set_keymap('n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
|
||||||
-- Details on diagnostics
|
|
||||||
buf_set_keymap('n', '<leader>d', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
|
|
||||||
-- Cycle over diagnostics
|
|
||||||
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
|
|
||||||
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
|
|
||||||
-- Get diagnostic on local list
|
|
||||||
buf_set_keymap('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
|
|
||||||
buf_set_keymap("n", "<leader>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
|
||||||
|
|
||||||
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
|
||||||
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
|
||||||
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
|
||||||
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
|
||||||
buf_set_keymap('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Use a loop to conveniently call 'setup' on multiple servers and
|
|
||||||
-- map buffer local keybindings when the language server attaches
|
|
||||||
local servers = { "texlab", "pyright", "vuels", "tsserver" }
|
|
||||||
for _, lsp in ipairs(servers) do
|
|
||||||
nvim_lsp[lsp].setup {
|
|
||||||
on_attach = on_attach,
|
|
||||||
flags = {
|
|
||||||
debounce_text_changes = 150,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
nvim_lsp.vuels.setup{
|
|
||||||
on_attach = function(client)
|
|
||||||
client.resolved_capabilities.document_formatting = true
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
@@ -1,22 +1,24 @@
|
|||||||
local map = vim.api.nvim_set_keymap
|
local map = vim.api.nvim_set_keymap
|
||||||
local default_opts = {noremap = true, silent = true}
|
local default_opts = {noremap = true, silent = true}
|
||||||
|
|
||||||
-- move around splits using Ctrl + {h,j,k,l}
|
|
||||||
map('n', '<C-h>', '<C-w>h', default_opts)
|
|
||||||
map('n', '<C-j>', '<C-w>j', default_opts)
|
|
||||||
map('n', '<C-k>', '<C-w>k', default_opts)
|
|
||||||
map('n', '<C-l>', '<C-w>l', default_opts)
|
|
||||||
|
|
||||||
-- Align blocks of text and keep them selected
|
-- Align blocks of text and keep them selected
|
||||||
map('v', '<', '<gv', {})
|
map('v', '<', '<gv', {})
|
||||||
map('v', '>', '>gv', {})
|
map('v', '>', '>gv', {})
|
||||||
|
|
||||||
|
|
||||||
-- Automatically spell check last error in insert mode
|
-- Automatically spell check last error in insert mode
|
||||||
map('i', '<c-f>', '<c-g>u<Esc>[s1z=`]a<c-g>u', default_opts)
|
map('i', '<c-f>', '<c-g>u<Esc>[s1z=`]a<c-g>u', default_opts)
|
||||||
|
|
||||||
-- Find files using Telescope command-line sugar.
|
-- Centering after moving half page or search
|
||||||
map('n', '<leader>e', '<cmd>Telescope find_files<cr>', {})
|
vim.keymap.set("n", "<C-d>", "<C-d>zz")
|
||||||
map('n', '<leader>g', '<cmd>Telescope live_grep<cr>', {})
|
vim.keymap.set("n", "<C-u>", "<C-u>zz")
|
||||||
map('n', '<leader>b', '<cmd>Telescope buffers<cr>', {})
|
vim.keymap.set("n", "n", "nzzzv")
|
||||||
map('n', '<leader>h', '<cmd>Telescope help_tags<cr>', {})
|
vim.keymap.set("n", "N", "Nzzzv")
|
||||||
|
|
||||||
|
-- Move block on visual mode
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||||
|
|
||||||
|
-- Diagnostic (erreurs LSP)
|
||||||
|
vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { desc = 'Show diagnostic' })
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Previous diagnostic' })
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Next diagnostic' })
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
-- Only required if you have packer configured as `opt`
|
|
||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
|
|
||||||
return require('packer').startup(function()
|
|
||||||
use 'morhetz/gruvbox'
|
|
||||||
|
|
||||||
-- Status line
|
|
||||||
use {
|
|
||||||
'hoob3rt/lualine.nvim',
|
|
||||||
config = function ()
|
|
||||||
require('lualine').setup{
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = 'gruvbox',
|
|
||||||
component_separators = {'', ''},
|
|
||||||
section_separators = {'', ''},
|
|
||||||
disabled_filetypes = {}
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = {'mode'},
|
|
||||||
lualine_b = {'branch'},
|
|
||||||
lualine_c = {'filename'},
|
|
||||||
lualine_x = {
|
|
||||||
{ 'diagnostics', sources = {"nvim_lsp"}, symbols = {error = ' ', warn = ' ', info = ' ', hint = ' '} },
|
|
||||||
'encoding',
|
|
||||||
'filetype'
|
|
||||||
},
|
|
||||||
lualine_y = {'progress'},
|
|
||||||
lualine_z = {'location'}
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = {'filename'},
|
|
||||||
lualine_x = {'location'},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
extensions = {}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
use 'tpope/vim-fugitive'
|
|
||||||
use 'mhinz/vim-signify'
|
|
||||||
|
|
||||||
use 'tpope/vim-surround'
|
|
||||||
use 'tpope/vim-repeat'
|
|
||||||
|
|
||||||
use 'neovim/nvim-lspconfig'
|
|
||||||
use {
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
event = 'InsertEnter',
|
|
||||||
config = [[require('completion')]],
|
|
||||||
requires = {
|
|
||||||
-- 'hrsh7th/vim-vsnip-integ',
|
|
||||||
'rafamadriz/friendly-snippets',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
use {"hrsh7th/vim-vsnip", after = "nvim-cmp"}
|
|
||||||
use {"hrsh7th/cmp-vsnip", after = "nvim-cmp"}
|
|
||||||
use {"hrsh7th/cmp-buffer", after = "nvim-cmp"}
|
|
||||||
use {'hrsh7th/cmp-path', after = "nvim-cmp"}
|
|
||||||
use {"hrsh7th/cmp-nvim-lsp", after = "nvim-cmp"}
|
|
||||||
use {'f3fora/cmp-spell', after = "nvim-cmp"}
|
|
||||||
|
|
||||||
use 'nvim-lua/popup.nvim'
|
|
||||||
use {
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
requires = { {'nvim-lua/plenary.nvim'} }
|
|
||||||
}
|
|
||||||
|
|
||||||
use {
|
|
||||||
'lervag/vimtex',
|
|
||||||
config = [[require('config.vimtex')]],
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Highlight on Yank
|
|
||||||
use 'machakann/vim-highlightedyank'
|
|
||||||
-- Autoclose parenthesis
|
|
||||||
use 'jiangmiao/auto-pairs'
|
|
||||||
|
|
||||||
use 'kyazdani42/nvim-web-devicons'
|
|
||||||
|
|
||||||
end)
|
|
||||||
9
nvim/.config/nvim/lua/plugins/autopairs.lua
Normal file
9
nvim/.config/nvim/lua/plugins/autopairs.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
event = "InsertEnter",
|
||||||
|
config = function()
|
||||||
|
require("nvim-autopairs").setup({
|
||||||
|
disable_filetype = { "TelescopePrompt", "vim" },
|
||||||
|
})
|
||||||
|
end
|
||||||
|
}
|
||||||
14
nvim/.config/nvim/lua/plugins/colorizer.lua
Normal file
14
nvim/.config/nvim/lua/plugins/colorizer.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
'norcalli/nvim-colorizer.lua',
|
||||||
|
config = function ()
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
require('colorizer').setup {
|
||||||
|
'css';
|
||||||
|
'javascript';
|
||||||
|
html = {
|
||||||
|
mode = 'foreground';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
}
|
||||||
9
nvim/.config/nvim/lua/plugins/colorscheme.lua
Normal file
9
nvim/.config/nvim/lua/plugins/colorscheme.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
"morhetz/gruvbox",
|
||||||
|
lazy = false, -- make sure we load this during startup if it is your main colorscheme
|
||||||
|
priority = 1000, -- make sure to load this before all the other start plugins
|
||||||
|
config = function()
|
||||||
|
-- load the colorscheme here
|
||||||
|
vim.cmd([[colorscheme gruvbox]])
|
||||||
|
end
|
||||||
|
}
|
||||||
6
nvim/.config/nvim/lua/plugins/comment.lua
Normal file
6
nvim/.config/nvim/lua/plugins/comment.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
'numToStr/Comment.nvim',
|
||||||
|
config=function ()
|
||||||
|
require('Comment').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
86
nvim/.config/nvim/lua/plugins/completion.lua
Normal file
86
nvim/.config/nvim/lua/plugins/completion.lua
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
return {
|
||||||
|
"saghen/blink.cmp",
|
||||||
|
-- optional: provides snippets for the snippet source
|
||||||
|
dependencies = {
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
{
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
build = "make install_jsregexp",
|
||||||
|
config = function()
|
||||||
|
require("luasnip").setup({
|
||||||
|
store_selection_keys = "<Tab>",
|
||||||
|
})
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
require("luasnip.loaders.from_lua").lazy_load({
|
||||||
|
paths = { "~/.config/nvim/snippets" },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- use a release tag to download pre-built binaries
|
||||||
|
version = "1.*",
|
||||||
|
-- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
|
||||||
|
-- build = 'cargo build --release',
|
||||||
|
-- If you use nix, you can build from source using latest nightly rust with:
|
||||||
|
-- build = 'nix run .#build-plugin',
|
||||||
|
|
||||||
|
---@module 'blink.cmp'
|
||||||
|
---@type blink.cmp.Config
|
||||||
|
opts = {
|
||||||
|
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
|
||||||
|
-- 'super-tab' for mappings similar to vscode (tab to accept)
|
||||||
|
-- 'enter' for enter to accept
|
||||||
|
-- 'none' for no mappings
|
||||||
|
--
|
||||||
|
-- All presets have the following mappings:
|
||||||
|
-- C-space: Open menu or open docs if already open
|
||||||
|
-- C-n/C-p or Up/Down: Select next/previous item
|
||||||
|
-- C-e: Hide menu
|
||||||
|
-- C-k: Toggle signature help (if signature.enabled = true)
|
||||||
|
--
|
||||||
|
-- See :h blink-cmp-config-keymap for defining your own keymap
|
||||||
|
keymap = { preset = "default" },
|
||||||
|
|
||||||
|
appearance = {
|
||||||
|
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||||
|
-- Adjusts spacing to ensure icons are aligned
|
||||||
|
nerd_font_variant = "mono",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- (Default) Only show the documentation popup when manually triggered
|
||||||
|
completion = {
|
||||||
|
documentation = {
|
||||||
|
auto_show = true,
|
||||||
|
auto_show_delay_ms = 200,
|
||||||
|
},
|
||||||
|
ghost_text = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Default list of enabled providers defined so that you can extend it
|
||||||
|
-- elsewhere in your config, without redefining it, due to `opts_extend`
|
||||||
|
sources = {
|
||||||
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
providers = {
|
||||||
|
buffer = {
|
||||||
|
min_keyword_length = 3,
|
||||||
|
score_offset = -10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
snippets = {
|
||||||
|
preset = "luasnip",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
|
||||||
|
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
|
||||||
|
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
|
||||||
|
--
|
||||||
|
-- See the fuzzy documentation for more information
|
||||||
|
fuzzy = { implementation = "prefer_rust_with_warning" },
|
||||||
|
},
|
||||||
|
opts_extend = { "sources.default" },
|
||||||
|
}
|
||||||
38
nvim/.config/nvim/lua/plugins/formatting.lua
Normal file
38
nvim/.config/nvim/lua/plugins/formatting.lua
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
return {
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
config = function()
|
||||||
|
local conform = require("conform")
|
||||||
|
|
||||||
|
conform.setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
javascript = { "prettier" },
|
||||||
|
typescript = { "prettier" },
|
||||||
|
javascriptreact = { "prettier" },
|
||||||
|
typescriptreact = { "prettier" },
|
||||||
|
svelte = { "prettier" },
|
||||||
|
css = { "prettier" },
|
||||||
|
html = { "prettier" },
|
||||||
|
json = { "prettier" },
|
||||||
|
yaml = { "prettier" },
|
||||||
|
markdown = { "prettier" },
|
||||||
|
graphql = { "prettier" },
|
||||||
|
lua = { "stylua" },
|
||||||
|
-- python = { "isort", "black" },
|
||||||
|
python = { "ruff_fix", "ruff_format" },
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
lsp_format = "fallback",
|
||||||
|
async = false,
|
||||||
|
timeout_ms = 500,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
|
||||||
|
conform.format({
|
||||||
|
lsp_format = "fallback",
|
||||||
|
async = true,
|
||||||
|
timeout_ms = 500,
|
||||||
|
})
|
||||||
|
end, { desc = "Format file or range (in visual mode)" })
|
||||||
|
end,
|
||||||
|
}
|
||||||
11
nvim/.config/nvim/lua/plugins/git.lua
Normal file
11
nvim/.config/nvim/lua/plugins/git.lua
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'tpope/vim-fugitive'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
config=function ()
|
||||||
|
require('gitsigns').setup {}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
153
nvim/.config/nvim/lua/plugins/harpoon.lua
Normal file
153
nvim/.config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
-- plugins/h-- plugins/harpoon.lua
|
||||||
|
return {
|
||||||
|
"ThePrimeagen/harpoon",
|
||||||
|
branch = "harpoon2",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
config = function()
|
||||||
|
local harpoon = require("harpoon")
|
||||||
|
|
||||||
|
-- Setup Harpoon pour sessions temporaires (pas de persistence)
|
||||||
|
harpoon:setup({
|
||||||
|
settings = {
|
||||||
|
save_on_toggle = false, -- Pas de sauvegarde automatique
|
||||||
|
sync_on_ui_close = false, -- Pas de sync à la fermeture
|
||||||
|
save_on_change = true, -- Sauvegarde les changements dans la session
|
||||||
|
excluded_filetypes = { "harpoon", "alpha", "dashboard", "gitcommit", "fugitive" },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- === Fonction helper pour arrêter VimTeX ===
|
||||||
|
local function stop_all_vimtex()
|
||||||
|
-- Récupérer tous les buffers LaTeX ouverts
|
||||||
|
local latex_buffers = {}
|
||||||
|
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||||
|
if vim.api.nvim_buf_is_loaded(buf) then
|
||||||
|
local filetype = vim.api.nvim_buf_get_option(buf, "filetype")
|
||||||
|
if filetype == "tex" or filetype == "latex" then
|
||||||
|
table.insert(latex_buffers, buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Arrêter VimTeX pour chaque buffer LaTeX
|
||||||
|
for _, buf in ipairs(latex_buffers) do
|
||||||
|
-- Switcher temporairement vers ce buffer pour exécuter VimtexStop
|
||||||
|
local current_buf = vim.api.nvim_get_current_buf()
|
||||||
|
vim.api.nvim_set_current_buf(buf)
|
||||||
|
|
||||||
|
if vim.fn.exists(":VimtexStop") == 2 then
|
||||||
|
pcall(vim.cmd, "VimtexStop") -- pcall pour éviter les erreurs
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Revenir au buffer original
|
||||||
|
if vim.api.nvim_buf_is_valid(current_buf) then
|
||||||
|
vim.api.nvim_set_current_buf(current_buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Alternative plus robuste: tuer directement les processus latexmk
|
||||||
|
local handle = io.popen("pgrep -f latexmk")
|
||||||
|
if handle then
|
||||||
|
local result = handle:read("*a")
|
||||||
|
handle:close()
|
||||||
|
if result and result ~= "" then
|
||||||
|
os.execute("pkill -f latexmk")
|
||||||
|
print("Killed background latexmk processes")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Keymaps AZERTY-friendly groupés sous <leader>h
|
||||||
|
local keymap = vim.keymap.set
|
||||||
|
|
||||||
|
-- === Gestion de session ===
|
||||||
|
keymap("n", "<leader>ha", function()
|
||||||
|
harpoon:list():append()
|
||||||
|
print("Added: " .. vim.fn.expand("%:t"))
|
||||||
|
end, { desc = "Harpoon: Add file to session" })
|
||||||
|
|
||||||
|
keymap("n", "<leader>hm", function()
|
||||||
|
harpoon.ui:toggle_quick_menu(harpoon:list())
|
||||||
|
end, { desc = "Harpoon: Toggle menu" })
|
||||||
|
|
||||||
|
keymap("n", "<leader>hc", function()
|
||||||
|
-- Confirmation simple
|
||||||
|
local choice = vim.fn.confirm("Clear session and stop VimTeX?", "&Yes\n&No", 2)
|
||||||
|
|
||||||
|
-- Si No, on fait rien
|
||||||
|
if choice ~= 1 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Arrêter toutes les compilations VimTeX
|
||||||
|
stop_all_vimtex()
|
||||||
|
|
||||||
|
-- Clear Harpoon
|
||||||
|
harpoon:list():clear()
|
||||||
|
|
||||||
|
-- Fermer tous les buffers
|
||||||
|
vim.cmd("silent! %bdelete")
|
||||||
|
|
||||||
|
print("Session cleared, VimTeX stopped, buffers closed!")
|
||||||
|
end, { desc = "Harpoon: Clear session & stop VimTeX" })
|
||||||
|
|
||||||
|
-- === Navigation directe (rangée de base AZERTY) ===
|
||||||
|
local nav_keys = {
|
||||||
|
{ key = "q", pos = 1 },
|
||||||
|
{ key = "s", pos = 2 },
|
||||||
|
{ key = "d", pos = 3 },
|
||||||
|
{ key = "f", pos = 4 },
|
||||||
|
{ key = "g", pos = 5 },
|
||||||
|
{ key = "h", pos = 6 },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, mapping in ipairs(nav_keys) do
|
||||||
|
keymap("n", "<leader>h" .. mapping.key, function()
|
||||||
|
harpoon:list():select(mapping.pos)
|
||||||
|
end, { desc = "Harpoon: Go to file " .. mapping.pos })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- === Navigation cyclique ===
|
||||||
|
keymap("n", "<leader>hn", function()
|
||||||
|
harpoon:list():next()
|
||||||
|
end, { desc = "Harpoon: Next file" })
|
||||||
|
|
||||||
|
keymap("n", "<leader>hp", function()
|
||||||
|
harpoon:list():prev()
|
||||||
|
end, { desc = "Harpoon: Previous file" })
|
||||||
|
|
||||||
|
-- === Commandes utiles ===
|
||||||
|
vim.api.nvim_create_user_command("HarpoonClear", function()
|
||||||
|
harpoon:list():clear()
|
||||||
|
print("Harpoon session cleared!")
|
||||||
|
end, { desc = "Clear current Harpoon session" })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("HarpoonList", function()
|
||||||
|
local list = harpoon:list()
|
||||||
|
if #list.items == 0 then
|
||||||
|
print("No files in Harpoon session")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print("Current Harpoon session:")
|
||||||
|
for i, item in ipairs(list.items) do
|
||||||
|
print(string.format(" %d. %s", i, item.value))
|
||||||
|
end
|
||||||
|
end, { desc = "List files in current Harpoon session" })
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- Chargement paresseux: seulement quand on utilise les keymaps
|
||||||
|
keys = {
|
||||||
|
{ "<leader>ha", desc = "Harpoon: Add file" },
|
||||||
|
{ "<leader>hm", desc = "Harpoon: Menu" },
|
||||||
|
{ "<leader>hc", desc = "Harpoon: Clear & stop VimTeX" },
|
||||||
|
{ "<leader>hq", desc = "Harpoon: File 1" },
|
||||||
|
{ "<leader>hs", desc = "Harpoon: File 2" },
|
||||||
|
{ "<leader>hd", desc = "Harpoon: File 3" },
|
||||||
|
{ "<leader>hf", desc = "Harpoon: File 4" },
|
||||||
|
{ "<leader>hg", desc = "Harpoon: File 5" },
|
||||||
|
{ "<leader>hh", desc = "Harpoon: File 6" },
|
||||||
|
{ "<leader>hn", desc = "Harpoon: Next" },
|
||||||
|
{ "<leader>hp", desc = "Harpoon: Previous" },
|
||||||
|
},
|
||||||
|
}
|
||||||
31
nvim/.config/nvim/lua/plugins/lint.lua
Normal file
31
nvim/.config/nvim/lua/plugins/lint.lua
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
return {
|
||||||
|
"mfussenegger/nvim-lint",
|
||||||
|
event = {
|
||||||
|
"BufReadPre",
|
||||||
|
"BufNewFile",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local lint = require("lint")
|
||||||
|
|
||||||
|
lint.linters_by_ft = {
|
||||||
|
javascript = { "eslint_d" },
|
||||||
|
typescript = { "eslint_d" },
|
||||||
|
javascriptreact = { "eslint_d" },
|
||||||
|
typescriptreact = { "eslint_d" },
|
||||||
|
python = { "ruff" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
||||||
|
group = lint_augroup,
|
||||||
|
callback = function()
|
||||||
|
lint.try_lint()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ml", function()
|
||||||
|
lint.try_lint()
|
||||||
|
end, { desc = "Trigger linting for current file" })
|
||||||
|
end,
|
||||||
|
}
|
||||||
42
nvim/.config/nvim/lua/plugins/lsp.lua
Normal file
42
nvim/.config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
return {
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
dependencies = {
|
||||||
|
{ "williamboman/mason.nvim" },
|
||||||
|
{ "williamboman/mason-lspconfig.nvim" },
|
||||||
|
{ "WhoIsSethDaniel/mason-tool-installer.nvim" },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
callback = function(args)
|
||||||
|
local opts = { buffer = args.buf, silent = true }
|
||||||
|
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, vim.tbl_extend("force", opts, { desc = "Go to definition" }))
|
||||||
|
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, vim.tbl_extend("force", opts, { desc = "Go to declaration" }))
|
||||||
|
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, vim.tbl_extend("force", opts, { desc = "Go to implementation" }))
|
||||||
|
vim.keymap.set("n", "gr", vim.lsp.buf.references, vim.tbl_extend("force", opts, { desc = "Show references" }))
|
||||||
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, vim.tbl_extend("force", opts, { desc = "Hover documentation" }))
|
||||||
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename symbol" }))
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, vim.tbl_extend("force", opts, { desc = "Code action" }))
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mason").setup({})
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = {},
|
||||||
|
handlers = {
|
||||||
|
function(server_name)
|
||||||
|
vim.lsp.enable(server_name)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mason-tool-installer").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"prettier",
|
||||||
|
"stylua",
|
||||||
|
"ruff",
|
||||||
|
"eslint_d",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
235
nvim/.config/nvim/lua/plugins/lualine.lua
Normal file
235
nvim/.config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
return {
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
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 = 'gruvbox',
|
||||||
|
theme = {
|
||||||
|
-- We are going to use lualine_c an lualine_x as left and
|
||||||
|
-- right section. both are highlighted by c theme . so we
|
||||||
|
-- are just setting default looks o statusline
|
||||||
|
normal = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
|
inactive = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
-- these are to remove the defaults
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
-- these will be filled later
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {
|
||||||
|
{
|
||||||
|
require("noice").api.statusline.mode.get,
|
||||||
|
cond = require("noice").api.statusline.mode.has,
|
||||||
|
color = { fg = "#ff9e64" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
-- these are to remove the defaults
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_v = {},
|
||||||
|
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 ot right section
|
||||||
|
local function ins_right(component)
|
||||||
|
table.insert(config.sections.lualine_x, component)
|
||||||
|
end
|
||||||
|
|
||||||
|
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,
|
||||||
|
}
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
-- mode component
|
||||||
|
function()
|
||||||
|
-- auto change color according to neovims mode
|
||||||
|
vim.api.nvim_command("hi! lualinemode guifg=" .. mode_color[vim.fn.mode()] .. " guibg=" .. colors.bg)
|
||||||
|
return ""
|
||||||
|
end,
|
||||||
|
color = "lualinemode",
|
||||||
|
left_padding = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
"mode",
|
||||||
|
color = { fg = colors.green, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
-- filesize component
|
||||||
|
function()
|
||||||
|
local function format_file_size(file)
|
||||||
|
local size = vim.fn.getfsize(file)
|
||||||
|
if size <= 0 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
local sufixes = { "b", "k", "m", "g" }
|
||||||
|
local i = 1
|
||||||
|
while size > 1024 do
|
||||||
|
size = size / 1024
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
return string.format("%.1f%s", size, sufixes[i])
|
||||||
|
end
|
||||||
|
local file = vim.fn.expand("%:p")
|
||||||
|
if string.len(file) == 0 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
return format_file_size(file)
|
||||||
|
end,
|
||||||
|
condition = conditions.buffer_not_empty,
|
||||||
|
})
|
||||||
|
ins_left({
|
||||||
|
-- Lsp server name .
|
||||||
|
function()
|
||||||
|
local msg = "No Active Lsp"
|
||||||
|
local buf_ft = vim.bo.filetype
|
||||||
|
local clients = vim.lsp.get_clients()
|
||||||
|
if next(clients) == nil then
|
||||||
|
return msg
|
||||||
|
end
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
local filetypes = client.config.filetypes
|
||||||
|
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||||
|
return client.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return msg
|
||||||
|
end,
|
||||||
|
icon = " LSP:",
|
||||||
|
color = { fg = "#ffffff", gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
"diagnostics",
|
||||||
|
sources = { "nvim_diagnostic" },
|
||||||
|
symbols = { error = " ", warn = " ", info = " " },
|
||||||
|
color_error = colors.red,
|
||||||
|
color_warn = colors.yellow,
|
||||||
|
color_info = 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,
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
"filename",
|
||||||
|
file_status = true,
|
||||||
|
path = 1,
|
||||||
|
condition = conditions.buffer_not_empty,
|
||||||
|
color = { fg = colors.magenta, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Add components to right sections
|
||||||
|
ins_right({
|
||||||
|
"o:encoding", -- option component same as &encoding in viml
|
||||||
|
upper = true, -- I'm not sure why it's upper case either ;)
|
||||||
|
condition = conditions.hide_in_width,
|
||||||
|
color = { fg = colors.green, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
"fileformat",
|
||||||
|
upper = true,
|
||||||
|
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 = "",
|
||||||
|
condition = conditions.check_git_workspace,
|
||||||
|
color = { fg = colors.violet, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
"diff",
|
||||||
|
-- Is it me or the symbol for modified us really weird
|
||||||
|
symbols = { added = " ", modified = "柳 ", removed = " " },
|
||||||
|
color_added = colors.green,
|
||||||
|
color_modified = colors.orange,
|
||||||
|
color_removed = colors.red,
|
||||||
|
condition = conditions.hide_in_width,
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({ "location" })
|
||||||
|
|
||||||
|
ins_right({ "progress", color = { fg = colors.fg, gui = "bold" } })
|
||||||
|
|
||||||
|
require("lualine").setup(config)
|
||||||
|
end,
|
||||||
|
}
|
||||||
5
nvim/.config/nvim/lua/plugins/misc.lua
Normal file
5
nvim/.config/nvim/lua/plugins/misc.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
'tpope/vim-surround',
|
||||||
|
'tpope/vim-repeat',
|
||||||
|
'tpope/vim-abolish',
|
||||||
|
}
|
||||||
28
nvim/.config/nvim/lua/plugins/noice.lua
Normal file
28
nvim/.config/nvim/lua/plugins/noice.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
return {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {},
|
||||||
|
dependencies = {
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
-- "rcarriga/nvim-notify",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("noice").setup({
|
||||||
|
lsp = {
|
||||||
|
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||||
|
override = {
|
||||||
|
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||||
|
["vim.lsp.util.stylize_markdown"] = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- you can enable a preset for easier configuration
|
||||||
|
presets = {
|
||||||
|
bottom_search = true, -- use a classic bottom cmdline for search
|
||||||
|
command_palette = true, -- position the cmdline and popupmenu together
|
||||||
|
long_message_to_split = true, -- long messages will be sent to a split
|
||||||
|
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||||
|
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
10
nvim/.config/nvim/lua/plugins/oil.lua
Normal file
10
nvim/.config/nvim/lua/plugins/oil.lua
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
'stevearc/oil.nvim',
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
keys = {
|
||||||
|
{"-", "<cmd>Oil<cr>", desc="Open parent directory"},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("oil").setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
71
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
71
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
return {
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
indent = {
|
||||||
|
enabled = true,
|
||||||
|
char = "|",
|
||||||
|
},
|
||||||
|
input = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
notifier = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
dashboard = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
statuscolumn = { enabled = true },
|
||||||
|
words = { enabled = false },
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>ns",
|
||||||
|
function()
|
||||||
|
Snacks.notifier.show_history()
|
||||||
|
end,
|
||||||
|
desc = "Notification History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>nh",
|
||||||
|
function()
|
||||||
|
Snacks.notifier.hide()
|
||||||
|
end,
|
||||||
|
desc = "Dismiss All Notifications",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gb",
|
||||||
|
function()
|
||||||
|
Snacks.git.blame_line()
|
||||||
|
end,
|
||||||
|
desc = "Git Blame Line",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gf",
|
||||||
|
function()
|
||||||
|
Snacks.lazygit.log_file()
|
||||||
|
end,
|
||||||
|
desc = "Lazygit Current File History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gg",
|
||||||
|
function()
|
||||||
|
Snacks.lazygit()
|
||||||
|
end,
|
||||||
|
desc = "Lazygit",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gl",
|
||||||
|
function()
|
||||||
|
Snacks.lazygit.log()
|
||||||
|
end,
|
||||||
|
desc = "Lazygit Log (cwd)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
70
nvim/.config/nvim/lua/plugins/telescope.lua
Normal file
70
nvim/.config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
return {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
branch = "0.1.x",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
build = "make",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
file_ignore_patterns = { "**/*.pdf" },
|
||||||
|
layout_strategy = "horizontal",
|
||||||
|
layout_config = {
|
||||||
|
horizontal = {
|
||||||
|
prompt_position = "top",
|
||||||
|
preview_width = 0.55,
|
||||||
|
},
|
||||||
|
width = 0.87,
|
||||||
|
height = 0.80,
|
||||||
|
preview_cutoff = 120,
|
||||||
|
},
|
||||||
|
sorting_strategy = "ascending",
|
||||||
|
borderchars = { "█", "█", "█", "█", "█", "█", "█", "█" },
|
||||||
|
prompt_prefix = " 🔍 ",
|
||||||
|
selection_caret = " ➜ ",
|
||||||
|
entry_prefix = " ",
|
||||||
|
winblend = 0,
|
||||||
|
results_title = "",
|
||||||
|
prompt_title = "",
|
||||||
|
preview_title = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local telescope = require("telescope")
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
opts.defaults.mappings = {
|
||||||
|
i = { ["<C-d>"] = actions.delete_buffer },
|
||||||
|
n = { ["<C-d>"] = actions.delete_buffer },
|
||||||
|
}
|
||||||
|
telescope.setup(opts)
|
||||||
|
telescope.load_extension("fzf")
|
||||||
|
|
||||||
|
local bg = vim.api.nvim_get_hl(0, { name = "CursorColumn" }).bg
|
||||||
|
if type(bg) == "number" then
|
||||||
|
bg = string.format("#%06x", bg)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeNormal", { bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePromptNormal", { bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeResultsNormal", { bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePreviewNormal", { bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePromptBorder", { fg = bg, bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeResultsBorder", { fg = bg, bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePreviewBorder", { fg = bg, bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePromptTitle", { fg = bg, bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeResultsTitle", { fg = bg, bg = bg })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopePreviewTitle", { fg = bg, bg = bg })
|
||||||
|
end,
|
||||||
|
keys = {
|
||||||
|
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find files" },
|
||||||
|
{ "<leader>fe", "<cmd>Telescope git_files<cr>", desc = "Find file respecting .gitignore" },
|
||||||
|
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Grep file in file" },
|
||||||
|
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Search through buffers" },
|
||||||
|
{ "<leader>ft", "<cmd>Telescope tags<cr>", desc = "Search through tags" },
|
||||||
|
{ "<leader>fm", "<cmd>Telescope marks<cr>", desc = "Search through marks" },
|
||||||
|
{ "<leader>fs", "<cmd>Telescope search_history<cr>", desc = "Search through search" },
|
||||||
|
},
|
||||||
|
}
|
||||||
106
nvim/.config/nvim/lua/plugins/treesitter.lua
Normal file
106
nvim/.config/nvim/lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- Compatibility shim for plugins using the old parsers.ft_to_lang API (e.g. telescope)
|
||||||
|
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
|
||||||
|
if ok and not parsers.ft_to_lang then
|
||||||
|
parsers.ft_to_lang = function(ft)
|
||||||
|
return vim.treesitter.language.get_lang(ft) or ft
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require("nvim-treesitter").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"lua",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"javascript",
|
||||||
|
"html",
|
||||||
|
"python",
|
||||||
|
"dockerfile",
|
||||||
|
"yaml",
|
||||||
|
"regex",
|
||||||
|
"bash",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
},
|
||||||
|
sync_install = false,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
disable = { "latex" },
|
||||||
|
},
|
||||||
|
indent = { enable = true },
|
||||||
|
|
||||||
|
-- Configuration des text objects intelligents
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = false, -- Ne cherche PAS vers l'avant (résout votre problème!)
|
||||||
|
|
||||||
|
keymaps = {
|
||||||
|
-- Délimiteurs syntaxiques
|
||||||
|
["i{"] = "@block.inner",
|
||||||
|
["a{"] = "@block.outer",
|
||||||
|
["i("] = "@call.inner",
|
||||||
|
["a("] = "@call.outer",
|
||||||
|
["i["] = "@call.inner",
|
||||||
|
["a["] = "@call.outer",
|
||||||
|
|
||||||
|
-- Strings/Guillemets
|
||||||
|
['i"'] = "@string.inner",
|
||||||
|
['a"'] = "@string.outer",
|
||||||
|
["i'"] = "@string.inner",
|
||||||
|
["a'"] = "@string.outer",
|
||||||
|
["i`"] = "@string.inner",
|
||||||
|
["a`"] = "@string.outer",
|
||||||
|
|
||||||
|
-- Délimiteurs sémantiques
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["iC"] = "@class.inner", -- Majuscule pour éviter conflit avec VimTeX
|
||||||
|
["aC"] = "@class.outer",
|
||||||
|
["ib"] = "@block.inner",
|
||||||
|
["ab"] = "@block.outer",
|
||||||
|
["ii"] = "@conditional.inner",
|
||||||
|
["ai"] = "@conditional.outer",
|
||||||
|
["il"] = "@loop.inner",
|
||||||
|
["al"] = "@loop.outer",
|
||||||
|
["ia"] = "@parameter.inner",
|
||||||
|
["aa"] = "@parameter.outer",
|
||||||
|
["i/"] = "@comment.inner",
|
||||||
|
["a/"] = "@comment.outer",
|
||||||
|
["ir"] = "@return.inner",
|
||||||
|
["ar"] = "@return.outer",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Mode de sélection (v = charwise)
|
||||||
|
selection_modes = {
|
||||||
|
['@parameter.outer'] = 'v',
|
||||||
|
['@function.outer'] = 'V', -- linewise pour fonctions
|
||||||
|
['@class.outer'] = 'V', -- linewise pour classes
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Ne pas inclure les espaces (comportement précis)
|
||||||
|
include_surrounding_whitespace = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
-- opts = function(_, opts)
|
||||||
|
-- vim.treesitter.language.register("markdown", "mdx")
|
||||||
|
-- vim.list_extend(opts.highlight.disable, { "tsx" })
|
||||||
|
-- if type(opts.ensure_installed) == "table" then
|
||||||
|
-- vim.list_extend(opts.ensure_installed, {
|
||||||
|
-- "bibtex",
|
||||||
|
-- -- you can add more here
|
||||||
|
-- })
|
||||||
|
-- end
|
||||||
|
-- if type(opts.highlight.disable) == "table" then
|
||||||
|
-- else
|
||||||
|
-- end
|
||||||
|
-- end,
|
||||||
|
}
|
||||||
3
nvim/.config/nvim/lua/plugins/vim-tmux-navigator.lua
Normal file
3
nvim/.config/nvim/lua/plugins/vim-tmux-navigator.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
'christoomey/vim-tmux-navigator',
|
||||||
|
}
|
||||||
27
nvim/.config/nvim/lua/plugins/vimtex.lua
Normal file
27
nvim/.config/nvim/lua/plugins/vimtex.lua
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"lervag/vimtex",
|
||||||
|
lazy = false, -- lazy-loading will disable inverse search
|
||||||
|
config = function()
|
||||||
|
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||||
|
group = vim.api.nvim_create_augroup("lazyvim_vimtex_conceal", { clear = true }),
|
||||||
|
pattern = { "bib", "tex" },
|
||||||
|
callback = function()
|
||||||
|
vim.wo.conceallevel = 0
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.g.vimtex_mappings_disable = { ["n"] = { "K" } } -- disable `K` as it conflicts with LSP hover
|
||||||
|
vim.g.vimtex_quickfix_method = vim.fn.executable("pplatex") == 1 and "pplatex" or "latexlog"
|
||||||
|
|
||||||
|
vim.g.vimtex_view_method = "zathura" -- <== macos specific, you can use zathura or sumatra or something else.
|
||||||
|
vim.g.vimtex_view_skim_sync = 1
|
||||||
|
vim.g.vimtex_view_skim_activate = 1
|
||||||
|
vim.g.vimtex_view_skim_reading_bar = 1
|
||||||
|
|
||||||
|
vim.g.vimtex_compiler_latexmk = {
|
||||||
|
aux_dir = "./aux",
|
||||||
|
out_dir = "./",
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
18
nvim/.config/nvim/lua/plugins/which-key.lua
Normal file
18
nvim/.config/nvim/lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
return {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>?",
|
||||||
|
function()
|
||||||
|
require("which-key").show({ global = false })
|
||||||
|
end,
|
||||||
|
desc = "Buffer Local Keymaps (which-key)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,51 +1,52 @@
|
|||||||
local cmd = vim.cmd -- execute Vim commands
|
local cmd = vim.cmd
|
||||||
local exec = vim.api.nvim_exec -- execute Vimscript
|
local g = vim.g
|
||||||
-- local fn = vim.fn -- call Vim functions
|
local opt = vim.opt
|
||||||
local g = vim.g -- global variables
|
|
||||||
local opt = vim.opt -- global/buffer/windows-scoped options
|
|
||||||
|
|
||||||
g.mapleader = ' ' -- Leaderkey
|
opt.mouse = "a"
|
||||||
g.showmode = true
|
opt.clipboard = "unnamedplus"
|
||||||
g.hidden = true -- Required to keep multiple buffers open multiple buffers
|
opt.swapfile = false
|
||||||
opt.mouse = 'a' -- enable mouse
|
|
||||||
opt.clipboard = 'unnamedplus' -- copy/paste with system
|
|
||||||
opt.swapfile = false -- no swapfile
|
|
||||||
|
|
||||||
opt.wrap = true -- Display long lines as just one line
|
opt.wrap = true
|
||||||
opt.expandtab = true -- Use space instead of tabs
|
opt.expandtab = true
|
||||||
opt.tabstop = 4 -- Insert 4 spaces for a tab
|
opt.tabstop = 4
|
||||||
opt.shiftwidth = 4 -- Change the number of space characters inserted for indentation
|
opt.shiftwidth = 4
|
||||||
opt.smarttab = true -- Makes tabbing smarter will realize you have 2 vs 4
|
opt.smarttab = true
|
||||||
opt.autoindent = true -- Good auto indent
|
opt.autoindent = true
|
||||||
opt.foldmethod='indent'
|
opt.foldmethod = "indent"
|
||||||
|
|
||||||
opt.number = true -- show line number
|
opt.number = true
|
||||||
opt.relativenumber = true -- show relative line number
|
opt.relativenumber = true
|
||||||
opt.cursorline = true -- highlight current line
|
opt.cursorline = true
|
||||||
|
|
||||||
opt.ignorecase = true -- Ignore case on search
|
opt.scrolloff = 8
|
||||||
opt.smartcase = true -- ignore lowercse for the whoel pattern
|
opt.ignorecase = true
|
||||||
|
opt.smartcase = true
|
||||||
|
|
||||||
-- opt.completeopt = 'menu,noselect,noinsert' -- completion options
|
opt.completeopt = "menuone,noselect,popup"
|
||||||
|
|
||||||
opt.spell = true
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
opt.spelllang = {'fr', 'en'}
|
pattern = { "markdown", "text", "tex", "gitcommit" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.spell = true
|
||||||
|
vim.opt_local.spelllang = { "fr", "en" }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
opt.nrformats = opt.nrformats + 'alpha'
|
opt.nrformats = opt.nrformats + "alpha"
|
||||||
|
opt.showmatch = true
|
||||||
|
|
||||||
g.showtabline = true
|
cmd([[au BufEnter * set fo-=c fo-=r fo-=o]])
|
||||||
|
|
||||||
-- don't auto commenting new lines
|
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||||
cmd[[au BufEnter * set fo-=c fo-=r fo-=o]]
|
callback = function()
|
||||||
|
vim.highlight.on_yank({ higroup = "IncSearch", timeout = 700 })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
opt.showmatch = true -- show parenthethis match
|
g.python3_host_prog = vim.fn.expand("~/.venv/nvim/bin/python")
|
||||||
|
|
||||||
-- Highlight on yank
|
vim.filetype.add({
|
||||||
exec([[
|
extension = {
|
||||||
augroup YankHighlight
|
tf = "terraform",
|
||||||
autocmd!
|
},
|
||||||
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=700}
|
})
|
||||||
augroup end
|
|
||||||
]], false)
|
|
||||||
|
|
||||||
cmd('colorscheme gruvbox')
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
let g:lightline = {
|
|
||||||
\ 'colorscheme': 'wombat',
|
|
||||||
\ 'active': {
|
|
||||||
\ 'left': [ [ 'mode', 'paste' ],
|
|
||||||
\ [ 'gitbranch', 'readonly', 'relativepath', 'modified'] ]
|
|
||||||
\ },
|
|
||||||
\ 'component_function': {
|
|
||||||
\ 'gitbranch': 'FugitiveHead'
|
|
||||||
\ },
|
|
||||||
\ }
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
let g:compe = {}
|
|
||||||
let g:compe.enabled = v:true
|
|
||||||
let g:compe.autocomplete = v:true
|
|
||||||
let g:compe.debug = v:false
|
|
||||||
let g:compe.min_length = 1
|
|
||||||
let g:compe.preselect = 'enable'
|
|
||||||
let g:compe.throttle_time = 80
|
|
||||||
let g:compe.source_timeout = 200
|
|
||||||
let g:compe.resolve_timeout = 800
|
|
||||||
let g:compe.incomplete_delay = 400
|
|
||||||
let g:compe.max_abbr_width = 100
|
|
||||||
let g:compe.max_kind_width = 100
|
|
||||||
let g:compe.max_menu_width = 100
|
|
||||||
let g:compe.documentation = v:true
|
|
||||||
|
|
||||||
let g:compe.source = {}
|
|
||||||
let g:compe.source.path = v:true
|
|
||||||
let g:compe.source.buffer = v:true
|
|
||||||
let g:compe.source.calc = v:true
|
|
||||||
let g:compe.source.nvim_lsp = v:true
|
|
||||||
let g:compe.source.nvim_lua = v:true
|
|
||||||
let g:compe.source.vsnip = v:true
|
|
||||||
let g:compe.source.ultisnips = v:true
|
|
||||||
let g:compe.source.luasnip = v:true
|
|
||||||
let g:compe.source.emoji = v:false
|
|
||||||
|
|
||||||
" NOTE: You can use other key to expand snippet.
|
|
||||||
|
|
||||||
|
|
||||||
" Expand
|
|
||||||
imap <expr> <C-j> vsnip#expandable() ? '<Plug>(vsnip-expand)' : '<C-j>'
|
|
||||||
smap <expr> <C-j> vsnip#expandable() ? '<Plug>(vsnip-expand)' : '<C-j>'
|
|
||||||
|
|
||||||
" Expand or jump
|
|
||||||
imap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>'
|
|
||||||
smap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>'
|
|
||||||
|
|
||||||
" Jump forward or backward
|
|
||||||
imap <expr> <Tab> vsnip#jumpable(1) ? '<Plug>(vsnip-jump-next)' : '<Tab>'
|
|
||||||
smap <expr> <Tab> vsnip#jumpable(1) ? '<Plug>(vsnip-jump-next)' : '<Tab>'
|
|
||||||
imap <expr> <S-Tab> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<S-Tab>'
|
|
||||||
smap <expr> <S-Tab> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<S-Tab>'
|
|
||||||
|
|
||||||
" Select or cut text to use as $TM_SELECTED_TEXT in the next snippet.
|
|
||||||
" See https://github.com/hrsh7th/vim-vsnip/pull/50
|
|
||||||
nmap s <Plug>(vsnip-select-text)
|
|
||||||
xmap s <Plug>(vsnip-select-text)
|
|
||||||
nmap S <Plug>(vsnip-cut-text)
|
|
||||||
xmap S <Plug>(vsnip-cut-text)
|
|
||||||
|
|
||||||
" " If you want to use snippet for multiple filetypes, you can `g:vsnip_filetypes` for it.
|
|
||||||
" let g:vsnip_filetypes = {}
|
|
||||||
" let g:vsnip_filetypes.javascriptreact = ['javascript']
|
|
||||||
" let g:vsnip_filetypes.typescriptreact = ['typescript']
|
|
||||||
|
|
||||||
lua << EOF
|
|
||||||
local t = function(str)
|
|
||||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
|
||||||
end
|
|
||||||
|
|
||||||
local check_back_space = function()
|
|
||||||
local col = vim.fn.col('.') - 1
|
|
||||||
if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
|
||||||
return true
|
|
||||||
else
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Use (s-)tab to:
|
|
||||||
--- move to prev/next item in completion menuone
|
|
||||||
--- jump to prev/next snippet's placeholder
|
|
||||||
_G.tab_complete = function()
|
|
||||||
if vim.fn.pumvisible() == 1 then
|
|
||||||
return t "<C-n>"
|
|
||||||
elseif check_back_space() then
|
|
||||||
return t "<Tab>"
|
|
||||||
else
|
|
||||||
return vim.fn['compe#complete']()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
_G.s_tab_complete = function()
|
|
||||||
if vim.fn.pumvisible() == 1 then
|
|
||||||
return t "<C-p>"
|
|
||||||
else
|
|
||||||
return t "<S-Tab>"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
|
||||||
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
|
||||||
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|
|
||||||
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|
|
||||||
|
|
||||||
--This line is important for auto-import
|
|
||||||
vim.api.nvim_set_keymap('i', '<cr>', 'compe#confirm("<cr>")', { expr = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<c-space>', 'compe#complete()', { expr = true })
|
|
||||||
EOF
|
|
||||||
|
|
||||||
let g:vsnip_snippet_dir = expand('~/.config/nvim/vsnips')
|
|
||||||
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
" auto-install vim-plug
|
|
||||||
if empty(glob('~/.config/nvim/autoload/plug.vim'))
|
|
||||||
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
|
|
||||||
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
||||||
"autocmd VimEnter * PlugInstall
|
|
||||||
"autocmd VimEnter * PlugInstall | source $MYVIMRC
|
|
||||||
endif
|
|
||||||
|
|
||||||
call plug#begin('~/.config/nvim/autoload/plugged')
|
|
||||||
|
|
||||||
Plug 'jnurmine/Zenburn'
|
|
||||||
Plug 'itchyny/lightline.vim'
|
|
||||||
|
|
||||||
"Plug 'tpope/vim-sensible'
|
|
||||||
Plug 'tpope/vim-fugitive'
|
|
||||||
Plug 'mhinz/vim-signify'
|
|
||||||
Plug 'tpope/vim-surround'
|
|
||||||
Plug 'tpope/vim-repeat'
|
|
||||||
|
|
||||||
Plug 'junegunn/goyo.vim'
|
|
||||||
Plug 'christoomey/vim-tmux-navigator'
|
|
||||||
Plug 'Yggdroot/indentLine'
|
|
||||||
|
|
||||||
" Plug 'SirVer/ultisnips'
|
|
||||||
" Plug 'honza/vim-snippets'
|
|
||||||
Plug 'neovim/nvim-lspconfig'
|
|
||||||
Plug 'hrsh7th/nvim-compe'
|
|
||||||
Plug 'hrsh7th/vim-vsnip'
|
|
||||||
Plug 'hrsh7th/vim-vsnip-integ'
|
|
||||||
Plug 'rafamadriz/friendly-snippets'
|
|
||||||
|
|
||||||
" Plug 'nvim-lua/completion-nvim'
|
|
||||||
|
|
||||||
Plug 'nvim-lua/popup.nvim'
|
|
||||||
Plug 'nvim-lua/plenary.nvim'
|
|
||||||
Plug 'nvim-telescope/telescope.nvim'
|
|
||||||
|
|
||||||
Plug 'lervag/vimtex'
|
|
||||||
|
|
||||||
" Highlight on Yank
|
|
||||||
Plug 'machakann/vim-highlightedyank'
|
|
||||||
" Autoclose parenthesis
|
|
||||||
" Plug 'cohama/lexima.vim'
|
|
||||||
Plug 'jiangmiao/auto-pairs'
|
|
||||||
|
|
||||||
" Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
|
||||||
|
|
||||||
call plug#end()
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user