diff --git a/.gitignore b/.gitignore index 851c9f7..5865f3e 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/X/.Xdefaults b/X/.Xdefaults deleted file mode 100644 index 6c5b21b..0000000 --- a/X/.Xdefaults +++ /dev/null @@ -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 diff --git a/aerc/.config/aerc/accounts.conf b/aerc/.config/aerc/accounts.conf new file mode 100644 index 0000000..cde4a1a --- /dev/null +++ b/aerc/.config/aerc/accounts.conf @@ -0,0 +1,36 @@ +[bb_opytex] +source = maildir://~/Mail/benjamin.bertrand_opytex.org/ +outgoing = msmtpq -a bb_opytex +default = INBOX +from = Benjamin Bertrand +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 +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 +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 pour chercher partout. +[recherche] +source = notmuch://~/Mail +from = Benjamin Bertrand +query-map = ~/.config/aerc/notmuch.qmap +exclude-tags = deleted,spam +folders-sort = Tout, Non lus, Récents, bb_opytex, jb_opytex, ac_lyon, ──── recherches ↓ ──── diff --git a/aerc/.config/aerc/aerc.conf b/aerc/.config/aerc/aerc.conf new file mode 100644 index 0000000..342ab76 --- /dev/null +++ b/aerc/.config/aerc/aerc.conf @@ -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: +# +# [] +# +# is optional and defaults to horizontal. It can take one +# of the following values: h, horiz, horizontal, v, vert, vertical. +# +# 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 +# to :attach -m . 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/. +# +# {} 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"}} diff --git a/aerc/.config/aerc/binds.conf b/aerc/.config/aerc/binds.conf new file mode 100644 index 0000000..3018b20 --- /dev/null +++ b/aerc/.config/aerc/binds.conf @@ -0,0 +1,206 @@ +# Binds are of the form = +# To use '=' in a key sequence, substitute it with "Eq": "" +# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab +\[t = :prev-tab +\]t = :next-tab + = :term +? = :help keys + = :prompt 'Quit?' quit + = :prompt 'Quit?' quit + = :suspend + +[messages] +q = :prompt 'Quit?' quit + +ga = :archive year +gd = :delete +gt = :move Todo +gw = :move Attente + +j = :next + = :next + = :next 50% + = :next 100% + = :next 100% + +k = :prev + = :prev + = :prev 50% + = :prev 100% + = :prev 100% +g = :select 0 +G = :select -1 + +J = :next-folder + = :next-folder +K = :prev-folder + = :prev-folder +H = :collapse-folder + = :collapse-folder +L = :expand-folder + = :expand-folder + +v = :mark -t + = :mark -t:next +V = :mark -v + +T = :toggle-threads +zc = :fold +zo = :unfold +za = :fold -t +zM = :fold -a +zR = :unfold -a + = :fold -t + +zz = :align center +zt = :align top +zb = :align bottom + + = :view +d = :choose -o y 'Really delete this message' delete-message +D = :delete +a = :archive year +A = :unmark -a:mark -T:archive flat + +C = :compose +m = :compose + +b = :bounce + +rr = :reply -q +rq = :reply +Rr = :reply -aq +Rq = :reply -a + + = :exec tmux split-window -h -l 25% 'msmtp-queue -r; mbsync -a && notmuch new' + +c = :cf +$ = :term +! = :term +| = :pipe + +/ = :search +\ = :filter +n = :next-result +N = :prev-result + = :clear + +s = :split +S = :vsplit + +pl = :patch list +pa = :patch apply +pd = :patch drop +pb = :patch rebase +pt = :patch term +ps = :patch switch + +[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 +# \ : affine la liste déjà affichée (= "and") +\ = :filter + +[messages:folder=Drafts] + = :recall + +[view] +/ = :toggle-key-passthrough/ +q = :close +O = :open +o = :open +S = :save +| = :pipe +D = :delete +A = :archive year + +ga = :archive year +gd = :delete +gt = :move Todo +gw = :move Attente + + = :copy-link + = :open-link + +f = :forward +rr = :reply -q +rq = :reply +Rr = :reply -aq +Rq = :reply -a + +H = :toggle-headers + = :prev-part + = :prev-part + = :next-part + = :next-part +J = :next + = :next +K = :prev + = :prev + +[view::passthrough] +$noinherit = true +$ex = + = :toggle-key-passthrough + +[compose] +# Keybindings used when the embedded terminal is not selected in the compose +# view +$noinherit = true +$ex = +$complete = + = :prev-field + = :prev-field + = :next-field + = :next-field + = :switch-account -p + = :switch-account -p + = :switch-account -n + = :switch-account -n + = :next-field + = :prev-field + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab + +[compose::editor] +# Keybindings used when the embedded terminal is selected in the compose view +$noinherit = true +$ex = + = :prev-field + = :prev-field + = :next-field + = :next-field + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab + +[compose::review] +# Keybindings used when reviewing a message to be sent +# Inline comments are used as descriptions on the review screen +y = :send # Send +n = :abort # Abort (discard message, no confirmation) +s = :sign # Toggle signing +x = :encrypt # Toggle encryption to all recipients +v = :preview # Preview message +p = :postpone # Postpone +q = :choose -o d discard abort -o p postpone postpone # Abort or postpone +e = :edit # Edit (body and headers) +a = :attach # Add attachment +d = :detach # Remove attachment + +[terminal] +$noinherit = true +$ex = + + = :prev-tab + = :next-tab + = :prev-tab + = :next-tab diff --git a/aerc/.config/aerc/notmuch.qmap b/aerc/.config/aerc/notmuch.qmap new file mode 100644 index 0000000..7155df9 --- /dev/null +++ b/aerc/.config/aerc/notmuch.qmap @@ -0,0 +1,20 @@ +# Query-map du compte notmuch « recherche » — voir aerc-notmuch(5). +# Format : = +# +# 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_ diff --git a/aerc/.config/aerc/stylesets/gruvbox-dark b/aerc/.config/aerc/stylesets/gruvbox-dark new file mode 100644 index 0000000..12a8804 --- /dev/null +++ b/aerc/.config/aerc/stylesets/gruvbox-dark @@ -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 diff --git a/neomutt/.config/khard/khard.conf b/aerc/.config/khard/khard.conf similarity index 97% rename from neomutt/.config/khard/khard.conf rename to aerc/.config/khard/khard.conf index a627717..d5bde13 100644 --- a/neomutt/.config/khard/khard.conf +++ b/aerc/.config/khard/khard.conf @@ -5,7 +5,7 @@ [addressbooks] [[contacts]] -path = ~/.contacts/contacts/ +path = ~/.contacts/contacts/contacts/ [general] debug = no diff --git a/neomutt/.config/msmtp/config b/aerc/.config/msmtp/config similarity index 87% rename from neomutt/.config/msmtp/config rename to aerc/.config/msmtp/config index b2ee2e0..b76823a 100644 --- a/neomutt/.config/msmtp/config +++ b/aerc/.config/msmtp/config @@ -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 diff --git a/aerc/.config/vdirsyncer/config b/aerc/.config/vdirsyncer/config new file mode 100644 index 0000000..6d1adcf --- /dev/null +++ b/aerc/.config/vdirsyncer/config @@ -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"] diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish deleted file mode 100644 index 5cc9a7b..0000000 --- a/fish/.config/fish/config.fish +++ /dev/null @@ -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 - diff --git a/fish/.config/fish/fishfile b/fish/.config/fish/fishfile deleted file mode 100644 index ec1d1df..0000000 --- a/fish/.config/fish/fishfile +++ /dev/null @@ -1,2 +0,0 @@ -jethrokuan/fzf -oh-my-fish/plugin-bang-bang diff --git a/git/.gitconfig b/git/.gitconfig index 7c56450..c0c4cdb 100644 --- a/git/.gitconfig +++ b/git/.gitconfig @@ -3,3 +3,5 @@ email = benjamin.bertrand@opytex.org [init] defaultBranch = main +[fetch] + recurseSubmodules = false diff --git a/sway/.config/gammastep/config.ini b/hyprland/.config/gammastep/config.ini similarity index 100% rename from sway/.config/gammastep/config.ini rename to hyprland/.config/gammastep/config.ini diff --git a/sway/.config/mako/config b/hyprland/.config/mako/config similarity index 100% rename from sway/.config/mako/config rename to hyprland/.config/mako/config diff --git a/sway/.config/rofi-pass/config b/hyprland/.config/rofi-pass/config similarity index 100% rename from sway/.config/rofi-pass/config rename to hyprland/.config/rofi-pass/config diff --git a/sway/.config/rofi/config.rasi b/hyprland/.config/rofi/config.rasi similarity index 100% rename from sway/.config/rofi/config.rasi rename to hyprland/.config/rofi/config.rasi diff --git a/hyprland/.config/systemd/user/default.target.wants/kanata.service b/hyprland/.config/systemd/user/default.target.wants/kanata.service new file mode 120000 index 0000000..8814a6d --- /dev/null +++ b/hyprland/.config/systemd/user/default.target.wants/kanata.service @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/kanata.service \ No newline at end of file diff --git a/hyprland/.config/systemd/user/default.target.wants/msmtp-queue.path b/hyprland/.config/systemd/user/default.target.wants/msmtp-queue.path new file mode 120000 index 0000000..14590d5 --- /dev/null +++ b/hyprland/.config/systemd/user/default.target.wants/msmtp-queue.path @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/msmtp-queue.path \ No newline at end of file diff --git a/hyprland/.config/systemd/user/default.target.wants/pipewire.service b/hyprland/.config/systemd/user/default.target.wants/pipewire.service new file mode 120000 index 0000000..47f171d --- /dev/null +++ b/hyprland/.config/systemd/user/default.target.wants/pipewire.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire.service \ No newline at end of file diff --git a/hyprland/.config/systemd/user/graphical-session.target.wants/voxtype.service b/hyprland/.config/systemd/user/graphical-session.target.wants/voxtype.service new file mode 120000 index 0000000..d4ed142 --- /dev/null +++ b/hyprland/.config/systemd/user/graphical-session.target.wants/voxtype.service @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/voxtype.service \ No newline at end of file diff --git a/hyprland/.config/systemd/user/kanata.service b/hyprland/.config/systemd/user/kanata.service new file mode 100644 index 0000000..252b11f --- /dev/null +++ b/hyprland/.config/systemd/user/kanata.service @@ -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 diff --git a/hyprland/.config/systemd/user/mbsync.service b/hyprland/.config/systemd/user/mbsync.service new file mode 100644 index 0000000..0a80eff --- /dev/null +++ b/hyprland/.config/systemd/user/mbsync.service @@ -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' diff --git a/hyprland/.config/systemd/user/mbsync.timer b/hyprland/.config/systemd/user/mbsync.timer new file mode 100644 index 0000000..aa64bb2 --- /dev/null +++ b/hyprland/.config/systemd/user/mbsync.timer @@ -0,0 +1,9 @@ +[Unit] +Description=mbsync every 5 minutes + +[Timer] +OnBootSec=1m +OnUnitActiveSec=5m + +[Install] +WantedBy=timers.target diff --git a/hyprland/.config/systemd/user/mpd.service b/hyprland/.config/systemd/user/mpd.service new file mode 100644 index 0000000..f5a4195 --- /dev/null +++ b/hyprland/.config/systemd/user/mpd.service @@ -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 diff --git a/hyprland/.config/systemd/user/mpd.socket b/hyprland/.config/systemd/user/mpd.socket new file mode 100644 index 0000000..56c4a27 --- /dev/null +++ b/hyprland/.config/systemd/user/mpd.socket @@ -0,0 +1,9 @@ +[Socket] +ListenStream=%t/mpd/socket +ListenStream=6600 +Backlog=5 +KeepAlive=true +PassCredentials=true + +[Install] +WantedBy=sockets.target diff --git a/hyprland/.config/systemd/user/msmtp-queue.path b/hyprland/.config/systemd/user/msmtp-queue.path new file mode 100644 index 0000000..9f81393 --- /dev/null +++ b/hyprland/.config/systemd/user/msmtp-queue.path @@ -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 diff --git a/hyprland/.config/systemd/user/msmtp-queue.service b/hyprland/.config/systemd/user/msmtp-queue.service new file mode 100644 index 0000000..3be919e --- /dev/null +++ b/hyprland/.config/systemd/user/msmtp-queue.service @@ -0,0 +1,7 @@ +[Unit] +Description=Flush msmtp queue + +[Service] +Type=oneshot +ExecStart=/usr/bin/msmtp-queue --run +ExecStartPost=/usr/bin/maildir-rank-addr diff --git a/hyprland/.config/systemd/user/msmtp-queue.timer b/hyprland/.config/systemd/user/msmtp-queue.timer new file mode 100644 index 0000000..881f8f4 --- /dev/null +++ b/hyprland/.config/systemd/user/msmtp-queue.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Flush msmtp queue every 10 minutes + +[Timer] +OnBootSec=1m +OnUnitActiveSec=10m + +[Install] +WantedBy=timers.target diff --git a/hyprland/.config/systemd/user/sockets.target.wants/mpd.socket b/hyprland/.config/systemd/user/sockets.target.wants/mpd.socket new file mode 120000 index 0000000..6032e5f --- /dev/null +++ b/hyprland/.config/systemd/user/sockets.target.wants/mpd.socket @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/mpd.socket \ No newline at end of file diff --git a/hyprland/.config/systemd/user/sockets.target.wants/pipewire.socket b/hyprland/.config/systemd/user/sockets.target.wants/pipewire.socket new file mode 120000 index 0000000..d871d81 --- /dev/null +++ b/hyprland/.config/systemd/user/sockets.target.wants/pipewire.socket @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire.socket \ No newline at end of file diff --git a/hyprland/.config/systemd/user/timers.target.wants/mbsync.timer b/hyprland/.config/systemd/user/timers.target.wants/mbsync.timer new file mode 120000 index 0000000..99c2f9e --- /dev/null +++ b/hyprland/.config/systemd/user/timers.target.wants/mbsync.timer @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/mbsync.timer \ No newline at end of file diff --git a/hyprland/.config/systemd/user/timers.target.wants/msmtp-queue.timer b/hyprland/.config/systemd/user/timers.target.wants/msmtp-queue.timer new file mode 120000 index 0000000..906e506 --- /dev/null +++ b/hyprland/.config/systemd/user/timers.target.wants/msmtp-queue.timer @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/msmtp-queue.timer \ No newline at end of file diff --git a/hyprland/.config/systemd/user/timers.target.wants/vdirsyncer.timer b/hyprland/.config/systemd/user/timers.target.wants/vdirsyncer.timer new file mode 120000 index 0000000..0b5db57 --- /dev/null +++ b/hyprland/.config/systemd/user/timers.target.wants/vdirsyncer.timer @@ -0,0 +1 @@ +/home/lafrite/.config/systemd/user/vdirsyncer.timer \ No newline at end of file diff --git a/hyprland/.config/systemd/user/vdirsyncer.service b/hyprland/.config/systemd/user/vdirsyncer.service new file mode 100644 index 0000000..ec048cb --- /dev/null +++ b/hyprland/.config/systemd/user/vdirsyncer.service @@ -0,0 +1,7 @@ +[Unit] +Description=vdirsyncer sync +After=network-online.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/vdirsyncer sync diff --git a/hyprland/.config/systemd/user/vdirsyncer.timer b/hyprland/.config/systemd/user/vdirsyncer.timer new file mode 100644 index 0000000..fa51a58 --- /dev/null +++ b/hyprland/.config/systemd/user/vdirsyncer.timer @@ -0,0 +1,9 @@ +[Unit] +Description=vdirsyncer sync every 15 minutes + +[Timer] +OnBootSec=2m +OnUnitActiveSec=15m + +[Install] +WantedBy=timers.target diff --git a/hyprland/.config/systemd/user/voxtype.service b/hyprland/.config/systemd/user/voxtype.service new file mode 100644 index 0000000..0e22007 --- /dev/null +++ b/hyprland/.config/systemd/user/voxtype.service @@ -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 diff --git a/sway/.config/waybar/config b/hyprland/.config/waybar/config similarity index 100% rename from sway/.config/waybar/config rename to hyprland/.config/waybar/config diff --git a/hyprland/.config/waybar/config_hyprland b/hyprland/.config/waybar/config_hyprland new file mode 100644 index 0000000..9678478 --- /dev/null +++ b/hyprland/.config/waybar/config_hyprland @@ -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": "{:%Y %B}\n{calendar}", + "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" + } +}] diff --git a/sway/.config/waybar/gruvbox.css b/hyprland/.config/waybar/gruvbox.css similarity index 100% rename from sway/.config/waybar/gruvbox.css rename to hyprland/.config/waybar/gruvbox.css diff --git a/hyprland/.config/waybar/style.css b/hyprland/.config/waybar/style.css new file mode 100644 index 0000000..5f180cb --- /dev/null +++ b/hyprland/.config/waybar/style.css @@ -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; +} diff --git a/sway/.local/bin/sway/rofi_screenshot.sh b/hyprland/.local/bin/sway/rofi_screenshot.sh similarity index 92% rename from sway/.local/bin/sway/rofi_screenshot.sh rename to hyprland/.local/bin/sway/rofi_screenshot.sh index aa21b37..9510e9c 100755 --- a/sway/.local/bin/sway/rofi_screenshot.sh +++ b/hyprland/.local/bin/sway/rofi_screenshot.sh @@ -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 diff --git a/neomutt/.config/neomutt/accounts/ac-lyon b/neomutt/.config/neomutt/accounts/ac-lyon deleted file mode 100644 index 48261d2..0000000 --- a/neomutt/.config/neomutt/accounts/ac-lyon +++ /dev/null @@ -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`" diff --git a/neomutt/.config/neomutt/accounts/bb_opytex b/neomutt/.config/neomutt/accounts/bb_opytex deleted file mode 100644 index 67325b7..0000000 --- a/neomutt/.config/neomutt/accounts/bb_opytex +++ /dev/null @@ -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`" diff --git a/neomutt/.config/neomutt/accounts/jb_opytex b/neomutt/.config/neomutt/accounts/jb_opytex deleted file mode 100644 index 3f59af7..0000000 --- a/neomutt/.config/neomutt/accounts/jb_opytex +++ /dev/null @@ -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`" diff --git a/neomutt/.config/neomutt/colors b/neomutt/.config/neomutt/colors deleted file mode 100644 index 87e2bfe..0000000 --- a/neomutt/.config/neomutt/colors +++ /dev/null @@ -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 "" -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 diff --git a/neomutt/.config/neomutt/colors_gruvbox b/neomutt/.config/neomutt/colors_gruvbox deleted file mode 100644 index 4a64c83..0000000 --- a/neomutt/.config/neomutt/colors_gruvbox +++ /dev/null @@ -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 "[;:]-*[)>( sync-mailbox -bind index collapse-thread - -# Email completion bindings -bind editor complete-query -bind editor ^T complete - - -# General rebindings -bind attach view-mailcap -bind attach l view-mailcap -bind editor 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 complete-query -# -## Shortcuts -macro index,pager 'source ~/.config/neomutt/accounts/ac-lyon!' -macro index,pager 'source ~/.config/neomutt/accounts/bb_opytex!' -macro index,pager 'source ~/.config/neomutt/accounts/jb_opytex!' - diff --git a/neomutt/.config/neomutt/neomuttrc b/neomutt/.config/neomutt/neomuttrc deleted file mode 100644 index a921071..0000000 --- a/neomutt/.config/neomutt/neomuttrc +++ /dev/null @@ -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 diff --git a/neomutt/.config/neomutt/settings b/neomutt/.config/neomutt/settings deleted file mode 100644 index 1921408..0000000 --- a/neomutt/.config/neomutt/settings +++ /dev/null @@ -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/* diff --git a/neomutt/.config/offlineimap/__pycache__/offlineimap.cpython-310.pyc b/neomutt/.config/offlineimap/__pycache__/offlineimap.cpython-310.pyc deleted file mode 100644 index 47f1d5e..0000000 Binary files a/neomutt/.config/offlineimap/__pycache__/offlineimap.cpython-310.pyc and /dev/null differ diff --git a/neomutt/.config/offlineimap/config b/neomutt/.config/offlineimap/config deleted file mode 100644 index 3c4d389..0000000 --- a/neomutt/.config/offlineimap/config +++ /dev/null @@ -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 diff --git a/neomutt/.config/offlineimap/offlineimap.py b/neomutt/.config/offlineimap/offlineimap.py deleted file mode 100644 index ee1b06b..0000000 --- a/neomutt/.config/offlineimap/offlineimap.py +++ /dev/null @@ -1,5 +0,0 @@ -from subprocess import check_output - - -def get_pass(path): - return check_output("pass " + path, shell=True).splitlines()[0] diff --git a/neomutt/.config/vdirsyncer/config b/neomutt/.config/vdirsyncer/config deleted file mode 100644 index 7e907a8..0000000 --- a/neomutt/.config/vdirsyncer/config +++ /dev/null @@ -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"] diff --git a/newsboat/.newsboat/urls b/newsboat/.newsboat/urls index 904a3c3..3bfe070 100644 --- a/newsboat/.newsboat/urls +++ b/newsboat/.newsboat/urls @@ -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" diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 9f8e861..289689c 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -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') diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index e8795ff..8842330 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -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" } -} \ No newline at end of file + "vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" }, + "vimtex": { "branch": "master", "commit": "182ad387e3f3107699483606c9a2b6648f8437b2" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} diff --git a/nvim/.config/nvim/lua/plugins/autopairs.lua b/nvim/.config/nvim/lua/plugins/autopairs.lua index b9710d5..e714e5b 100644 --- a/nvim/.config/nvim/lua/plugins/autopairs.lua +++ b/nvim/.config/nvim/lua/plugins/autopairs.lua @@ -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 } diff --git a/nvim/.config/nvim/lua/plugins/formatting.lua b/nvim/.config/nvim/lua/plugins/formatting.lua index 08a2d3c..5bbf266 100644 --- a/nvim/.config/nvim/lua/plugins/formatting.lua +++ b/nvim/.config/nvim/lua/plugins/formatting.lua @@ -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" }, "mp", function() conform.format({ - lsp_fallback = true, + lsp_format = "fallback", async = true, timeout_ms = 500, }) diff --git a/nvim/.config/nvim/lua/plugins/lsp.lua b/nvim/.config/nvim/lua/plugins/lsp.lua index b72cb86..a6c9664 100644 --- a/nvim/.config/nvim/lua/plugins/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/lsp.lua @@ -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.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", "rn", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename symbol" })) - vim.keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, vim.tbl_extend("force", opts, { desc = "Code action" })) - end) + 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", "rn", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename symbol" })) + vim.keymap.set({ "n", "v" }, "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, diff --git a/nvim/.config/nvim/lua/plugins/lualine.lua b/nvim/.config/nvim/lua/plugins/lualine.lua index 2c4073f..d59ce4a 100644 --- a/nvim/.config/nvim/lua/plugins/lualine.lua +++ b/nvim/.config/nvim/lua/plugins/lualine.lua @@ -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 diff --git a/nvim/.config/nvim/lua/plugins/misc.lua b/nvim/.config/nvim/lua/plugins/misc.lua index 3519c6e..baca859 100644 --- a/nvim/.config/nvim/lua/plugins/misc.lua +++ b/nvim/.config/nvim/lua/plugins/misc.lua @@ -2,5 +2,4 @@ return { 'tpope/vim-surround', 'tpope/vim-repeat', 'tpope/vim-abolish', - 'machakann/vim-highlightedyank' } diff --git a/nvim/.config/nvim/lua/plugins/noice.lua b/nvim/.config/nvim/lua/plugins/noice.lua index 12d7713..822e4f6 100644 --- a/nvim/.config/nvim/lua/plugins/noice.lua +++ b/nvim/.config/nvim/lua/plugins/noice.lua @@ -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 diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua index 44d2488..1843fdc 100644 --- a/nvim/.config/nvim/lua/plugins/telescope.lua +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -30,18 +30,15 @@ return { results_title = "", prompt_title = "", preview_title = "", - mappings = { - i = { - [""] = require("telescope.actions").delete_buffer, - }, - n = { - [""] = require("telescope.actions").delete_buffer, - }, - }, }, }, config = function(_, opts) local telescope = require("telescope") + local actions = require("telescope.actions") + opts.defaults.mappings = { + i = { [""] = actions.delete_buffer }, + n = { [""] = actions.delete_buffer }, + } telescope.setup(opts) telescope.load_extension("fzf") diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua index 400b028..4f8e25c 100644 --- a/nvim/.config/nvim/lua/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -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, } diff --git a/nvim/.config/nvim/lua/plugins/which-key.lua b/nvim/.config/nvim/lua/plugins/which-key.lua index 2c065e4..8b85fc2 100644 --- a/nvim/.config/nvim/lua/plugins/which-key.lua +++ b/nvim/.config/nvim/lua/plugins/which-key.lua @@ -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 diff --git a/nvim/.config/nvim/lua/settings.lua b/nvim/.config/nvim/lua/settings.lua index 74538d5..732ddbb 100644 --- a/nvim/.config/nvim/lua/settings.lua +++ b/nvim/.config/nvim/lua/settings.lua @@ -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", + }, +}) diff --git a/qtile/.config/qtile/autostart.sh b/qtile/.config/qtile/autostart.sh deleted file mode 100755 index 24362b7..0000000 --- a/qtile/.config/qtile/autostart.sh +++ /dev/null @@ -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 diff --git a/qtile/.config/qtile/config.py b/qtile/.config/qtile/config.py deleted file mode 100644 index 8184e82..0000000 --- a/qtile/.config/qtile/config.py +++ /dev/null @@ -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() diff --git a/qtile/.config/qtile/dualscreen.sh b/qtile/.config/qtile/dualscreen.sh deleted file mode 100755 index 098073b..0000000 --- a/qtile/.config/qtile/dualscreen.sh +++ /dev/null @@ -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 diff --git a/sway/.config/kanshi/config b/sway/.config/kanshi/config deleted file mode 100644 index ed52b89..0000000 --- a/sway/.config/kanshi/config +++ /dev/null @@ -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 -} diff --git a/sway/.config/sway/config b/sway/.config/sway/config deleted file mode 100644 index 253d593..0000000 --- a/sway/.config/sway/config +++ /dev/null @@ -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/* diff --git a/sway/.config/sway/config.d/misc_autostart b/sway/.config/sway/config.d/misc_autostart deleted file mode 100644 index 04d01d3..0000000 --- a/sway/.config/sway/config.d/misc_autostart +++ /dev/null @@ -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';" diff --git a/sway/.config/systemd/user/kanshi.service b/sway/.config/systemd/user/kanshi.service deleted file mode 100644 index 8054271..0000000 --- a/sway/.config/systemd/user/kanshi.service +++ /dev/null @@ -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 diff --git a/sway/.config/systemd/user/sway-session.target b/sway/.config/systemd/user/sway-session.target deleted file mode 100644 index a6dadf9..0000000 --- a/sway/.config/systemd/user/sway-session.target +++ /dev/null @@ -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 diff --git a/sway/.config/systemd/user/sway-session.target.wants/kanshi.service b/sway/.config/systemd/user/sway-session.target.wants/kanshi.service deleted file mode 120000 index ca0a406..0000000 --- a/sway/.config/systemd/user/sway-session.target.wants/kanshi.service +++ /dev/null @@ -1 +0,0 @@ -/home/lafrite/.config/systemd/user/kanshi.service \ No newline at end of file diff --git a/sway/.config/waybar/style.css b/sway/.config/waybar/style.css deleted file mode 100644 index 873c668..0000000 --- a/sway/.config/waybar/style.css +++ /dev/null @@ -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; -} diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf index c2dd661..fa81024 100644 --- a/tmux/.tmux.conf +++ b/tmux/.tmux.conf @@ -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 diff --git a/vim/.vim/config/base.vim b/vim/.vim/config/base.vim deleted file mode 100644 index 739c066..0000000 --- a/vim/.vim/config/base.vim +++ /dev/null @@ -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 to clear the highlighting of :set hlsearch. -set hlsearch -if maparg('', 'n') ==# '' - nnoremap :nohlsearch=has('diff')?'diffupdate':'' -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 L :set list! - -" 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 - -" 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), ',') diff --git a/vim/.vim/config/plugins.vim b/vim/.vim/config/plugins.vim deleted file mode 100644 index 899425e..0000000 --- a/vim/.vim/config/plugins.vim +++ /dev/null @@ -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 - diff --git a/vim/.vimrc b/vim/.vimrc deleted file mode 100644 index 35ee041..0000000 --- a/vim/.vimrc +++ /dev/null @@ -1,61 +0,0 @@ -set nocompatible " be iMproved, required -noremap -map -let mapleader = "\" -let localleader = "\" - -" 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 diff --git a/zsh/.config/zsh/.zshrc b/zsh/.config/zsh/.zshrc index 9f14a4f..101c076 100644 --- a/zsh/.config/zsh/.zshrc +++ b/zsh/.config/zsh/.zshrc @@ -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)" diff --git a/zsh/.config/zsh/zfunc/_poetry b/zsh/.config/zsh/zfunc/_poetry new file mode 100644 index 0000000..29afecf --- /dev/null +++ b/zsh/.config/zsh/zfunc/_poetry @@ -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 ." "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 diff --git a/zsh/.zshenv b/zsh/.zshenv index 816eb49..2327f2c 100644 --- a/zsh/.zshenv +++ b/zsh/.zshenv @@ -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