Reimport
commit
bcec804f1a
|
@ -0,0 +1,20 @@
|
||||||
|
Copyright (c) 2021 earnest ma <me@earne.link>
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
Be Gay, Do Crimes
|
||||||
|
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.
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Dotfiles
|
||||||
|
|
||||||
|
Hopefully this is the last time I start over! These dotfiles are managed using
|
||||||
|
Stow and I use them on my system running Fedora 34.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Clone the repository and run the script to bootstrap and stow files.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://git.sr.ht/~earnestma/dotfiles
|
||||||
|
cd dotfiles
|
||||||
|
./bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, use `stow */ -[D]v` to set up/ remove all the links.
|
||||||
|
|
||||||
|
## Thanks
|
||||||
|
|
||||||
|
- https://git.sr.ht/~seirdy/dotfiles
|
||||||
|
- and various others! <3
|
|
@ -0,0 +1 @@
|
||||||
|
accounts.conf
|
|
@ -0,0 +1,200 @@
|
||||||
|
#
|
||||||
|
# aerc main configuration
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
#
|
||||||
|
# Describes the format for each row in a mailbox view. This field is compatible
|
||||||
|
# with mutt's printf-like syntax.
|
||||||
|
#
|
||||||
|
# Default: %D %-17.17n %Z %s
|
||||||
|
index-format=%D %-17.17n %Z %s
|
||||||
|
|
||||||
|
#
|
||||||
|
# See time.Time#Format at https://godoc.org/time#Time.Format
|
||||||
|
#
|
||||||
|
# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
|
||||||
|
timestamp-format=2006-01-02 03:04 PM
|
||||||
|
|
||||||
|
#
|
||||||
|
# Width of the sidebar, including the border.
|
||||||
|
#
|
||||||
|
# Default: 20
|
||||||
|
sidebar-width=20
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
mouse-enabled=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ring the bell when new messages are received
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
new-message-bell=true
|
||||||
|
|
||||||
|
# Marker to show before a pinned tab's name.
|
||||||
|
#
|
||||||
|
# Default: `
|
||||||
|
pinned-tab-marker='`'
|
||||||
|
|
||||||
|
# Describes the format string to use for the directory list
|
||||||
|
#
|
||||||
|
# Default: %n %>r
|
||||||
|
dirlist-format=%n %>r
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
sort=
|
||||||
|
|
||||||
|
# Moves to next message when the current message is deleted
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
next-message-on-delete=true
|
||||||
|
|
||||||
|
# The directories where the stylesets are stored. It takes a colon-separated
|
||||||
|
# list of directories.
|
||||||
|
#
|
||||||
|
# default: /usr/local/share/aerc/stylesets/
|
||||||
|
stylesets-dirs=/usr/share/aerc/stylesets/
|
||||||
|
|
||||||
|
# Sets the styleset to use for the aerc ui elements.
|
||||||
|
#
|
||||||
|
# Default: default
|
||||||
|
styleset-name=default
|
||||||
|
|
||||||
|
[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 -R
|
||||||
|
pager=less -x 2 -Fir
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# How long to wait after the last input before auto-completion is triggered.
|
||||||
|
#
|
||||||
|
# Default: 250ms
|
||||||
|
completion-delay=250ms
|
||||||
|
|
||||||
|
#
|
||||||
|
# Global switch for completion popovers
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
completion-popovers=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=nvim
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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,Cc|Bcc
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
address-book-cmd=khard email --parsable --search-in-source-files --remove-first-line %s
|
||||||
|
|
||||||
|
[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 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.
|
||||||
|
subject,~^\[PATCH=awk -f /usr/share/aerc/filters/hldiff
|
||||||
|
text/html=/usr/share/aerc/filters/html
|
||||||
|
text/*=awk -f /usr/share/aerc/filters/plaintext
|
||||||
|
#image/*=catimg -w $(tput cols) -
|
||||||
|
|
||||||
|
[triggers]
|
||||||
|
#
|
||||||
|
# Triggers specify commands to execute when certain events occur.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# new-email=exec notify-send "New email from %n" "%s"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when a new email arrives in the selected folder
|
||||||
|
new-email=exec notify-send "aerc: you have a new email"
|
||||||
|
|
||||||
|
[templates]
|
||||||
|
# Templates are used to populate email bodies automatically.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The directories where the templates are stored. It takes a colon-separated
|
||||||
|
# list of directories.
|
||||||
|
#
|
||||||
|
# default: /usr/local/share/aerc/templates/
|
||||||
|
template-dirs=/home/earne/.config/aerc/templates:/usr/share/aerc/templates/
|
||||||
|
|
||||||
|
# The template to be used for quoted replies.
|
||||||
|
#
|
||||||
|
# default: quoted_reply
|
||||||
|
quoted-reply=quoted_reply
|
||||||
|
|
||||||
|
# The template to be used for forward as body.
|
||||||
|
#
|
||||||
|
# default: forward_as_body
|
||||||
|
forwards=forward_as_body
|
|
@ -0,0 +1,130 @@
|
||||||
|
# Binds are of the form <key sequence> = <command to run>
|
||||||
|
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
||||||
|
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
|
||||||
|
[messages]
|
||||||
|
q = :quit<Enter>
|
||||||
|
Q = :exec mbsync -a<Enter>
|
||||||
|
|
||||||
|
j = :next<Enter>
|
||||||
|
<Down> = :next<Enter>
|
||||||
|
<C-d> = :next 50%<Enter>
|
||||||
|
<C-f> = :next 100%<Enter>
|
||||||
|
<PgDn> = :next -s 100%<Enter>
|
||||||
|
|
||||||
|
k = :prev<Enter>
|
||||||
|
<Up> = :prev<Enter>
|
||||||
|
<C-u> = :prev 50%<Enter>
|
||||||
|
<C-b> = :prev 100%<Enter>
|
||||||
|
<PgUp> = :prev -s 100%<Enter>
|
||||||
|
g = :select 0<Enter>
|
||||||
|
G = :select -1<Enter>
|
||||||
|
|
||||||
|
J = :next-folder<Enter>
|
||||||
|
K = :prev-folder<Enter>
|
||||||
|
|
||||||
|
v = :mark -t<Enter>
|
||||||
|
V = :mark -v<Enter>
|
||||||
|
|
||||||
|
<Enter> = :view<Enter>
|
||||||
|
D = :delete<Enter>
|
||||||
|
dt = :mv<space>Trash<Enter>
|
||||||
|
dg = :mv<space>[Gmail]/Trash<Enter>
|
||||||
|
dd = :mv<space>Deleted<Enter>
|
||||||
|
A = :archive flat<Enter>
|
||||||
|
a = :archive year<Enter>
|
||||||
|
|
||||||
|
#C = :compose<Enter>
|
||||||
|
C = :compose -Tnew<Enter>
|
||||||
|
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
rt = :reply -a -Tthanks<Enter>
|
||||||
|
Rt = :reply -qa -Tquoted_thanks<Enter>
|
||||||
|
rp = :reply -a -Ttop-posting<Enter>
|
||||||
|
Rp = :reply -Ttop-posting<Enter>
|
||||||
|
|
||||||
|
c = :cf<space>
|
||||||
|
$ = :term<space>
|
||||||
|
! = :term<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
|
||||||
|
/ = :search<space>
|
||||||
|
\ = :filter<space>
|
||||||
|
n = :next-result<Enter>
|
||||||
|
N = :prev-result<Enter>
|
||||||
|
|
||||||
|
[view]
|
||||||
|
q = :close<Enter>
|
||||||
|
| = :pipe<space>
|
||||||
|
D = :delete<Enter>
|
||||||
|
dt = :mv<space>Trash<Enter>
|
||||||
|
dg = :mv<space>[Gmail]/Trash<Enter>
|
||||||
|
dd = :mv<space>Deleted<Enter>
|
||||||
|
S = :save<space>
|
||||||
|
A = :archive flat<Enter>
|
||||||
|
a = :archive year<Enter>
|
||||||
|
|
||||||
|
f = :forward<Enter>
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
rt = :reply -a -Tthanks<Enter>
|
||||||
|
Rt = :reply -qa -Tquoted_thanks<Enter>
|
||||||
|
rp = :reply -a -Ttop-posting<Enter>
|
||||||
|
Rp = :reply -Ttop-posting<Enter>
|
||||||
|
|
||||||
|
H = :toggle-headers<Enter>
|
||||||
|
<C-k> = :prev-part<Enter>
|
||||||
|
<C-j> = :next-part<Enter>
|
||||||
|
J = :next<Enter>
|
||||||
|
K = :prev<Enter>
|
||||||
|
|
||||||
|
O = :open<Enter>
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
# Keybindings used when the embedded terminal is not selected in the compose
|
||||||
|
# view
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<tab> = :next-field<Enter>
|
||||||
|
|
||||||
|
[compose::editor]
|
||||||
|
# Keybindings used when the embedded terminal is selected in the compose view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
|
||||||
|
[compose::review]
|
||||||
|
# Keybindings used when reviewing a message to be sent
|
||||||
|
y = :send<Enter>
|
||||||
|
n = :abort<Enter>
|
||||||
|
p = :postpone<Enter>
|
||||||
|
q = :abort<Enter>
|
||||||
|
e = :edit<Enter>
|
||||||
|
a = :attach<space>
|
||||||
|
# In-Reply-To header:
|
||||||
|
r = :header -f In-Reply-To
|
||||||
|
# set patch headers for sourcehut
|
||||||
|
pp = :header -f X-Sourcehut-Patchset-Update PROPOSED<Enter>
|
||||||
|
pn = :header -f X-Sourcehut-Patchset-Update NEEDS_REVISION<Enter>
|
||||||
|
pr = :header -f X-Sourcehut-Patchset-Update APPROVED<Enter>
|
||||||
|
pa = :header -f X-Sourcehut-Patchset-Update APPLIED<Enter>
|
||||||
|
px = :header -f X-Sourcehut-Patchset-Update REJECTED<Enter>
|
||||||
|
|
||||||
|
[terminal]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
|
@ -0,0 +1,5 @@
|
||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
|
||||||
|
Forwarded message from {{(index .OriginalFrom 0).Name}} on {{dateFormat .OriginalDate "Mon Jan 2, 2006 at 3:04 PM"}}:
|
||||||
|
{{wrapText .OriginalText 72}}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
REMOTE_URL=$(git remote get-url --push origin)
|
||||||
|
COMMITS=$(git reflog -2 $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)) --pretty=format:%h | xargs printf '%s <- %s')
|
||||||
|
CURRENT_BRANCH=$(git branch --show-current)
|
||||||
|
UPSTREAM_BRANCH=$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD) | sed 's#^[^/]*/##g')
|
||||||
|
echo "On $REMOTE_URL:
|
||||||
|
$COMMITS ($CURRENT_BRANCH -> $UPSTREAM_BRANCH)"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
|
||||||
|
Op {{ dateFormat (.OriginalDate | toLocal) "2006-01-02 om 15:04 MST" }}, schreef {{ (index .OriginalFrom 0).Name }}:
|
||||||
|
{{ wrapText .OriginalText 72 | quote }}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
X-Sourcehut-Patchset-Update: APPLIED
|
||||||
|
|
||||||
|
Thanks!
|
||||||
|
|
||||||
|
{{ exec "~/.config/aerc/templates/patch.sh" "" }}
|
||||||
|
Op {{ dateFormat (.OriginalDate | toLocal) "2006-01-02 om 15:04 MST" }}, schreef {{ (index .OriginalFrom 0).Name }}:
|
||||||
|
{{ wrapText .OriginalText 72 | quote }}
|
|
@ -0,0 +1,6 @@
|
||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
X-Sourcehut-Patchset-Update: APPLIED
|
||||||
|
|
||||||
|
Thanks!
|
||||||
|
|
||||||
|
{{ exec "~/.config/aerc/templates/patch.sh" "" }}
|
|
@ -0,0 +1 @@
|
||||||
|
secret
|
|
@ -0,0 +1,78 @@
|
||||||
|
[include]
|
||||||
|
path = ~/.config/git/secret
|
||||||
|
|
||||||
|
# include something like this in the above file:
|
||||||
|
#[sendemail]
|
||||||
|
# smtpserver = mail.example.com
|
||||||
|
# smtpuser =
|
||||||
|
# smtpencryption = tls
|
||||||
|
# smtpserverport = 587
|
||||||
|
# annotate = yes
|
||||||
|
|
||||||
|
[user]
|
||||||
|
email = me@earne.link
|
||||||
|
name = earnest ma
|
||||||
|
signingkey = BF66E5C8A1416E2A857C774CA343F43342EB6E2A
|
||||||
|
|
||||||
|
[core]
|
||||||
|
autocrlf = false
|
||||||
|
quotepath = false
|
||||||
|
commitGraph = true
|
||||||
|
longpaths = true
|
||||||
|
editor = nvim
|
||||||
|
hooksPath = ~/.config/git/hooks
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
tool = bat
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgsign = true
|
||||||
|
verbose = true
|
||||||
|
|
||||||
|
[fetch]
|
||||||
|
prune = true
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
ff = only
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = current
|
||||||
|
|
||||||
|
[status]
|
||||||
|
submodulesummary = true
|
||||||
|
|
||||||
|
[help]
|
||||||
|
autocorrect = 20
|
||||||
|
|
||||||
|
[gc]
|
||||||
|
writeCommitGraph = true
|
||||||
|
|
||||||
|
[color]
|
||||||
|
ui = true
|
||||||
|
|
||||||
|
[filter "lfs"]
|
||||||
|
clean = git-lfs clean -- %f
|
||||||
|
smudge = git-lfs smudge -- %f
|
||||||
|
process = git-lfs filter-process
|
||||||
|
required = true
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
checkup = !git log -1 && (git fetch --all 2>/dev/null || true) && git status
|
||||||
|
fuckit = reset --hard
|
||||||
|
setup = !git init && git commit --allow-empty -m \"Initial commit\"
|
||||||
|
e = commit --allow-empty-message -m ''
|
||||||
|
br = branch
|
||||||
|
co = checkout
|
||||||
|
ca = commit --amend
|
||||||
|
cd = commit -eF .git/draft
|
||||||
|
ce = commit --allow-empty-message -m ''
|
||||||
|
cm = commit
|
||||||
|
di = diff
|
||||||
|
lg = log
|
||||||
|
mg = merge
|
||||||
|
pu = push
|
||||||
|
pl = pull
|
||||||
|
st = status
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
COMMIT_INFO=$(git log -1 HEAD --format=reference)
|
||||||
|
notify-send 'Git commit: ' "$COMMIT_INFO" -u low
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
# From https://mastodon.xyz/@CarlCravens/105758509287927276
|
||||||
|
alias clear='clear; tput cup $LINES 0'
|
||||||
|
|
||||||
|
alias camoff='sudo modprobe -r uvcvideo' # sudo rmmod -f uvcvideo
|
||||||
|
alias camon='sudo modprobe uvcvideo'
|
||||||
|
|
||||||
|
alias clip="xclip -sel clip"
|
||||||
|
|
||||||
|
ahbh(){
|
||||||
|
git rev-list --left-right --count \
|
||||||
|
"$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')"..."$(git branch --show-current)"
|
||||||
|
}
|
||||||
|
|
||||||
|
alias pu='git push'
|
||||||
|
alias st='git st'
|
||||||
|
|
||||||
|
foldersize(){
|
||||||
|
du -sh "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
tmm(){
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
tmux attach-session -t 0 || tmux
|
||||||
|
else
|
||||||
|
tmux attach-session -t "$1" || tmux new-session -t "$1" || tmux
|
||||||
|
fi
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
# May not be loaded on older versions of tmux
|
||||||
|
|
||||||
|
set -g default-terminal "tmux-256color"
|
||||||
|
|
||||||
|
# status powerline-like theme, no dependencies.
|
||||||
|
set -g status on
|
||||||
|
set -g status-bg '#232629'
|
||||||
|
set -g status-fg colour7
|
||||||
|
set -g status-left '#[fg=colour235,bg=colour4,bold] #S #[fg=colour4,bg=colour235,nobold]'
|
||||||
|
set -g window-status-format "#[default] #I #[fg=colour240] #[default]#W "
|
||||||
|
set -g window-status-bell-style "bold"
|
||||||
|
set -g window-status-current-format "#[fg=colour235,bg=colour6]#[fg=colour235,bg=colour6,bold] #I #[fg=colour235]#W #[fg=colour6,bg=colour235,nobold]"
|
||||||
|
set -g status-right '#{prefix_highlight}#[fg=colour6,bg=colour235]#[fg=colour235,bg=colour6] #{=21:pane_title} #[fg=colour4,bg=colour6,nobold]#[fg=colour235,bg=colour4] %H:%M '
|
||||||
|
|
||||||
|
set -g @prefix_highlight_output_prefix "#[fg=colour4]#[bg=colour235]#[bg=colour4]#[fg=colour235]"
|
||||||
|
set -g @prefix_highlight_output_suffix ""
|
||||||
|
set -g @prefix_highlight_prefix_prompt " "
|
||||||
|
|
||||||
|
# No delay between hitting <ESC>
|
||||||
|
set-option -s escape-time 0
|
||||||
|
|
||||||
|
# Mouse support
|
||||||
|
set-option -g mouse on
|
||||||
|
|
||||||
|
# Start with 1 instead of 0
|
||||||
|
set -g base-index 1
|
||||||
|
set -g pane-base-index 1
|
||||||
|
|
||||||
|
# Panes
|
||||||
|
bind | split-window -h -c "#{pane_current_path}"
|
||||||
|
bind - split-window -v -c "#{pane_current_path}"
|
||||||
|
unbind '"'
|
||||||
|
unbind %
|
||||||
|
|
||||||
|
bind -n M-Left select-pane -L
|
||||||
|
bind -n M-Right select-pane -R
|
||||||
|
bind -n M-Up select-pane -U
|
||||||
|
bind -n M-Down select-pane -D
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
bind c new-window -c "#{pane_current_path}"
|
||||||
|
|
||||||
|
bind -n M-S-Right select-window -n
|
||||||
|
bind -n M-S-Left select-window -p
|
||||||
|
|
||||||
|
# set-option -g allow-rename off # Don't autorename windows
|
||||||
|
set -g renumber-windows on
|
||||||
|
|
||||||
|
# Show menu of URLs to open from the visible pane - needs `urlview'
|
||||||
|
bind u capture-pane \;\
|
||||||
|
save-buffer /tmp/tmux-buffer \;\
|
||||||
|
split-window -l 10 "urlscan /tmp/tmux-buffer"
|
||||||
|
|
||||||
|
# Allow programs with their own scrollback to scroll properly
|
||||||
|
bind-key -n WheelUpPane \
|
||||||
|
if-shell -Ft= "#{?pane_active,0,1}" "select-pane -t=" \; \
|
||||||
|
if-shell -Ft= "#{pane_in_mode}" \
|
||||||
|
"send-keys -M ; send-keys -M ; send-keys -M" \
|
||||||
|
"if-shell -Ft= \"#{mouse_any_flag}\" \
|
||||||
|
\"send-keys -M\" \
|
||||||
|
\"if-shell -Ft= '#{alternate_on}' \
|
||||||
|
'send-keys Up Up Up' \
|
||||||
|
'copy-mode -e'\""
|
||||||
|
|
||||||
|
bind-key -n WheelDownPane \
|
||||||
|
if-shell -Ft= "#{?pane_active,0,1}" "select-pane -t=" \; \
|
||||||
|
if-shell -Ft= "#{pane_in_mode}" \
|
||||||
|
"send-keys -M ; send-keys -M ; send-keys -M" \
|
||||||
|
"if-shell -Ft= \"#{mouse_any_flag}\" \
|
||||||
|
\"send-keys -M\" \
|
||||||
|
\"if-shell -Ft= '#{alternate_on}' \
|
||||||
|
'send-keys Down Down Down'\""
|
||||||
|
|
||||||
|
# source `.tmux.conf` file - as suggested in `man tmux`
|
||||||
|
bind-key R run-shell ' \
|
||||||
|
tmux source-file $XDG_CONFIG_HOME/tmux/tmux.conf > /dev/null; \
|
||||||
|
tmux display-message "sourced tmux.conf"'
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"extensionsGallery": {
|
||||||
|
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
|
||||||
|
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
|
||||||
|
"itemUrl": "https://marketplace.visualstudio.com/items",
|
||||||
|
"controlUrl": "",
|
||||||
|
"recommendationsUrl": ""
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
# If you make changes to this, it's probably a good idea to log out.
|
||||||
|
|
||||||
|
[ -f $HOME/.nix-profile/etc/profile.d/nix.sh ] && source \
|
||||||
|
$HOME/.nix-profile/etc/profile.d/nix.sh
|
||||||
|
|
||||||
|
pathadd_head() {
|
||||||
|
if [ -d "$1" ] && ! echo "$PATH" | grep -q "$1" >/dev/null; then
|
||||||
|
PATH="$1${PATH:+":$PATH"}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pathadd_tail() {
|
||||||
|
if [ -d "$1" ] && ! echo "$PATH" | grep -q "$1" >/dev/null; then
|
||||||
|
PATH="${PATH:+"$PATH:"}$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
export EDITOR=nvim
|
||||||
|
#export PAGER=bat
|
||||||
|
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
||||||
|
|
||||||
|
pathadd_tail '/envs/bin'
|
||||||
|
pathadd_head "$HOME/.local/bin"
|
||||||
|
pathadd_head '/tmp/bin'
|
||||||
|
|
||||||
|
# Preferences
|
||||||
|
export CALIBRE_USE_SYSTEM_THEME=1
|
||||||
|
|
||||||
|
export PATH
|
|
@ -0,0 +1,9 @@
|
||||||
|
# `.zshenv' is sourced on all invocations of the shell, unless the -f
|
||||||
|
# option is set. It should contain commands to set the command search
|
||||||
|
# path, plus other important environment variables.
|
||||||
|
|
||||||
|
# `.zshenv' should not contain commands that produce output or assume
|
||||||
|
# the shell is attached to a tty.
|
||||||
|
|
||||||
|
# These functions add a directory to $PATH if it exists and it isn't already
|
||||||
|
# there.
|
|
@ -0,0 +1,88 @@
|
||||||
|
# `.zshrc' is sourced in interactive shells. It should contain
|
||||||
|
# commands to set up aliases, functions, options, key bindings, etc.
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
autoload -U colors && colors
|
||||||
|
autoload -Uz promptinit && promptinit
|
||||||
|
autoload -U compinit && compinit
|
||||||
|
|
||||||
|
# Init plugin handling
|
||||||
|
[ -f $HOME/.local/share/miniplug.zsh ] && curl \
|
||||||
|
-sL --create-dirs \
|
||||||
|
https://git.sr.ht/~yerinalexey/miniplug/blob/master/miniplug.zsh \
|
||||||
|
-o $HOME/.local/share/miniplug.zsh
|
||||||
|
source "$HOME/.local/share/miniplug.zsh"
|
||||||
|
|
||||||
|
# Use emacs keybindings even if our EDITOR is set to vi
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
bindkey "^[[1;5C" forward-word
|
||||||
|
bindkey "^[[1;5D" backward-word
|
||||||
|
bindkey -s '^L' '^Uclear^M' # clear using alias
|
||||||
|
|
||||||
|
autoload edit-command-line; zle -N edit-command-line
|
||||||
|
bindkey '^k' edit-command-line
|
||||||
|
|
||||||
|
# History
|
||||||
|
HISTORY_IGNORE="(ls|cd|pwd|exit|sudo reboot|history|cd -|cd ..)"
|
||||||
|
HISTFILE="$HOME/.zsh_history"
|
||||||
|
HISTSIZE=99999
|
||||||
|
SAVEHIST=90000
|
||||||
|
setopt extended_history # record timestamp of command in HISTFILE
|
||||||
|
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
|
||||||
|
setopt hist_ignore_dups # Don't add duplicate entries
|
||||||
|
setopt hist_ignore_space # ignore commands that start with space
|
||||||
|
setopt hist_verify # show command with history expansion to user before running it
|
||||||
|
setopt inc_append_history # add commands to HISTFILE in order of execution
|
||||||
|
setopt share_history # share command history data
|
||||||
|
setopt hist_find_no_dups # don't display duplicates in reverse search
|
||||||
|
setopt hist_reduce_blanks # remove superfluous blanks
|
||||||
|
|
||||||
|
setopt interactivecomments # Comments in the interactive shell
|
||||||
|
setopt auto_continue # Send CONT signal automatically when disowning jobs
|
||||||
|
# pushd
|
||||||
|
setopt pushd_ignore_dups
|
||||||
|
export DIRSTACKSIZE=20
|
||||||
|
setopt auto_pushd
|
||||||
|
|
||||||
|
# Load aliases
|
||||||
|
source "$HOME/.config/shell_common/aliases.sh"
|
||||||
|
|
||||||
|
# zsh-specific aliases
|
||||||
|
# clear zsh history: Adapted from Novimatrem: https://gitlab.com/Novimatrem/clear-bash-history
|
||||||
|
alias czh="echo 'Fully clearing history, then exiting...' && cat /dev/null > $XDG_CACHE_HOME/zshhistory && history -p && exit"
|
||||||
|
|
||||||
|
# Completion
|
||||||
|
_comp_options+=(globdots) # include hidden files
|
||||||
|
|
||||||
|
# reload the zsh session. From OMZ:plugins/zsh_reload
|
||||||
|
zreload() {
|
||||||
|
local cache="$ZSH_CACHE_DIR"
|
||||||
|
autoload -U compinit zrecompile
|
||||||
|
compinit -i -d "$cache/zcomp-$HOST"
|
||||||
|
|
||||||
|
for f in ${ZDOTDIR:-~}/.zshrc "$cache/zcomp-$HOST"; do
|
||||||
|
zrecompile -p $f && command rm -f $f.zwc.old
|
||||||
|
done
|
||||||
|
|
||||||
|
# Use $SHELL if available; remove leading dash if login shell
|
||||||
|
[[ -n "$SHELL" ]] && exec ${SHELL#-} || exec zsh
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLUGINS!
|
||||||
|
# `miniplug update`
|
||||||
|
|
||||||
|
miniplug plugin 'zsh-users/zsh-syntax-highlighting'
|
||||||
|
miniplug plugin 'hlissner/zsh-autopair'
|
||||||
|
|
||||||
|
miniplug theme 'tjquillan/pastel'
|
||||||
|
|
||||||
|
miniplug load
|
||||||
|
|
||||||
|
# auto cd must be set later
|
||||||
|
setopt AUTO_CD
|
||||||
|
|
||||||
|
# Hooks
|
||||||
|
eval "$(direnv hook zsh)"
|
Loading…
Reference in New Issue