Inital commit
This commit is contained in:
152
.config/dunst/dunstrc
Normal file
152
.config/dunst/dunstrc
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
[global]
|
||||||
|
monitor = 0
|
||||||
|
follow = keyboard
|
||||||
|
geometry = "350x5-0+24"
|
||||||
|
indicate_hidden = yes
|
||||||
|
shrink = yes
|
||||||
|
transparency = 20
|
||||||
|
notification_height = 0
|
||||||
|
padding = 0
|
||||||
|
horizontal_padding = 8
|
||||||
|
frame_width = 3
|
||||||
|
frame_color = "#282828"
|
||||||
|
|
||||||
|
# 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 = frame
|
||||||
|
|
||||||
|
# Sort messages by urgency.
|
||||||
|
sort = yes
|
||||||
|
|
||||||
|
idle_threshold = 120
|
||||||
|
font = Monospace 14
|
||||||
|
line_height = 0
|
||||||
|
markup = full
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# %n progress value if set without any extra characters
|
||||||
|
# %% Literal %
|
||||||
|
# Markup is allowed
|
||||||
|
format = "<b>%s</b>\n%b"
|
||||||
|
|
||||||
|
alignment = left
|
||||||
|
show_age_threshold = 60
|
||||||
|
word_wrap = yes
|
||||||
|
ellipsize = middle
|
||||||
|
ignore_newline = no
|
||||||
|
stack_duplicates = true
|
||||||
|
hide_duplicate_count = true
|
||||||
|
show_indicators = yes
|
||||||
|
icon_position = left
|
||||||
|
max_icon_size = 40
|
||||||
|
#icon_path = /user/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
|
||||||
|
sticky_history = yes
|
||||||
|
history_length = 20
|
||||||
|
dmenu = /usr/bin/dmenu -p dunst:
|
||||||
|
browser = /usr/bin/firefox -new-tab
|
||||||
|
|
||||||
|
# Always run rule-defined scripts, even if the notification is suppressed
|
||||||
|
always_run_script = true
|
||||||
|
|
||||||
|
title = Dunst
|
||||||
|
class = Dunst
|
||||||
|
startup_notification = false
|
||||||
|
force_xinerama = false
|
||||||
|
|
||||||
|
[experimental]
|
||||||
|
per_monitor_dpi = false
|
||||||
|
|
||||||
|
[shortcuts]
|
||||||
|
close = ctrl+space
|
||||||
|
close_all = ctrl+shift+space
|
||||||
|
history = ctrl+grave
|
||||||
|
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.
|
||||||
|
background = "#282828"
|
||||||
|
foreground = "#928374"
|
||||||
|
timeout = 5
|
||||||
|
# Icon for notifications with low urgency, uncomment to enable
|
||||||
|
#icon = /path/to/icon
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#458588"
|
||||||
|
foreground = "#ebdbb2"
|
||||||
|
timeout = 5
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#cc2421"
|
||||||
|
foreground = "#ebdbb2"
|
||||||
|
frame_color = "#fabd2f"
|
||||||
|
timeout = 0
|
||||||
|
|
||||||
|
# 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 = ""
|
||||||
|
|
||||||
|
#[history-ignore]
|
||||||
|
# # This notification will not be saved in history
|
||||||
|
# summary = "foobar"
|
||||||
|
# history_ignore = yes
|
||||||
|
|
||||||
|
#[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
|
||||||
35
.config/fontconfig/fonts.conf
Normal file
35
.config/fontconfig/fonts.conf
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version='1.0'?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||||
|
<fontconfig>
|
||||||
|
<alias>
|
||||||
|
<family>serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Linux Libertine</family>
|
||||||
|
<family>Joy Pixels</family>
|
||||||
|
<family>Noto Color Emoji</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>sans-serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Linux Biolinum</family>
|
||||||
|
<family>Joy Pixels</family>
|
||||||
|
<family>Noto Color Emoji</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>sans</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Linux Biolinum</family>
|
||||||
|
<family>Joy Pixels</family>
|
||||||
|
<family>Noto Color Emoji</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>monospace</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Noto Sans Mono</family>
|
||||||
|
<family>Liberation Mono</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
</fontconfig>
|
||||||
19
.config/gtk-2.0/gtkrc-2.0
Normal file
19
.config/gtk-2.0/gtkrc-2.0
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||||
|
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||||
|
|
||||||
|
include "~/.gtkrc-2.0.mine"
|
||||||
|
gtk-theme-name="Arc-Gruvbox"
|
||||||
|
gtk-icon-theme-name="Adwaita"
|
||||||
|
gtk-font-name="Sans 10"
|
||||||
|
gtk-cursor-theme-name="Adwaita"
|
||||||
|
gtk-cursor-theme-size=0
|
||||||
|
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||||
|
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||||
|
gtk-button-images=0
|
||||||
|
gtk-menu-images=1
|
||||||
|
gtk-enable-event-sounds=1
|
||||||
|
gtk-enable-input-feedback-sounds=1
|
||||||
|
gtk-xft-antialias=1
|
||||||
|
gtk-xft-hinting=1
|
||||||
|
gtk-xft-hintstyle="hintfull"
|
||||||
|
gtk-xft-rgba="rgb"
|
||||||
16
.config/gtk-3.0/settings.ini
Normal file
16
.config/gtk-3.0/settings.ini
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[Settings]
|
||||||
|
gtk-theme-name=Arc-Gruvbox
|
||||||
|
gtk-icon-theme-name=Adwaita
|
||||||
|
gtk-font-name=Sans 10
|
||||||
|
gtk-cursor-theme-size=0
|
||||||
|
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||||
|
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||||
|
gtk-button-images=0
|
||||||
|
gtk-menu-images=1
|
||||||
|
gtk-enable-event-sounds=1
|
||||||
|
gtk-enable-input-feedback-sounds=1
|
||||||
|
gtk-xft-antialias=1
|
||||||
|
gtk-xft-hinting=1
|
||||||
|
gtk-xft-hintstyle=hintfull
|
||||||
|
gtk-xft-rgba=rgb
|
||||||
|
gtk-cursor-theme-name=Adwaita
|
||||||
104
.config/lf/lfrc
Normal file
104
.config/lf/lfrc
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
# Basic vars
|
||||||
|
set shell bash
|
||||||
|
set shellopts '-eu'
|
||||||
|
set ifs "\n"
|
||||||
|
set scrolloff 10
|
||||||
|
set icons
|
||||||
|
set period 1
|
||||||
|
set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
|
||||||
|
|
||||||
|
# Vars that depend on environmental variables
|
||||||
|
$lf -remote "send $id set previewer ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope"
|
||||||
|
|
||||||
|
# cmds/functions
|
||||||
|
cmd open ${{
|
||||||
|
case $(file --mime-type $f -b) in
|
||||||
|
image/vnd.djvu|application/pdf|application/octet-stream) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||||
|
text/*) $EDITOR $fx;;
|
||||||
|
image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;;
|
||||||
|
image/svg+xml) display -- $f ;;
|
||||||
|
image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" | sxiv -aio 2>/dev/null | lf-select ;;
|
||||||
|
audio/*) mpv --audio-display=no $f ;;
|
||||||
|
video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
|
||||||
|
application/pdf|application/vnd*|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||||
|
*) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;;
|
||||||
|
esac
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')"
|
||||||
|
|
||||||
|
cmd extract ${{
|
||||||
|
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||||
|
set -f
|
||||||
|
printf "%s\n\t" "$fx"
|
||||||
|
printf "extract?[y/N]"
|
||||||
|
read ans
|
||||||
|
[ $ans = "y" ] && ex $fx
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd delete ${{
|
||||||
|
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||||
|
set -f
|
||||||
|
printf "%s\n\t" "$fx"
|
||||||
|
printf "delete?[y/N]"
|
||||||
|
read ans
|
||||||
|
[ $ans = "y" ] && rm -rf -- $fx
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd moveto ${{
|
||||||
|
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||||
|
set -f
|
||||||
|
clear; echo "Move to where?"
|
||||||
|
dest="$(cut -d' ' -f2- ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|' )" &&
|
||||||
|
for x in $fx; do
|
||||||
|
eval mv -iv \"$x\" \"$dest\"
|
||||||
|
done &&
|
||||||
|
notify-send "🚚 File(s) moved." "File(s) moved to $dest."
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd copyto ${{
|
||||||
|
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||||
|
set -f
|
||||||
|
clear; echo "Copy to where?"
|
||||||
|
dest="$(cut -d' ' -f2- ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|' )" &&
|
||||||
|
for x in $fx; do
|
||||||
|
eval cp -ivr \"$x\" \"$dest\"
|
||||||
|
done &&
|
||||||
|
notify-send "📋 File(s) copied." "File(s) copies to $dest."
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd setbg "$1"
|
||||||
|
cmd bulkrename $vidir
|
||||||
|
|
||||||
|
# Bindings
|
||||||
|
map <c-f> $lf -remote "send $id select '$(fzf)'"
|
||||||
|
map J $lf -remote "send $id cd $(cut -d' ' -f2 ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)"
|
||||||
|
map gh
|
||||||
|
map g top
|
||||||
|
map D delete
|
||||||
|
map E extract
|
||||||
|
map C copyto
|
||||||
|
map M moveto
|
||||||
|
map <c-n> push :mkdir<space>
|
||||||
|
map <c-r> reload
|
||||||
|
map <c-s> set hidden!
|
||||||
|
map <enter> shell
|
||||||
|
map x $$f
|
||||||
|
map X !$f
|
||||||
|
map o &mimeopen $f
|
||||||
|
map O $mimeopen --ask $f
|
||||||
|
|
||||||
|
map A rename # at the very end
|
||||||
|
map c push A<c-u> # new rename
|
||||||
|
map I push A<c-a> # at the very beginning
|
||||||
|
map i push A<a-b><a-b><a-f> # before extension
|
||||||
|
map a push A<a-b> # after extension
|
||||||
|
map B bulkrename
|
||||||
|
map b $setbg $f
|
||||||
|
|
||||||
|
map <c-e> down
|
||||||
|
map <c-y> up
|
||||||
|
map V push :!nvim<space>
|
||||||
|
|
||||||
|
# Source Bookmarks
|
||||||
|
source "~/.config/lf/shortcutrc"
|
||||||
58
.config/lf/scope
Normal file
58
.config/lf/scope
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -C -f -u
|
||||||
|
#IFS=$'\n'
|
||||||
|
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
|
||||||
|
|
||||||
|
# ANSI color codes are supported.
|
||||||
|
# STDIN is disabled, so interactive scripts won't work properly
|
||||||
|
|
||||||
|
# This script is considered a configuration file and must be updated manually.
|
||||||
|
|
||||||
|
# Meanings of exit codes:
|
||||||
|
# code | meaning | action of ranger
|
||||||
|
# -----+------------+-------------------------------------------
|
||||||
|
# 0 | success | Display stdout as preview
|
||||||
|
# 1 | no preview | Display no preview at all
|
||||||
|
# 2 | plain text | Display the plain content of the file
|
||||||
|
|
||||||
|
# Script arguments
|
||||||
|
FILE_PATH="${1}" # Full path of the highlighted file
|
||||||
|
HEIGHT="${2}"
|
||||||
|
|
||||||
|
#FILE_EXTENSION="${FILE_PATH##*.}"
|
||||||
|
#FILE_EXTENSION_LOWER=$(echo ${FILE_EXTENSION} | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||||
|
HIGHLIGHT_TABWIDTH=8
|
||||||
|
HIGHLIGHT_STYLE='pablo'
|
||||||
|
|
||||||
|
|
||||||
|
handle_mime() {
|
||||||
|
local mimetype="${1}"
|
||||||
|
case "${mimetype}" in
|
||||||
|
text/html) w3m -dump "${FILE_PATH}" ;;
|
||||||
|
text/troff) man ./ "${FILE_PATH}" | col -b ;;
|
||||||
|
text/* | */xml)
|
||||||
|
if [ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]; then
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
if [ "$( tput colors )" -ge 256 ]; then
|
||||||
|
local highlight_format='xterm256'
|
||||||
|
else
|
||||||
|
local highlight_format='ansi'
|
||||||
|
fi
|
||||||
|
highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \
|
||||||
|
--style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" ;;
|
||||||
|
application/zip) atool --list -- "${FILE_PATH}" ;;
|
||||||
|
image/*) chafa --fill=block --symbols=block -c 256 -s 80x"${HEIGHT}" "${FILE_PATH}" || exit 1;;
|
||||||
|
video/* | audio/*|application/octet-stream) mediainfo "${FILE_PATH}" || exit 1;;
|
||||||
|
*/pdf) pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - ;;
|
||||||
|
*opendocument*) odt2txt "${FILE_PATH}" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
||||||
|
handle_mime "${MIMETYPE}"
|
||||||
|
exit 1
|
||||||
17
.config/mimeapps.list
Normal file
17
.config/mimeapps.list
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[Default Applications]
|
||||||
|
|
||||||
|
# xdg-open will use these settings to determine how to open filetypes.
|
||||||
|
# These .desktop entries can also be seen and changed in ~/.local/share/applications/
|
||||||
|
|
||||||
|
text/x-shellscript=text.desktop;
|
||||||
|
x-scheme-handler/mailto=mail.desktop;
|
||||||
|
text/plain=text.desktop;
|
||||||
|
application/postscript=pdf.desktop;
|
||||||
|
application/pdf=pdf.desktop;
|
||||||
|
image/png=img.desktop;
|
||||||
|
image/jpeg=img.desktop;
|
||||||
|
image/gif=img.desktop;
|
||||||
|
application/rss+xml=rss.desktop
|
||||||
|
video/x-matroska=video.desktop
|
||||||
|
x-scheme-handler/lbry=lbry.desktop
|
||||||
|
inode/directory=file.desktop
|
||||||
21
.config/mpd/mpd.conf
Normal file
21
.config/mpd/mpd.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
music_directory "~/Tower/Music"
|
||||||
|
playlist_directory "~/.config/mpd/playlists"
|
||||||
|
|
||||||
|
auto_update "yes"
|
||||||
|
bind_to_address "127.0.0.1"
|
||||||
|
restore_paused "yes"
|
||||||
|
max_output_buffer_size "16384"
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "pulse"
|
||||||
|
name "pulse"
|
||||||
|
#type "alsa"
|
||||||
|
#name "ALSA"
|
||||||
|
}
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "fifo"
|
||||||
|
name "Visualizer feed"
|
||||||
|
path "/tmp/mpd.fifo"
|
||||||
|
format "44100:16:2"
|
||||||
|
}
|
||||||
5
.config/mpv/input.conf
Normal file
5
.config/mpv/input.conf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
l seek 5
|
||||||
|
h seek -5
|
||||||
|
j seek -60
|
||||||
|
k seek 60
|
||||||
|
S cycle sub
|
||||||
3
.config/mpv/scripts/modules.lua
Normal file
3
.config/mpv/scripts/modules.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
local mpv_scripts_dir_path = os.getenv("HOME") .. "/.config/mpv/scripts/"
|
||||||
|
function load(relative_path) dofile(mpv_scripts_dir_path .. relative_path) end
|
||||||
|
load("mpvSockets/mpvSockets.lua")
|
||||||
480
.config/ncmpcpp/bindings
Normal file
480
.config/ncmpcpp/bindings
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
##############################################################
|
||||||
|
## This is the example bindings file. Copy it to ##
|
||||||
|
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
|
||||||
|
## and set up your preferences ##
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
#def_key "mouse"
|
||||||
|
# mouse_event
|
||||||
|
#
|
||||||
|
#def_key "up"
|
||||||
|
# scroll_up
|
||||||
|
#
|
||||||
|
#def_key "shift-up"
|
||||||
|
# select_item
|
||||||
|
# scroll_up
|
||||||
|
#
|
||||||
|
#def_key "down"
|
||||||
|
# scroll_down
|
||||||
|
#
|
||||||
|
#def_key "shift-down"
|
||||||
|
# select_item
|
||||||
|
# scroll_down
|
||||||
|
#
|
||||||
|
#def_key "["
|
||||||
|
# scroll_up_album
|
||||||
|
#
|
||||||
|
#def_key "]"
|
||||||
|
# scroll_down_album
|
||||||
|
#
|
||||||
|
#def_key "{"
|
||||||
|
# scroll_up_artist
|
||||||
|
#
|
||||||
|
#def_key "}"
|
||||||
|
# scroll_down_artist
|
||||||
|
#
|
||||||
|
#def_key "page_up"
|
||||||
|
# page_up
|
||||||
|
#
|
||||||
|
#def_key "page_down"
|
||||||
|
# page_down
|
||||||
|
#
|
||||||
|
#def_key "home"
|
||||||
|
# move_home
|
||||||
|
#
|
||||||
|
#def_key "end"
|
||||||
|
# move_end
|
||||||
|
#
|
||||||
|
#def_key "insert"
|
||||||
|
# select_item
|
||||||
|
#
|
||||||
|
#def_key "enter"
|
||||||
|
# enter_directory
|
||||||
|
#
|
||||||
|
#def_key "enter"
|
||||||
|
# toggle_output
|
||||||
|
#
|
||||||
|
#def_key "enter"
|
||||||
|
# run_action
|
||||||
|
#
|
||||||
|
#def_key "enter"
|
||||||
|
# play_item
|
||||||
|
#
|
||||||
|
#def_key "space"
|
||||||
|
# add_item_to_playlist
|
||||||
|
#
|
||||||
|
#def_key "space"
|
||||||
|
# toggle_lyrics_update_on_song_change
|
||||||
|
#
|
||||||
|
#def_key "space"
|
||||||
|
# toggle_visualization_type
|
||||||
|
#
|
||||||
|
#def_key "delete"
|
||||||
|
# delete_playlist_items
|
||||||
|
#
|
||||||
|
#def_key "delete"
|
||||||
|
# delete_browser_items
|
||||||
|
#
|
||||||
|
#def_key "delete"
|
||||||
|
# delete_stored_playlist
|
||||||
|
#
|
||||||
|
#def_key "right"
|
||||||
|
# next_column
|
||||||
|
#
|
||||||
|
#def_key "right"
|
||||||
|
# slave_screen
|
||||||
|
#
|
||||||
|
#def_key "right"
|
||||||
|
# volume_up
|
||||||
|
#
|
||||||
|
#def_key "+"
|
||||||
|
# volume_up
|
||||||
|
#
|
||||||
|
#def_key "left"
|
||||||
|
# previous_column
|
||||||
|
#
|
||||||
|
#def_key "left"
|
||||||
|
# master_screen
|
||||||
|
#
|
||||||
|
#def_key "left"
|
||||||
|
# volume_down
|
||||||
|
#
|
||||||
|
#def_key "-"
|
||||||
|
# volume_down
|
||||||
|
#
|
||||||
|
#def_key ":"
|
||||||
|
# execute_command
|
||||||
|
#
|
||||||
|
#def_key "tab"
|
||||||
|
# next_screen
|
||||||
|
#
|
||||||
|
#def_key "shift-tab"
|
||||||
|
# previous_screen
|
||||||
|
#
|
||||||
|
#def_key "f1"
|
||||||
|
# show_help
|
||||||
|
#
|
||||||
|
#def_key "1"
|
||||||
|
# show_playlist
|
||||||
|
#
|
||||||
|
#def_key "2"
|
||||||
|
# show_browser
|
||||||
|
#
|
||||||
|
#def_key "2"
|
||||||
|
# change_browse_mode
|
||||||
|
#
|
||||||
|
#def_key "3"
|
||||||
|
# show_search_engine
|
||||||
|
#
|
||||||
|
#def_key "3"
|
||||||
|
# reset_search_engine
|
||||||
|
#
|
||||||
|
#def_key "4"
|
||||||
|
# show_media_library
|
||||||
|
#
|
||||||
|
#def_key "4"
|
||||||
|
# toggle_media_library_columns_mode
|
||||||
|
#
|
||||||
|
#def_key "5"
|
||||||
|
# show_playlist_editor
|
||||||
|
#
|
||||||
|
#def_key "6"
|
||||||
|
# show_tag_editor
|
||||||
|
#
|
||||||
|
#def_key "7"
|
||||||
|
# show_outputs
|
||||||
|
#
|
||||||
|
#def_key "8"
|
||||||
|
# show_visualizer
|
||||||
|
#
|
||||||
|
#def_key "="
|
||||||
|
# show_clock
|
||||||
|
#
|
||||||
|
#def_key "@"
|
||||||
|
# show_server_info
|
||||||
|
#
|
||||||
|
#def_key "s"
|
||||||
|
# stop
|
||||||
|
#
|
||||||
|
#def_key "p"
|
||||||
|
# pause
|
||||||
|
#
|
||||||
|
#def_key ">"
|
||||||
|
# next
|
||||||
|
#
|
||||||
|
#def_key "<"
|
||||||
|
# previous
|
||||||
|
#
|
||||||
|
#def_key "ctrl-h"
|
||||||
|
# jump_to_parent_directory
|
||||||
|
#
|
||||||
|
#def_key "ctrl-h"
|
||||||
|
# replay_song
|
||||||
|
#
|
||||||
|
#def_key "backspace"
|
||||||
|
# jump_to_parent_directory
|
||||||
|
#
|
||||||
|
#def_key "backspace"
|
||||||
|
# replay_song
|
||||||
|
#
|
||||||
|
#def_key "f"
|
||||||
|
# seek_forward
|
||||||
|
#
|
||||||
|
#def_key "b"
|
||||||
|
# seek_backward
|
||||||
|
#
|
||||||
|
#def_key "r"
|
||||||
|
# toggle_repeat
|
||||||
|
#
|
||||||
|
#def_key "z"
|
||||||
|
# toggle_random
|
||||||
|
#
|
||||||
|
#def_key "y"
|
||||||
|
# save_tag_changes
|
||||||
|
#
|
||||||
|
#def_key "y"
|
||||||
|
# start_searching
|
||||||
|
#
|
||||||
|
#def_key "y"
|
||||||
|
# toggle_single
|
||||||
|
#
|
||||||
|
#def_key "R"
|
||||||
|
# toggle_consume
|
||||||
|
#
|
||||||
|
#def_key "Y"
|
||||||
|
# toggle_replay_gain_mode
|
||||||
|
#
|
||||||
|
#def_key "T"
|
||||||
|
# toggle_add_mode
|
||||||
|
#
|
||||||
|
#def_key "|"
|
||||||
|
# toggle_mouse
|
||||||
|
#
|
||||||
|
#def_key "#"
|
||||||
|
# toggle_bitrate_visibility
|
||||||
|
#
|
||||||
|
#def_key "Z"
|
||||||
|
# shuffle
|
||||||
|
#
|
||||||
|
#def_key "x"
|
||||||
|
# toggle_crossfade
|
||||||
|
#
|
||||||
|
#def_key "X"
|
||||||
|
# set_crossfade
|
||||||
|
#
|
||||||
|
#def_key "u"
|
||||||
|
# update_database
|
||||||
|
#
|
||||||
|
#def_key "ctrl-s"
|
||||||
|
# sort_playlist
|
||||||
|
#
|
||||||
|
#def_key "ctrl-s"
|
||||||
|
# toggle_browser_sort_mode
|
||||||
|
#
|
||||||
|
#def_key "ctrl-s"
|
||||||
|
# toggle_media_library_sort_mode
|
||||||
|
#
|
||||||
|
#def_key "ctrl-r"
|
||||||
|
# reverse_playlist
|
||||||
|
#
|
||||||
|
#def_key "ctrl-f"
|
||||||
|
# apply_filter
|
||||||
|
#
|
||||||
|
#def_key "ctrl-_"
|
||||||
|
# select_found_items
|
||||||
|
#
|
||||||
|
#def_key "/"
|
||||||
|
# find
|
||||||
|
#
|
||||||
|
#def_key "/"
|
||||||
|
# find_item_forward
|
||||||
|
#
|
||||||
|
#def_key "?"
|
||||||
|
# find
|
||||||
|
#
|
||||||
|
#def_key "?"
|
||||||
|
# find_item_backward
|
||||||
|
#
|
||||||
|
#def_key "."
|
||||||
|
# next_found_item
|
||||||
|
#
|
||||||
|
#def_key ","
|
||||||
|
# previous_found_item
|
||||||
|
#
|
||||||
|
#def_key "w"
|
||||||
|
# toggle_find_mode
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_song
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_library_tag
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_library_album
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_directory_name
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_playlist_name
|
||||||
|
#
|
||||||
|
#def_key "e"
|
||||||
|
# edit_lyrics
|
||||||
|
#
|
||||||
|
#def_key "i"
|
||||||
|
# show_song_info
|
||||||
|
#
|
||||||
|
#def_key "I"
|
||||||
|
# show_artist_info
|
||||||
|
#
|
||||||
|
#def_key "g"
|
||||||
|
# jump_to_position_in_song
|
||||||
|
#
|
||||||
|
#def_key "l"
|
||||||
|
# show_lyrics
|
||||||
|
#
|
||||||
|
#def_key "ctrl-v"
|
||||||
|
# select_range
|
||||||
|
#
|
||||||
|
#def_key "v"
|
||||||
|
# reverse_selection
|
||||||
|
#
|
||||||
|
#def_key "V"
|
||||||
|
# remove_selection
|
||||||
|
#
|
||||||
|
#def_key "B"
|
||||||
|
# select_album
|
||||||
|
#
|
||||||
|
#def_key "a"
|
||||||
|
# add_selected_items
|
||||||
|
#
|
||||||
|
#def_key "c"
|
||||||
|
# clear_playlist
|
||||||
|
#
|
||||||
|
#def_key "c"
|
||||||
|
# clear_main_playlist
|
||||||
|
#
|
||||||
|
#def_key "C"
|
||||||
|
# crop_playlist
|
||||||
|
#
|
||||||
|
#def_key "C"
|
||||||
|
# crop_main_playlist
|
||||||
|
#
|
||||||
|
#def_key "m"
|
||||||
|
# move_sort_order_up
|
||||||
|
#
|
||||||
|
#def_key "m"
|
||||||
|
# move_selected_items_up
|
||||||
|
#
|
||||||
|
#def_key "n"
|
||||||
|
# move_sort_order_down
|
||||||
|
#
|
||||||
|
#def_key "n"
|
||||||
|
# move_selected_items_down
|
||||||
|
#
|
||||||
|
#def_key "M"
|
||||||
|
# move_selected_items_to
|
||||||
|
#
|
||||||
|
#def_key "A"
|
||||||
|
# add
|
||||||
|
#
|
||||||
|
#def_key "S"
|
||||||
|
# save_playlist
|
||||||
|
#
|
||||||
|
#def_key "o"
|
||||||
|
# jump_to_playing_song
|
||||||
|
#
|
||||||
|
#def_key "G"
|
||||||
|
# jump_to_browser
|
||||||
|
#
|
||||||
|
#def_key "G"
|
||||||
|
# jump_to_playlist_editor
|
||||||
|
#
|
||||||
|
#def_key "~"
|
||||||
|
# jump_to_media_library
|
||||||
|
#
|
||||||
|
#def_key "E"
|
||||||
|
# jump_to_tag_editor
|
||||||
|
#
|
||||||
|
#def_key "U"
|
||||||
|
# toggle_playing_song_centering
|
||||||
|
#
|
||||||
|
#def_key "P"
|
||||||
|
# toggle_display_mode
|
||||||
|
#
|
||||||
|
#def_key "\\"
|
||||||
|
# toggle_interface
|
||||||
|
#
|
||||||
|
#def_key "!"
|
||||||
|
# toggle_separators_between_albums
|
||||||
|
#
|
||||||
|
#def_key "L"
|
||||||
|
# toggle_lyrics_fetcher
|
||||||
|
#
|
||||||
|
#def_key "F"
|
||||||
|
# fetch_lyrics_in_background
|
||||||
|
#
|
||||||
|
#def_key "alt-l"
|
||||||
|
# toggle_fetching_lyrics_in_background
|
||||||
|
#
|
||||||
|
#def_key "ctrl-l"
|
||||||
|
# toggle_screen_lock
|
||||||
|
#
|
||||||
|
#def_key "`"
|
||||||
|
# toggle_library_tag_type
|
||||||
|
#
|
||||||
|
#def_key "`"
|
||||||
|
# refetch_lyrics
|
||||||
|
#
|
||||||
|
#def_key "`"
|
||||||
|
# add_random_items
|
||||||
|
#
|
||||||
|
#def_key "ctrl-p"
|
||||||
|
# set_selected_items_priority
|
||||||
|
#
|
||||||
|
#def_key "q"
|
||||||
|
# quit
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#def_key "f"
|
||||||
|
# find
|
||||||
|
#def_key "f"
|
||||||
|
# find_item_forward
|
||||||
|
|
||||||
|
def_key "+"
|
||||||
|
show_clock
|
||||||
|
def_key "="
|
||||||
|
volume_up
|
||||||
|
|
||||||
|
def_key "j"
|
||||||
|
scroll_down
|
||||||
|
def_key "k"
|
||||||
|
scroll_up
|
||||||
|
|
||||||
|
def_key "ctrl-u"
|
||||||
|
page_up
|
||||||
|
#push_characters "kkkkkkkkkkkkkkk"
|
||||||
|
def_key "ctrl-d"
|
||||||
|
page_down
|
||||||
|
#push_characters "jjjjjjjjjjjjjjj"
|
||||||
|
def_key "u"
|
||||||
|
page_up
|
||||||
|
#push_characters "kkkkkkkkkkkkkkk"
|
||||||
|
def_key "d"
|
||||||
|
page_down
|
||||||
|
#push_characters "jjjjjjjjjjjjjjj"
|
||||||
|
def_key "h"
|
||||||
|
previous_column
|
||||||
|
def_key "l"
|
||||||
|
next_column
|
||||||
|
|
||||||
|
def_key "."
|
||||||
|
show_lyrics
|
||||||
|
|
||||||
|
def_key "n"
|
||||||
|
next_found_item
|
||||||
|
def_key "N"
|
||||||
|
previous_found_item
|
||||||
|
|
||||||
|
# not used but bound
|
||||||
|
def_key "J"
|
||||||
|
move_sort_order_down
|
||||||
|
def_key "K"
|
||||||
|
move_sort_order_up
|
||||||
|
def_key "h"
|
||||||
|
jump_to_parent_directory
|
||||||
|
def_key "l"
|
||||||
|
enter_directory
|
||||||
|
def_key "l"
|
||||||
|
run_action
|
||||||
|
def_key "l"
|
||||||
|
play_item
|
||||||
|
def_key "m"
|
||||||
|
show_media_library
|
||||||
|
def_key "m"
|
||||||
|
toggle_media_library_columns_mode
|
||||||
|
def_key "t"
|
||||||
|
show_tag_editor
|
||||||
|
def_key "v"
|
||||||
|
show_visualizer
|
||||||
|
def_key "G"
|
||||||
|
move_end
|
||||||
|
def_key "g"
|
||||||
|
move_home
|
||||||
|
#jump_to_position_in_song
|
||||||
|
def_key "U"
|
||||||
|
update_database
|
||||||
|
def_key "s"
|
||||||
|
reset_search_engine
|
||||||
|
def_key "s"
|
||||||
|
show_search_engine
|
||||||
|
def_key "f"
|
||||||
|
show_browser
|
||||||
|
def_key "f"
|
||||||
|
change_browse_mode
|
||||||
|
def_key "x"
|
||||||
|
delete_playlist_items
|
||||||
|
def_key "P"
|
||||||
|
show_playlist
|
||||||
|
|
||||||
32
.config/ncmpcpp/config
Normal file
32
.config/ncmpcpp/config
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# vim: filetype=conf
|
||||||
|
|
||||||
|
ncmpcpp_directory = "~/.config/ncmpcpp"
|
||||||
|
lyrics_directory = "~/.local/share/lyrics"
|
||||||
|
mpd_music_dir = "~/Music"
|
||||||
|
message_delay_time = "1"
|
||||||
|
visualizer_type = "spectrum"
|
||||||
|
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||||
|
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
||||||
|
song_library_format = {%n - }{%t}|{%f}
|
||||||
|
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||||
|
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||||
|
current_item_prefix = $(cyan)$r$b
|
||||||
|
current_item_suffix = $/r$(end)$/b
|
||||||
|
current_item_inactive_column_prefix = $(magenta)$r
|
||||||
|
current_item_inactive_column_suffix = $/r$(end)
|
||||||
|
playlist_display_mode = columns
|
||||||
|
browser_display_mode = columns
|
||||||
|
progressbar_look = ->
|
||||||
|
media_library_primary_tag = album_artist
|
||||||
|
media_library_albums_split_by_date = no
|
||||||
|
startup_screen = "media_library"
|
||||||
|
display_volume_level = no
|
||||||
|
ignore_leading_the = yes
|
||||||
|
external_editor = nvim
|
||||||
|
use_console_editor = yes
|
||||||
|
empty_tag_color = magenta
|
||||||
|
main_window_color = white
|
||||||
|
progressbar_color = black:b
|
||||||
|
progressbar_elapsed_color = blue:b
|
||||||
|
statusbar_color = red
|
||||||
|
statusbar_time_color = cyan:b
|
||||||
55
.config/newsboat/config
Normal file
55
.config/newsboat/config
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#show-read-feeds no
|
||||||
|
auto-reload yes
|
||||||
|
|
||||||
|
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
||||||
|
|
||||||
|
bind-key j down
|
||||||
|
bind-key k up
|
||||||
|
bind-key j next articlelist
|
||||||
|
bind-key k prev articlelist
|
||||||
|
bind-key J next-feed articlelist
|
||||||
|
bind-key K prev-feed articlelist
|
||||||
|
bind-key G end
|
||||||
|
bind-key g home
|
||||||
|
bind-key d pagedown
|
||||||
|
bind-key u pageup
|
||||||
|
bind-key l open
|
||||||
|
bind-key h quit
|
||||||
|
bind-key a toggle-article-read
|
||||||
|
bind-key n next-unread
|
||||||
|
bind-key N prev-unread
|
||||||
|
bind-key D pb-download
|
||||||
|
bind-key U show-urls
|
||||||
|
bind-key x pb-delete
|
||||||
|
|
||||||
|
color listnormal cyan default
|
||||||
|
color listfocus black yellow standout bold
|
||||||
|
color listnormal_unread blue default
|
||||||
|
color listfocus_unread yellow default bold
|
||||||
|
color info red black bold
|
||||||
|
color article white default bold
|
||||||
|
|
||||||
|
browser linkhandler
|
||||||
|
macro , open-in-browser
|
||||||
|
macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro a set browser "tsp youtube-dl --add-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro C set browser "youtube-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro p set browser "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
|
||||||
|
macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; set browser linkhandler
|
||||||
|
|
||||||
|
highlight all "---.*---" yellow
|
||||||
|
highlight feedlist ".*(0/0))" black
|
||||||
|
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
|
||||||
|
highlight article "(^Link:.*|^Date:.*)" default default
|
||||||
|
highlight article "https?://[^ ]+" green default
|
||||||
|
highlight article "^(Title):.*$" blue default
|
||||||
|
highlight article "\\[[0-9][0-9]*\\]" magenta default bold
|
||||||
|
highlight article "\\[image\\ [0-9]+\\]" green default bold
|
||||||
|
highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
|
||||||
|
highlight article ":.*\\(link\\)$" cyan default
|
||||||
|
highlight article ":.*\\(image\\)$" blue default
|
||||||
|
highlight article ":.*\\(embedded flash\\)$" magenta default
|
||||||
0
.config/newsboat/urls
Normal file
0
.config/newsboat/urls
Normal file
4
.config/pulse/daemon.conf
Normal file
4
.config/pulse/daemon.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Never exit pulseaudio if idle. This is to deal with an issue of Chromium
|
||||||
|
# browsers not properly starting Pulseaudio by themselves. When the underlying
|
||||||
|
# issue is solved, this file/directory should be removed.
|
||||||
|
exit-idle-time = -1
|
||||||
96
.config/shell/aliasrc
Normal file
96
.config/shell/aliasrc
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Use neovim for vim if present
|
||||||
|
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
|
||||||
|
|
||||||
|
# Use $XINITRC variable if file exists.
|
||||||
|
[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
|
||||||
|
|
||||||
|
# sudo not required for some system commands
|
||||||
|
for x in mount umount sv pacman updatedb su ; do
|
||||||
|
alias $x="sudo $x"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Verbosity and settings that you pretty much just always are going to want.
|
||||||
|
alias \
|
||||||
|
cp="cp -iv" \
|
||||||
|
mv="mv -iv" \
|
||||||
|
rm="rm -vI" \
|
||||||
|
bc="bc -ql" \
|
||||||
|
mkd="mkdir -pv" \
|
||||||
|
yt="youtube-dl --add-metadata -i" \
|
||||||
|
yta="yt -x -f bestaudio/best" \
|
||||||
|
ffmpeg="ffmpeg -hide_banner" \
|
||||||
|
|
||||||
|
# Colorize commands when possible.
|
||||||
|
alias \
|
||||||
|
ls="ls -hN --color=auto --group-directories-first" \
|
||||||
|
grep="grep --color=auto" \
|
||||||
|
diff="diff --color=auto" \
|
||||||
|
ccat="highlight --out-format=ansi"
|
||||||
|
|
||||||
|
# Abbreviating long commands
|
||||||
|
alias \
|
||||||
|
ka="killall" \
|
||||||
|
YT="youtube-viewer" \
|
||||||
|
sdn="sudo shutdown -h now" \
|
||||||
|
e="$EDITOR" \
|
||||||
|
v="$EDITOR" \
|
||||||
|
p="sudo pacman" \
|
||||||
|
z="zathura" \
|
||||||
|
ll="ls -l" \
|
||||||
|
la="ls -al" \
|
||||||
|
ag="alias | grep"
|
||||||
|
|
||||||
|
# Git aliases
|
||||||
|
alias \
|
||||||
|
g="git" \
|
||||||
|
ga="git add" \
|
||||||
|
ga="git add --all" \
|
||||||
|
gb="git branch" \
|
||||||
|
gba="git branch -a" \
|
||||||
|
gbd="git branch -d" \
|
||||||
|
gbD="git branch -D" \
|
||||||
|
gbs="git bisect" \
|
||||||
|
gbsb="git bisect bad" \
|
||||||
|
gbsg="git bisect good" \
|
||||||
|
gbsr="git bisect reset" \
|
||||||
|
gbss="git bisect start" \
|
||||||
|
gc="git commit -v" \
|
||||||
|
gc!="git commit -v --amend" \
|
||||||
|
gcn!="git commit -v --no-edit --amend" \
|
||||||
|
gca="git commit -v -a" \
|
||||||
|
gca!="git commit -v -a --amend" \
|
||||||
|
gcan!="git commit -v -a --no-edit --amend" \
|
||||||
|
gcam="git commit -a -m" \
|
||||||
|
gcm="git checkout $(git_main_branch)" \
|
||||||
|
gco="git checkout" \
|
||||||
|
gcb="git checkout -b" \
|
||||||
|
gf="git fetch" \
|
||||||
|
gfa="git fetch --all --prune" \
|
||||||
|
gd="git diff" \
|
||||||
|
gl="git pull" \
|
||||||
|
glg="git log --stat" \
|
||||||
|
glgg="git log --graph" \
|
||||||
|
glo="git log --oneline --decorate" \
|
||||||
|
glgp="git log --stat -p" \
|
||||||
|
gm="git merge" \
|
||||||
|
gp="git push" \
|
||||||
|
grb="git rebase" \
|
||||||
|
gsb="git status -sb" \
|
||||||
|
gsh="git show" \
|
||||||
|
gsps="git show --pretty=short --show-signature" \
|
||||||
|
gsta="git stash push" \
|
||||||
|
gstaa="git stash apply" \
|
||||||
|
gstp="git stash pop" \
|
||||||
|
gstl="git stash list" \
|
||||||
|
gsts="git stash show --text" \
|
||||||
|
gup="git pull --rebase" \
|
||||||
|
nah="git reset --hard; git clean -df" \
|
||||||
|
gapa="git add --patch -A" \
|
||||||
|
gun="git reset --" \
|
||||||
|
glgm="git log --stat --author=christopher" \
|
||||||
|
glgpm="git log --stat -p --author=christopher"
|
||||||
|
|
||||||
22
.config/shell/bm-dirs
Normal file
22
.config/shell/bm-dirs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
cac ${XDG_CACHE_HOME:-$HOME/.cache}
|
||||||
|
cf ${XDG_CONFIG_HOME:-$HOME/.config}
|
||||||
|
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
|
||||||
|
d ${XDG_DOCUMENTS_DIR:-$HOME/Tower/Documents}
|
||||||
|
dt ${XDG_DATA_HOME:-$HOME/.local/share}
|
||||||
|
h $HOME
|
||||||
|
m ${XDG_MUSIC_DIR:-$HOME/Tower/Music}
|
||||||
|
mn /mnt
|
||||||
|
pp ${XDG_PICTURES_DIR:-$HOME/Tower/Pictures}
|
||||||
|
sc $HOME/.local/bin
|
||||||
|
src $HOME/.local/src
|
||||||
|
vv ${XDG_VIDEOS_DIR:-$HOME/Tower/Videos}
|
||||||
|
c $HOME/Code
|
||||||
|
cp $HOME/Code/PHP
|
||||||
|
cw $HOME/Code/Websites
|
||||||
|
cj $HOME/Code/JavaScript
|
||||||
|
cd $HOME/Code/DevOps
|
||||||
|
cr $HOME/Code/Rust
|
||||||
|
cm $HOME/Code/MobileApps
|
||||||
|
cs $HOME/Code/Scala
|
||||||
|
ct $HOME/Code/Tutorials
|
||||||
|
|
||||||
16
.config/shell/bm-files
Normal file
16
.config/shell/bm-files
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files
|
||||||
|
bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs
|
||||||
|
cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources
|
||||||
|
cfb ~/.local/src/dwmblocks/config.h
|
||||||
|
cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim
|
||||||
|
cfz $ZDOTDIR/.zshrc
|
||||||
|
cfa ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc
|
||||||
|
cfp ${XDG_CONFIG_HOME:-$HOME/.config}/shell/profile
|
||||||
|
cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc
|
||||||
|
cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config
|
||||||
|
cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls
|
||||||
|
cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings
|
||||||
|
cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config
|
||||||
|
cfl ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc
|
||||||
|
cfL ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope
|
||||||
|
cfX ${XDG_CONFIG_HOME:-$HOME/.config}/sxiv/exec/key-handler
|
||||||
19
.config/shell/inputrc
Normal file
19
.config/shell/inputrc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
$inclue /etc/inputrc
|
||||||
|
set editing-mode vi
|
||||||
|
$if mode=vi
|
||||||
|
|
||||||
|
set show-mode-in-prompt on
|
||||||
|
set vi-ins-mode-string \1\e[6 q\2
|
||||||
|
set vi-cmd-mode-string \1\e[2 q\2
|
||||||
|
|
||||||
|
set keymap vi-command
|
||||||
|
# these are for vi-command mode
|
||||||
|
Control-l: clear-screen
|
||||||
|
Control-a: beginning-of-line
|
||||||
|
|
||||||
|
set keymap vi-insert
|
||||||
|
# these are for vi-insert mode
|
||||||
|
Control-l: clear-screen
|
||||||
|
Control-a: beginning-of-line
|
||||||
|
|
||||||
|
$endif
|
||||||
144
.config/shell/profile
Normal file
144
.config/shell/profile
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# profile file. Runs on login. Environmental variables are set here.
|
||||||
|
|
||||||
|
# Adds `~/.local/bin` to $PATH
|
||||||
|
export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}"
|
||||||
|
|
||||||
|
unsetopt PROMPT_SP
|
||||||
|
|
||||||
|
# Default programs
|
||||||
|
export EDITOR="nvim"
|
||||||
|
export TERMINAL="alacritty"
|
||||||
|
export BROWSER="firefox"
|
||||||
|
|
||||||
|
# ~/ Clean-up:
|
||||||
|
export TOWER="$HOME/Tower"
|
||||||
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
export XDG_DOCUMENTS_DIR="$TOWER/Documents"
|
||||||
|
export XDG_MUSIC_DIR="$TOWER/Music"
|
||||||
|
export XDG_PICTURES_DIR="$TOWER/Pictures"
|
||||||
|
export XDG_VIDEOS_DIR="$TOWER/Videos"
|
||||||
|
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"
|
||||||
|
export NOTMUCH_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/notmuch-config"
|
||||||
|
export GTK2_RC_FILES="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc-2.0"
|
||||||
|
export LESSHISTFILE="-"
|
||||||
|
export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc"
|
||||||
|
export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/shell/inputrc"
|
||||||
|
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
|
||||||
|
export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default"
|
||||||
|
export KODI_DATA="${XDG_DATA_HOME:-$HOME/.local/share}/kodi"
|
||||||
|
export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store"
|
||||||
|
export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
|
||||||
|
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
|
||||||
|
export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
|
||||||
|
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
|
||||||
|
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg"
|
||||||
|
export UNISON="${XDG_DATA_HOME:-$HOME/.local/share}/unison"
|
||||||
|
export HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history"
|
||||||
|
export WEECHAT_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/weechat"
|
||||||
|
export MBSYNCRC="${XDG_CONFIG_HOME:-$HOME/.config}/mbsync/config"
|
||||||
|
export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum"
|
||||||
|
|
||||||
|
# Other program settings
|
||||||
|
export DICS="/usr/share/stardicts/dic/"
|
||||||
|
export SUDO_ASK_PASS="$HOME/.local/bin/dmenupass"
|
||||||
|
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
||||||
|
export LESS=-R
|
||||||
|
export LESS_TERMCAP_mb="$(printf '%b' '[1;31m')"
|
||||||
|
export LESS_TERMCAP_md="$(printf '%b' '[1;36m')"
|
||||||
|
export LESS_TERMCAP_me="$(printf '%b' '[0m')"
|
||||||
|
export LESS_TERMCAP_so="$(printf '%b' '[01;44;33m')"
|
||||||
|
export LESS_TERMCAP_se="$(printf '%b' '[0m')"
|
||||||
|
export LESS_TERMCAP_us="$(printf '%b' '[1;32m')"
|
||||||
|
export LESS_TERMCAP_ue="$(printf '%b' '[0m')"
|
||||||
|
export LESS_OPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
||||||
|
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
||||||
|
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
|
||||||
|
|
||||||
|
# This is the list for lf icons:
|
||||||
|
export LF_ICONS="di=📁:\
|
||||||
|
fi=📃:\
|
||||||
|
tw=🤝:\
|
||||||
|
ow=📂:\
|
||||||
|
ln=⛓:\
|
||||||
|
or=❌:\
|
||||||
|
ex=🎯:\
|
||||||
|
*.txt=✍:\
|
||||||
|
*.mom=✍:\
|
||||||
|
*.me=✍:\
|
||||||
|
*.ms=✍:\
|
||||||
|
*.png=🖼:\
|
||||||
|
*.webp=🖼:\
|
||||||
|
*.ico=🖼:\
|
||||||
|
*.jpg=📸:\
|
||||||
|
*.jpe=📸:\
|
||||||
|
*.jpeg=📸:\
|
||||||
|
*.gif=🖼:\
|
||||||
|
*.svg=🗺:\
|
||||||
|
*.tif=🖼:\
|
||||||
|
*.tiff=🖼:\
|
||||||
|
*.xcf=🖌:\
|
||||||
|
*.html=🌎:\
|
||||||
|
*.xml=📰:\
|
||||||
|
*.gpg=🔒:\
|
||||||
|
*.css=🎨:\
|
||||||
|
*.pdf=📚:\
|
||||||
|
*.djvu=📚:\
|
||||||
|
*.epub=📚:\
|
||||||
|
*.csv=📓:\
|
||||||
|
*.xlsx=📓:\
|
||||||
|
*.tex=📜:\
|
||||||
|
*.md=📘:\
|
||||||
|
*.r=📊:\
|
||||||
|
*.R=📊:\
|
||||||
|
*.rmd=📊:\
|
||||||
|
*.Rmd=📊:\
|
||||||
|
*.m=📊:\
|
||||||
|
*.mp3=🎵:\
|
||||||
|
*.opus=🎵:\
|
||||||
|
*.ogg=🎵:\
|
||||||
|
*.m4a=🎵:\
|
||||||
|
*.flac=🎼:\
|
||||||
|
*.wav=🎼:\
|
||||||
|
*.mkv=🎥:\
|
||||||
|
*.mp4=🎥:\
|
||||||
|
*.webm=🎥:\
|
||||||
|
*.mpeg=🎥:\
|
||||||
|
*.avi=🎥:\
|
||||||
|
*.mov=🎥:\
|
||||||
|
*.mpg=🎥:\
|
||||||
|
*.wmv=🎥:\
|
||||||
|
*.m4b=🎥:\
|
||||||
|
*.flv=🎥:\
|
||||||
|
*.zip=📦:\
|
||||||
|
*.rar=📦:\
|
||||||
|
*.7z=📦:\
|
||||||
|
*.tar.gz=📦:\
|
||||||
|
*.z64=🎮:\
|
||||||
|
*.v64=🎮:\
|
||||||
|
*.n64=🎮:\
|
||||||
|
*.gba=🎮:\
|
||||||
|
*.nes=🎮:\
|
||||||
|
*.gdi=🎮:\
|
||||||
|
*.1=ℹ:\
|
||||||
|
*.nfo=ℹ:\
|
||||||
|
*.info=ℹ:\
|
||||||
|
*.log=📙:\
|
||||||
|
*.iso=📀:\
|
||||||
|
*.img=📀:\
|
||||||
|
*.bib=🎓:\
|
||||||
|
*.ged=👪:\
|
||||||
|
*.part=💔:\
|
||||||
|
*.torrent=🔽:\
|
||||||
|
*.jar=♨:\
|
||||||
|
*.java=♨:\
|
||||||
|
"
|
||||||
|
|
||||||
|
[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && shortcuts >/dev/null 2>&1 &
|
||||||
|
|
||||||
|
[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec startx "$XINITRC"
|
||||||
|
|
||||||
33
.config/sxiv/exec/key-handler
Normal file
33
.config/sxiv/exec/key-handler
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
while read file
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
"w") setbg "$file" & ;;
|
||||||
|
"c")
|
||||||
|
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
|
||||||
|
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
||||||
|
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
|
||||||
|
;;
|
||||||
|
"m")
|
||||||
|
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
|
||||||
|
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
||||||
|
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
|
||||||
|
;;
|
||||||
|
"r")
|
||||||
|
convert -rotate 90 "$file" "$file" ;;
|
||||||
|
"R")
|
||||||
|
convert -rotate -90 "$file" "$file" ;;
|
||||||
|
"f")
|
||||||
|
convert -flop "$file" "$file" ;;
|
||||||
|
"y")
|
||||||
|
echo -n "$file" | tr -d '\n' | xclip -selection clipboard &&
|
||||||
|
notify-send "$file copied to clipboard" & ;;
|
||||||
|
"Y")
|
||||||
|
readlink -f "$file" | tr -d '\n' | xclip -selection clipboard &&
|
||||||
|
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
|
||||||
|
"d")
|
||||||
|
[ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||||
|
"g") setsid -f gimp "$file" ;;
|
||||||
|
"i") notify-send "File information" "$(mediainfo "$file")" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
1
.config/user-dirs.dirs
Normal file
1
.config/user-dirs.dirs
Normal file
@@ -0,0 +1 @@
|
|||||||
|
XDG_DESKTOP_DIR="$HOME/"
|
||||||
28
.config/wal/postrun
Normal file
28
.config/wal/postrun
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source "${HOME}/.cache/wal/colors.sh"
|
||||||
|
|
||||||
|
mkdir -p "${HOME}/.config/dunst"
|
||||||
|
mkdir -p "${HOME}/.config/zathura"
|
||||||
|
ln -sf "${HOME}/.cache/wal/dunstrc" "${HOME}/.config/dunst/dunstrc"
|
||||||
|
ln -sf "${HOME}/.cache/wal/zathurarc" "${HOME}/.config/zathura/zathurarc"
|
||||||
|
|
||||||
|
fix_sequences() {
|
||||||
|
e=$'\e'
|
||||||
|
sequences=$(cat)
|
||||||
|
foreground_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]10[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
|
||||||
|
background_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]11[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
|
||||||
|
cursor_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]12[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
|
||||||
|
|
||||||
|
for term in /dev/pts/{0..9}*
|
||||||
|
do
|
||||||
|
echo -e "\e]4;256;${cursor_color}\a\c" > "${term}" 2>/dev/nul
|
||||||
|
echo -e "\e]4;258;${background_color}\a\c" > "${term}" 2>/dev/null
|
||||||
|
echo -e "\e]4;259;${foreground_color}\a\c" > "${term}" 2>/dev/null
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
fix_sequences <"${HOME}/.cache/wal/sequences"
|
||||||
|
|
||||||
|
pkill dunst; dunst &
|
||||||
152
.config/wal/templates/dunstrc
Normal file
152
.config/wal/templates/dunstrc
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
[global]
|
||||||
|
monitor = 0
|
||||||
|
follow = keyboard
|
||||||
|
geometry = "350x5-0+24"
|
||||||
|
indicate_hidden = yes
|
||||||
|
shrink = yes
|
||||||
|
transparency = 20
|
||||||
|
notification_height = 0
|
||||||
|
separator_height = 2
|
||||||
|
padding = 0
|
||||||
|
horizontal_padding = 8
|
||||||
|
frame_width = 3
|
||||||
|
frame_color = "{color4}"
|
||||||
|
|
||||||
|
# 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 = frame
|
||||||
|
|
||||||
|
# Sort messages by urgency.
|
||||||
|
sort = yes
|
||||||
|
|
||||||
|
idle_threshold = 120
|
||||||
|
font = Monospace 14
|
||||||
|
line_height = 0
|
||||||
|
markup = full
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# %n progress value if set without any extra characters
|
||||||
|
# %% Literal %
|
||||||
|
# Markup is allowed
|
||||||
|
format = "<b>%s</b>\n%b"
|
||||||
|
|
||||||
|
alignment = left
|
||||||
|
show_age_threshold = 60
|
||||||
|
word_wrap = yes
|
||||||
|
ellipsize = middle
|
||||||
|
ignore_newline = no
|
||||||
|
stack_duplicates = true
|
||||||
|
hide_duplicate_count = true
|
||||||
|
show_indicators = yes
|
||||||
|
icon_position = left
|
||||||
|
max_icon_size = 40
|
||||||
|
#icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
|
||||||
|
sticky_history = yes
|
||||||
|
history_length = 20
|
||||||
|
dmenu = /usr/bin/dmenu -p dunst:
|
||||||
|
browser = /usr/bin/firefox -new-tab
|
||||||
|
|
||||||
|
# Always run rule-defined scripts, even if the notification is suppressed
|
||||||
|
always_run_script = true
|
||||||
|
|
||||||
|
title = Dunst
|
||||||
|
class = Dunst
|
||||||
|
startup_notification = false
|
||||||
|
force_xinerama = false
|
||||||
|
[experimental]
|
||||||
|
per_monitor_dpi = false
|
||||||
|
|
||||||
|
[shortcuts]
|
||||||
|
close = ctrl+space
|
||||||
|
close_all = ctrl+shift+space
|
||||||
|
history = ctrl+grave
|
||||||
|
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.
|
||||||
|
background = "{background}"
|
||||||
|
foreground = "{foreground}"
|
||||||
|
timeout = 5
|
||||||
|
# Icon for notifications with low urgency, uncomment to enable
|
||||||
|
#icon = /path/to/icon
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "{background}"
|
||||||
|
foreground = "{foreground}"
|
||||||
|
timeout = 5
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "{background}"
|
||||||
|
foreground = "{foreground}"
|
||||||
|
frame_color = "#fabd2f"
|
||||||
|
timeout = 0
|
||||||
|
|
||||||
|
# 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 = ""
|
||||||
|
|
||||||
|
#[history-ignore]
|
||||||
|
# # This notification will not be saved in history
|
||||||
|
# summary = "foobar"
|
||||||
|
# history_ignore = yes
|
||||||
|
|
||||||
|
#[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
|
||||||
35
.config/wal/templates/zathurarc
Normal file
35
.config/wal/templates/zathurarc
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
set sandbox none
|
||||||
|
set statusbar-h-padding 0
|
||||||
|
set statusbar-v-padding 0
|
||||||
|
set page-padding 1
|
||||||
|
set selection-clipboard clipboard
|
||||||
|
map u scroll half-up
|
||||||
|
map d scroll half-down
|
||||||
|
map D toggle_page_mode
|
||||||
|
map r reload
|
||||||
|
map R rotate
|
||||||
|
map K zoom in
|
||||||
|
map J zoom out
|
||||||
|
map i recolor
|
||||||
|
map p print
|
||||||
|
|
||||||
|
set default-bg "{background}"
|
||||||
|
set default-fg "{foreground}"
|
||||||
|
set statusbar-bg "{background}"
|
||||||
|
set statusbar-fg "{foreground}"
|
||||||
|
set inputbar-bg "{background}"
|
||||||
|
set inputbar-fg "{foreground}"
|
||||||
|
set notification-bg "{background}"
|
||||||
|
set notification-fg "{foreground}"
|
||||||
|
set notification-error-bg "{background}"
|
||||||
|
set notification-error-fg "{foreground}"
|
||||||
|
set notification-warning-bg "{background}"
|
||||||
|
set notification-warning-fg "{foreground}"
|
||||||
|
set highlight-color "{color3}"
|
||||||
|
set highlight-active-color "{color4}"
|
||||||
|
set completion-bg "{color3}"
|
||||||
|
set completion-fg "{color4}"
|
||||||
|
set completion-highlight-bg "{color3}"
|
||||||
|
set completion-highlight-fg "{color4}"
|
||||||
|
set recolor-lightcolor "{background}"
|
||||||
|
set recolor-darkcolor "{foreground}"
|
||||||
1
.config/wget/wgetrc
Normal file
1
.config/wget/wgetrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
hsts-file=~/.cache/wget-hsts
|
||||||
17
.config/x11/xinitrc
Normal file
17
.config/x11/xinitrc
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# xinitrc runs automatically when you run startx.
|
||||||
|
|
||||||
|
# There are some small but important commands that need to be run when we start
|
||||||
|
# the graphical environment. There is a link to this file in ~/.xprofile
|
||||||
|
# because that file is run automatically if someone uses a display manager
|
||||||
|
# (login screen) and so they are needed there. To prevent doubling up commands,
|
||||||
|
# I source them here with the line below.
|
||||||
|
|
||||||
|
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" ]; then
|
||||||
|
. "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile"
|
||||||
|
else
|
||||||
|
. "$HOME/.xprofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ssh-agent dwm
|
||||||
10
.config/x11/xprofile
Normal file
10
.config/x11/xprofile
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This file runs when a DM logs you into a graphical session.
|
||||||
|
# If you use startx/xinit, this file will also be sourced.
|
||||||
|
|
||||||
|
# xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & # Use Xresources colors/settings on startup
|
||||||
|
xcompmgr & # xcompmgr for transparency
|
||||||
|
dunst & # dunst for notifications
|
||||||
|
xset r rate 300 50 & # Speed xrate up
|
||||||
|
unclutter & # Remove mouse when idle
|
||||||
156
.config/x11/xresources
Normal file
156
.config/x11/xresources
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
!! Transparency (0-1):
|
||||||
|
*.alpha: 0.8
|
||||||
|
|
||||||
|
!! Set a default font and font size as below:
|
||||||
|
*.font: monospace:size=10
|
||||||
|
|
||||||
|
/* name dark light */
|
||||||
|
/* black 0 8 */
|
||||||
|
/* red 1 9 */
|
||||||
|
/* green 2 10 */
|
||||||
|
/* yellow 3 11 */
|
||||||
|
/* blue 4 12 */
|
||||||
|
/* purple 5 13 */
|
||||||
|
/* cyan 6 14 */
|
||||||
|
/* white 7 15 */
|
||||||
|
|
||||||
|
/* !! gruvbox: */
|
||||||
|
/* *.color0: #1d2021 */
|
||||||
|
/* *.color1: #cc241d */
|
||||||
|
/* *.color2: #98971a */
|
||||||
|
/* *.color3: #d79921 */
|
||||||
|
/* *.color4: #458588 */
|
||||||
|
/* *.color5: #b16286 */
|
||||||
|
/* *.color6: #689d6a */
|
||||||
|
/* *.color7: #a89984 */
|
||||||
|
/* *.color8: #928374 */
|
||||||
|
/* *.color9: #fb4934 */
|
||||||
|
/* *.color10: #b8bb26 */
|
||||||
|
/* *.color11: #fabd2f */
|
||||||
|
/* *.color12: #83a598 */
|
||||||
|
/* *.color13: #d3869b */
|
||||||
|
/* *.color14: #8ec07c */
|
||||||
|
/* *.color15: #ebdbb2 */
|
||||||
|
/* *.color256: #1d2021 */
|
||||||
|
/* *.color257: #ebdbb2 */
|
||||||
|
|
||||||
|
/* !! gruvbox light: */
|
||||||
|
/* *.color0: #fbf1c7 */
|
||||||
|
/* *.color1: #cc241d */
|
||||||
|
/* *.color2: #98971a */
|
||||||
|
/* *.color3: #d79921 */
|
||||||
|
/* *.color4: #458588 */
|
||||||
|
/* *.color5: #b16286 */
|
||||||
|
/* *.color6: #689d6a */
|
||||||
|
/* *.color7: #7c6f64 */
|
||||||
|
/* *.color8: #928374 */
|
||||||
|
/* *.color9: #9d0006 */
|
||||||
|
/* *.color10: #79740e */
|
||||||
|
/* *.color11: #b57614 */
|
||||||
|
/* *.color12: #076678 */
|
||||||
|
/* *.color13: #8f3f71 */
|
||||||
|
/* *.color14: #427b58 */
|
||||||
|
/* *.color15: #3c3836 */
|
||||||
|
/* *.background: #fbf1c7 */
|
||||||
|
/* *.foreground: #282828 */
|
||||||
|
/* st.alpha: 0.9 */
|
||||||
|
|
||||||
|
/* !! brogrammer: */
|
||||||
|
/* *.foreground: #d6dbe5 */
|
||||||
|
/* *.background: #131313 */
|
||||||
|
/* *.color0: #1f1f1f */
|
||||||
|
/* *.color8: #d6dbe5 */
|
||||||
|
/* *.color1: #f81118 */
|
||||||
|
/* *.color9: #de352e */
|
||||||
|
/* *.color2: #2dc55e */
|
||||||
|
/* *.color10: #1dd361 */
|
||||||
|
/* *.color3: #ecba0f */
|
||||||
|
/* *.color11: #f3bd09 */
|
||||||
|
/* *.color4: #2a84d2 */
|
||||||
|
/* *.color12: #1081d6 */
|
||||||
|
/* *.color5: #4e5ab7 */
|
||||||
|
/* *.color13: #5350b9 */
|
||||||
|
/* *.color6: #1081d6 */
|
||||||
|
/* *.color14: #0f7ddb */
|
||||||
|
/* *.color7: #d6dbe5 */
|
||||||
|
/* *.color15: #ffffff */
|
||||||
|
/* *.colorBD: #d6dbe5 */
|
||||||
|
|
||||||
|
/* ! base16 */
|
||||||
|
/* *.color0: #181818 */
|
||||||
|
/* *.color1: #ab4642 */
|
||||||
|
/* *.color2: #a1b56c */
|
||||||
|
/* *.color3: #f7ca88 */
|
||||||
|
/* *.color4: #7cafc2 */
|
||||||
|
/* *.color5: #ba8baf */
|
||||||
|
/* *.color6: #86c1b9 */
|
||||||
|
/* *.color7: #d8d8d8 */
|
||||||
|
/* *.color8: #585858 */
|
||||||
|
/* *.color9: #ab4642 */
|
||||||
|
/* *.color10: #a1b56c */
|
||||||
|
/* *.color11: #f7ca88 */
|
||||||
|
/* *.color12: #7cafc2 */
|
||||||
|
/* *.color13: #ba8baf */
|
||||||
|
/* *.color14: #86c1b9 */
|
||||||
|
/* *.color15: #f8f8f8 */
|
||||||
|
|
||||||
|
/* !! solarized */
|
||||||
|
/* *.color0: #073642 */
|
||||||
|
/* *.color1: #dc322f */
|
||||||
|
/* *.color2: #859900 */
|
||||||
|
/* *.color3: #b58900 */
|
||||||
|
/* *.color4: #268bd2 */
|
||||||
|
/* *.color5: #d33682 */
|
||||||
|
/* *.color6: #2aa198 */
|
||||||
|
/* *.color7: #eee8d5 */
|
||||||
|
/* *.color9: #cb4b16 */
|
||||||
|
/* *.color8: #fdf6e3 */
|
||||||
|
/* *.color10: #586e75 */
|
||||||
|
/* *.color11: #657b83 */
|
||||||
|
/* *.color12: #839496 */
|
||||||
|
/* *.color13: #6c71c4 */
|
||||||
|
/* *.color14: #93a1a1 */
|
||||||
|
/* *.color15: #fdf6e3 */
|
||||||
|
|
||||||
|
/* !! xterm */
|
||||||
|
/* *.color0: #000000 */
|
||||||
|
/* *.color1: #cd0000 */
|
||||||
|
/* *.color2: #00cd00 */
|
||||||
|
/* *.color3: #cdcd00 */
|
||||||
|
/* *.color4: #0000cd */
|
||||||
|
/* *.color5: #cd00cd */
|
||||||
|
/* *.color6: #00cdcd */
|
||||||
|
/* *.color7: #e5e5e5 */
|
||||||
|
/* *.color8: #4d4d4d */
|
||||||
|
/* *.color9: #ff0000 */
|
||||||
|
/* *.color10: #00ff00 */
|
||||||
|
/* *.color11: #ffff00 */
|
||||||
|
/* *.color12: #0000ff */
|
||||||
|
/* *.color13: #ff00ff */
|
||||||
|
/* *.color14: #00ffff */
|
||||||
|
/* *.color15: #aabac8 */
|
||||||
|
/* *.background: #000000 */
|
||||||
|
|
||||||
|
/* ! Dracula Xresources palette */
|
||||||
|
/* *.foreground: #F8F8F2 */
|
||||||
|
/* *.background: #282A36 */
|
||||||
|
/* *.color0: #000000 */
|
||||||
|
/* *.color8: #4D4D4D */
|
||||||
|
/* *.color1: #FF5555 */
|
||||||
|
/* *.color9: #FF6E67 */
|
||||||
|
/* *.color2: #50FA7B */
|
||||||
|
/* *.color10: #5AF78E */
|
||||||
|
/* *.color3: #F1FA8C */
|
||||||
|
/* *.color11: #F4F99D */
|
||||||
|
/* *.color4: #BD93F9 */
|
||||||
|
/* *.color12: #CAA9FA */
|
||||||
|
/* *.color5: #FF79C6 */
|
||||||
|
/* *.color13: #FF92D0 */
|
||||||
|
/* *.color6: #8BE9FD */
|
||||||
|
/* *.color14: #9AEDFE */
|
||||||
|
/* *.color7: #BFBFBF */
|
||||||
|
/* *.color15: #E6E6E6 */
|
||||||
|
|
||||||
|
/* *.background: .color0 */
|
||||||
|
/* *.color256: 0#1d2021 */
|
||||||
|
/* *.color257: 15#ebdbb2 */
|
||||||
15
.config/zathura/zathurarc
Normal file
15
.config/zathura/zathurarc
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
set sandbox none
|
||||||
|
set statusbar-h-padding 0
|
||||||
|
set statusbar-v-padding 0
|
||||||
|
set page-padding 1
|
||||||
|
set selection-clipboard clipboard
|
||||||
|
map u scroll half-up
|
||||||
|
map d scroll half-down
|
||||||
|
map D toggle_page_mode
|
||||||
|
map r reload
|
||||||
|
map R rotate
|
||||||
|
map K zoom in
|
||||||
|
map J zoom out
|
||||||
|
map i recolor
|
||||||
|
map p print
|
||||||
|
map g goto top
|
||||||
79
.config/zsh/.zshrc
Normal file
79
.config/zsh/.zshrc
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# ZSH Config File
|
||||||
|
|
||||||
|
# Enable colors and set prompt
|
||||||
|
autoload -U colors && colors
|
||||||
|
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]{$reset_color%}$%b "
|
||||||
|
setopt autocd # Automatically cd into typed directory.
|
||||||
|
stty stop undef # Disable ctrl-s to freeze terminal.
|
||||||
|
setopt interactive_comments
|
||||||
|
|
||||||
|
# History in cache directory:
|
||||||
|
HISTSIZE=10000000
|
||||||
|
SAVEHIST=10000000
|
||||||
|
HISTFILE=~/.cache/zsh/history
|
||||||
|
|
||||||
|
# Load aliases and shortcuts if existent.
|
||||||
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
||||||
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
|
||||||
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
||||||
|
|
||||||
|
# Basic auto/tab complete:
|
||||||
|
autoload -U compinit
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
zmodload zsh/complist
|
||||||
|
compinit
|
||||||
|
_comp_options+=(globdots) # Include hidden files.
|
||||||
|
|
||||||
|
# vi mode
|
||||||
|
bindkey -v
|
||||||
|
export KEYTIMEOUT=1
|
||||||
|
|
||||||
|
# Use vim keys in tab complete menu:
|
||||||
|
bindkey -M menuselect 'h' vi-backward-char
|
||||||
|
bindkey -M menuselect 'k' vi-up-line-or-history
|
||||||
|
bindkey -M menuselect 'l' vi-forward-char
|
||||||
|
bindkey -M menuselect 'j' vi-down-line-or-history
|
||||||
|
bindkey -v '^?' backward-delete-char
|
||||||
|
|
||||||
|
# Change cursor shape for different vi modes.
|
||||||
|
function zle-keymap-select() {
|
||||||
|
case $KEYMAP in
|
||||||
|
vicmd) echo -ne '\e[1 q';; # block
|
||||||
|
viins|main) echo -ne '\e[5 q';; # beam
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select
|
||||||
|
zle-line-init() {
|
||||||
|
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
||||||
|
echo -ne "\e[5 q"
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
||||||
|
preexec() {
|
||||||
|
echo -ne '\e[5 q'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use lf to switch directories and bind it to ctrl-o
|
||||||
|
lfcd() {
|
||||||
|
tmp="$(mktemp)"
|
||||||
|
lf -last-dir-path="$tmp" "$@"
|
||||||
|
if [ -f "$tmp" ]; then
|
||||||
|
dir="$(cat "$tmp")"
|
||||||
|
rm -f "$tmp" >/dev/null
|
||||||
|
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
bindkey -s '^o' 'lfcd\n'
|
||||||
|
|
||||||
|
bindkey -s '^a' 'bc -lq\n'
|
||||||
|
|
||||||
|
bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
|
||||||
|
|
||||||
|
bindkey '^[[P' delete-char
|
||||||
|
|
||||||
|
# Edit line in vim with ctrl-e:
|
||||||
|
autoload edit-commandd-line; zle -N edit-command-line
|
||||||
|
bindkey '^e' edit-command-line
|
||||||
|
|
||||||
|
# Load syntax highlighting; should be last.
|
||||||
|
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
|
||||||
0
.gitmodules
vendored
Normal file
0
.gitmodules
vendored
Normal file
57
.local/bin/compiler
Normal file
57
.local/bin/compiler
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script will compile or run another finishing operation on a document. I
|
||||||
|
# have this script run via vim.
|
||||||
|
#
|
||||||
|
# Compiles .tex. groff (.mom, .ms), .rmd, .md, .org. Opens .sent files as sent
|
||||||
|
# presentations. Runs scripts based on extention or shebang.
|
||||||
|
#
|
||||||
|
# Note that .tex files which you wish to compile with XeLaTeX should have the
|
||||||
|
# string "xelatex" somewhere in a comment/command in the first 5 lines.
|
||||||
|
|
||||||
|
file=$(readlink -f "$1")
|
||||||
|
dir=${file%/*}
|
||||||
|
base="${file%.*}"
|
||||||
|
ext="${file##*.}"
|
||||||
|
|
||||||
|
cd "$dir" || exit 1
|
||||||
|
|
||||||
|
textype() { \
|
||||||
|
command="pdflatex"
|
||||||
|
( head -n5 "$file" | grep -qi 'xelatex' ) && command="xelatex"
|
||||||
|
$command --output-directory="$dir" "$base" &&
|
||||||
|
grep -qi addbibresource "$file" &&
|
||||||
|
biber --input-directory "$dir" "$base" &&
|
||||||
|
$command --output-directory="$dir" "$base" &&
|
||||||
|
$command --output-directory="$dir" "$base"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$ext" in
|
||||||
|
# Try to keep these cases in alphabetical order.
|
||||||
|
[0-9]) preconv "$file" | refer -PS -e | groff -mandoc -T pdf > "$base".pdf ;;
|
||||||
|
c) cc "$file" -o "$base" && "$base" ;;
|
||||||
|
cpp) g++ "$file" -o "$base" && "$base" ;;
|
||||||
|
cs) mcs "$file" && mono "$base".exe ;;
|
||||||
|
go) go run "$file" ;;
|
||||||
|
h) sudo make install ;;
|
||||||
|
java) javac -d classes "$file" && java -cp classes "${1%.*}" ;;
|
||||||
|
m) octave "$file" ;;
|
||||||
|
md) if [ -x "$(command -v lowdown)" ]; then
|
||||||
|
lowdown -d nointem -e super "$file" -Tms | groff -mpdfmark -ms -kept > "$base".pdf
|
||||||
|
elif [ -x "$(command -v groffdown)" ]; then
|
||||||
|
groffdown -i "$file" | groff > "$base.pdf"
|
||||||
|
else
|
||||||
|
pandoc -t ms --highlight-style=kate -s -o "$base".pdf "$file"
|
||||||
|
fi ; ;;
|
||||||
|
mom) preconv "$file" | refer -PS -e | groff -mom -kept -T pdf > "$base".pdf ;;
|
||||||
|
ms) preconv "$file" | refer -PS -e | groff -me -ms -kept -T pdf > "$base".pdf ;;
|
||||||
|
org) emacs "$file" --batch -u "$USER" -f org-latex-export-to-pdf ;;
|
||||||
|
py) python "$file" ;;
|
||||||
|
[rR]md) Rscript -e "rmarkdown::render('$file', quiet=TRUE)" ;;
|
||||||
|
rs) cargo build ;;
|
||||||
|
sass) sassc -a "$file" "$base.css" ;;
|
||||||
|
scad) openscad -o "$base".stl "$file" ;;
|
||||||
|
sent) setsid -f sent "$file" 2>/dev/null ;;
|
||||||
|
tex) textype "$file" ;;
|
||||||
|
*) head -n1 "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
|
||||||
|
esac
|
||||||
18
.local/bin/cron/checkup
Normal file
18
.local/bin/cron/checkup
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Syncs repositories and downloads updates, meant to be run as a cronjob.
|
||||||
|
|
||||||
|
ping -q -c 1 example.org > /dev/null || exit
|
||||||
|
|
||||||
|
notify-send "📦 Repository Sync" "Checking for package updates..."
|
||||||
|
|
||||||
|
sudo pacman -Syyuw --noconfirm || notify-send "Error downloading updates.
|
||||||
|
Check your internet connection, if pacman is already running, or run update manually to see errors."
|
||||||
|
pkill -RTMIN+8 "${STATUSBAR:-dwmblocks}"
|
||||||
|
|
||||||
|
if pacman -Qu | grep -v "\[ignored\]"
|
||||||
|
then
|
||||||
|
notify-send "🎁 Repository Sync" "Updates available. Click statusbar icon (📦) for update."
|
||||||
|
else
|
||||||
|
notify-send "📦 Repository Sync" "Sync complete. No new packages for update."
|
||||||
|
fi
|
||||||
6
.local/bin/cron/crontog
Normal file
6
.local/bin/cron/crontog
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Toggles all cronjobs off/on.
|
||||||
|
# Stores disabled crontabs in ~/.consaved until restored.
|
||||||
|
|
||||||
|
([ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved ] && crontab - < "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && rm "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || ( crontab -l > "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.")
|
||||||
17
.local/bin/cron/newsup
Normal file
17
.local/bin/cron/newsup
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Set as a cron job to check for new RSS entries for newsboat.
|
||||||
|
# If newsboat is open, sends it an "R" key to refresh.
|
||||||
|
|
||||||
|
ping -q -c 1 example.org > /dev/null || exit
|
||||||
|
|
||||||
|
/usr/bin/notify-send "📰 Updating RSS feeds..."
|
||||||
|
|
||||||
|
pgrep -f newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
|
||||||
|
|
||||||
|
echo 🔃 > /tmp/newsupdate
|
||||||
|
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||||
|
/usr/bin/newsboat -x reload
|
||||||
|
rm -f /tmp/newsupdate
|
||||||
|
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||||
|
/usr/bin/notify-send "📰 RSS feed update complete."
|
||||||
82
.local/bin/displayselect
Normal file
82
.local/bin/displayselect
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# A UI for detecting and selecting all displays. Probes xrandr for connected
|
||||||
|
# displays and lets user select one to use. User may also select "manual
|
||||||
|
# selection" which opens arandr.
|
||||||
|
|
||||||
|
twoscreen() { # If multi-monitor is selected and there are two screens.
|
||||||
|
|
||||||
|
mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
|
||||||
|
# Mirror displays using native resolution of external display and a scaled
|
||||||
|
# version for the internal display
|
||||||
|
if [ "$mirror" = "yes" ]; then
|
||||||
|
external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
|
||||||
|
internal=$(echo "$screens" | grep -v "$external")
|
||||||
|
|
||||||
|
res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
|
||||||
|
tail -n 1 | awk '{print $1}')
|
||||||
|
res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
|
||||||
|
tail -n 1 | awk '{print $1}')
|
||||||
|
|
||||||
|
res_ext_x=$(echo "$res_external" | sed 's/x.*//')
|
||||||
|
res_ext_y=$(echo "$res_external" | sed 's/.*x//')
|
||||||
|
res_int_x=$(echo "$res_internal" | sed 's/x.*//')
|
||||||
|
res_int_y=$(echo "$res_internal" | sed 's/.*x//')
|
||||||
|
|
||||||
|
scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
|
||||||
|
scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
|
||||||
|
|
||||||
|
xrandr --output "$external" --auto --scale 1.0x1.0 \
|
||||||
|
--output "$internal" --auto --same-as "$external" \
|
||||||
|
--scale "$scale_x"x"$scale_y"
|
||||||
|
else
|
||||||
|
|
||||||
|
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
|
||||||
|
secondary=$(echo "$screens" | grep -v "$primary")
|
||||||
|
direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
|
||||||
|
xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
morescreen() { # If multi-monitor is selected and there are more than two screens.
|
||||||
|
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
|
||||||
|
secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:")
|
||||||
|
direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
|
||||||
|
tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:")
|
||||||
|
xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto
|
||||||
|
}
|
||||||
|
|
||||||
|
multimon() { # Multi-monitor handler.
|
||||||
|
case "$(echo "$screens" | wc -l)" in
|
||||||
|
2) twoscreen ;;
|
||||||
|
*) morescreen ;;
|
||||||
|
esac ;}
|
||||||
|
|
||||||
|
onescreen() { # If only one output available or chosen.
|
||||||
|
xrandr --output "$1" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "\b$1" | awk '{print "--output", $1, "--off"}' | paste -sd ' ' -)
|
||||||
|
}
|
||||||
|
|
||||||
|
postrun() { # Stuff to run to clean up.
|
||||||
|
setbg # Fix background if screen size/arangement has changed.
|
||||||
|
{ killall dunst ; setsid -f dunst ;} >/dev/null 2>&1 # Restart dunst to ensure proper location on screen
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get all possible displays
|
||||||
|
allposs=$(xrandr -q | grep "connected")
|
||||||
|
|
||||||
|
# Get all connected screens.
|
||||||
|
screens=$(echo "$allposs" | awk '/ connected/ {print $1}')
|
||||||
|
|
||||||
|
# If there's only one screen
|
||||||
|
[ "$(echo "$screens" | wc -l)" -lt 2 ] &&
|
||||||
|
{ onescreen "$screens"; postrun; notify-send "💻 Only one screen detected." "Using it in its optimal settings..."; exit ;}
|
||||||
|
|
||||||
|
# Get user choice including multi-monitor and manual selection:
|
||||||
|
chosen=$(printf "%s\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
|
||||||
|
case "$chosen" in
|
||||||
|
"manual selection") arandr ; exit ;;
|
||||||
|
"multi-monitor") multimon ;;
|
||||||
|
*) onescreen "$chosen" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
postrun
|
||||||
21
.local/bin/dmenuhandler
Normal file
21
.local/bin/dmenuhandler
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Feed this script a link and it will give dmenu
|
||||||
|
# some choice programs to use to open it.
|
||||||
|
feed="${1:-$(printf "%s" | dmenu -p 'Paste URL or file path')}"
|
||||||
|
|
||||||
|
case "$(printf "Copy URL\\nsxiv\\nsetbg\\nPDF\\nbrowser\\nlynx\\nvim\\nmpv\\nmpv loop\\nmpv float\\nqueue download\\nqueue yt-dl\\nqueue yt-dl audio" | dmenu -i -p "Open it with?")" in
|
||||||
|
"copy url") echo "$feed" | xclip -selection clipboard ;;
|
||||||
|
mpv) setsid -f mpv -quiet "$feed" >/dev/null 2>&1 ;;
|
||||||
|
"mpv loop") setsid -f mpv -quiet --loop "$feed" >/dev/null 2>&1 ;;
|
||||||
|
"mpv float") setsid -f "$TERMINAL" -e mpv --geometry=+0-0 --autofit=30% --title="mpvfloat" "$feed" >/dev/null 2>&1 ;;
|
||||||
|
"queue yt-dl") qndl "$feed" >/dev/null 2>&1 ;;
|
||||||
|
"queue yt-dl audio") qndl "$feed" 'youtube-dl --add-metadata -icx -f bestaudio/best' >/dev/null 2>&1 ;;
|
||||||
|
"queue download") qndl "$feed" 'curl -LO' >/dev/null 2>&1 ;;
|
||||||
|
PDF) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
||||||
|
sxiv) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
||||||
|
vim) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
||||||
|
setbg) curl -L "$feed" > $XDG_CACHE_HOME/pic ; xwallpaper --zoom $XDG_CACHE_HOME/pic >/dev/null 2>&1 ;;
|
||||||
|
browser) setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;;
|
||||||
|
lynx) lynx "$feed" >/dev/null 2>&1 ;;
|
||||||
|
esac
|
||||||
67
.local/bin/dmenumount
Normal file
67
.local/bin/dmenumount
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Gives a dmenu prompt to mount unmounted drives and Android phones. If
|
||||||
|
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
|
||||||
|
# be prompted to give a mountpoint from already existsing directories. If you
|
||||||
|
# input a novel directory, it will prompt you to create that directory.
|
||||||
|
|
||||||
|
getmount() { \
|
||||||
|
[ -z "$chosen" ] && exit 1
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
|
||||||
|
[ "$mp" = "" ] && exit 1
|
||||||
|
if [ ! -d "$mp" ]; then
|
||||||
|
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
|
||||||
|
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
mountusb() { \
|
||||||
|
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?")" || exit 1
|
||||||
|
chosen="$(echo "$chosen" | awk '{print $1}')"
|
||||||
|
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
|
||||||
|
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
|
||||||
|
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
|
||||||
|
partitiontype="$(lsblk -no "fstype" "$chosen")"
|
||||||
|
case "$partitiontype" in
|
||||||
|
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
|
||||||
|
"exfat") sudo -A mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)";;
|
||||||
|
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" "$mp";;
|
||||||
|
esac
|
||||||
|
notify-send "💻 USB mounting" "$chosen mounted to $mp."
|
||||||
|
}
|
||||||
|
|
||||||
|
mountandroid() { \
|
||||||
|
chosen="$(echo "$anddrives" | dmenu -i -p "Which Android device?")" || exit 1
|
||||||
|
chosen="$(echo "$chosen" | cut -d : -f 1)"
|
||||||
|
getmount "$HOME -maxdepth 3 -type d"
|
||||||
|
simple-mtpfs --device "$chosen" "$mp"
|
||||||
|
echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" || exit 1
|
||||||
|
simple-mtpfs --device "$chosen" "$mp"
|
||||||
|
notify-send "🤖 Android Mounting" "Android device mounted to $mp."
|
||||||
|
}
|
||||||
|
|
||||||
|
asktype() { \
|
||||||
|
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Mount a USB drive or Android device?")" || exit 1
|
||||||
|
case $choice in
|
||||||
|
USB) mountusb ;;
|
||||||
|
Android) mountandroid ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
anddrives=$(simple-mtpfs -l 2>/dev/null)
|
||||||
|
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | grep 'part\|rom' | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
|
||||||
|
|
||||||
|
if [ -z "$usbdrives" ]; then
|
||||||
|
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
|
||||||
|
echo "Android device(s) detected."
|
||||||
|
mountandroid
|
||||||
|
else
|
||||||
|
if [ -z "$anddrives" ]; then
|
||||||
|
echo "USB drive(s) detected."
|
||||||
|
mountusb
|
||||||
|
else
|
||||||
|
echo "Mountable USB drive(s) and Android device(s) detected."
|
||||||
|
asktype
|
||||||
|
fi
|
||||||
|
fi
|
||||||
6
.local/bin/dmenupass
Normal file
6
.local/bin/dmenupass
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is the SUDO_ASKPASS variable, meaning that it will be used as a
|
||||||
|
# password prompt if needed.
|
||||||
|
|
||||||
|
dmenu -fn Monospace-18 -P -p "$1" <&- && echo
|
||||||
44
.local/bin/dmenuumount
Normal file
44
.local/bin/dmenuumount
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# A dmenu prompt to unmount drives.
|
||||||
|
# Provides you with mounted partitions, select one to unmount.
|
||||||
|
# Drives mounted at /, /boot and /home will not be options to unmount.
|
||||||
|
|
||||||
|
unmountusb() {
|
||||||
|
[ -z "$drives" ] && exit
|
||||||
|
chosen="$(echo "$drives" | dmenu -i -p "Unmount which drive?")" || exit 1
|
||||||
|
chosen="$(echo "$chosen" | awk '{print $1}')"
|
||||||
|
[ -z "$chosen" ] && exit
|
||||||
|
sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted."
|
||||||
|
}
|
||||||
|
|
||||||
|
unmountandroid() { \
|
||||||
|
chosen="$(awk '/simple-mtpfs/ {print $2}' /etc/mtab | dmenu -i -p "Unmount which device?")" || exit 1
|
||||||
|
[ -z "$chosen" ] && exit
|
||||||
|
sudo -A umount -l "$chosen" && notify-send "🤖 Android unmounting" "$chosen unmounted."
|
||||||
|
}
|
||||||
|
|
||||||
|
asktype() { \
|
||||||
|
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Unmount a USB drive or Android device?")" || exit 1
|
||||||
|
case "$choice" in
|
||||||
|
USB) unmountusb ;;
|
||||||
|
Android) unmountandroid ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
drives=$(lsblk -nrpo "name,type,size,mountpoint" | awk '$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
|
||||||
|
|
||||||
|
if ! grep simple-mtpfs /etc/mtab; then
|
||||||
|
[ -z "$drives" ] && echo "No drives to unmount." && exit
|
||||||
|
echo "Unmountable USB drive detected."
|
||||||
|
unmountusb
|
||||||
|
else
|
||||||
|
if [ -z "$drives" ]
|
||||||
|
then
|
||||||
|
echo "Unmountable Android device detected."
|
||||||
|
unmountandroid
|
||||||
|
else
|
||||||
|
echo "Unmountable USB drive(s) and Android device(s) detected."
|
||||||
|
asktype
|
||||||
|
fi
|
||||||
|
fi
|
||||||
18
.local/bin/dmenuunicode
Normal file
18
.local/bin/dmenuunicode
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# The famous "get a menu of emojis to copy" script.
|
||||||
|
|
||||||
|
# Get user selection via dmenu from emoji file.
|
||||||
|
chosen=$(cut -d ';' -f1 ~/.local/share/emojis | dmenu -i -l 30 | sed "s/ .*//")
|
||||||
|
|
||||||
|
# Exit if none chosen.
|
||||||
|
[ -z "$chosen" ] && exit
|
||||||
|
|
||||||
|
# If you run this command with an argument, it will automatically insert the
|
||||||
|
# character. Otherwise, show a message that the emoji has been copied.
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
xdotool type "$chosen"
|
||||||
|
else
|
||||||
|
printf "$chosen" | xclip -selection clipboard
|
||||||
|
notify-send "'$chosen' copied to clipboard." &
|
||||||
|
fi
|
||||||
45
.local/bin/ex
Normal file
45
.local/bin/ex
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# A general, all-purpose extraction script. Not all extraction programs here
|
||||||
|
# are installed by LARBS automatically.
|
||||||
|
#
|
||||||
|
# Default behavior: Extract archive into new directory
|
||||||
|
# Behavior with `-c` option: Extract contents into current directory
|
||||||
|
|
||||||
|
while getopts "hc" o; do case "${o}" in
|
||||||
|
c) extracthere="True" ;;
|
||||||
|
*) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit 1 ;;
|
||||||
|
esac done
|
||||||
|
|
||||||
|
if [ -z "$extracthere" ]; then
|
||||||
|
archive="$(readlink -f "$*")" &&
|
||||||
|
directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
|
||||||
|
mkdir -p "$directory" &&
|
||||||
|
cd "$directory" || exit 1
|
||||||
|
else
|
||||||
|
archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z "$archive" ] && printf "Give archive to extract as argument.\\n" && exit 1
|
||||||
|
|
||||||
|
if [ -f "$archive" ] ; then
|
||||||
|
case "$archive" in
|
||||||
|
*.tar.bz2|*.tbz2) tar xvjf "$archive" ;;
|
||||||
|
*.tar.xz) tar -xf "$archive" ;;
|
||||||
|
*.tar.gz|*.tgz) tar xvzf "$archive" ;;
|
||||||
|
*.tar.zst) tar -I zstd -xf "$archive" ;;
|
||||||
|
*.lzma) unlzma "$archive" ;;
|
||||||
|
*.bz2) bunzip2 "$archive" ;;
|
||||||
|
*.rar) unrar x -ad "$archive" ;;
|
||||||
|
*.gz) gunzip "$archive" ;;
|
||||||
|
*.tar) tar xvf "$archive" ;;
|
||||||
|
*.zip) unzip "$archive" ;;
|
||||||
|
*.Z) uncompress "$archive" ;;
|
||||||
|
*.7z) 7z x "$archive" ;;
|
||||||
|
*.xz) unxz "$archive" ;;
|
||||||
|
*.exe) cabextract "$archive" ;;
|
||||||
|
*) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
printf "File \"%s\" not found.\\n" "$archive"
|
||||||
|
fi
|
||||||
22
.local/bin/leave
Normal file
22
.local/bin/leave
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# A dmenu wrapper script for system functions.
|
||||||
|
|
||||||
|
# For non-systemd init systems.
|
||||||
|
case "$(readlink -f /sbin/init)" in
|
||||||
|
*runit*) hib="sudo -A zzz" ;;
|
||||||
|
*openrc*) reb="sudo -A openrc-shutdown -r"; shut="sudo -A openrc-shutdown -p 0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cmds="\
|
||||||
|
🔒 lock slock
|
||||||
|
🚪 leave dwm kill -TERM $(pgrep -u $USER "\bdwm$")
|
||||||
|
♻ renew dwm kill -HUP $(pgrep -u $USER "\bdwm$")
|
||||||
|
🐻 hibernate slock ${hib:-systemctl suspend-then-hibernate -i}
|
||||||
|
🔃 reboot ${reb:-sudo -A reboot}
|
||||||
|
🖥 shutdown ${shut:-sudo -A shutdown -h now}
|
||||||
|
📺 display off xset dpms force off"
|
||||||
|
|
||||||
|
choice="$(echo "$cmds" | cut -d' ' -f 1 | dmenu)" || exit 1
|
||||||
|
|
||||||
|
`echo "$cmds" | grep "^$choice " | cut -d ' ' -f2-`
|
||||||
9
.local/bin/lfselect
Normal file
9
.local/bin/lfselect
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Reads file names from stdin and selects them in lf.
|
||||||
|
|
||||||
|
while read -r file; do
|
||||||
|
[ -z "$file" ] && continue
|
||||||
|
lf -remote "send select \"$file\""
|
||||||
|
lf -remote "send toggle"
|
||||||
|
done
|
||||||
23
.local/bin/linkhandler
Normal file
23
.local/bin/linkhandler
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Feed script a url or file location.
|
||||||
|
# If an image, it will view in sxiv,
|
||||||
|
# if a video or gif, it will view in mpv
|
||||||
|
# if a music file or pdf, it will download,
|
||||||
|
# otherwise it opens link in browser.
|
||||||
|
|
||||||
|
# If no url given. Opens browser. For using script as $BROWSER.
|
||||||
|
[ -z "$1" ] && { "$BROWSER"; exit; }
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
*mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*)
|
||||||
|
setsid -f mpv -quiet "$1" >/dev/null 2>&1 ;;
|
||||||
|
*png|*jpg|*jpe|*jpeg|*gif)
|
||||||
|
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
|
*pdf|*cbz|*cbr)
|
||||||
|
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
|
*mp3|*flac|*opus|*mp3?source*)
|
||||||
|
qndl "$1" 'curl -LO' >/dev/null 2>&1 ;;
|
||||||
|
*)
|
||||||
|
[ -f "$1" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$1" >/dev/null 2>&1 || setsid -f "$BROWSER" "$1" >/dev/null 2>&1
|
||||||
|
esac
|
||||||
14
.local/bin/maimpick
Normal file
14
.local/bin/maimpick
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is bound to Shift+PrintScreen by default, requires maim. It lets you
|
||||||
|
# choose the kind of screenshot to take, including copying the image or even
|
||||||
|
# highlighting an area to copy. scrotcucks on suicidewatch right now.
|
||||||
|
|
||||||
|
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)" | dmenu -l 6 -i -p "Screenshot which area?")" in
|
||||||
|
"a selected area") maim -s pic-selected-"$(date '+%y%m%d-%H%M-%S').png" ;;
|
||||||
|
"current window") maim -i "$(xdotool getactivewindow)" pic-window-"$(date '+%y%m%d-%H%M-%S').png" ;;
|
||||||
|
"full screen") maim pic-full-"$(date '+%y%m%d-%H%M-%S').png" ;;
|
||||||
|
"a selected area (copy)") maim -s | xclip -selection clipboard -t image/png ;;
|
||||||
|
"current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
|
||||||
|
"full screen (copy)") maim | xclip -selection clipboard -t image/png ;;
|
||||||
|
esac
|
||||||
17
.local/bin/newsup
Normal file
17
.local/bin/newsup
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Set as a cron job to check for new RSS entries for newsboat.
|
||||||
|
# If newsboat is open, sends it an "R" key to refresh.
|
||||||
|
|
||||||
|
ping -q -c 1 example.org > /dev/null || exit
|
||||||
|
|
||||||
|
/usr/bin/notify-send "📰 Updating RSS feeds..."
|
||||||
|
|
||||||
|
pgrep -f newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
|
||||||
|
|
||||||
|
echo 🔃 > /tmp/newsupdate
|
||||||
|
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||||
|
/usr/bin/newsboat -x reload
|
||||||
|
rm -f /tmp/newsupdate
|
||||||
|
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||||
|
/usr/bin/notify-send "📰 RSS feed update complete."
|
||||||
13
.local/bin/opout
Normal file
13
.local/bin/opout
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# opout: "open output": A general handler for opening a file's intended output,
|
||||||
|
# usually the pdf of a compiled document. I find this useful especially
|
||||||
|
# running from vim.
|
||||||
|
|
||||||
|
basename="$(echo "${*}" | sed 's/\.[^\/.]*$//')"
|
||||||
|
|
||||||
|
case "${*}" in
|
||||||
|
*.tex|*.m[dse]|*.[rR]md|*.mom|*.[0-9]) setsid -f xdg-open "$basename".pdf >/dev/null 2>&1 ;;
|
||||||
|
*.html) setsid -f "$BROWSER" "$basename".html >/dev/null 2>&1 ;;
|
||||||
|
*.sent) setsid -f sent "$1" >/dev/null 2>&1 ;;
|
||||||
|
esac
|
||||||
12
.local/bin/qndl
Normal file
12
.local/bin/qndl
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# $1 is a url; $2 is a command
|
||||||
|
[ -z "$1" ] && exit
|
||||||
|
base="$(basename "$1")"
|
||||||
|
notify-send "⏳ Queuing $base..."
|
||||||
|
cmd="$2"
|
||||||
|
[ -z "$cmd" ] && cmd="youtube-dl --add-metadata -ic"
|
||||||
|
idnum="$(tsp $cmd "$1")"
|
||||||
|
realname="$(echo "$base" | sed "s/?\(source\|dest\).*//;s/%20/ /g")"
|
||||||
|
tsp -D "$idnum" mv "$base" "$realname"
|
||||||
|
tsp -D "$idnum" notify-send "👍 $realname done."
|
||||||
14
.local/bin/queueandnotify
Normal file
14
.local/bin/queueandnotify
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Podboat sucks. This script replaces it.
|
||||||
|
# It reads the newsboat queue, queuing downloads with taskspooler.
|
||||||
|
# It also removes the junk from extentions.
|
||||||
|
queuefile="${XDG_DATA_HOME:-$HOME/.local/share}/newsboat/queue"
|
||||||
|
|
||||||
|
while read -r line; do
|
||||||
|
[ -z "$line" ] && continue
|
||||||
|
url="$(echo "$line" | awk '{print $1}')"
|
||||||
|
qndl "$url" "curl -LO"
|
||||||
|
done < "$queuefile"
|
||||||
|
|
||||||
|
echo > "$queuefile"
|
||||||
12
.local/bin/rotdir
Normal file
12
.local/bin/rotdir
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# When I open an image from the file manager in sxiv (the image viewer), I want
|
||||||
|
# to be able to press the next/previous keys to key through the rest of the
|
||||||
|
# images in the same directory. This script "rotates" the content of a
|
||||||
|
# directory based on the first chosen file, so that if I open the 15th image,
|
||||||
|
# if I press next, it will go to the 16th etc. Autistic, I know, but this is
|
||||||
|
# one of the reasons that sxiv is great for being able to read standard input.
|
||||||
|
|
||||||
|
[ -z "$1" ] && echo "usage: rotdir regex 2>&1" && exit 1
|
||||||
|
base="$(basename "$1")"
|
||||||
|
ls "$PWD" | awk -v BASE="$base" 'BEGIN { lines = ""; m = 0; } { if ($0 == BASE) { m = 1; } } { if (!m) { if (lines) { lines = lines"\n"; } lines = lines""$0; } else { print $0; } } END { print lines; }'
|
||||||
18
.local/bin/rssadd
Normal file
18
.local/bin/rssadd
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null; then
|
||||||
|
url="$1"
|
||||||
|
else
|
||||||
|
url="$(grep -Eom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$1" |
|
||||||
|
sed -E 's_^.*href="(https?://[^"]+)".*$_\1_')"
|
||||||
|
|
||||||
|
! grep "https*://\S\+\.[A-Za-z]\+\S*" <<<"$url" &&
|
||||||
|
notify-send "That doesn't look like a full URL." && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls"
|
||||||
|
if awk '{print $1}' "$RSSFILE" | grep "^$url$" >/dev/null; then
|
||||||
|
notify-send "You already have this RSS feed."
|
||||||
|
else
|
||||||
|
echo "$url" >> "$RSSFILE" && notify-send "RSS feed added."
|
||||||
|
fi
|
||||||
24
.local/bin/setbg
Normal file
24
.local/bin/setbg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script does the following:
|
||||||
|
# Run by itself, set the wallpaper (at X start).
|
||||||
|
# If given a file, set that as the new wallpaper.
|
||||||
|
# If given a directory, choose random file in it.
|
||||||
|
# If wal is installed, also generates a colorscheme.
|
||||||
|
|
||||||
|
# Location of link to wallpaper link.
|
||||||
|
bgloc="${XDG_DATA_HOME:-$HOME/.local/share/}/bg"
|
||||||
|
|
||||||
|
trueloc="$(readlink -f "$1")" &&
|
||||||
|
case "$(file --mime-type -b "$trueloc")" in
|
||||||
|
image/* ) ln -sf "$(readlink -f "$1")" "$bgloc" && notify-send -i "$bgloc" "Changing wallpaper..." ;;
|
||||||
|
inode/directory ) ln -sf "$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && notify-send -i "$bgloc" "Random Wallpaper chosen." ;;
|
||||||
|
*) notify-send "Error" "Not a valid image." ; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If pywal is installed, use it.
|
||||||
|
command -v wal >/dev/null 2>&1 &&
|
||||||
|
wal -i "$trueloc" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1 &&
|
||||||
|
pidof dwm >/dev/null && xdotool key super+F12
|
||||||
|
|
||||||
|
xwallpaper --zoom "$bgloc"
|
||||||
27
.local/bin/shortcuts
Normal file
27
.local/bin/shortcuts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
bmdirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs"
|
||||||
|
bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files"
|
||||||
|
|
||||||
|
# Output locations. Unactivated progs should go to /dev/null.
|
||||||
|
shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
||||||
|
zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
||||||
|
lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc"
|
||||||
|
|
||||||
|
# Remove, prepare files
|
||||||
|
rm -f "$lf_shortcuts" "$zsh_named_dirs" 2>/dev/null
|
||||||
|
printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
|
||||||
|
|
||||||
|
# Format the `directories` file in the correct syntax and sent it to all three configs.
|
||||||
|
eval "echo \"$(cat "$bmdirs")\"" | \
|
||||||
|
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
||||||
|
printf(\"%s=\42cd %s && ls -a\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
||||||
|
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
||||||
|
printf(\"map C%s cd \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" }"
|
||||||
|
|
||||||
|
# Format the `files` file in the correct syntax and sent it to both configs.
|
||||||
|
eval "echo \"$(cat "$bmfiles")\"" | \
|
||||||
|
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
||||||
|
printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
||||||
|
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
||||||
|
printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" }"
|
||||||
36
.local/bin/statusbar/sb-battery
Normal file
36
.local/bin/statusbar/sb-battery
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Prints all batteries, their percentage remaining and an emoji corresponding
|
||||||
|
# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.).
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
3) notify-send "🔋 Battery module" "🔋: discharging
|
||||||
|
🛑: not charging
|
||||||
|
♻: stagnant charge
|
||||||
|
🔌: charging
|
||||||
|
⚡: charged
|
||||||
|
❗: battery very low!
|
||||||
|
- Scroll to change adjust xbacklight." ;;
|
||||||
|
4) xbacklight -inc 10 ;;
|
||||||
|
5) xbacklight -dec 10 ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Loop through all attached batteries and format the info
|
||||||
|
for battery in /sys/class/power_supply/BAT?*; do
|
||||||
|
# If non-first battery, print a space separator.
|
||||||
|
[ -n "${capacity+x}" ] && printf " "
|
||||||
|
# Sets up the status and capacity
|
||||||
|
case "$(cat "$battery/status")" in
|
||||||
|
"Full") status="⚡" ;;
|
||||||
|
"Discharging") status="🔋" ;;
|
||||||
|
"Charging") status="🔌" ;;
|
||||||
|
"Not charging") status="🛑" ;;
|
||||||
|
"Unknown") status="♻️" ;;
|
||||||
|
esac
|
||||||
|
capacity=$(cat "$battery/capacity")
|
||||||
|
# Will make a warn variable if discharging and low
|
||||||
|
[ "$status" = "🔋" ] && [ "$capacity" -le 25 ] && warn="❗"
|
||||||
|
# Prints the info
|
||||||
|
printf "%s%s%d%%" "$status" "$warn" "$capacity"; unset warn
|
||||||
|
done && exit 0
|
||||||
29
.local/bin/statusbar/sb-clock
Normal file
29
.local/bin/statusbar/sb-clock
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
clock=$(date '+%I')
|
||||||
|
|
||||||
|
case "$clock" in
|
||||||
|
"00") icon="🕛" ;;
|
||||||
|
"01") icon="🕐" ;;
|
||||||
|
"02") icon="🕑" ;;
|
||||||
|
"03") icon="🕒" ;;
|
||||||
|
"04") icon="🕓" ;;
|
||||||
|
"05") icon="🕔" ;;
|
||||||
|
"06") icon="🕕" ;;
|
||||||
|
"07") icon="🕖" ;;
|
||||||
|
"08") icon="🕗" ;;
|
||||||
|
"09") icon="🕘" ;;
|
||||||
|
"10") icon="🕙" ;;
|
||||||
|
"11") icon="🕚" ;;
|
||||||
|
"12") icon="🕛" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;;
|
||||||
|
2) setsid -f "$TERMINAL" -e calcurse ;;
|
||||||
|
3) notify-send "📅 Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\`
|
||||||
|
- Middle click opens calcurse if installed" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
date "+%Y %b %d (%a) $icon%I:%M%p"
|
||||||
12
.local/bin/statusbar/sb-cpu
Normal file
12
.local/bin/statusbar/sb-cpu
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "🖥 CPU hogs" "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)\\n(100% per core)" ;;
|
||||||
|
2) setsid -f "$TERMINAL" -e htop ;;
|
||||||
|
3) notify-send "🖥 CPU module " "\- Shows CPU temperature.
|
||||||
|
- Click to show intensive processes.
|
||||||
|
- Middle click to open htop." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
sensors | awk '/Core 0/ {print "🌡" $3}'
|
||||||
44
.local/bin/statusbar/sb-cpubars
Normal file
44
.local/bin/statusbar/sb-cpubars
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Module showing CPU load as a changing bars.
|
||||||
|
# Just like in polybar.
|
||||||
|
# Each bar represents amount of load on one core since
|
||||||
|
# last run.
|
||||||
|
|
||||||
|
# Cache in tmpfs to improve speed and reduce SSD load
|
||||||
|
cache=/tmp/cpubarscache
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
2) setsid -f "$TERMINAL" -e htop ;;
|
||||||
|
3) notify-send "🪨 CPU load module" "Each bar represents
|
||||||
|
one CPU core";;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# id total idle
|
||||||
|
stats=$(awk '/cpu[0-9]+/ {printf "%d %d %d\n", substr($1,4), ($2 + $3 + $4 + $5), $5 }' /proc/stat)
|
||||||
|
[ ! -f $cache ] && echo "$stats" > "$cache"
|
||||||
|
old=$(cat "$cache")
|
||||||
|
printf "🪨"
|
||||||
|
echo "$stats" | while read -r row; do
|
||||||
|
id=${row%% *}
|
||||||
|
rest=${row#* }
|
||||||
|
total=${rest%% *}
|
||||||
|
idle=${rest##* }
|
||||||
|
|
||||||
|
case "$(echo "$old" | awk '{if ($1 == id)
|
||||||
|
printf "%d\n", (1 - (idle - $3) / (total - $2))*100 /12.5}' \
|
||||||
|
id="$id" total="$total" idle="$idle")" in
|
||||||
|
|
||||||
|
"0") printf "▁";;
|
||||||
|
"1") printf "▂";;
|
||||||
|
"2") printf "▃";;
|
||||||
|
"3") printf "▄";;
|
||||||
|
"4") printf "▅";;
|
||||||
|
"5") printf "▆";;
|
||||||
|
"6") printf "▇";;
|
||||||
|
"7") printf "█";;
|
||||||
|
"8") printf "█";;
|
||||||
|
esac
|
||||||
|
done; printf "\\n"
|
||||||
|
echo "$stats" > "$cache"
|
||||||
23
.local/bin/statusbar/sb-disk
Normal file
23
.local/bin/statusbar/sb-disk
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Status bar module for disk space
|
||||||
|
# $1 should be drive mountpoint, otherwise assumed /.
|
||||||
|
|
||||||
|
location=${1:-/}
|
||||||
|
|
||||||
|
[ -d "$location" ] || exit
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "💽 Disk space" "$(df -h --output=target,used,size)" ;;
|
||||||
|
3) notify-send "💽 Disk module" "\- Shows used hard drive space.
|
||||||
|
- Click to show all disk info." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$location" in
|
||||||
|
"/home"* ) icon="🏠" ;;
|
||||||
|
"/mnt"* ) icon="💾" ;;
|
||||||
|
*) icon="🖥";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
printf "%s: %s\n" "$icon" "$(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')"
|
||||||
35
.local/bin/statusbar/sb-forecast
Normal file
35
.local/bin/statusbar/sb-forecast
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays todays precipication chance (☔) and daily low (🥶) and high (🌞).
|
||||||
|
# Usually intended for the statusbar.
|
||||||
|
|
||||||
|
# If we have internet, get a weather report from wttr.in and store it locally.
|
||||||
|
# You could set up a shell alias to view the full file in a pager in the
|
||||||
|
# terminal if desired. This function will only be run once a day when needed.
|
||||||
|
weatherreport="${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport"
|
||||||
|
getforecast() { curl -sf "wttr.in/$LOCATION" > "$weatherreport" || exit 1 ;}
|
||||||
|
|
||||||
|
# Some very particular and terse stream manipulation. We get the maximum
|
||||||
|
# precipitation chance and the daily high and low from the downloaded file and
|
||||||
|
# display them with coresponding emojis.
|
||||||
|
showweather() { printf "%s" "$(sed '16q;d' "$weatherreport" |
|
||||||
|
grep -wo "[0-9]*%" | sort -rn | sed "s/^/☔/g;1q" | tr -d '\n')"
|
||||||
|
sed '13q;d' "$weatherreport" | grep -o "m\\([-+]\\)*[0-9]\\+" | sed 's/+//g' | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " 🥶" $1 "°","🌞" $2 "°"}' ;}
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e less -Srf "$weatherreport" ;;
|
||||||
|
2) getforecast && showweather ;;
|
||||||
|
3) notify-send "🌈 Weather module" "\- Left click for full forecast.
|
||||||
|
- Middle click to update forecast.
|
||||||
|
☔: Chance of rain/snow
|
||||||
|
🥶: Daily low
|
||||||
|
🌞: Daily high" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# The test if our forcecast is updated to the day. If it isn't download a new
|
||||||
|
# weather report from wttr.in with the above function.
|
||||||
|
[ "$(stat -c %y "$weatherreport" 2>/dev/null | cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ] ||
|
||||||
|
getforecast
|
||||||
|
|
||||||
|
showweather
|
||||||
24
.local/bin/statusbar/sb-internet
Normal file
24
.local/bin/statusbar/sb-internet
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Show wifi 📶 and percent strength or 📡 if none.
|
||||||
|
# Show 🌐 if connected to ethernet or ❎ if none.
|
||||||
|
# Show 🔒 if a vpn connection is active
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) "$TERMINAL" -e nmtui; pkill -RTMIN+4 dwmblocks ;;
|
||||||
|
3) notify-send "🌐 Internet module" "\- Click to connect
|
||||||
|
📡: no wifi connection
|
||||||
|
📶: wifi connection with quality
|
||||||
|
❎: no ethernet
|
||||||
|
🌐: ethernet working
|
||||||
|
🔒: vpn is active
|
||||||
|
" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$(cat /sys/class/net/w*/operstate 2>/dev/null)" in
|
||||||
|
down) wifiicon="📡 " ;;
|
||||||
|
up) wifiicon="$(awk '/^\s*w/ { print "📶", int($3 * 100 / 70) "% " }' /proc/net/wireless)" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
printf "%s%s%s\n" "$wifiicon" "$(sed "s/down/❎/;s/up/🌐/" /sys/class/net/e*/operstate 2>/dev/null)" "$(sed "s/.*/🔒/" /sys/class/net/tun*/operstate 2>/dev/null)"
|
||||||
10
.local/bin/statusbar/sb-iplocate
Normal file
10
.local/bin/statusbar/sb-iplocate
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Gets your public ip address checks which country you are in and
|
||||||
|
# displays that information in the statusbar
|
||||||
|
#
|
||||||
|
# https://www.maketecheasier.com/ip-address-geolocation-lookups-linux/
|
||||||
|
|
||||||
|
ifinstalled "geoip" || exit
|
||||||
|
addr="$(curl ifconfig.me 2>/dev/null)" || exit
|
||||||
|
grep "flag: " "${XDG_DATA_HOME:-$HOME/.local/share}/larbs/emoji" | grep "$(geoiplookup "$addr" | sed 's/.*, //')" | sed "s/flag: //;s/;.*//"
|
||||||
16
.local/bin/statusbar/sb-kbselect
Normal file
16
.local/bin/statusbar/sb-kbselect
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# works on any init system
|
||||||
|
# requirements: dmenu, xorg-setxkbmap
|
||||||
|
kb="$(setxkbmap -query | grep -oP 'layout:\s*\K\w+')" || exit 1
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) kb_choice="$(awk '/! layout/{flag=1; next} /! variant/{flag=0} flag {print $2, "- " $1}' /usr/share/X11/xkb/rules/base.lst | dmenu -l 15)"
|
||||||
|
kb="$(echo "$kb_choice" | awk '{print $3}')"
|
||||||
|
setxkbmap "$kb"
|
||||||
|
pkill -RTMIN+30 "${STATUSBAR:-dwmblocks}";;
|
||||||
|
3) notify-send "⌨ Keyboard/language module" "$(printf "%s" "\- Current layout: $(setxkbmap -query | grep -oP 'layout:\s*\K\w+')")
|
||||||
|
- Left click to change keyboard.";;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "$kb"
|
||||||
20
.local/bin/statusbar/sb-mailbox
Normal file
20
.local/bin/statusbar/sb-mailbox
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays number of unread mail and an loading icon if updating.
|
||||||
|
# When clicked, brings up `neomutt`.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e neomutt ;;
|
||||||
|
2) setsid -f mw sync >/dev/null ;;
|
||||||
|
3) notify-send "📬 Mail module" "\- Shows unread mail
|
||||||
|
- Shows 🔃 if syncing mail
|
||||||
|
- Left click opens neomutt
|
||||||
|
- Middle click syncs mail" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
unread="$(find "${XDG_DATA_HOME:-$HOME/.local/share}"/mail/*/[Ii][Nn][Bb][Oo][Xx]/new/* -type f | wc -l 2>/dev/null)"
|
||||||
|
|
||||||
|
pidof mbsync >/dev/null 2>&1 && icon="🔃"
|
||||||
|
|
||||||
|
[ "$unread" = "0" ] && [ "$icon" = "" ] || echo "📬$unread$icon"
|
||||||
12
.local/bin/statusbar/sb-memory
Normal file
12
.local/bin/statusbar/sb-memory
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "🧠 Memory hogs" "$(ps axch -o cmd:15,%mem --sort=-%mem | head)" ;;
|
||||||
|
2) setsid -f "$TERMINAL" -e htop ;;
|
||||||
|
3) notify-send "🧠 Memory module" "\- Shows Memory Used/Total.
|
||||||
|
- Click to show memory hogs.
|
||||||
|
- Middle click to open htop." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
free --mebi | sed -n '2{p;q}' | awk '{printf ("🧠%2.2fGiB/%2.2fGiB\n", ( $3 / 1024), ($2 / 1024))}'
|
||||||
37
.local/bin/statusbar/sb-moonphase
Normal file
37
.local/bin/statusbar/sb-moonphase
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Shows the current moon phase.
|
||||||
|
|
||||||
|
moonfile="${XDG_DATA_HOME:-$HOME/.local/share}/moonphase"
|
||||||
|
|
||||||
|
[ "$(stat -c %y "$moonfile" 2>/dev/null | cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ] ||
|
||||||
|
{ curl -sf "wttr.in/?format=%m" > "$moonfile" || exit 1 ;}
|
||||||
|
|
||||||
|
icon="$(cat "$moonfile")"
|
||||||
|
|
||||||
|
case "$icon" in
|
||||||
|
🌑) name="New" ;;
|
||||||
|
🌒) name="Waxing Crescent" ;;
|
||||||
|
🌓) name="First Quarter" ;;
|
||||||
|
🌔) name="Waxing Gibbous" ;;
|
||||||
|
🌕) name="Full" ;;
|
||||||
|
🌖) name="Waning Gibbous" ;;
|
||||||
|
🌗) name="Last Quarter" ;;
|
||||||
|
🌘) name="Waning Crescent" ;;
|
||||||
|
*) exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "${icon-?}"
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
3) notify-send "🌜 Moon phase module" "Displays current moon phase.
|
||||||
|
- 🌑: New
|
||||||
|
- 🌒: Waxing Crescent
|
||||||
|
- 🌓: First Quarter
|
||||||
|
- 🌔: Waxing Gibbous
|
||||||
|
- 🌕: Full
|
||||||
|
- 🌖: Waning Gibbous
|
||||||
|
- 🌗: Last Quarter
|
||||||
|
- 🌘: Waning Crescent" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
8
.local/bin/statusbar/sb-mpdup
Normal file
8
.local/bin/statusbar/sb-mpdup
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This loop will update the mpd statusbar module whenever a command changes the
|
||||||
|
# music player's status. mpd must be running on X's start for this to work.
|
||||||
|
|
||||||
|
while : ; do
|
||||||
|
mpc idle >/dev/null && kill -45 "$(pidof "${STATUSBAR:-dwmblocks}")" || break
|
||||||
|
done
|
||||||
19
.local/bin/statusbar/sb-music
Normal file
19
.local/bin/statusbar/sb-music
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
filter() { mpc | sed "/^volume:/d;s/\\&/&/g;s/\\[paused\\].*/⏸/g;/\\[playing\\].*/d" | paste -sd ' ' -;}
|
||||||
|
|
||||||
|
pidof -x sb-mpdup >/dev/null 2>&1 || sb-mpdup >/dev/null 2>&1 &
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) mpc status | filter ; setsid -f "$TERMINAL" -e ncmpcpp ;; # right click, pause/unpause
|
||||||
|
2) mpc toggle | filter ;; # right click, pause/unpause
|
||||||
|
3) mpc status | filter ; notify-send "🎵 Music module" "\- Shows mpd song playing.
|
||||||
|
- ⏸ when paused.
|
||||||
|
- Left click opens ncmpcpp.
|
||||||
|
- Middle click pauses.
|
||||||
|
- Scroll changes track.";; # right click, pause/unpause
|
||||||
|
4) mpc prev | filter ;; # scroll up, previous
|
||||||
|
5) mpc next | filter ;; # scroll down, next
|
||||||
|
6) mpc status | filter ; "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
*) mpc status | filter ;;
|
||||||
|
esac
|
||||||
29
.local/bin/statusbar/sb-nettraf
Normal file
29
.local/bin/statusbar/sb-nettraf
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Module showing network traffic. Shows how much data has been received (RX) or
|
||||||
|
# transmitted (TX) since the previous time this script ran. So if run every
|
||||||
|
# second, gives network traffic per second.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e bmon ;;
|
||||||
|
3) notify-send "🌐 Network traffic module" "🔻: Traffic received
|
||||||
|
🔺: Traffic transmitted" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
update() {
|
||||||
|
sum=0
|
||||||
|
for arg; do
|
||||||
|
read -r i < "$arg"
|
||||||
|
sum=$(( sum + i ))
|
||||||
|
done
|
||||||
|
cache=${XDG_CACHE_HOME:-$HOME/.cache}/${1##*/}
|
||||||
|
[ -f "$cache" ] && read -r old < "$cache" || old=0
|
||||||
|
printf %d\\n "$sum" > "$cache"
|
||||||
|
printf %d\\n $(( sum - old ))
|
||||||
|
}
|
||||||
|
|
||||||
|
rx=$(update /sys/class/net/[ew]*/statistics/rx_bytes)
|
||||||
|
tx=$(update /sys/class/net/[ew]*/statistics/tx_bytes)
|
||||||
|
|
||||||
|
printf "🔻%4sB 🔺%4sB\\n" $(numfmt --to=iec $rx) $(numfmt --to=iec $tx)
|
||||||
17
.local/bin/statusbar/sb-news
Normal file
17
.local/bin/statusbar/sb-news
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays number of unread news items and an loading icon if updating.
|
||||||
|
# When clicked, brings up `newsboat`.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e newsboat ;;
|
||||||
|
2) setsid -f newsup >/dev/null exit ;;
|
||||||
|
3) notify-send "📰 News module" "\- Shows unread news items
|
||||||
|
- Shows 🔃 if updating with \`newsup\`
|
||||||
|
- Left click opens newsboat
|
||||||
|
- Middle click syncs RSS feeds
|
||||||
|
<b>Note:</b> Only one instance of newsboat (including updates) may be running at a time." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat /tmp/newsupdate 2>/dev/null || echo "$(newsboat -x print-unread | awk '{ if($1>0) print "📰" $1}')$(cat "${XDG_CONFIG_HOME:-$HOME/.config}"/newsboat/.update 2>/dev/null)"
|
||||||
29
.local/bin/statusbar/sb-pacpackages
Normal file
29
.local/bin/statusbar/sb-pacpackages
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays number of upgradeable packages.
|
||||||
|
# For this to work, have a `pacman -Sy` command run in the background as a
|
||||||
|
# cronjob every so often as root. This script will then read those packages.
|
||||||
|
# When clicked, it will run an upgrade via pacman.
|
||||||
|
#
|
||||||
|
# Add the following text as a file in /usr/share/libalpm/hooks/statusbar.hook:
|
||||||
|
#
|
||||||
|
# [Trigger]
|
||||||
|
# Operation = Upgrade
|
||||||
|
# Type = Package
|
||||||
|
# Target = *
|
||||||
|
#
|
||||||
|
# [Action]
|
||||||
|
# Description = Updating statusbar...
|
||||||
|
# When = PostTransaction
|
||||||
|
# Exec = /usr/bin/pkill -RTMIN+8 dwmblocks # Or i3blocks if using i3.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e sb-popupgrade ;;
|
||||||
|
2) notify-send "$(/usr/bin/pacman -Qu)" ;;
|
||||||
|
3) notify-send "🎁 Upgrade module" "📦: number of upgradable packages
|
||||||
|
- Left click to upgrade packages
|
||||||
|
- Middle click to show upgradable packages" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
pacman -Qu | grep -Fcv "[ignored]" | sed "s/^/📦/;s/^📦0$//g"
|
||||||
9
.local/bin/statusbar/sb-popupgrade
Normal file
9
.local/bin/statusbar/sb-popupgrade
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
printf "Beginning upgrade.\\n"
|
||||||
|
|
||||||
|
yay -Syu
|
||||||
|
pkill -RTMIN+8 "${STATUSBAR:-dwmblocks}"
|
||||||
|
|
||||||
|
printf "\\nUpgrade complete.\\nPress <Enter> to exit window.\\n\\n"
|
||||||
|
read -r _
|
||||||
20
.local/bin/statusbar/sb-tasks
Normal file
20
.local/bin/statusbar/sb-tasks
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Originally by Andr3as07 <https://github.com/Andr3as07>
|
||||||
|
# Some changes by Luke
|
||||||
|
# Rebuild by Tenyun
|
||||||
|
|
||||||
|
# This block displays the number running background tasks. Requires tsp.
|
||||||
|
|
||||||
|
num=$(tsp -l | awk -v numr=0 -v numq=0 '{if (/running/)numr++; if (/queued/)numq++} END{print numr+numq"("numq")"}')
|
||||||
|
|
||||||
|
# Handle mouse clicks
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e tsp -l ;;
|
||||||
|
3) notify-send "Tasks module" "🤖: number of running/queued background tasks
|
||||||
|
- Left click opens tsp" ;; # Right click
|
||||||
|
2) $EDITOR "$0" ;; # Middle click
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ "$num" != "0(0)" ] &&
|
||||||
|
echo "🤖$num"
|
||||||
28
.local/bin/statusbar/sb-volume
Normal file
28
.local/bin/statusbar/sb-volume
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Prints the current volume or 🔇 if muted.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e pulsemixer ;;
|
||||||
|
2) pamixer -t ;;
|
||||||
|
4) pamixer --allow-boost -i 1 ;;
|
||||||
|
5) pamixer --allow-boost -d 1 ;;
|
||||||
|
3) notify-send "📢 Volume module" "\- Shows volume 🔊, 🔇 if muted.
|
||||||
|
- Middle click to mute.
|
||||||
|
- Scroll to change." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ $(pamixer --get-mute) = true ] && echo 🔇 && exit
|
||||||
|
|
||||||
|
vol="$(pamixer --get-volume)"
|
||||||
|
|
||||||
|
if [ "$vol" -gt "70" ]; then
|
||||||
|
icon="🔊"
|
||||||
|
elif [ "$vol" -lt "30" ]; then
|
||||||
|
icon="🔈"
|
||||||
|
else
|
||||||
|
icon="🔉"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$icon$vol%"
|
||||||
67
.local/bin/tag
Normal file
67
.local/bin/tag
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
err() { echo "Usage:
|
||||||
|
tag [OPTIONS] file
|
||||||
|
Options:
|
||||||
|
-a: artist/author
|
||||||
|
-t: song/chapter title
|
||||||
|
-A: album/book title
|
||||||
|
-n: track/chapter number
|
||||||
|
-N: total number of tracks/chapters
|
||||||
|
-d: year of publication
|
||||||
|
-g: genre
|
||||||
|
-c: comment
|
||||||
|
You will be prompted for title, artist, album and track if not given." && exit 1 ;}
|
||||||
|
|
||||||
|
while getopts "a:t:A:n:N:d:g:c:f:" o; do case "${o}" in
|
||||||
|
a) artist="${OPTARG}" ;;
|
||||||
|
t) title="${OPTARG}" ;;
|
||||||
|
A) album="${OPTARG}" ;;
|
||||||
|
n) track="${OPTARG}" ;;
|
||||||
|
N) total="${OPTARG}" ;;
|
||||||
|
d) date="${OPTARG}" ;;
|
||||||
|
g) genre="${OPTARG}" ;;
|
||||||
|
c) comment="${OPTARG}" ;;
|
||||||
|
f) file="${OPTARG}" ;;
|
||||||
|
*) printf "Invalid option: -%s\\n" "$OPTARG" && err ;;
|
||||||
|
esac done
|
||||||
|
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
|
file="$1"
|
||||||
|
|
||||||
|
[ ! -f "$file" ] && echo "Provide file to tag." && err
|
||||||
|
|
||||||
|
[ -z "$title" ] && echo "Enter a title." && read -r title
|
||||||
|
[ -z "$artist" ] && echo "Enter an artist." && read -r artist
|
||||||
|
[ -z "$album" ] && echo "Enter an album." && read -r album
|
||||||
|
[ -z "$track" ] && echo "Enter a track number." && read -r track
|
||||||
|
|
||||||
|
case "$file" in
|
||||||
|
*.ogg) echo "Title=$title
|
||||||
|
Artist=$artist
|
||||||
|
Album=$album
|
||||||
|
Track=$track
|
||||||
|
Total=$total
|
||||||
|
Date=$date
|
||||||
|
Genre=$genre
|
||||||
|
Comment=$comment" | vorbiscomment -w "$file" ;;
|
||||||
|
*.opus) echo "Title=$title
|
||||||
|
Artist=$artist
|
||||||
|
Album=$album
|
||||||
|
Track=$track
|
||||||
|
Total=$total
|
||||||
|
Date=$date
|
||||||
|
Genre=$genre
|
||||||
|
Comment=$comment" | opustags -i -S "$file" ;;
|
||||||
|
*.mp3) eyeD3 -Q --remove-all -a "$artist" -A "$album" -t "$title" -n "$track" -N "$total" -Y "$date" "$file" ;;
|
||||||
|
*.flac) echo "TITLE=$title
|
||||||
|
ARTIST=$artist
|
||||||
|
ALBUM=$album
|
||||||
|
TRACKNUMBER=$track
|
||||||
|
TOTALTRACKS=$total
|
||||||
|
DATE=$date
|
||||||
|
GENRE=$genre
|
||||||
|
DESCRIPTION=$comment" | metaflac --remove-all-tags --import-tags-from=- "$file" ;;
|
||||||
|
*) echo "File type not implemented yet." ;;
|
||||||
|
esac
|
||||||
15
.local/bin/texclear
Normal file
15
.local/bin/texclear
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Clears the build files of a LaTeX/XeLaTeX build.
|
||||||
|
# I have vim run this file whenever I exit a .tex file.
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
*.tex)
|
||||||
|
file=$(readlink -f "$1")
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base="${file%.*}"
|
||||||
|
find "$dir" -maxdepth 1 -type f -regextype gnu-awk -regex "^$base\\.(4tc|xref|tmp|pyc|pyg|pyo|fls|vrb|fdb_latexmk|bak|swp|aux|log|synctex\\(busy\\)|lof|lot|maf|idx|mtc|mtc0|nav|out|snm|toc|bcf|run\\.xml|synctex\\.gz|blg|bbl)" -delete
|
||||||
|
rm -rdf "$dir/_minted-$(basename -- $base)"
|
||||||
|
;;
|
||||||
|
*) printf "Give .tex file as argument.\\n" ;;
|
||||||
|
esac
|
||||||
4
.local/share/applications/file.desktop
Normal file
4
.local/share/applications/file.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=File Manager
|
||||||
|
Exec=/usr/bin/alacritty -e lf %u
|
||||||
4
.local/share/applications/img.desktop
Normal file
4
.local/share/applications/img.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Image viewer
|
||||||
|
Exec=/usr/bin/sxiv -a %f
|
||||||
4
.local/share/applications/mail.desktop
Normal file
4
.local/share/applications/mail.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Mail
|
||||||
|
Exec=/usr/bin/alacritty -e neomutt %u
|
||||||
4
.local/share/applications/pdf.desktop
Normal file
4
.local/share/applications/pdf.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=PDF reader
|
||||||
|
Exec=/usr/bin/zathura %u
|
||||||
4
.local/share/applications/rss.desktop
Normal file
4
.local/share/applications/rss.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=RSS feed addition
|
||||||
|
Exec=/usr/bin/env rssadd %U
|
||||||
4
.local/share/applications/text.desktop
Normal file
4
.local/share/applications/text.desktop
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Text editor
|
||||||
|
Exec=/usr/bin/alacritty -e nvim %u
|
||||||
3076
.local/share/emojis
Normal file
3076
.local/share/emojis
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user