Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4e68eff17d | ||
|
0c131fdbfa | ||
|
d4d4663876 | ||
|
076ff6fbe5 | ||
|
082824261b | ||
|
851e88be15 | ||
|
f755edaa08 | ||
|
0c5f9af76f | ||
c94010fb12 |
4
bin/.bin/0x0
Executable file
4
bin/.bin/0x0
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
curl -F"file=@$@" https://0x0.st | tee >(xclip -sel clip)
|
||||
|
8
bin/.bin/disc
Executable file
8
bin/.bin/disc
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
tmux ls -F \#S | grep disc && \
|
||||
tmux attach -t disc \
|
||||
|| \
|
||||
tmux new-session -s disc 'scli --save-history' \; \
|
||||
split-window -h -l 75% 'aerc' \; \
|
||||
split-window -v 'weechat' \; \
|
141
bin/.bin/emailbook
Executable file
141
bin/.bin/emailbook
Executable file
@ -0,0 +1,141 @@
|
||||
#!/bin/sh
|
||||
VERSION="0.2.1"
|
||||
usage() {
|
||||
echo "emailbook $VERSION"'
|
||||
A minimalistic address book for e-mails only.
|
||||
|
||||
Usage: emailbook FILE [OPTIONS]
|
||||
|
||||
Prints all values in FILE if no option is given.
|
||||
|
||||
Options:
|
||||
-a, --add [KEY] VALUE Add KEY/VALUE pair to FILE. If KEY is omitted,
|
||||
VALUE is used as key, too.
|
||||
[-s, --search] QUERY Search FILE for entries with keys or values containing QUERY.
|
||||
-k, --key QUERY Like `--search` but limit search to keys/aliases.
|
||||
-v, --value QUERY Like `--search` but limit search to values.
|
||||
-p, --parse SOURCE Parse stdin for e-mail addresses in header and add them to FILE.
|
||||
SOURCE might be either --from, --to , --cc, --bcc, or --all.
|
||||
-h, --help Show this help.
|
||||
-V, --version Print version.
|
||||
'
|
||||
}
|
||||
|
||||
checkfilename() {
|
||||
[ $QUIET ] || [ -e "$filename" ] \
|
||||
|| echo "File $filename not found. Creating it." 1>&2
|
||||
}
|
||||
|
||||
keyexists() {
|
||||
escaped=$(echo "$*" | sed 's/[][\.|$(){}?+*^]/\\&/g')
|
||||
# also check display name with/without double quotes
|
||||
quotestoggled=$(echo "$*" | sed -E 's/^"([^"]+)"( +<[^>]+>)/\1\2/;t;s/^([^"]+?)( +<[^>]+>)/"\1"\2/')
|
||||
quotestoggledescaped=$(echo "$quotestoggled" | sed 's/[][\.|$(){}?+*^]/\\&/g')
|
||||
grep -q -E "^$escaped( :|\$)" "$filename" 2> /dev/null \
|
||||
|| grep -q -E "^$quotestoggledescaped( :|\$)" "$filename" 2> /dev/null
|
||||
}
|
||||
|
||||
addentry() {
|
||||
if keyexists "$1"; then
|
||||
[ $QUIET ] || echo "! $1 (skipped)"
|
||||
else
|
||||
[ "$2" ] && line="$1 : $2" || line="$1"
|
||||
[ $QUIET ] || echo "+ $line"
|
||||
echo "$line" >> "$filename"
|
||||
fi
|
||||
}
|
||||
|
||||
add() {
|
||||
checkfilename
|
||||
case $# in
|
||||
1|2) addentry "$@" ;;
|
||||
*) echo "Expected one or two arguments after -a!"; exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
addfromstdin() {
|
||||
# Skip lines without "@", skip lines containing no-reply (or similar),
|
||||
# strip \r, strip leading spaces, do the following replacements:
|
||||
# "'John Doe'" <xxx> → "John Doe" <xxx>
|
||||
# 'John Doe' <xxx> → John Doe <xxx>
|
||||
# "john.doe@example.com" <john.doe@example.com> → <john.doe@example.com>
|
||||
# "<john.doe@example.com>" <john.doe@example.com> → <john.doe@example.com>
|
||||
# john.doe@example.com → <john.doe@example.com>
|
||||
grep '@' \
|
||||
| grep -v -i -E '\bnot?[_-]?reply' \
|
||||
| sed 's/\r$//' \
|
||||
| sed -E 's/^ +//g' \
|
||||
| sed -E "s/(\"?)'([^'\"]+)'(\"?)/\1\2\3/" \
|
||||
| sed -E 's/^"<?([^">]*)>?" +<\1>/<\1>/' \
|
||||
| sed -E 's/^[^<>@ ]*@[^<>@ ]+$/<\0>/' \
|
||||
| sort -u \
|
||||
| while read -r line; do addentry "$line"; done
|
||||
}
|
||||
|
||||
searchall() {
|
||||
# show entries with matching alias first
|
||||
searchbyalias "$*"
|
||||
searchbyvalueonly "$*"
|
||||
}
|
||||
|
||||
searchbyalias() {
|
||||
grep -i -E "$* :" "$filename" | sed -E 's/^[^:]+:\s*//'
|
||||
}
|
||||
|
||||
searchbyvalue() {
|
||||
sed -E 's/^[^:]+:\s*//' "$filename" | grep -i -E "$*"
|
||||
}
|
||||
|
||||
searchbyvalueonly() {
|
||||
# exclude matches found by searchbyalias
|
||||
grep -i -E -v "$* :" "$filename" | sed -E 's/^[^:]+:\s*//' | grep -i -E "$*"
|
||||
}
|
||||
|
||||
parsefields() {
|
||||
# Find header fields starting with $1 (p.e. 'To:') plus following lines
|
||||
# starting with a space. Split entries at commas except when quoted. Skip
|
||||
# empty lines. Decode encoded strings. Squeeze double spaces.
|
||||
sed -E '/^\r?$/Q' - \
|
||||
| sed -E -n "/^$1:/{:a ; \$!N ; s/\n\s+/ / ; ta ; P ; D}" \
|
||||
| sed -E "s/^$1:\\s*//" \
|
||||
| grep -v -P '[\x80-\xFF]' \
|
||||
| awk -vFPAT='([^,"]*)("[^"]+")?([^,]*)?' -vOFS='\n' \
|
||||
'{for(i=1;i<=NF;i++) printf("%s\n",$i)}' \
|
||||
| sed -E -e '/^ *$/d' \
|
||||
| perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' \
|
||||
| sed -E -e 's/ +/ /g' \
|
||||
| addfromstdin
|
||||
}
|
||||
|
||||
parse() {
|
||||
checkfilename
|
||||
case "$1" in
|
||||
--all) parsefields '(From|To|Cc|CC|Bcc)' ;;
|
||||
# TODO: Include References, In-Reply-To, Reply-To, Return-Path?
|
||||
--from) parsefields 'From' ;;
|
||||
--to) parsefields 'To' ;;
|
||||
--cc) parsefields '(Cc|CC)' ;;
|
||||
--bcc) parsefields 'Bcc' ;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
-h|--help|'') usage; exit ;;
|
||||
-V|--version) echo "$VERSION"; exit ;;
|
||||
esac
|
||||
|
||||
filename="$1"; shift
|
||||
|
||||
case "$1" in
|
||||
-q|--quiet) shift; QUIET=1 ;;
|
||||
esac
|
||||
|
||||
case "$1" in
|
||||
-a|--add) shift; add "$@" ;;
|
||||
-s|--search) shift; searchall "$*" ;;
|
||||
-k|--key) shift; searchbyalias "$*" ;;
|
||||
-v|--value) shift; searchbyvalue "$*" ;;
|
||||
-p|--parse) shift; parse "$@" ;;
|
||||
*) searchall "$*" ;;
|
||||
esac
|
@ -1355,6 +1355,7 @@
|
||||
🈺 Japanese “open for business” button; U+1F23A
|
||||
🈵 Japanese “no vacancy” button; U+1F235
|
||||
🔴 red circle; U+1F534
|
||||
🟢 green circle; U+1F7E2
|
||||
🔵 blue circle; U+1F535
|
||||
⚪ white circle; U+26AA
|
||||
⚫ black circle; U+26AB
|
||||
|
@ -98,6 +98,8 @@ bspc rule -a Zathura state=tiled
|
||||
bspc rule -a arduino state=pseudo_tiled
|
||||
bspc rule -a Spotify desktop=VII follow=off focus=off
|
||||
bspc rule -a discord desktop=VII follow=off focus=off
|
||||
bspc rule -a steam_app_2666510 state=pseudo_tiled split_dir=south split_ratio 340 locked private layer=above rectangle=1920x340+0+740
|
||||
#bspc rule -a steam_app_2666510 state=pseudo_tiling locked=on private=on split_dir=south split_ratio 296 layer=above rectangle=1920x296+0+784
|
||||
|
||||
## Autogap adjusts windowgap automatically according to the number of
|
||||
## windows on the desktop. Using it disables negative window gap.
|
||||
|
258
dunst/.config/dunst/dunstrc
Normal file
258
dunst/.config/dunst/dunstrc
Normal file
@ -0,0 +1,258 @@
|
||||
[global]
|
||||
|
||||
font =Fira Code 14
|
||||
|
||||
# Allow a small subset of html markup:
|
||||
# <b>bold</b>
|
||||
# <i>italic</i>
|
||||
# <s>strikethrough</s>
|
||||
# <u>underline</u>
|
||||
#
|
||||
# For a complete reference see
|
||||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
||||
# If markup is not allowed, those tags will be stripped out of the
|
||||
# message.
|
||||
markup = yes
|
||||
plain_text = no
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = no
|
||||
|
||||
# Show how many messages are currently hidden (because of geometry).
|
||||
indicate_hidden = yes
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = center
|
||||
|
||||
# The frequency with wich text that is longer than the notification
|
||||
# window allows bounces back and forth.
|
||||
# This option conflicts with "word_wrap".
|
||||
# Set to 0 to disable.
|
||||
bounce_freq = 0
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = -1
|
||||
|
||||
# Split notifications into multiple lines if they don't fit into
|
||||
# geometry.
|
||||
word_wrap = yes
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Hide duplicate's count and stack them
|
||||
stack_duplicates = yes
|
||||
hide_duplicates_count = yes
|
||||
|
||||
|
||||
# The geometry of the window:
|
||||
# [{width}]x{height}[+/-{x}+/-{y}]
|
||||
# The geometry of the message window.
|
||||
# The height is measured in number of notifications everything else
|
||||
# in pixels. If the width is omitted but the height is given
|
||||
# ("-geometry x2"), the message window expands over the whole screen
|
||||
# (dmenu-like). If width is 0, the window expands to the longest
|
||||
# message displayed. A positive x is measured from the left, a
|
||||
# negative from the right side of the screen. Y is measured from
|
||||
# the top and down respectevly.
|
||||
# The width can be negative. In this case the actual width is the
|
||||
# screen width minus the width defined in within the geometry option.
|
||||
#geometry = "250x50-40+40"
|
||||
geometry = "300x50-15+49"
|
||||
|
||||
# Shrink window if it's smaller than the width. Will be ignored if
|
||||
# width is 0.
|
||||
shrink = no
|
||||
|
||||
# The transparency of the window. Range: [0; 100].
|
||||
# This option will only work if a compositing windowmanager is
|
||||
# present (e.g. xcompmgr, compiz, etc.).
|
||||
transparency = 5
|
||||
|
||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||
# for longer than idle_threshold seconds.
|
||||
# Set to 0 to disable.
|
||||
idle_threshold = 0
|
||||
|
||||
# Which monitor should the notifications be displayed on.
|
||||
monitor = 1
|
||||
|
||||
# Display notification on focused monitor. Possible modes are:
|
||||
# mouse: follow mouse pointer
|
||||
# keyboard: follow window with keyboard focus
|
||||
# none: don't follow anything
|
||||
#
|
||||
# "keyboard" needs a windowmanager that exports the
|
||||
# _NET_ACTIVE_WINDOW property.
|
||||
# This should be the case for almost all modern windowmanagers.
|
||||
#
|
||||
# If this option is set to mouse or keyboard, the monitor option
|
||||
# will be ignored.
|
||||
follow = none
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 15
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = no
|
||||
|
||||
# The height of a single line. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
# This adds empty space above and under the text.
|
||||
line_height = 3
|
||||
|
||||
# Draw a line of "separatpr_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 6
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 6
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = auto
|
||||
|
||||
# Print a notification on startup.
|
||||
# This is mainly for error detection, since dbus (re-)starts dunst
|
||||
# automatically after a crash.
|
||||
startup_notification = false
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
|
||||
# Browser for opening urls in context menu.
|
||||
browser = /usr/bin/qutebrowser -t
|
||||
|
||||
# Align icons left/right/off
|
||||
icon_position = off
|
||||
max_icon_size = 80
|
||||
|
||||
# Paths to default icons.
|
||||
icon_path = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/
|
||||
|
||||
frame_width = 1
|
||||
frame_color = "#8EC07C"
|
||||
|
||||
[shortcuts]
|
||||
|
||||
# Shortcuts are specified as [modifier+][modifier+]...key
|
||||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
|
||||
# "mod3" and "mod4" (windows-key).
|
||||
# Xev might be helpful to find names for keys.
|
||||
|
||||
# Close notification.
|
||||
close = ctrl+space
|
||||
|
||||
# Close all notifications.
|
||||
close_all = ctrl+shift+space
|
||||
|
||||
# Redisplay last message(s).
|
||||
# On the US keyboard layout "grave" is normally above TAB and left
|
||||
# of "1".
|
||||
history = ctrl+grave
|
||||
|
||||
# Context menu.
|
||||
context = ctrl+shift+period
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
frame_color = "#3B7C87"
|
||||
foreground = "#3B7C87"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 4
|
||||
|
||||
[urgency_normal]
|
||||
frame_color = "#5B8234"
|
||||
foreground = "#5B8234"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 6
|
||||
|
||||
[urgency_critical]
|
||||
frame_color = "#B7472A"
|
||||
foreground = "#B7472A"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 8
|
||||
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
||||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
||||
# "background", "new_icon" and "format".
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: if you don't want a notification to be displayed, set the format
|
||||
# to "".
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# format = ""
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
# vim: ft=cfg
|
@ -1,6 +1,6 @@
|
||||
[user]
|
||||
email = debucquoy.anthony@gmail.com
|
||||
name = Anthony Debucquoy
|
||||
email = tonitch@herisson.ovh
|
||||
name = tonitch
|
||||
signingkey = 3D06B2E67463D272D769DF59A78D6421F083D42E
|
||||
[init]
|
||||
defaultBranch = master
|
||||
@ -17,3 +17,10 @@
|
||||
fap = fetch --all --prune
|
||||
[push]
|
||||
autoSetupRemote = true
|
||||
[sendemail]
|
||||
smtpServer = mail.herisson.ovh
|
||||
smtpEncryption = tls
|
||||
smtpServerPort = 587
|
||||
smtpUser = tonitch
|
||||
smtpPass = bateaux
|
||||
annotate = yes
|
||||
|
@ -21,4 +21,7 @@ do
|
||||
vim.keymap.set('i', '<C-S>', function()
|
||||
vim.lsp.buf.signature_help()
|
||||
end, { desc = 'vim.lsp.buf.signature_help()' })
|
||||
|
||||
vim.keymap.set('n', ']g', vim.diagnostic.goto_next)
|
||||
vim.keymap.set('n', '[g', vim.diagnostic.goto_prev)
|
||||
end
|
||||
|
@ -1,5 +1,8 @@
|
||||
active-opacity = 1.0;
|
||||
inactive-opacity = 0.9;
|
||||
backend = "glx";
|
||||
shadow = true;
|
||||
corner-radius = 10;
|
||||
|
||||
opacity-rule = [
|
||||
"100:name ~?= 'YouTube — Mozilla Firefox'",
|
||||
@ -7,3 +10,8 @@ opacity-rule = [
|
||||
"100:name ~?= 'Netflix — Mozilla Firefox'",
|
||||
"100:class_g = 'Zathura'"
|
||||
]
|
||||
|
||||
animation = ({
|
||||
triggers = ["open", "close"];
|
||||
preset = "appear";
|
||||
})
|
||||
|
@ -1,6 +1,7 @@
|
||||
bin
|
||||
bspwm
|
||||
dmenu
|
||||
dunst
|
||||
feh
|
||||
git
|
||||
nvim
|
||||
|
@ -192,7 +192,8 @@ super + shift + {comma,period}
|
||||
# Change window gap
|
||||
|
||||
super + g
|
||||
bspc config -d focused window_gap {$gap,$(($gap+$cgap)),$(($gap+$cgap+$gap))}
|
||||
{bspc config window_gap 0 && bspc config top_padding 0 && bspc config bottom_padding 0 && bspc config right_padding 0 && bspc config left_padding 0,\
|
||||
bspc config window_gap $(($gap+$cgap)) && bspc config top_padding $(($PANEL_HEIGHT-($gap-$cgap))) && bspc config bottom_padding -$gap && bspc config right_padding -$gap && bspc config left_padding -$gap}
|
||||
|
||||
super + button{4,5}
|
||||
bspc config -d focused window_gap $((`bspc config -d focused window_gap` {+,-} 2 ))
|
||||
|
@ -1,5 +1,6 @@
|
||||
set -g mouse
|
||||
set -g set-clipboard on
|
||||
set -g focus-events on
|
||||
|
||||
bind h selectp -L
|
||||
bind j selectp -D
|
||||
|
@ -20,10 +20,14 @@ $0
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f $1
|
||||
rm -f tags compile_commands.json
|
||||
|
||||
bear: clean
|
||||
bear -- make
|
||||
|
||||
tags:
|
||||
ctags **.{c,h}
|
||||
|
||||
run: $1
|
||||
./$<
|
||||
|
||||
|
@ -1,3 +1,2 @@
|
||||
set keywordprg=go\ doc
|
||||
unmap K
|
||||
set makeprg=go\ run\ .
|
||||
|
@ -72,6 +72,7 @@ alias open="xdg-open"
|
||||
alias sxiv=nsxiv
|
||||
alias :q=exit
|
||||
alias vim=nvim
|
||||
alias radio="mpv https://radio.freenode.net/radio.ogg --volume=30"
|
||||
|
||||
# Theming section
|
||||
autoload -U compinit colors zcalc
|
||||
|
Loading…
x
Reference in New Issue
Block a user