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>
This commit is contained in:
2026-06-19 06:40:49 +02:00
parent d84f20edf0
commit 0a00251742
86 changed files with 2032 additions and 1717 deletions

9
.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,6 @@ newsboat/.newsboat/history.cmdline
mpd/.config/mpd/database
mpd/.config/mpd/state
mpd/.config/mpd/playlists/
neomutt/.config/vdirsyncer/status/
aerc/.config/vdirsyncer/status/

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

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

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

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

@@ -5,8 +5,10 @@ set -e
PICTURES_DIR="$(xdg-user-dir PICTURES)"
ZK_NOTEBOOK_DIR="/home/lafrite/Nextcloud/Documents/zettelkasten/"
monitor="$(swaymsg -t get_outputs | jq '[.[].focused] | index(true)')"
alias myrofi="rofi -dmenu -matching fuzzy -i -sort -sorting-method fzf -monitor $monitor"
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

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

@@ -20,12 +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 "Apnée" "Hodgepodge"
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"
@@ -33,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"
@@ -67,5 +64,6 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ "Ho
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,5 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
if not vim.uv.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
@@ -12,6 +12,9 @@ end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = ' ' -- Leaderkey
require("lazy").setup("plugins")
require("lazy").setup("plugins", {
concurrency = 5,
git = { filter = false },
})
require('settings')
require('mappings')

View File

@@ -1,36 +1,36 @@
{
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" },
"gitsigns.nvim": { "branch": "main", "commit": "ff01d34daaed72f271a8ffa088a7e839a60c640f" },
"gruvbox": { "branch": "master", "commit": "f1ecde848f0cdba877acb0c740320568252cc482" },
"indent-blankline.nvim": { "branch": "master", "commit": "877c1db2bf957300097dd5348a665666a4d900cb" },
"lazy.nvim": { "branch": "main", "commit": "6b6f0a451200bb6abde85978c577c73ea1577758" },
"lsp-zero.nvim": { "branch": "v3.x", "commit": "22677c535fdc11a73da67a186a30e360d8857497" },
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e2705063f395b44f676cd26596a11007a2cbd3bd" },
"mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
"noice.nvim": { "branch": "main", "commit": "7cf858c30841c9c41601ce58e5bc2023228037ef" },
"nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
"nvim-autopairs": { "branch": "master", "commit": "de4f7138a68d5d5063170f2182fd27faf06b0b54" },
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
"nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" },
"nvim-lspconfig": { "branch": "master", "commit": "2b361e043810d5587d9af0787f8ce40da92ec5e9" },
"nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
"nvim-treesitter": { "branch": "master", "commit": "10bfa4826f2235c600c073a82e0d78718aa7240e" },
"nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
"oil.nvim": { "branch": "master", "commit": "ac2928cca85ba3596e92f9f51940d46be2d606f8" },
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
"telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" },
"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": "99db68d9b3304580bd383da7aaee05c7a954a344" },
"vim-highlightedyank": { "branch": "master", "commit": "fa3f57b097e9521ce41a66b6c7cf5d9adea70ea3" },
"vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" },
"vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-tmux-navigator": { "branch": "master", "commit": "7db70e08ea03b3e4d91f63713d76134512e28d7e" },
"vim-vsnip": { "branch": "master", "commit": "be277461265f1e5c7db470aa479f30956597ea9e" },
"which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }
"vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" },
"vimtex": { "branch": "master", "commit": "182ad387e3f3107699483606c9a2b6648f8437b2" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
}

View File

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

View File

@@ -22,14 +22,14 @@ return {
python = { "ruff_fix", "ruff_format" },
},
format_on_save = {
lsp_fallback = true,
lsp_format = "fallback",
async = false,
timeout_ms = 500,
},
})
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
conform.format({
lsp_fallback = true,
lsp_format = "fallback",
async = true,
timeout_ms = 500,
})

View File

