Compare commits

...

82 Commits

Author SHA1 Message Date
6b9bb0e61d Ajouter tessen et maildir-rank-addr
tessen : interface wayland pour pass, backend fuzzel.
maildir-rank-addr : complétion d'adresses aerc depuis ~/Mail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 07:15:31 +02:00
bc2358a21a Ajouter fuzzel, khal ; mettre à jour README
fuzzel utilisé en mode --dmenu dans le script screenshot.
README réécrit : table des packages, commandes d'installation,
dépendances Hyprland et mail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 06:52:23 +02:00
401b982820 fix gitignore: corriger chemin monitor-manager.log (hypr/ pas hyprland/)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 06:48:06 +02:00
818df22812 hypr: package séparé avec --no-folding pour compatibilité source= hyprland
Hyprland ne suit pas les symlinks de répertoires dans les directives source=.
Package hypr/ distinct du package hyprland/, stowé avec --no-folding pour
créer des symlinks fichier par fichier dans ~/.config/hypr/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 06:47:34 +02:00
0a00251742 Restructure dotfiles : suppression outils abandonnés, migration sway→hyprland, neomutt→aerc
- Supprimés : fish, qtile, X, vim, sway, neomutt (+ package systemd vide)
- Nouveau package hyprland : waybar, rofi, mako, gammastep, rofi-pass, systemd (mail+kanata+mpd+voxtype), script rofi
- Nouveau package aerc : config aerc + infra mail (msmtp, khard, vdirsyncer) migrée depuis neomutt
- Nettoyage .gitignore : suppression entrées neomutt/vim, ajout patterns moc/mpd/vifm manquants, vdirsyncer/status pour aerc
- Mise à jour des configs trackées modifiées (nvim, zsh, tmux, git, newsboat)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 06:40:49 +02:00
d84f20edf0 feat(nvim): clean configuration 2025-10-24 08:18:51 +02:00
28714d5f8a feat(nvim): restore scrolloff 2025-10-24 07:04:56 +02:00
692c87e1ba feat(nvim): fix completion with blink 2025-10-24 07:02:36 +02:00
653f44935a feat(nvim): rice telescope 2025-10-24 06:19:33 +02:00
714fb7ef37 feat(nvim): create custom harpoon commands 2025-10-24 06:18:55 +02:00
71f3906774 feat(sway): azerty or ergol 2025-09-20 07:25:21 +02:00
cb4ec4608a feat(rofi): copy backend 2025-09-20 07:24:59 +02:00
0bb9a6f7c0 feat(nvim): can't remember 2025-09-20 07:22:11 +02:00
02ecd3f25f feat(zsh): add yarn in path 2025-09-20 07:21:19 +02:00
d2362ff046 feat(mpd): set audio 2025-09-20 07:20:33 +02:00
b63689815a sway: use zen-browser instead of firefox 2025-04-21 22:14:26 +02:00
f4c8773056 newsboat: use firefox instead of chromium 2025-04-21 22:12:54 +02:00
f7af499573 Feat (nvim): cmdline on the middle of the screen 2025-01-05 06:07:54 +01:00
cd9ba86fca remove duplicate 2025-01-02 07:23:48 +01:00
938db338fc update ytb feeds 2025-01-02 07:23:32 +01:00
c95ee6f650 create alacritty config 2025-01-02 07:23:04 +01:00
cbe9a6c55c Feat: add vimtex to nivm 2024-12-24 10:58:39 +01:00
d812c32e37 Feat: replace rofi-pass with tessen 2024-11-09 13:04:54 +01:00
9cf5d8d5e0 Fix(sway): workspace switch 2024-03-01 06:00:32 +01:00
2131bb57c4 Feat(sway): cosmetics 2024-02-10 22:12:38 +01:00
5210b2a15a Feat(nvim): add noice 2024-01-06 20:42:56 +01:00
158c7a60a3 Feat: clean and add channels 2024-01-06 20:37:06 +01:00
39a18835a1 Feat(nvim): add mason_tool_installer 2023-11-15 06:14:35 +01:00
fa519bd74d Feat(nvim): add linting 2023-11-15 06:12:30 +01:00
f98a52e613 Feat(nvim): add formater for web tech, lua and python 2023-11-15 06:06:39 +01:00
44fb8a49fa Feat(newsboat): clean channel 2023-11-05 06:46:52 +01:00
52b956c423 Feat(sway): add reverse cable config 2023-11-05 06:46:09 +01:00
e43a76a132 Feat(nvim): add option for buffer completion 2023-11-05 06:44:33 +01:00
3029561478 Feat(nvim): add path and buffer 2023-11-05 06:40:03 +01:00
f85841cafe Feat(tmux): move status to the top 2023-10-29 04:18:51 +01:00
140872d0e6 Feat(sway): use default config 2023-10-20 06:27:15 +02:00
5b9d495de9 Feat(sway): add gesture 2023-10-20 06:26:33 +02:00
42b373b467 Feat: move from packer to lazy 2023-10-06 14:29:02 +02:00
9c5c85fe29 Feat: remove _ for keyword 2023-10-06 14:13:07 +02:00
6c6bbb47f3 feat: remove new instance shortcut 2023-09-25 10:18:27 +02:00
375d135e83 feat: add backlink ref 2023-09-25 10:18:13 +02:00
5e87cb1f94 feat: add comment 2023-09-25 10:18:00 +02:00
984fd8cfbd feat: clean old config 2023-09-25 10:17:39 +02:00
624c9ddd24 feat: add partager c'est sympa 2023-09-25 10:17:20 +02:00
e4c915c224 Feat: set terminal colors 2023-09-25 10:13:49 +02:00
06e9c790a9 Feat: add recording marcro 2023-07-22 07:41:42 +02:00
a49ce29958 Feat(zsh): add tea completion 2023-06-23 11:08:10 +02:00
ff7880d04d Feat(nvim): iskeyword _ for w motion 2023-06-15 06:36:32 +02:00
b745e15242 Feat(newsboat): modify g and G keys and add channels 2023-06-13 06:26:29 +02:00
c6a5e6ba07 Feat(nvim): add oil.nvim 2023-06-08 21:28:20 +02:00
af26c6978f Feat: add yarn global path 2023-06-07 06:40:39 +02:00
a6d2ce2f22 Feat(tmux): remove plugin directory 2023-04-30 06:31:52 +02:00
0a9e6f9dda Feat(tmux): change theme and copy 2023-04-30 06:31:26 +02:00
b069c2060b Feat(nvim): add mini.indentscope 2023-04-18 06:05:54 +02:00
2d40f69d6f Feat(pluging): add noice to improve the ui 2023-04-16 14:16:49 +02:00
30ba1656b4 Feat(plugin): add which-key.nvim 2023-04-16 14:00:54 +02:00
c96fdf218f Fix: lsp format to <leader>F 2023-04-05 15:58:01 +02:00
6ec22356e7 Feat(zk): add litterature directory 2023-04-04 11:45:59 +02:00
f3e3ee0438 Fix(nvim): remove ending with space in link snippet 2023-04-04 11:45:20 +02:00
58cea70665 Feat(newsboat): add channel 2023-04-04 11:44:55 +02:00
ba48178f00 Feat(nvim): replace telescope-file-browser by nvimtree 2023-04-04 11:44:23 +02:00
06b30a5c3e Fix(sway): imagepath syntax 2023-02-24 09:28:11 +01:00
c6d6cdc0aa Feat(nvim): add cmp-cmdline for command line completion 2023-02-21 17:54:55 +01:00
383c27850a Feat(newsboat): add channels 2023-02-21 10:16:55 +01:00
21e72dfb45 Feat(nvim): use external ltex 2023-02-21 10:16:22 +01:00
1d5e596ce0 Feat(nvim): zk new note shortcuts 2023-02-21 10:16:05 +01:00
bcc2772268 Feat(sway): add script for screenshots 2023-01-29 06:12:51 +01:00
757c0d3585 Feat(newsboat): add new channel 2023-01-29 04:42:03 +01:00
6780915f38 Feat(nvim): add vim abolish (greater sub) 2023-01-29 04:41:36 +01:00
c04543aba9 Feat(nvim): [[ shortcut for insert link 2023-01-29 04:40:08 +01:00
754ebcf1ae Fix(nvim): latex task snippet 2023-01-29 04:39:40 +01:00
a4de744aa7 Feat: add underscore link 2022-12-28 06:28:58 +01:00
4f11c1a9b9 Fix: disable treesitter indent for python 2022-12-28 06:28:27 +01:00
74e33d46b2 Feat: add centering and moving bloc remap 2022-12-21 05:10:48 +01:00
600b328691 Feat: add config for vertical monitor 2022-11-29 17:13:45 +01:00
d06a4e94cf Feat(kanshi): set maison 2022-11-22 05:46:28 +01:00
c44cd17970 Feat: zk config files 2022-11-21 10:09:06 +01:00
b0570700bb Fix: change proposition order 2022-11-21 10:08:31 +01:00
30d3ddfc90 Feat: add telekasten 2022-11-21 09:57:20 +01:00
3e0def88dd Feat: close buffer with telescope 2022-11-21 09:57:04 +01:00
d6c6d4f5d1 Feat: add zk default notes path 2022-11-21 09:55:20 +01:00
787bca3373 Feat: add comments 2022-11-10 04:26:38 +01:00
144 changed files with 4189 additions and 4798 deletions

11
.gitignore vendored
View File

@@ -3,16 +3,16 @@ zsh/.config/zsh/.zhistory
vifm/.config/vifm/vifm-help.txt
vifm/.config/vifm/vifminfo.json
vifm/.config/vifm/vifminfo.json_*
nvim/.config/nvim/autoload
nvim/.config/nvim/plugin
vim/.vim/autoload/
vim/.vim/plugged/
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
@@ -20,5 +20,8 @@ newsboat/.newsboat/history.cmdline
mpd/.config/mpd/database
mpd/.config/mpd/state
mpd/.config/mpd/playlists/
neomutt/.config/vdirsyncer/status/
aerc/.config/vdirsyncer/status/
hypr/.config/hypr/monitor-manager.log

View File

@@ -1,7 +1,49 @@
# My dotfiles
## Sway
Géré avec [GNU stow](https://www.gnu.org/software/stow/).
Paquets à installer
## Packages
sway waybar rofi rofi-pass nm-applet blueman brightnessctl
| 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
```

View File

@@ -1,46 +0,0 @@
URxvt*font: xft:DroidSansMono Nerd Font Mono:pixelsize=14,xft:UbuntuMono Nerd Font:pixelsize=12
URxvt*letterSpace: -1
URxvt*scrollBar: false
! Extensions
URxvt.perl-ext-common: default,matcher,fullscreen,resize-font
! fullscreen with F11
URxvt.keysym.F11: perl:fullscreen:switch
! `font-size` plugin
URxvt.resize-font.smaller: C-Down
URxvt.resize-font.bigger: C-Up
! Open link with firefox
! URxvt.url-launcher: /usr/bin/xdg-open
URxvt.url-launcher: /usr/bin/firefox
URxvt.matcher.button: 1
! hard contrast: *background: #1d2021
*background: #282828
! soft contrast: *background: #32302f
*foreground: #ebdbb2
! Black + DarkGrey
*color0: #282828
*color8: #928374
! DarkRed + Red
*color1: #cc241d
*color9: #fb4934
! DarkGreen + Green
*color2: #98971a
*color10: #b8bb26
! DarkYellow + Yellow
*color3: #d79921
*color11: #fabd2f
! DarkBlue + Blue
*color4: #458588
*color12: #83a598
! DarkMagenta + Magenta
*color5: #b16286
*color13: #d3869b
! DarkCyan + Cyan
*color6: #689d6a
*color14: #8ec07c
! LightGrey + White
*color7: #a89984
*color15: #ebdbb2

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

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

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

View 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

View File

@@ -5,7 +5,7 @@
[addressbooks]
[[contacts]]
path = ~/.contacts/contacts/
path = ~/.contacts/contacts/contacts/
[general]
debug = no

View File

@@ -16,11 +16,11 @@ tls on
tls_starttls on
auth on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
logfile ~/.local/share/msmtp/msmtp.log
account bb_opytex
user Takanuva
passwordeval "pass mail/mailfence/Takanuva | head -n1"
passwordeval "pass mail/mailfence/Takanuva | grep smtp | awk '{print $2}'"
auth on
host smtp.mailfence.com
port 465
@@ -40,7 +40,7 @@ account jb_opytex
account ac-lyon
user bbertrand
passwordeval "pass Prof/pronote/bbertrand | head -n1"
passwordeval "pass Prof/aclyon/bbertrand | head -n1"
auth on
host smtps.ac-lyon.fr
# Envelope-from address

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

View 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

View File

@@ -106,4 +106,3 @@ key_bindings:
- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: N, mods: Control, action: SpawnNewInstance }

View File

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

View File

@@ -1,2 +0,0 @@
jethrokuan/fzf
oh-my-fish/plugin-bang-bang

View 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

View File

@@ -3,3 +3,5 @@
email = benjamin.bertrand@opytex.org
[init]
defaultBranch = main
[fetch]
recurseSubmodules = false

View 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

View 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

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

View File

View 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

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

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

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
~/.config/hypr/monitor-manager.sh

View 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

View 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

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

View 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

View 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

View File

@@ -122,3 +122,6 @@ action_menu="Alt+a"
type_menu="Alt+t"
help="Alt+h"
switch="Alt+x"
clipboard_backend=wl-clipboard
backend=wtype

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/kanata.service

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/msmtp-queue.path

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.service

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/voxtype.service

View 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

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

View File

@@ -0,0 +1,9 @@
[Unit]
Description=mbsync every 5 minutes
[Timer]
OnBootSec=1m
OnUnitActiveSec=5m
[Install]
WantedBy=timers.target

View 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

View File

@@ -0,0 +1,9 @@
[Socket]
ListenStream=%t/mpd/socket
ListenStream=6600
Backlog=5
KeepAlive=true
PassCredentials=true
[Install]
WantedBy=sockets.target

View 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

View 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

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Flush msmtp queue every 10 minutes
[Timer]
OnBootSec=1m
OnUnitActiveSec=10m
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/mpd.socket

View File

@@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.socket

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/mbsync.timer

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/msmtp-queue.timer

View File

@@ -0,0 +1 @@
/home/lafrite/.config/systemd/user/vdirsyncer.timer

View File

@@ -0,0 +1,7 @@
[Unit]
Description=vdirsyncer sync
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/vdirsyncer sync

View File

@@ -0,0 +1,9 @@
[Unit]
Description=vdirsyncer sync every 15 minutes
[Timer]
OnBootSec=2m
OnUnitActiveSec=15m
[Install]
WantedBy=timers.target

View 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

View 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,
}
}]

View 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"
}
}]

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

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

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

View File

@@ -196,13 +196,13 @@ auto_update "yes"
# Input #######################################################################
#
input {
plugin "curl"
# input {
# plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
# }
#
#
###############################################################################
@@ -215,6 +215,10 @@ input {
#
# An example of an ALSA output:
#
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
#audio_output {
# type "alsa"
# name "My ALSA Device"

View File

@@ -1,43 +0,0 @@
# vim: filetype=muttrc
unmailboxes *
set from = "benjamin.bertrand@ac-lyon.fr"
set sendmail = "/usr/bin/msmtp -a ac-lyon"
set folder = "~/.mail/ac_lyon"
set spoolfile = "+INBOX"
set postponed = "+Drafts"
set record = "+Sent"
set trash = "+Trash"
set mbox_type = Maildir
set ssl_starttls = yes
set ssl_force_tls = yes
color status blue default
#mailboxes =INBOX =Sent =Drafts =Junk
# set my_pass = "`pass Prof/pronote/bbertrand`"
# set folder = "imaps://mail.ac-lyon.fr"
# set imap_user = bbertrand
# set imap_pass = $my_pass
#
# set ssl_force_tls = yes
# set smtp_url = smtps://$imap_user@smtps.ac-lyon.fr:587
# set smtp_pass = $my_pass
# set ssl_starttls = yes
# set smtp_authenticators = "login"
#
# set spoolfile = +INBOX
# mailboxes = +INBOX
# set imap_check_subscribed
#
# set record = "+Sent"
# set trash = "+Trash"
# set postponed = "+Drafts"
#
# ## Hook -- IMPORTANT!
# account-hook $folder "set imap_pass=`pass Prof/pronote/bbertrand`"

View File

@@ -1,43 +0,0 @@
# vim: filetype=muttrc
unmailboxes *
set from = "benjamin.bertrand@opytex.org"
set sendmail = "/usr/bin/msmtp -a bb_opytex"
set folder = "~/.mail/bb_opytex"
set spoolfile = "+INBOX"
set postponed = "+Drafts"
set record = "+Sent"
set trash = "+Junk"
set mbox_type = Maildir
set ssl_starttls = yes
set ssl_force_tls = yes
color status cyan default
# mailboxes =INBOX =Sent =Drafts =Junk
# set my_pass = "`pass mail/mailfence/Takanuva`"
# set folder = "imaps://imap.mailfence.com/"
# set imap_user = Takanuva
# set imap_pass = $my_pass
#
# set ssl_force_tls = yes
# set smtp_url = smtps://$imap_user@smtp.mailfence.com:465
# set smtp_pass = $my_pass
# set ssl_starttls = yes
# set smtp_authenticators = "login"
#
#
# set spoolfile = +INBOX
#
# set record = "+Sent"
# set trash = "+Trash"
# set postponed = "+Drafts"
#
#
# ## Hook -- IMPORTANT!
# account-hook $folder "set imap_pass=`pass mail/mailfence/Takanuva`"

View File

@@ -1,44 +0,0 @@
# vim: filetype=muttrc
unmailboxes *
set imap_list_subscribed
set imap_check_subscribed
set from = "jost_bertrand@opytex.org"
set sendmail = "/usr/bin/msmtp -a jb_opytex"
set folder = "~/.mail/jb_opytex"
set spoolfile = "+INBOX"
set postponed = "+Drafts"
set record = "+Sent"
set trash = "+Junk"
set mbox_type = Maildir
set ssl_starttls = yes
set ssl_force_tls = yes
color status red default
# set my_pass = "`pass mail/mailfence/Takanuva`"
# set folder = "imaps://imap.mailfence.com/"
# set imap_user = Takanuva
# set imap_pass = $my_pass
#
# set ssl_force_tls = yes
# set smtp_url = smtps://$imap_user@smtp.mailfence.com:465
# set smtp_pass = $my_pass
# set ssl_starttls = yes
# set smtp_authenticators = "login"
#
#
# set spoolfile = +INBOX
# set imap_check_subscribed
#
# set record = "+Sent"
# set trash = "+Trash"
# set postponed = "+Drafts"
#
#
# ## Hook -- IMPORTANT!
# account-hook $folder "set imap_pass=`pass mail/mailfence/Takanuva`"

View File

@@ -1,100 +0,0 @@
# -*-muttrc-*-
# Screenshot http://trovao.droplinegnome.org/stuff/mutt-zenburnt.png
#
# This is a zenburn-based neomutt color scheme that is not (even by far)
# complete. There's no copyright involved. Do whatever you want with it.
# Just be aware that I won't be held responsible if the current color-scheme
# explodes your mail client. ;)
#
# Do notice that this color scheme requires a terminal emulator that supports
# 256 color. Any modern X terminal emulator should have support for that and
# you can enable it by calling neomutt as "TERM=xterm-256color neomutt" or, if you
# use screen, by adding "term screen-256color" to your .screenrc.
#
# This file is in the public domain.
#
# general-doesn't-fit stuff
color normal color188 color237
color error color115 color236
color markers color142 color238
color tilde color108 color237
color status color144 color234
# index stuff
color indicator color108 color236
color tree color109 color237
color index color188 color237 ~A
color index color188 color237 ~N
color index color188 color237 ~O
color index color174 color237 ~F
color index color174 color237 ~D
# Message Index ----------------------------------------------------------------
## Weak
color index color08 color00 "~R" # read messages
color index color08 color00 "~d >45d" # older than 45 days
color index color08 color00 "~v~(!~N)" # collapsed thread with no unread
color index color08 color00 "~Q" # messages that have been replied to
## Strong
color index color21 color00 "(~U|~N|~O)" # unread, new, old messages
color index color21 color00 "~v~(~U|~N|~O)" # collapsed thread with unread
## Highlight
### Trusted
color index color06 color00 "~g" # PGP signed messages
color index color06 color00 "~G" # PGP encrypted messages
### Odd
color index color01 color00 "~E" # past Expires: header date
color index color01 color00 "~=" # duplicated
color index color01 color00 "~S" # marked by Supersedes: header
### Flagged
color index color05 color00 "~F" # flagged messages
color index color02 color00 "~v~(~F)" # collapsed thread with flagged inside
# Selection
color index color02 color18 "~T" # tagged messages
color index color01 color18 "~D" # deleted messages
#
# header stuff
color hdrdefault color223 color237
color header color223 color237 "^Subject"
# gpg stuff
color body color188 color237 "^gpg: Good signature.*"
color body color115 color236 "^gpg: BAD signature.*"
color body color174 color237 "^gpg: Can't check signature.*"
color body color174 color237 "^-----BEGIN PGP SIGNED MESSAGE-----"
color body color174 color237 "^-----BEGIN PGP SIGNATURE-----"
color body color174 color237 "^-----END PGP SIGNED MESSAGE-----"
color body color174 color237 "^-----END PGP SIGNATURE-----"
color body color174 color237 "^Version: GnuPG.*"
color body color174 color237 "^Comment: .*"
# url, email and web stuff
color body color174 color237 "(finger|ftp|http|https|news|telnet)://[^ >]*"
color body color174 color237 "<URL:[^ ]*>"
color body color174 color237 "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?"
color body color174 color237 "mailto: *[^ ]+\(\\i?subject=[^ ]+\)?"
color body color174 color237 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
# misc body stuff
color attachment color174 color237 #Add-ons to the message
color signature color223 color237
# quote levels
color quoted color108 color237
color quoted1 color116 color237
color quoted2 color247 color237
color quoted3 color108 color237
color quoted4 color116 color237
color quoted5 color247 color237
color quoted6 color108 color237
color quoted7 color116 color237
color quoted8 color247 color237
color quoted9 color108 color237

View File

@@ -1,121 +0,0 @@
# -*-muttrc-*-
# gruvbox dark (contrast dark):
# bg0 = 234
# bg1 = 237
# bg2 = 239
# bg3 = 241
# bg4 = 243
#
# gray = 245
#
# fg0 = 229
# fg1 = 223
# fg2 = 250
# fg3 = 248
# fg4 = 246
#
# red = 167
# green = 142
# yellow = 214
# blue = 109
# purple = 175
# aqua = 108
# orange = 208
# See http://www.mutt.org/doc/manual/#color
color attachment color109 color234
color bold color229 color234
color error color167 color234
color hdrdefault color246 color234
color indicator color223 color237
color markers color243 color234
color normal color223 color234
color quoted color250 color234
color quoted1 color108 color234
color quoted2 color250 color234
color quoted3 color108 color234
color quoted4 color250 color234
color quoted5 color108 color234
color search color234 color208
color signature color108 color234
color status color234 color250
color tilde color243 color234
color tree color142 color234
color underline color223 color239
color sidebar_divider color250 color234
color sidebar_new color142 color234
color index color142 color234 ~N
color index color108 color234 ~O
color index color109 color234 ~P
color index color214 color234 ~F
color index color175 color234 ~Q
color index color167 color234 ~=
color index color234 color223 ~T
color index color234 color167 ~D
color header color214 color234 "^(To:|From:)"
color header color142 color234 "^Subject:"
color header color108 color234 "^X-Spam-Status:"
color header color108 color234 "^Received:"
# Regex magic for URLs and hostnames
#
# Attention: BSD's regex has RE_DUP_MAX set to 255.
#
# Examples:
# http://some-service.example.com
# example.com
# a.example.com
# some-service.example.com
# example.com/
# example.com/datenschutz
# file:///tmp/foo
#
# Non-examples:
# 1.1.1900
# 14.02.2022/24:00
# 23.59
# w.l.o.g
# team.its
color body color142 color234 "[a-z]{3,255}://[[:graph:]]*"
color body color142 color234 "([-[:alnum:]]+\\.)+([0-9]{1,3}|[-[:alpha:]]+)/[[:graph:]]*"
color body color142 color234 "([-[:alnum:]]+\\.){2,255}[-[:alpha:]]{2,10}"
# IPv4 and IPv6 stolen from https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
color body color142 color234 "((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])"
color body color142 color234 "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))"
# Mail addresses and mailto URLs
color body color208 color234 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
color body color208 color234 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
# some simleys and stuff
color body color234 color214 "[;:]-*[)>(<lt;|]"
color body color229 color234 "\\*[- A-Za-z]+\\*"
color body color214 color234 "^-.*PGP.*-*"
color body color142 color234 "^gpg: Good signature from"
color body color167 color234 "^gpg: Can't.*$"
color body color214 color234 "^gpg: WARNING:.*$"
color body color167 color234 "^gpg: BAD signature from"
color body color167 color234 "^gpg: Note: This key has expired!"
color body color214 color234 "^gpg: There is no indication that the signature belongs to the owner."
color body color214 color234 "^gpg: can't handle these multiple signatures"
color body color214 color234 "^gpg: signature verification suppressed"
color body color214 color234 "^gpg: invalid node with packet of type"
color body color142 color234 "^Good signature from:"
color body color167 color234 "^.?BAD.? signature from:"
color body color142 color234 "^Verification successful"
color body color167 color234 "^Verification [^s][^[:space:]]*$"
color compose header color223 color234
color compose security_encrypt color175 color234
color compose security_sign color109 color234
color compose security_both color142 color234
color compose security_none color208 color234

View File

@@ -1 +0,0 @@
mailboxes "+ac_lyon/Archives" "+ac_lyon/Archives.2019-2020" "+ac_lyon/Archives.2020-2021" "+ac_lyon/Archives.2021-2022" "+ac_lyon/Archives.2022-2023" "+ac_lyon/Archives/2019-2020" "+ac_lyon/Archives/2020-2021" "+ac_lyon/Archives/2021-2022" "+ac_lyon/Archives/2022-2023" "+ac_lyon/Brouillons" "+ac_lyon/Drafts" "+ac_lyon/Eleves" "+ac_lyon/Eleves.2nd1" "+ac_lyon/Eleves/2nd1" "+ac_lyon/Envoy&AOk-s" "+ac_lyon/INBOX" "+ac_lyon/Junk" "+ac_lyon/Sent" "+ac_lyon/TICE" "+ac_lyon/Trash" "+bb_opytex/Archive" "+bb_opytex/Drafts" "+bb_opytex/INBOX" "+bb_opytex/R&AOk-seautage" "+bb_opytex/Sent Items" "+bb_opytex/Spam?" "+bb_opytex/Trash" "+jb_opytex/2021" "+jb_opytex/2022" "+jb_opytex/Archive" "+jb_opytex/Drafts" "+jb_opytex/INBOX" "+jb_opytex/Sent Items" "+jb_opytex/Spam?" "+jb_opytex/Trash"

View File

@@ -1,12 +0,0 @@
# xdg-open
application/msword; /usr/bin/xdg-open %s
application/pdf; /usr/bin/xdg-open %s
application/postscript ; /usr/bin/xdg-open %s
# HTML
text/html; w3m -I %{charset} -T text/html; copiousoutput;
text/plain; nvim %s
#Images
image/png; /usr/bin/vimiv %s
image/jpeg; /usr/bin/vimiv %s

View File

@@ -1,56 +0,0 @@
# vim: filetype=muttrc
# sidebar mappings
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible
# global index and pager shortcuts
bind index,pager @ compose-to-sender
bind index,pager D purge-message
bind index <tab> sync-mailbox
bind index <space> collapse-thread
# Email completion bindings
bind editor <Tab> complete-query
bind editor ^T complete
# General rebindings
bind attach <return> view-mailcap
bind attach l view-mailcap
bind editor <space> noop
bind pager c imap-fetch-mail
bind index G last-entry
bind index g noop
bind index gg first-entry
bind pager,attach h exit
bind pager j next-line
bind pager k previous-line
bind pager l view-attachments
bind index D delete-message
bind index U undelete-message
bind index L limit
bind index h noop
bind index l display-message
bind browser h goto-parent
bind browser l select-entry
bind pager,browser gg top-page
bind pager,browser G bottom-page
bind index,pager,browser d half-down
bind index,pager,browser u half-up
bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query
#
## Shortcuts
macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.config/neomutt/accounts/ac-lyon<enter><change-folder>!<enter>'
macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.config/neomutt/accounts/bb_opytex<enter><change-folder>!<enter>'
macro index,pager <f4> '<sync-mailbox><enter-command>source ~/.config/neomutt/accounts/jb_opytex<enter><change-folder>!<enter>'

View File

@@ -1,15 +0,0 @@
# vim: filetype=muttrc
source ~/.config/neomutt/settings
source ~/.config/neomutt/colors_gruvbox
source ~/.config/neomutt/mappings
#source ~/.config/neomutt/accounts/jb_opytex
folder-hook jb_opytex/* 'source ~/.config/neomutt/accounts/jb_opytex'
#source ~/.config/neomutt/accounts/bb_opytex
folder-hook bb_opytex/* 'source ~/.config/neomutt/accounts/bb_opytex'
source ~/.config/neomutt/accounts/ac-lyon
folder-hook ac_lyon/* 'source ~/.config/neomutt/accounts/ac-lyon'
#source ~/.config/neomutt/mailboxes

View File

@@ -1,72 +0,0 @@
# vim: filetype=muttrc
set editor = "nvim"
set realname = "Benjamin Bertrand"
set use_from = "yes"
# How often to check for new mail (time in seconds).
set mail_check = 120
# Allow Mutt to open a new IMAP connection automatically.
unset imap_passive
# Keep the IMAP connection alive by polling intermittently (time in seconds).
set imap_keepalive = 300
# main options
set envelope_from
set edit_headers # show headers when composing
set fast_reply # skip to compose when replying
set askcc # ask for CC:
set fcc_attach # save attachments with the body
set forward_format = "Fwd: %s" # format of subject when forwarding
set forward_decode # decode when forwarding
set attribution = "On %d, %n wrote:" # format of quoting header
set reply_to # reply to Reply to: field
set reverse_name # reply as whomever it was to
set include # include message in replies
set forward_quote # include message in forwards
set text_flowed
unset sig_dashes # no dashes before sig
unset mime_forward # forward attachments as part of body
unset help # No help bar at the top of index
# set status_on_top # Status bar on top of index
set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
# status bar, date format, finding stuff etc.
set status_chars = " *%A"
set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
set date_format = "%d.%m.%Y %H:%M"
set sort = threads
set sort_aux = reverse-last-date-received
set uncollapse_jump
set sort_re
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
set send_charset = "utf-8:iso-8859-1:us-ascii"
set charset = "utf-8"
set arrow_cursor = "no" # Change `color indicator` depending
# Pager View Options
set pager_index_lines = 20 # Shows 10 lines of index when pager is active
set pager_context = 3
set pager_stop
set menu_scroll
set tilde
unset markers
# Mailcal for attachments
set mailcap_path = ~/.config/neomutt/mailcap
set header_cache = "~/.cache/mutt"
set message_cachedir = "~/.cache/mutt"
# Contact with khard
set query_command = "khard email --parsable --search-in-source-files '%s'"
# Set preffered view modes
auto_view text/html text/calendar application/ics # view html automatically
alternative_order text/html text/plain text/enriched text/*

View File

@@ -1,67 +0,0 @@
[general]
accounts = bb_opytex, jb_opytex, ac_lyon
pythonfile = ~/.config/offlineimap/offlineimap.py
maxsyncaccounts = 1
[mbnames]
enabled = yes
filename = ~/.config/neomutt/mailboxes
header = "mailboxes "
peritem = "+%(accountname)s/%(foldername)s"
sep = " "
footer = "\n"
[Account bb_opytex]
localrepository = Local-bb_opytex
remoterepository = Remote-bb_opytex
autorefresh = 1
quick = 10
[Repository Local-bb_opytex]
type = Maildir
localfolders = ~/.mail/bb_opytex
sep = /
[Repository Remote-bb_opytex]
type = IMAP
remotehost = imap.mailfence.com
remoteuser = Takanuva
remotepasseval = get_pass("mail/mailfence/Takanuva")
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
[Account jb_opytex]
localrepository = Local-jb_opytex
remoterepository = Remote-jb_opytex
autorefresh = 1
quick = 10
[Repository Local-jb_opytex]
type = Maildir
localfolders = ~/.mail/jb_opytex
sep = /
[Repository Remote-jb_opytex]
type = IMAP
remotehost = imap.mailfence.com
remoteuser = margot_benjamin
remotepasseval = get_pass("mail/jost_bertrand@opytex.org/margot_benjamin")
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
[Account ac_lyon]
localrepository = Local-ac_lyon
remoterepository = Remote-ac_lyon
autorefresh = 1
quick = 10
[Repository Local-ac_lyon]
type = Maildir
localfolders = ~/.mail/ac_lyon
sep = /
[Repository Remote-ac_lyon]
type = IMAP
remotehost = mail.ac-lyon.fr
remoteuser = bbertrand
remotepasseval = get_pass("Prof/pronote/bbertrand")
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

View File

@@ -1,5 +0,0 @@
from subprocess import check_output
def get_pass(path):
return check_output("pass " + path, shell=True).splitlines()[0]

View File

@@ -1,21 +0,0 @@
[general]
status_path = "~/.config/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/"
fileext = ".vcf"
[storage cloud_opytex_contact_remote]
type = "carddav"
# We can simplify this URL here as well. In theory it shouldn't matter.
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"]

View File

@@ -1,8 +1,9 @@
auto-reload yes
reload-time 30
browser "chromium --incognito"
macro y set browser "tmux new-window mpv %u"; open-in-browser ; set browser chromium
macro Y set browser "mpv %u"; open-in-browser ; set browser chromium
# browser "chromium --incognito"
browser "firefox --private-window"
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 j
@@ -14,6 +15,13 @@ bind-key j down
bind-key k up
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 listnormal default default
color listnormal_unread default default

View File

@@ -1,14 +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=UCeeFfhMcJa1kjtfZAGskOCA "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=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=UCsM4_jihNFYe4CtSkXvDR-Q "Ferme" "~permaculture agroécologie etc..."
@@ -20,10 +20,11 @@ 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=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=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=UCvDpfkniGG6WkX5L7DwyGaA "Bois" "Olivier Verdier"
@@ -31,9 +32,7 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UC7TiJ6Tnxc_dSE42byTPMug "Bo
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=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=UCxiqy-VOYw6uBE4raFCz4Ow "Chantier" "LJVS"
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"
@@ -53,10 +52,18 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCy0I5Hcl2k7dN4UdZTedfeQ "Sp
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=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=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=UCvjgXvBlbQiydffZU7m1_aw "Programmation" "~Coding Train"
https://www.youtube.com/feeds/videos.xml?channel_id=UCj_iGliGCkLcHSZ8eqVNPDQ "Programmation" "~Grafikart.fr"
https://www.youtube.com/feeds/videos.xml?channel_id=UCOk-gHyjcWZNj3Br4oxwh0A "Homelab" "Techno Tim"
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"

View File

@@ -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('mappings')
require('lsp')

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

View File

@@ -1,133 +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 status, cmp = pcall(require, "cmp")
if (not status) then return end
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 = false, behavior = cmp.ConfirmBehavior.Replace }),
-- ["<Tab>"] = cmp.mapping.confirm({select = true, behavior = cmp.ConfirmBehavior.Insert}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif vim.fn["vsnip#available"](1) == 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 cmp.visible() then
cmp.select_prev_item()
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
feedkey("<Plug>(vsnip-jump-prev)", "")
end
end, { "i", "s" }),
},
sources = {
{ name = 'vsnip' },
{ name = 'nvim_lsp' },
{ name = 'path' },
{
name = 'buffer',
keyword_length = 4,
keyword_pattern = [[\d\@!\k\k*]],
options = {
-- keyword_pattern = [[\k\+]]-- for non ascii caracters
keyword_pattern = [[\d\@!\k\k*]],
}
},
-- { name = 'spell', keyword_length = 4 },
},
experimental = {
-- I like the new menu better! Nice work hrsh7th
native_menu = false,
-- Let's play with this for a day or two
ghost_text = true,
},
}
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline('/', {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' },
{ name = 'cmdline' }
})
})
vim.cmd [[autocmd FileType TelescopePrompt lua require('cmp').setup.buffer { enabled = false }]]
vim.g.vsnip_snippet_dir = '~/.config/nvim/vsnips'

View File

@@ -1,8 +0,0 @@
local status, autopairs = pcall(require, "nvim-autopairs")
if (not status) then return end
autopairs.setup{
disable_filetype = { "TelescopePrompt" , "vim" },
ignored_next_char = string.gsub([[ [%w%%%'%[%"%.] ]],"%s+", ""),
}

View File

@@ -1,4 +0,0 @@
vim.opt.termguicolors = true
require'colorizer'.setup()

View File

@@ -1 +0,0 @@
require('gitsigns').setup {}

View File

@@ -1,6 +0,0 @@
vim.opt.list = true
vim.opt.listchars:append("eol:↴")
require("indent_blankline").setup {
show_end_of_line = true,
}

View File

@@ -1,214 +0,0 @@
-- Eviline config for lualine
-- Author: shadmansaleh
-- Credit: glepnir
local lualine = require 'lualine'
-- Color table for highlights
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 = {}
},
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.api.nvim_buf_get_option(0, 'filetype')
local clients = vim.lsp.get_active_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'}}
-- Now don't forget to initialize lualine
lualine.setup(config)

View File

@@ -1 +0,0 @@
vim.g.notes_directories = {"~/Nextcloud/Notes/vim" }

View File

@@ -1,28 +0,0 @@
local null_ls_status_ok, null_ls = pcall(require, "null-ls")
if not null_ls_status_ok then
return
end
local mason_null_ls_status_ok, mason_null_ls = pcall(require, "mason-null-ls")
if not null_ls_status_ok then
return
end
require("mason-null-ls").setup({
})
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
local formatting = null_ls.builtins.formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
local diagnostics = null_ls.builtins.diagnostics
null_ls.setup {
debug = false,
sources = {
formatting.prettier.with { extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } },
formatting.black.with { extra_args = { "--fast" } },
diagnostics.flake8,
diagnostics.ansiblelint,
diagnostics.yamllint,
},
}

View File

@@ -1,158 +0,0 @@
local status, telekasten = pcall(require, "telekasten")
if (not status) then return end
local home = vim.fn.expand("~/Nextcloud/Documents/zettelkasten")
telekasten.setup{
home = home,
-- if true, telekasten will be enabled when opening a note within the configured home
take_over_my_home = true,
-- auto-set telekasten filetype: if false, the telekasten filetype will not be used
-- and thus the telekasten syntax will not be loaded either
auto_set_filetype = true,
-- dir names for special notes (absolute path or subdir name)
dailies = home .. '/' .. 'daily',
weeklies = home .. '/' .. 'weekly',
templates = home .. '/' .. 'templates',
-- image (sub)dir for pasting
-- dir name (absolute path or subdir name)
-- or nil if pasted images shouldn't go into a special subdir
image_subdir = "img",
-- markdown file extension
extension = ".md",
-- following a link to a non-existing note will create it
follow_creates_nonexisting = true,
dailies_create_nonexisting = true,
weeklies_create_nonexisting = true,
-- template for new notes (new_note, follow_link)
-- set to `nil` or do not specify if you do not want a template
template_new_note = home .. '/' .. 'templates/new_note.md',
-- template for newly created daily notes (goto_today)
-- set to `nil` or do not specify if you do not want a template
template_new_daily = home .. '/' .. 'templates/daily.md',
-- template for newly created weekly notes (goto_thisweek)
-- set to `nil` or do not specify if you do not want a template
template_new_weekly= home .. '/' .. 'templates/weekly.md',
-- image link style
-- wiki: ![[image name]]
-- markdown: ![](image_subdir/xxxxx.png)
image_link_style = "markdown",
-- integrate with calendar-vim
plug_into_calendar = true,
calendar_opts = {
-- calendar week display mode: 1 .. 'WK01', 2 .. 'WK 1', 3 .. 'KW01', 4 .. 'KW 1', 5 .. '1'
weeknm = 4,
-- use monday as first day of week: 1 .. true, 0 .. false
calendar_monday = 1,
-- calendar mark: where to put mark for marked days: 'left', 'right', 'left-fit'
calendar_mark = 'left-fit',
},
-- telescope actions behavior
close_after_yanking = false,
insert_after_inserting = true,
-- tag notation: '#tag', ':tag:', 'yaml-bare'
tag_notation = "#tag",
-- command palette theme: dropdown (window) or ivy (bottom panel)
command_palette_theme = "ivy",
-- tag list theme:
-- get_cursor: small tag list at cursor; ivy and dropdown like above
show_tags_theme = "ivy",
-- when linking to a note in subdir/, create a [[subdir/title]] link
-- instead of a [[title only]] link
subdirs_in_links = true,
-- template_handling
-- What to do when creating a new note via `new_note()` or `follow_link()`
-- to a non-existing note
-- - prefer_new_note: use `new_note` template
-- - smart: if day or week is detected in title, use daily / weekly templates (default)
-- - always_ask: always ask before creating a note
template_handling = "smart",
-- path handling:
-- this applies to:
-- - new_note()
-- - new_templated_note()
-- - follow_link() to non-existing note
--
-- it does NOT apply to:
-- - goto_today()
-- - goto_thisweek()
--
-- Valid options:
-- - smart: put daily-looking notes in daily, weekly-looking ones in weekly,
-- all other ones in home, except for notes/with/subdirs/in/title.
-- (default)
--
-- - prefer_home: put all notes in home except for goto_today(), goto_thisweek()
-- except for notes with subdirs/in/title.
--
-- - same_as_current: put all new notes in the dir of the current note if
-- present or else in home
-- except for notes/with/subdirs/in/title.
new_note_location = "smart",
-- should all links be updated when a file is renamed
rename_update_links = true,
}
-- Mapping helper
local function map(mode, lhs, rhs, opts)
local options = { noremap = true }
if opts then
options = vim.tbl_extend("force", options, opts)
end
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
end
-- On hesitation, bring up the command panel
map("n","<leader>z", ":lua require('telekasten').panel()<CR>")
-- Function mappings
map("n", "<leader>zf", ":lua require('telekasten').find_notes()<CR>")
map("n", "<leader>zd", ":lua require('telekasten').find_daily_notes()<CR>")
map("n", "<leader>zg", ":lua require('telekasten').search_notes()<CR>")
map("n", "<leader>zz", ":lua require('telekasten').follow_link()<CR>")
map("n", "<leader>zT", ":lua require('telekasten').goto_today()<CR>")
map("n", "<leader>zW", ":lua require('telekasten').goto_thisweek()<CR>")
map("n", "<leader>zw", ":lua require('telekasten').find_weekly_notes()<CR>")
map("n", "<leader>zn", ":lua require('telekasten').new_note()<CR>")
map("n", "<leader>zN", ":lua require('telekasten').new_templated_note()<CR>")
map("n", "<leader>zy", ":lua require('telekasten').yank_notelink()<CR>")
map("n", "<leader>zc", ":lua require('telekasten').show_calendar()<CR>")
map("n", "<leader>zC", ":CalendarT<CR>")
map("n", "<leader>zi", ":lua require('telekasten').paste_img_and_link()<CR>")
map("n", "<leader>zt", ":lua require('telekasten').toggle_todo()<CR>")
map("n", "<leader>zb", ":lua require('telekasten').show_backlinks()<CR>")
map("n", "<leader>zF", ":lua require('telekasten').find_friends()<CR>")
map("n", "<leader>zI", ":lua require('telekasten').insert_img_link({ i=true })<CR>")
map("n", "<leader>zp", ":lua require('telekasten').preview_img()<CR>")
map("n", "<leader>zm", ":lua require('telekasten').browse_media()<CR>")
map("n", "<leader>za", ":lua require('telekasten').show_tags()<CR>")
map("n", "<leader>#", ":lua require('telekasten').show_tags()<CR>")
map("n", "<leader>zr", ":lua require('telekasten').rename_note()<CR>")
-- we could define [[ in **insert mode** to call insert link
-- inoremap [[ <cmd>:lua require('telekasten').insert_link()<CR>
-- alternatively: leader [
map("i", "<leader>[", "<cmd>:lua require('telekasten').insert_link({ i=true })<CR>")
map("i", "<leader>zt", "<cmd>:lua require('telekasten').toggle_todo({ i=true })<CR>")
map("i", "<leader>#", "<cmd>:lua require('telekasten').show_tags({i = true})<CR>")

View File

@@ -1,91 +0,0 @@
local status, telescope = pcall(require, "telescope")
if (not status) then return end
local builtin = require("telescope.builtin")
local previewers = require('telescope.previewers')
local Job = require('plenary.job')
local new_maker = function(filepath, bufnr, opts)
filepath = vim.fn.expand(filepath)
Job:new({
command = 'file',
args = { '--mime-type', '-b', filepath },
on_exit = function(j)
local mime_type = vim.split(j:result()[1], '/')[1]
if mime_type == "text" then
previewers.buffer_previewer_maker(filepath, bufnr, opts)
else
-- maybe we want to write something to the buffer here
vim.schedule(function()
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { 'BINARY' })
end)
end
end
}):sync()
end
local fb_actions = require "telescope".extensions.file_browser.actions
local function telescope_buffer_dir()
return vim.fn.expand('%:p:h')
end
telescope.setup {
defaults = {
buffer_previewer_maker = new_maker,
file_ignore_patterns = { "**/*.pdf" },
},
extensions = {
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case"
},
file_browser = {
theme = "dropdown",
-- disables netrw and use telescope-file-browser in its place
hijack_netrw = true,
mappings = {
["n"] = {
-- your custom normal mode mappings
["h"] = fb_actions.goto_parent_dir,
},
},
},
}
}
telescope.load_extension('fzf')
telescope.load_extension('file_browser')
-- keymaps
vim.keymap.set('n', '<leader>e',
function()
builtin.find_files({
})
end)
vim.keymap.set('n', '<leader>g', function()
builtin.live_grep()
end)
vim.keymap.set('n', '<leader>b', function()
builtin.buffers()
end)
vim.keymap.set('n', '<leader>h', function()
builtin.resume()
end)
-- vim.keymap.set('n', '<leader>d', function()
-- builtin.diagnostics()
-- end)
vim.keymap.set("n", "<leader>fb", function()
telescope.extensions.file_browser.file_browser({
path = "%:p:h",
cwd = telescope_buffer_dir(),
respect_gitignore = false,
hidden = true,
grouped = true,
previewer = false,
initial_mode = "normal",
layout_config = { height = 40 }
})
end)

View File

@@ -1,16 +0,0 @@
local status, ts = pcall(require, "nvim-treesitter.configs")
if (not status) then return end
ts.setup {
-- One of "all", "maintained" (parsers with maintainers), or a list of languages
ensure_installed = {"python", "css", "html", "lua", "javascript", "vue", "c", "markdown", "rst", "cpp"},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
}
}
-- vim.opt.foldmethod = "expr"
-- vim.opt.foldexpr = "nvim_treesitter#foldexpr()"

View File

@@ -1,6 +0,0 @@
vim.g.maplocalleader = " "
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")

View File

@@ -1,76 +0,0 @@
require("mason").setup()
require("mason-lspconfig").setup()
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)
-- proposions from lsp
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.diagnostic.open_float()<CR>', opts)
-- Cycle over diagnostics
buf_set_keymap('n', '<leader>df', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', '<leader>dp', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
-- Get diagnostic on local list
buf_set_keymap('n', '<leader>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
buf_set_keymap("n", "<leader>f", "<cmd>lua vim.lsp.buf.format()<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', '<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",
"html",
"sumneko_lua",
"ansiblels",
"arduino_language_server",
"clangd",
}
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;
}
nvim_lsp.ltex.setup{
settings = {
ltex = {
language = "fr",
}
}
}

View File

@@ -1,17 +1,24 @@
local map = vim.api.nvim_set_keymap
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
map('v', '<', '<gv', {})
map('v', '>', '>gv', {})
-- Automatically spell check last error in insert mode
map('i', '<c-f>', '<c-g>u<Esc>[s1z=`]a<c-g>u', default_opts)
-- Centering after moving half page or search
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
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' })

View File

@@ -1,155 +0,0 @@
local fn = vim.fn
-- Automatically install packer
local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
PACKER_BOOTSTRAP = fn.system {
"git",
"clone",
"--depth",
"1",
"https://github.com/wbthomason/packer.nvim",
install_path,
}
print "Installing packer close and reopen Neovim..."
vim.cmd [[packadd packer.nvim]]
end
-- Autocommand that reloads neovim whenever you save the plugins.lua file
vim.cmd [[
augroup packer_user_config
autocmd!
autocmd BufWritePost plugins.lua source <afile> | PackerSync
augroup end
]]
-- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, "packer")
if not status_ok then
return
end
-- Have packer use a popup window
packer.init {
display = {
open_fn = function()
return require("packer.util").float { border = "rounded" }
end,
},
}
return packer.startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use 'morhetz/gruvbox'
-- Status line
use {
'hoob3rt/lualine.nvim',
config = [[require('config.lualine')]],
}
use 'tpope/vim-fugitive'
-- use 'mhinz/vim-signify'
use {
'lewis6991/gitsigns.nvim',
config = [[require('config.gitsigns')]],
}
use 'tpope/vim-surround'
use 'tpope/vim-repeat'
use {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
'neovim/nvim-lspconfig',
requires = {
"hrsh7th/cmp-nvim-lsp",
}
}
use {
'hrsh7th/nvim-cmp',
event = 'InsertEnter',
config = [[require('completion')]],
requires = {
'hrsh7th/vim-vsnip',
'hrsh7th/vim-vsnip-integ',
-- 'rafamadriz/friendly-snippets',
},
}
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'}
-- for formatters and linters
use {
"jose-elias-alvarez/null-ls.nvim",
config = [[require('config.null-ls')]],
requires = {
"jayp0521/mason-null-ls.nvim"
}
}
use 'nvim-lua/popup.nvim'
use {
'nvim-telescope/telescope.nvim',
config = [[require('config.telescope')]],
requires = { 'nvim-lua/plenary.nvim' }
}
use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }
use {
"nvim-telescope/telescope-file-browser.nvim"
}
use {
'lervag/vimtex',
config = [[require('config.vimtex')]],
}
-- Highlight on Yank
use 'machakann/vim-highlightedyank'
-- Autoclose parenthesis
-- use 'jiangmiao/auto-pairs'
use {
'windwp/nvim-autopairs',
config = [[ require('config.autopairs') ]]
}
use 'kyazdani42/nvim-web-devicons'
use 'christoomey/vim-tmux-navigator'
use {
'nvim-treesitter/nvim-treesitter',
config = [[require('config.treesitter')]],
run = ':TSUpdate',
}
use {
'norcalli/nvim-colorizer.lua',
config = [[require('config.colorizer')]],
}
use {
"lukas-reineke/indent-blankline.nvim",
config = [[require('config.indentblankline')]]
}
use {
'renerocksai/telekasten.nvim',
requires = {
'nvim-telescope/telescope.nvim',
'nvim-lua/plenary.nvim',
'renerocksai/calendar-vim'
},
config = [[require('config.telekasten')]]
}
if PACKER_BOOTSTRAP then
require("packer").sync()
end
end)

View File

@@ -0,0 +1,9 @@
return {
'windwp/nvim-autopairs',
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup({
disable_filetype = { "TelescopePrompt", "vim" },
})
end
}

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

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

View File

@@ -0,0 +1,6 @@
return {
'numToStr/Comment.nvim',
config=function ()
require('Comment').setup()
end
}

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

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