@@ -1,44 +1,41 @@
return {
"VonHeikemen/lsp-zero.nvim",
branch = "v3.x",
"neovim/nvim-lspconfig",
dependencies = {
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim" },
{ "williamboman/mason-lspconfig.nvim" },
{ "WhoIsSethDaniel/mason-tool-installer.nvim" },
},
config = function()
local lsp_zero = require("lsp-zero")
lsp_zero.on_attach(function(client, bufnr)
local opts = { buffer = bufnr, silent = true }
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local opts = { buffer = args.buf, silent = true }
vim.keymap.set("n", "gd", vim.lsp.buf.definition, vim.tbl_extend("force", opts, { desc = "Go to definition" }))
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, vim.tbl_extend("force", opts, { desc = "Go to declaration" }))
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, vim.tbl_extend("force", opts, { desc = "Go to implementation" }))
vim.keymap.set("n", "gr", vim.lsp.buf.references, vim.tbl_extend("force", opts, { desc = "Show references" }))
vim.keymap.set("n", "K", vim.lsp.buf.hover, vim.tbl_extend("force", opts, { desc = "Hover documentation" }))
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename symbol" }))
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, vim.tbl_extend("force", opts, { desc = "Code action" }))
end)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, vim.tbl_extend("force", opts, { desc = "Go to definition" }))
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, vim.tbl_extend("force", opts, { desc = "Go to declaration" }))
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, vim.tbl_extend("force", opts, { desc = "Go to implementation" }))
vim.keymap.set("n", "gr", vim.lsp.buf.references, vim.tbl_extend("force", opts, { desc = "Show references" }))
vim.keymap.set("n", "K", vim.lsp.buf.hover, vim.tbl_extend("force", opts, { desc = "Hover documentation" }))
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename symbol" }))
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, vim.tbl_extend("force", opts, { desc = "Code action" }))
end,
})
require("mason").setup({})
require("mason-lspconfig").setup({
ensure_installed = {},
handlers = {
lsp_zero.default_setup,
function(server_name)
vim.lsp.enable(server_name)
end,
},
})
local mason_tool_installer = require("mason-tool-installer")
mason_tool_installer.setup({
require("mason-tool-installer").setup({
ensure_installed = {
"prettier", -- prettier formatter
"stylua", -- lua formatter
-- "isort", -- python formatter
-- "black", -- python formatter
-- "flake8", -- python linter
"prettier",
"stylua",
"ruff",
"eslint_d", -- js linter
"eslint_d",
},
})
end,

View File

@@ -152,7 +152,7 @@ return {
-- Lsp server name .
function()
local msg = "No Active Lsp"
local buf_ft = vim.api.nvim_buf_get_option(0, "filetype")
local buf_ft = vim.bo.filetype
local clients = vim.lsp.get_clients()
if next(clients) == nil then
return msg

View File

@@ -2,5 +2,4 @@ return {
'tpope/vim-surround',
'tpope/vim-repeat',
'tpope/vim-abolish',
'machakann/vim-highlightedyank'
}

View File

@@ -13,7 +13,6 @@ return {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
},
},
-- you can enable a preset for easier configuration

View File

@@ -30,18 +30,15 @@ return {
results_title = "",
prompt_title = "",
preview_title = "",
mappings = {
i = {
["<C-d>"] = require("telescope.actions").delete_buffer,
},
n = {
["<C-d>"] = require("telescope.actions").delete_buffer,
},
},
},
},
config = function(_, opts)
local telescope = require("telescope")
local actions = require("telescope.actions")
opts.defaults.mappings = {
i = { ["<C-d>"] = actions.delete_buffer },
n = { ["<C-d>"] = actions.delete_buffer },
}
telescope.setup(opts)
telescope.load_extension("fzf")

View File

@@ -1,32 +1,94 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
dependencies = {
"nvim-treesitter/nvim-treesitter-textobjects",
},
config = function()
local configs = require("nvim-treesitter.configs")
-- Compatibility shim for plugins using the old parsers.ft_to_lang API (e.g. telescope)
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
if ok and not parsers.ft_to_lang then
parsers.ft_to_lang = function(ft)
return vim.treesitter.language.get_lang(ft) or ft
end
end
configs.setup({
ensure_installed = {
"lua",
"vim",
"vimdoc",
"javascript",
"html",
"python",
"dockerfile",
"latex",
"yaml",
"regex",
"bash",
"markdown",
"markdown_inline",
},
sync_install = false,
highlight = {
enable = true,
disable = { "latex" },
},
indent = { enable = true },
})
require("nvim-treesitter").setup({
ensure_installed = {
"lua",
"vim",
"vimdoc",
"javascript",
"html",
"python",
"dockerfile",
"yaml",
"regex",
"bash",
"markdown",
"markdown_inline",
},
sync_install = false,
highlight = {
enable = true,
disable = { "latex" },
},
indent = { enable = true },
-- Configuration des text objects intelligents
textobjects = {
select = {
enable = true,
lookahead = false, -- Ne cherche PAS vers l'avant (résout votre problème!)
keymaps = {
-- Délimiteurs syntaxiques
["i{"] = "@block.inner",
["a{"] = "@block.outer",
["i("] = "@call.inner",
["a("] = "@call.outer",
["i["] = "@call.inner",
["a["] = "@call.outer",
-- Strings/Guillemets
['i"'] = "@string.inner",
['a"'] = "@string.outer",
["i'"] = "@string.inner",
["a'"] = "@string.outer",
["i`"] = "@string.inner",
["a`"] = "@string.outer",
-- Délimiteurs sémantiques
["if"] = "@function.inner",
["af"] = "@function.outer",
["iC"] = "@class.inner", -- Majuscule pour éviter conflit avec VimTeX
["aC"] = "@class.outer",
["ib"] = "@block.inner",
["ab"] = "@block.outer",
["ii"] = "@conditional.inner",
["ai"] = "@conditional.outer",
["il"] = "@loop.inner",
["al"] = "@loop.outer",
["ia"] = "@parameter.inner",
["aa"] = "@parameter.outer",
["i/"] = "@comment.inner",
["a/"] = "@comment.outer",
["ir"] = "@return.inner",
["ar"] = "@return.outer",
},
-- Mode de sélection (v = charwise)
selection_modes = {
['@parameter.outer'] = 'v',
['@function.outer'] = 'V', -- linewise pour fonctions
['@class.outer'] = 'V', -- linewise pour classes
},
-- Ne pas inclure les espaces (comportement précis)
include_surrounding_whitespace = false,
},
},
})
end,
-- opts = function(_, opts)
-- vim.treesitter.language.register("markdown", "mdx")
@@ -34,14 +96,11 @@ return {
-- if type(opts.ensure_installed) == "table" then
-- vim.list_extend(opts.ensure_installed, {
-- "bibtex",
-- "latex",
-- -- you can add more here
-- })
-- end
-- if type(opts.highlight.disable) == "table" then
-- vim.list_extend(opts.highlight.disable, { "latex", "bibtex" })
-- else
-- opts.highlight.disable = { "latex", "bibtex" }
-- end
-- end,
}

View File

@@ -1,10 +1,6 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings

View File

@@ -1,10 +1,9 @@
local cmd = vim.cmd
local exec = vim.api.nvim_exec
local g = vim.g
local opt = vim.opt
opt.mouse = 'a'
opt.clipboard = 'unnamedplus'
opt.mouse = "a"
opt.clipboard = "unnamedplus"
opt.swapfile = false
opt.wrap = true
@@ -13,7 +12,7 @@ opt.tabstop = 4
opt.shiftwidth = 4
opt.smarttab = true
opt.autoindent = true
opt.foldmethod = 'indent'
opt.foldmethod = "indent"
opt.number = true
opt.relativenumber = true
@@ -23,7 +22,7 @@ opt.scrolloff = 8
opt.ignorecase = true
opt.smartcase = true
opt.completeopt = 'menuone,noselect,noinsert'
opt.completeopt = "menuone,noselect,popup"
vim.api.nvim_create_autocmd("FileType", {
pattern = { "markdown", "text", "tex", "gitcommit" },
@@ -33,16 +32,21 @@ vim.api.nvim_create_autocmd("FileType", {
end,
})
opt.nrformats = opt.nrformats + 'alpha'
opt.nrformats = opt.nrformats + "alpha"
opt.showmatch = true
cmd[[au BufEnter * set fo-=c fo-=r fo-=o]]
cmd([[au BufEnter * set fo-=c fo-=r fo-=o]])
exec([[
augroup YankHighlight
autocmd!
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=700}
augroup end
]], false)
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank({ higroup = "IncSearch", timeout = 700 })
end,
})
g.python3_host_prog = vim.fn.expand("~/.venv/nvim/bin/python")
vim.filetype.add({
extension = {
tf = "terraform",
},
})

View File

@@ -1,5 +0,0 @@
#!/bin/sh
nm-applet &
pasystray &
nextcloud &
xrandr --output VGA-1 --off --output HDMI-1 --mode 1920x1080 --pos 1080x420 --rotate normal --output DP-1 --off --output HDMI-2 --mode 1920x1080 --pos 0x0 --rotate left --output DP-2 --off

View File

@@ -1,267 +0,0 @@
# Copyright (c) 2010 Aldo Cortesi
# Copyright (c) 2010, 2014 dequis
# Copyright (c) 2012 Randall Ma
# Copyright (c) 2012-2014 Tycho Andersen
# Copyright (c) 2012 Craig Barnes
# Copyright (c) 2013 horsik
# Copyright (c) 2013 Tao Sauvage
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from libqtile.config import Key, Screen, Group, Drag, Click, ScratchPad, DropDown
from libqtile.command import lazy
from libqtile import layout, bar, widget, extension, hook
from libqtile.log_utils import logger
from os.path import expanduser
from subprocess import call
from typing import List # noqa: F401
wmname = "???"
MOD = "mod4"
TERM = "urxvt"
# Base16 - hybrid (with 5 and 13 from jmbi)
colors = {
# special
"FG": "#c5c8c6",
"BG": "#1d1f21",
"C": "#c5c8c6",
# black
0: "#282a2e",
8: "#373b41",
# red
1: "#a54242",
9: "#cc6666",
# green
2: "#8c9440",
10: "#b5bd68",
# yellow
3: "#de935f",
11: "#f0c674",
# blue
4: "#5f819d",
12: "#81a2be",
# magenta
5: "#d13516",
13: "#c25431",
# cyan
6: "#5e8d87",
14: "#8abeb7",
# white
7: "#707880",
15: "#c5c8c6",
}
keys = [
Key([MOD], "f", lazy.window.toggle_floating()),
# Moving inside a screen
Key([MOD], "Tab", lazy.layout.next()),
Key([MOD], "j", lazy.layout.down()),
Key([MOD], "k", lazy.layout.up()),
Key([MOD, "shift"], "Tab", lazy.layout.rotate()),
# Key([MOD, "shift"], "Tab", lazy.spawncmd()), # circle inside layout
Key([MOD, "shift"], "k", lazy.layout.shuffle_up()),
Key([MOD, "shift"], "j", lazy.layout.shuffle_down()),
# Move between screens
Key([MOD], "l", lazy.to_screen(0)),
Key([MOD], "h", lazy.to_screen(1)),
# Key([MOD, "shift"], "l", move to screen 1),
# Key([MOD, "shift"], "h", move to screen 0),
# Toggle between different layouts as defined below
Key([MOD], "space", lazy.next_layout()),
# Toggle between split and unsplit sides of stack.
# Split = all windows displayed
# Unsplit = 1 window displayed, like Max layout, but still with
# multiple stack panes
# Key([MOD, "shift"], "Return", lazy.layout.toggle_split()),
# Swap panes of split stack
# Key([MOD, "shift"], "space", lazy.layout.rotate()),
# Screens
Key([MOD], "r", lazy.spawncmd()),
# Key([MOD], 'r', lazy.run_extension(extension.DmenuRun(
# dmenu_prompt=">",
# dmenu_font="Andika-8",
# background="#15181a",
# foreground="#00ff00",
# selected_background="#079822",
# selected_foreground="#fff",
# dmenu_height=24, # Only supported by some dmenu forks
# ))),
Key([MOD], "Return", lazy.spawn(TERM)),
Key([MOD], "q", lazy.window.kill()),
Key([MOD, "control"], "r", lazy.restart()),
Key([MOD, "control"], "q", lazy.shutdown()),
Key([MOD, "control"], "equal", lazy.spawn("systemctl suspend")),
# Change the volume if our keyboard has keys
Key([], "XF86AudioRaiseVolume", lazy.spawn("pamixer -i 2")),
Key([], "XF86AudioLowerVolume", lazy.spawn("pamixer -d 2")),
Key([], "XF86AudioMute", lazy.spawn("pamixer -t")),
]
groups = [
Group("t:", spawn="firefox", layout="Tall", persist=True),
Group("y:", spawn="thunderbird", layout="verticaltile", persist=True),
Group("u:", spawn=TERM+" -e sh -c tmuxp load enseignement", layout="TallRight", persist=True),
Group("i:", layout="Wide", persist=True),
Group("o:", layout="TallRight", persist=True),
Group("p:", layout="Wide", persist=True),
]
groups_keys = ["t", "y", "u", "i", "o", "p"]
for i, g in enumerate(groups):
k = groups_keys[i]
keys.extend(
[
# mod1 + letter of group = switch to group
Key([MOD], k, lazy.group[g.name].toscreen()),
# mod1 + shift + letter of group = switch to & move focused window to group
Key(
[MOD, "shift"], k, lazy.window.togroup(g.name)
), # , lazy.group[g.name].toscreen()),
]
)
groups.append(
ScratchPad(
"scratchpad",
[
DropDown(
"music", TERM+" -e sh -c mocp", x=0.25, y=0.25, height=0.5, width=0.5, opacity=0.8
),
],
),
)
keys.extend(
[
Key([MOD], "m", lazy.group["scratchpad"].dropdown_toggle("music")),
]
)
borders = {
"border_focus": colors[13],
"border_normal": colors["BG"],
}
layouts = [
layout.Max(),
layout.VerticalTile(**borders),
layout.MonadTall(
name="Tall",
align=0,
ratio=0.5,
**borders,
),
layout.MonadTall(
name="TallRight",
align=0,
ratio=0.7,
**borders,
),
layout.MonadWide(
name="Wide",
ratio=0.8,
**borders,
),
]
widget_defaults = dict(
font="DroidSans",
fontsize=12,
padding=3,
)
extension_defaults = widget_defaults.copy()
screens = [
Screen(),
Screen(
top=bar.Bar(
[
widget.GroupBox(
active=colors["FG"],
foreground=colors[8],
highlight_color=[colors[1], colors[13]],
highlight_method="border",
this_current_screen_border=colors[13],
this_screen_border=colors[8],
other_current_screen_border=colors[13],
other_screen_border=colors[8],
),
widget.Prompt(
background=colors[13],
),
# widget.WindowName(),
widget.Spacer(bar.STRETCH),
widget.Clock(
format="%a %d %B %Y %H:%M",
background=colors[13],
foreground=colors[15],
),
widget.Systray(),
# widget.CurrentLayoutIcon(scale=0.5),
],
size=24,
background=colors["BG"],
),
),
]
# Drag floating layouts.
mouse = [
Drag(
[MOD],
"Button1",
lazy.window.set_position_floating(),
start=lazy.window.get_position(),
),
Drag(
[MOD], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()
),
Click([MOD], "Button2", lazy.window.bring_to_front()),
]
dgroups_key_binder = None
dgroups_app_rules = [] # type: List
main = None
follow_mouse_focus = True
bring_front_click = False
cursor_warp = False
auto_fullscreen = True
focus_on_window_activation = "smart"
@hook.subscribe.client_new
def floating_dialogs(window):
dialog = window.window.get_wm_type() == 'dialog'
transient = window.window.get_wm_transient_for()
if dialog or transient:
window.floating = True
@hook.subscribe.startup_once
def autostart():
home = expanduser("~")
call([home + "/.config/qtile/autostart.sh"])
@hook.subscribe.screen_change
def restart_on_randr(qtile):
qtile.cmd_restart()

View File

@@ -1,2 +0,0 @@
#!/bin/sh
xrandr --output VGA-1 --off --output HDMI-1 --mode 1920x1080 --pos 1080x420 --rotate normal --output DP-1 --off --output HDMI-2 --mode 1920x1080 --pos 0x0 --rotate left --output DP-2 --off

View File

@@ -1,25 +0,0 @@
profile maison2 {
output eDP-1 disable
output "Dell Inc. DELL E2216H 2XT766B1AVTI" position 0,0 transform 90 mode 1920x1080
output "Samsung Electric Company LS27A600U HNMR502540" position 1080,240 mode 2560x1440
}
profile maison {
output eDP-1 disable
output "Philips Consumer Electronics Company PHL 223V5 ZV01622003292" position 0,0 transform 90 mode 1920x1080
output "Samsung Electric Company LS27A600U HNMR502540" position 1080,240 mode 2560x1440
}
profile atelier {
output eDP-1 enable scale 1 position 0,1080
output "ROW AAA Unknown" mode 1280x800
}
profile bdp {
output eDP-1 enable scale 1 position 320,1440
output "Dell Inc. DELL U3417W 660X87290G9L" position 0,0
}
profile undocked {
output eDP-1 enable scale 1
}

View File

@@ -1,294 +0,0 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu rofi -show drun
set $laptopScreen eDP-1
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
# output * bg ~/Images/Wallpapers/Pteridium.jpg fill
output * bg ~/Images/Wallpapers/coraill.jpg fill
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
input type:keyboard {
xkb_layout "fr"
# xkb_variant "ergol"
xkb_variant "azerty"
}
input * xkb_numlock enable
input type:touchpad {
natural_scroll enabled
tap enabled
}
input type:pointer {
accel_profile flat
pointer_accel 0
}
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+q kill
# Start your launcher
bindsym $mod+d exec $menu
# bindsym $mod+p exec rofi-pass
bindsym $mod+p exec tessen
bindsym Print exec ~/.local/bin/sway/rofi_screenshot.sh 2> ~/tmp/rofi_debug.log
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
# Workspaces:
#
set $ws1 1: 󰖟
set $ws2 2: 
set $ws3 3: 
set $ws4 4: 
set $ws5 5: 
set $ws6 6: 
set $ws7 7: 
set $ws8 8: 󰖟
set $ws9 9: 
bindsym $mod+ampersand workspace $ws1
bindsym $mod+eacute workspace $ws2
bindsym $mod+quotedbl workspace $ws3
bindsym $mod+apostrophe workspace $ws4
bindsym $mod+parenleft workspace $ws5
bindsym $mod+minus workspace $ws6
bindsym $mod+egrave workspace $ws7
bindsym $mod+underscore workspace $ws8
bindsym $mod+ccedilla workspace $ws9
bindsym $mod+1 move container to workspace $ws1
bindsym $mod+2 move container to workspace $ws2
bindsym $mod+3 move container to workspace $ws3
bindsym $mod+4 move container to workspace $ws4
bindsym $mod+5 move container to workspace $ws5
bindsym $mod+6 move container to workspace $ws6
bindsym $mod+7 move container to workspace $ws7
bindsym $mod+8 move container to workspace $ws8
bindsym $mod+9 move container to workspace $ws9
# bindsym $mod+1 workspace $ws1
# bindsym $mod+2 workspace $ws2
# bindsym $mod+3 workspace $ws3
# bindsym $mod+4 workspace $ws4
# bindsym $mod+5 workspace $ws5
# bindsym $mod+6 workspace $ws6
# bindsym $mod+7 workspace $ws7
# bindsym $mod+8 workspace $ws8
# bindsym $mod+9 workspace $ws9
#
# bindsym $mod+Shift+1 move container to workspace $ws1
# bindsym $mod+Shift+2 move container to workspace $ws2
# bindsym $mod+Shift+3 move container to workspace $ws3
# bindsym $mod+Shift+4 move container to workspace $ws4
# bindsym $mod+Shift+5 move container to workspace $ws5
# bindsym $mod+Shift+6 move container to workspace $ws6
# bindsym $mod+Shift+7 move container to workspace $ws7
# bindsym $mod+Shift+8 move container to workspace $ws8
# bindsym $mod+Shift+9 move container to workspace $ws9
#
bindsym $mod+Ctrl+greater move workspace to output right
bindsym $mod+Ctrl+less move workspace to output left
# move to last workspace
bindsym $mod+space workspace back_and_forth
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
# bindsym $mod+s layout stacking
# bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+y focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+m move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+m scratchpad show
#
# Resizing containers:
#
mode "resize" {
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
## Gesture
#
bindgesture swipe:right workspace prev
bindgesture swipe:left workspace next
#
# Audio
#
bindsym XF86AudioRaiseVolume exec volumectl -u up
bindsym XF86AudioLowerVolume exec volumectl -u down
bindsym XF86AudioMute exec volumectl toggle-mute
bindsym XF86AudioMicMute exec volumectl -m toggle-mute
#
# Brightness
#
bindsym XF86MonBrightnessUp exec lightctl up
bindsym XF86MonBrightnessDown exec lightctl down
#
# Decoration
#
default_border pixel 2
# class border backgr. text indicator child_border
client.focused #d65d0e #be5046 #ffffff #be5046 #be5046
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
# position top
# output $laptopScreen
swaybar_command waybar
}
include /etc/sway/config.d/*
include ~/.config/sway/config.d/*

View File

@@ -1,17 +0,0 @@
exec_always blueman-applet
exec_always /usr/bin/nm-applet --indicator
exec_always nextcloud
exec_always /usr/libexec/goa-daemon --replace
exec gammastep-indicator
exec mako
exec "avizo-service"
exec_always autotiling-rs
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
#exec_always pkill kanshi; exec_always kanshi
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"
exec swaymsg "workspace $ws1; exec zen-browser;"
exec swaymsg "workspace $ws2; exec thunderbird;"
# exec swaymsg "workspace scratchpad; exec $term -e 'mocp';"

View File

@@ -1,11 +0,0 @@
[Unit]
Description=Dynamic output configuration for Wayland compositors
Documentation=https://sr.ht/~emersion/kanshi
BindsTo=sway-session.target
[Service]
Type=simple
ExecStart=/usr/bin/kanshi
[Install]
WantedBy=sway-session.target

View File

@@ -1,6 +0,0 @@
[Unit]
Description=Sway compositor session
Documentation=man:systemd.special
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target

View File

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

View File

@@ -1,91 +0,0 @@
* {
border: none;
border-radius: 0;
font-family: Droid Nerd Font Mono;
font-size: 14px;
min-height: 0;
}
@import "gruvbox.css";
window#waybar {
background: @background;
color: @foreground;
}
#workspaces button {
padding: 0 2px;
background: transparent;
color: @foreground;
border-bottom: 3px solid transparent;
}
#workspaces button.active {
background: @orange_b;
}
#workspaces button.visible {
background: @orange;
border-radius: 2px;
border-top: 3px solid @orange_b;
}
#mode,
#clock,
#battery {
padding: 0 10px;
margin: 0 5px;
}
#mode {
background: @red;
border-bottom: 3px solid @foreground;
}
#window {
padding: 0 10px;
}
#clock {
color: @foreground;
}
#battery {
color: @foreground;
}
#battery.charging {
color: @green;
}
@keyframes blink {
to {
background-color: @foreground;
color: @background;
}
}
#idle_inhibitor,
#pulseaudio,
#custom-openvpn,
#network,
#cpu,
#memory,
#temperature,
#backlight,
#battery,
#clock,
#tray {
padding: 0 6px;
margin: 0 3px;
}
#battery.warning:not(.charging) {
background: @red;
color: @foreground;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}

View File

@@ -17,6 +17,11 @@ set-window-option -g pane-base-index 1
set-option -g renumber-windows on
# Yazi image preview
set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM
# C-space C-space will swap to last used window
bind-key C-space last-window

View File

@@ -1,118 +0,0 @@
" Lines number
set number
" Always show the statusline
set laststatus=2
" Necessary to show Unicode glyphs
set encoding=utf8
" smart tab
set smartindent
" Tab to..?
set shiftround
" Display edition mode
set showmode
" Ignore case in search mode
set ignorecase
" Override the 'ignorecase' option if the search pattern
" contains upper case characters.
set smartcase
" Display uncomplete commands (??)
set showcmd
" Vim file name completion relative to current file
set autochdir
" While typing a search command, show immediately where the
" so far typed pattern matches.
set incsearch
" Use <C-L> to clear the highlighting of :set hlsearch.
set hlsearch
if maparg('<C-L>', 'n') ==# ''
nnoremap <silent> <C-L> :nohlsearch<C-R>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-L>
endif
" Turn on the WiLd menu
set wildmenu
" Ignore compiled files
set wildignore=*.o,*~,*.pyc,*.swp
" Wrap lines
set wrap
" Turn backup off, since most stuff is in SVN, git et.c anyway...
set nobackup
set noswapfile
" Having relative number for lines
set relativenumber
" Display tab and ends of lines
" Shortcut to rapidly toggle `set list`
nmap <leader>L :set list!<CR>
" Behaviour of tab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
" Folding
set foldmethod=indent
" Use the same symbols as TextMate for tabstops and EOLs
" set listchars=tab:▸\ ,eol:¬
set listchars=nbsp,tab:··,trail,extends:▶,precedes:◀
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
"
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse=a
endif
" Decorations
" ====================
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
endif
" When set to "dark", Vim will try to use colors that look
" good on a dark background. When set to "light", Vim will
" try to use colors that look good on a light background.
" Any other value is illegal.
set background=dark
" Color Scheme
colorscheme zenburn
set cursorline
" Align blocks of text and keep them selected
vmap < <gv
vmap > >gv
" Spelling
" set spelllang=fr
autocmd BufRead,BufNewFile *.{md,tex,rst} setlocal spell spelllang=fr
autocmd FileType tex,latex,markdown,md,rst setlocal spell spelllang=fr
" Remove trailing whitespace at the end of lines
autocmd BufWritePre * %s/\s\+$//e
" Different color for far columns
execute "set colorcolumn=" . join(range(81,335), ',')

View File

@@ -1,24 +0,0 @@
" lightline -> no need showmod
set noshowmode
let g:lightline = {
\ 'colorscheme': 'selenized_dark',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'gitbranch': 'FugitiveHead'
\ },
\ }
" Supertab
let g:SuperTabDefaultCompletionType = "context"
" Airline
let g:airline_powerline_fonts = 1
let g:tmuxline_powerline_separators = 0
" Nerdtree
let NERDTreeIgnore = ['.pyc$']
"autocmd VimEnter * NERDTree

View File

@@ -1,61 +0,0 @@
set nocompatible " be iMproved, required
noremap <Space> <Nop>
map <Space> <Leader>
let mapleader = "\<Space>"
let localleader = "\<Space>"
" set the runtime path to include plug.com and initialize
call plug#begin('~/.vim/plugged')
"" plug.vim management
Plug 'junegunn/vim-plug'
" Airline statusline
Plug 'itchyny/lightline.vim'
"" Basic config for vim
Plug 'tpope/vim-sensible'
" Git integration
Plug 'tpope/vim-fugitive'
" Nerdtree
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
" Change surround
Plug 'tpope/vim-surround'
" Clever substitute
Plug 'tpope/tpope-vim-abolish'
" Repeat
Plug 'tpope/vim-repeat'
" Git on lines
Plug 'airblade/vim-gitgutter'
" Polyglot synthax hightlight autodetect
Plug 'sheerun/vim-polyglot'
" Show indent lines
Plug 'Yggdroot/indentLine'
" Tmux integration
Plug 'christoomey/vim-tmux-navigator'
"" Color scheme
Plug 'jnurmine/Zenburn'
" All of your Plugs must be added before the following line
call plug#end() " required
"
" import config from ./config
" runtime! config/**/*.vim
"runtime! config/*.vim
runtime! config/base.vim
runtime! config/plugins.vim
set conceallevel=0

View File

@@ -49,6 +49,7 @@ alias less='bat -p'
# Newsboat
alias newsboat='tmux new -As newsboat newsboat'
alias pim='tmux new-session -As pim -n mail "aerc" \; new-window -n calendrier "ikhal"'
# Autosuggestions
@@ -97,3 +98,5 @@ export ZK_NOTEBOOK_DIR="/home/lafrite/Nextcloud/Documents/zettelkasten/"
# tea
PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/lafrite/.config/tea/autocomplete.zsh"
eval "$(zoxide init zsh)"

View File

@@ -0,0 +1,197 @@
#compdef poetry
_poetry_9cf82bc144790825_complete()
{
local state com cur
local -a opts
local -a coms
cur=${words[${#words[@]}]}
# lookup for command
for word in ${words[@]:1}; do
if [[ $word != -* ]]; then
com=$word
break
fi
done
if [[ ${cur} == --* ]]; then
state="option"
opts+=("--ansi:Force ANSI output." "--directory:The working directory for the Poetry command \(defaults to the current working directory\)." "--help:Display help for the given command. When no command is given display help for the list command." "--no-ansi:Disable ANSI output." "--no-cache:Disables Poetry source caches." "--no-interaction:Do not ask any interactive question." "--no-plugins:Disables plugins." "--quiet:Do not output any message." "--verbose:Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug." "--version:Display this application version.")
elif [[ $cur == $com ]]; then
state="command"
coms+=("about:Shows information about Poetry." "add:Adds a new dependency to pyproject.toml." "build:Builds a package, as a tarball and a wheel by default." "'cache clear':Clears a Poetry cache by name." "'cache list':List Poetry\'s caches." "check:Checks the validity of the pyproject.toml file." "config:Manages configuration settings." "'debug info':Shows debug information." "'debug resolve':Debugs dependency resolution." "'env info':Displays information about the current environment." "'env list':Lists all virtualenvs associated with the current project." "'env remove':Remove virtual environments associated with the project." "'env use':Activates or creates a new virtualenv for the current project." "export:Exports the lock file to alternative formats." "help:Displays help for a command." "init:Creates a basic pyproject.toml file in the current directory." "install:Installs the project dependencies." "list:Lists commands." "lock:Locks the project dependencies." "new:Creates a new Python project at <path\>." "publish:Publishes a package to a remote repository." "remove:Removes a package from the project dependencies." "run:Runs a command in the appropriate environment." "search:Searches for packages on remote repositories." "'self add':Add additional packages to Poetry\'s runtime environment." "'self install':Install locked packages \(incl. addons\) required by this Poetry installation." "'self lock':Lock the Poetry installation\'s system requirements." "'self remove':Remove additional packages from Poetry\'s runtime environment." "'self show':Show packages from Poetry\'s runtime environment." "'self show plugins':Shows information about the currently installed plugins." "'self update':Updates Poetry to the latest version." "shell:Spawns a shell within the virtual environment." "show:Shows information about packages." "'source add':Add source configuration for project." "'source remove':Remove source configured for the project." "'source show':Show information about sources configured for the project." "update:Update the dependencies as according to the pyproject.toml file." "version:Shows the version of the project or bumps it when a valid bump rule is provided.")
fi
case $state in
(command)
_describe 'command' coms
;;
(option)
case "$com" in
(about)
opts+=()
;;
(add)
opts+=("--allow-prereleases:Accept prereleases." "--dev:Add as a development dependency. \(Deprecated\)" "--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--editable:Add vcs/path dependencies as editable." "--extras:Extras to activate for the dependency." "--group:The group to add the dependency to." "--lock:Do not perform operations \(only update the lockfile\)." "--optional:Add as an optional dependency." "--platform:Platforms for which the dependency must be installed." "--python:Python version for which the dependency must be installed." "--source:Name of the source to use to install the package.")
;;
(build)
opts+=("--format:Limit the format to either sdist or wheel.")
;;
('cache clear')
opts+=("--all:Clear all entries in the cache.")
;;
('cache list')
opts+=()
;;
(check)
opts+=()
;;
(config)
opts+=("--list:List configuration settings." "--local:Set/Get from the project\'s local configuration." "--unset:Unset configuration setting.")
;;
('debug info')
opts+=()
;;
('debug resolve')
opts+=("--extras:Extras to activate for the dependency." "--install:Show what would be installed for the current system." "--python:Python version\(s\) to use for resolution." "--tree:Display the dependency tree.")
;;
('env info')
opts+=("--path:Only display the environment\'s path.")
;;
('env list')
opts+=("--full-path:Output the full paths of the virtualenvs.")
;;
('env remove')
opts+=("--all:Remove all managed virtual environments associated with the project.")
;;
('env use')
opts+=()
;;
(export)
opts+=("--dev:Include development dependencies. \(Deprecated\)" "--extras:Extra sets of dependencies to include." "--format:Format to export to. Currently, only constraints.txt and requirements.txt are supported." "--only:The only dependency groups to include." "--output:The name of the output file." "--with:The optional dependency groups to include." "--with-credentials:Include credentials for extra indices." "--without:The dependency groups to ignore." "--without-hashes:Exclude hashes from the exported file." "--without-urls:Exclude source repository urls from the exported file.")
;;
(help)
opts+=()
;;
(init)
opts+=("--author:Author name of the package." "--dependency:Package to require, with an optional version constraint, e.g. requests:\^2.10.0 or requests=2.11.1." "--description:Description of the package." "--dev-dependency:Package to require for development, with an optional version constraint, e.g. requests:\^2.10.0 or requests=2.11.1." "--license:License of the package." "--name:Name of the package." "--python:Compatible Python versions.")
;;
(install)
opts+=("--all-extras:Install all extra dependencies." "--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--extras:Extra sets of dependencies to install." "--no-dev:Do not install the development dependencies. \(Deprecated\)" "--no-root:Do not install the root package \(the current project\)." "--only:The only dependency groups to include." "--only-root:Exclude all dependencies." "--remove-untracked:Removes packages not present in the lock file. \(Deprecated\)" "--sync:Synchronize the environment with the locked packages and the specified groups." "--with:The optional dependency groups to include." "--without:The dependency groups to ignore.")
;;
(list)
opts+=()
;;
(lock)
opts+=("--check:Check that the poetry.lock file corresponds to the current version of pyproject.toml." "--no-update:Do not update locked versions, only refresh lock file.")
;;
(new)
opts+=("--name:Set the resulting package name." "--readme:Specify the readme file format. One of md \(default\) or rst" "--src:Use the src layout for the project.")
;;
(publish)
opts+=("--build:Build the package before publishing." "--cert:Certificate authority to access the repository." "--client-cert:Client certificate to access the repository." "--dry-run:Perform all actions except upload the package." "--password:The password to access the repository." "--repository:The repository to publish the package to." "--skip-existing:Ignore errors from files already existing in the repository." "--username:The username to access the repository.")
;;
(remove)
opts+=("--dev:Remove a package from the development dependencies. \(Deprecated\)" "--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--group:The group to remove the dependency from.")
;;
(run)
opts+=()
;;
(search)
opts+=()
;;
('self add')
opts+=("--allow-prereleases:Accept prereleases." "--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--editable:Add vcs/path dependencies as editable." "--extras:Extras to activate for the dependency." "--source:Name of the source to use to install the package.")
;;
('self install')
opts+=("--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--sync:Synchronize the environment with the locked packages and the specified groups.")
;;
('self lock')
opts+=("--check:Check that the poetry.lock file corresponds to the current version of pyproject.toml." "--no-update:Do not update locked versions, only refresh lock file.")
;;
('self remove')
opts+=("--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\).")
;;
('self show')
opts+=("--addons:List only add-on packages installed." "--latest:Show the latest version." "--outdated:Show the latest version but only for packages that are outdated." "--tree:List the dependencies as a tree.")
;;
('self show plugins')
opts+=()
;;
('self update')
opts+=("--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--preview:Allow the installation of pre-release versions.")
;;
(shell)
opts+=()
;;
(show)
opts+=("--all:Show all packages \(even those not compatible with current system\)." "--latest:Show the latest version." "--no-dev:Do not list the development dependencies. \(Deprecated\)" "--only:The only dependency groups to include." "--outdated:Show the latest version but only for packages that are outdated." "--tree:List the dependencies as a tree." "--why:When showing the full list, or a --tree for a single package, also display why it\'s included." "--with:The optional dependency groups to include." "--without:The dependency groups to ignore.")
;;
('source add')
opts+=("--default:Set this source as the default \(disable PyPI\). A default source will also be the fallback source if you add other sources." "--secondary:Set this source as secondary.")
;;
('source remove')
opts+=()
;;
('source show')
opts+=()
;;
(update)
opts+=("--dry-run:Output the operations but do not execute anything \(implicitly enables --verbose\)." "--lock:Do not perform operations \(only update the lockfile\)." "--no-dev:Do not update the development dependencies. \(Deprecated\)" "--only:The only dependency groups to include." "--with:The optional dependency groups to include." "--without:The dependency groups to ignore.")
;;
(version)
opts+=("--dry-run:Do not update pyproject.toml file" "--short:Output the version number only")
;;
esac
_describe 'option' opts
;;
*)
# fallback to file completion
_arguments '*:file:_files'
esac
}
_poetry_9cf82bc144790825_complete "$@"
compdef _poetry_9cf82bc144790825_complete /usr/bin/poetry

View File

@@ -15,3 +15,6 @@ export HISTSIZE=10000 # Maximum events for internal history
export SAVEHIST=10000 # Maximum events in history file
# opencode
export PATH=/home/lafrite/.opencode/bin:$PATH