summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <ivi@vinkies.net>2025-06-17 10:09:46 +0200
committerMike Vink <ivi@vinkies.net>2025-06-17 10:09:46 +0200
commite196f039670d8fb4087d47899eed5a1f0f9128aa (patch)
tree241089fbfffd4a7c3e799c3a2ff2cbd630c8bb1a
parent4c9ba1cd0cf3e0fc3653c5e0588a0a4e54f5524f (diff)
using linux again
-rw-r--r--.config/bash/bashrc19
-rw-r--r--.config/dunst/dunstrc27
-rw-r--r--.config/kak/autoload/files.kak63
-rw-r--r--.config/kak/kakrc2
-rw-r--r--.config/khal/config11
-rw-r--r--.config/ksh/ksh.kshrc2
-rw-r--r--.config/mimeapps.list20
-rw-r--r--.config/newsboat/urls1
-rw-r--r--.config/shell/aliasrc2
-rw-r--r--.config/shell/inputrc3
-rw-r--r--.config/shell/profile13
-rw-r--r--.config/x11/xprofile7
-rw-r--r--.editorconfig2
-rwxr-xr-x.local/bin/cal-ics-combine10
-rwxr-xr-x.local/bin/container.d/xdg-open5
-rwxr-xr-x.local/bin/e5
-rwxr-xr-x.local/bin/list-glyphs28
-rwxr-xr-x.local/bin/mailsync112
-rwxr-xr-x.local/bin/mutt-limit-from5
-rwxr-xr-x.local/bin/sb-clock8
-rwxr-xr-x.local/bin/sysact30
-rw-r--r--.local/share/applications/file.desktop4
-rw-r--r--.local/share/applications/img.desktop4
-rw-r--r--.local/share/applications/mail.desktop4
-rw-r--r--.local/share/applications/pdf.desktop4
-rw-r--r--.local/share/applications/rss.desktop4
-rw-r--r--.local/share/applications/text.desktop4
-rw-r--r--.local/share/applications/torrent.desktop4
-rw-r--r--.local/share/applications/video.desktop4
29 files changed, 273 insertions, 134 deletions
diff --git a/.config/bash/bashrc b/.config/bash/bashrc
index 81af60d..e520f97 100644
--- a/.config/bash/bashrc
+++ b/.config/bash/bashrc
@@ -1,7 +1,18 @@
if [ -f ~/.local.bashrc ]; then
. ~/.local.bashrc
fi
-# clear screen and save scrollback
-clear() {
- printf "\e[H\e[22J"
-}
+if [ "$TERM" != "st-256color" ]; then
+ # clear screen and save scrollback
+ clear() {
+ printf "\e[H\e[22J"
+ }
+fi
+
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
+
+export PS1='\[\e]0;\w $(test "$IN_KAKOUNE_CONNECT" && printf '%s' "- $KAKOUNE_CLIENT@[$KAKOUNE_SESSION]")$(test "$TERM" && printf '%s' "- $TERM")\a\]\n\[\e[32m\]\u@\h \e[34m$(test "$IN_KAKOUNE_CONNECT" && printf '%s' "¶$KAKOUNE_SESSION") \[\e[33m\]\w\[\e[0m\]\n\[\e[1;36;1m\]λ\[\e[0m\] '
+export PROMPT_DIRTRIM=3
+export PROMPT_COMMAND='history -a'
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..f78e4d8
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,27 @@
+[global]
+ monitor = 0
+ follow = keyboard
+ width = 370
+ height = (0,350)
+ offset = (0,19)
+ padding = 2
+ horizontal_padding = 2
+ transparency = 0
+ font = Monospace 12
+ format = "<b>%s</b>\n%b"
+
+[urgency_low]
+ background = "#1d2021"
+ foreground = "#928374"
+ timeout = 3
+
+[urgency_normal]
+ foreground = "#ebdbb2"
+ background = "#458588"
+ timeout = 5
+
+[urgency_critical]
+ background = "#1cc24d"
+ foreground = "#ebdbb2"
+ frame_color = "#fabd2f"
+ timeout = 10
diff --git a/.config/kak/autoload/files.kak b/.config/kak/autoload/files.kak
new file mode 100644
index 0000000..bb786e4
--- /dev/null
+++ b/.config/kak/autoload/files.kak
@@ -0,0 +1,63 @@
+map -docstring "file (default)" global goto '<a-f>' '<esc>gf'
+map -docstring "file (expanded)" global goto 'f' '<esc>: search-file %val{selection}<ret>'
+
+define-command -docstring \
+"search-file <filename>: search for file recusively under path option: %opt{path}" \
+search-file -params 1 -override %{ evaluate-commands %sh{
+ if [ -n "$(command -v fd)" ]; then # create find command template
+ find='fd -L --type f "${file}" "${path}"' # if `fd' is installed it will
+ else # be used because it is faster
+ find='find -L "${path}" -mount -type f -name "${file}"' # if not, we fallback to find.
+ fi
+
+ file=$(eval echo "$1")
+
+ eval "set -- ${kak_quoted_buflist}"
+ while [ $# -gt 0 ]; do # Check if buffer with this
+ if [ "${file}" = "$1" ]; then # file already exists. Basically
+ printf "%s\n" "buffer $1" # emulating what edit command does
+ exit
+ fi
+ shift
+ done
+
+ if [ -e "${file}" ]; then # Test if file exists under
+ printf "%s\n" "edit -existing %{${file}}" # servers' working directory
+ exit # this is last resort until
+ fi # we start recursive searchimg
+
+ # if everthing above fails - search for file under `path'
+ eval "set -- ${kak_quoted_opt_path}"
+ while [ $# -gt 0 ]; do # Since we want to check fewer places,
+ case $1 in # I've swapped ./ and %/ because
+ (./) path=${kak_buffile%/*} ;; # %/ usually has smaller scope. So
+ (%/) path=${PWD} ;; # this trick is a speedi-up hack.
+ (*) path=$1 ;; # This means that `path' option should
+ esac # first contain `./' and then `%/'
+
+ if [ -z "${file##*/*}" ] && [ -e "${path}/${file}" ]; then
+ printf "%s\n" "edit -existing %{${path}/${file}}"
+ exit
+ else
+ # build list of candidates or automatically select if only one found
+ # this doesn't support files with newlines in them unfortunately
+ IFS='
+'
+ for candidate in $(eval "${find}"); do
+ [ -n "${candidate}" ] && candidates="${candidates} %{${candidate}} %{evaluate-commands %{edit -existing %{${candidate}}}}"
+ done
+
+ # we want to get out as early as possible
+ # so if any candidate found in current cycle
+ # we prompt it in menu and exit
+ if [ -n "${candidates}" ]; then
+ printf "%s\n" "menu -auto-single ${candidates}"
+ exit
+ fi
+ fi
+
+ shift
+ done
+
+ printf "%s\n" "echo -markup %{{Error}unable to find file '${file}'}"
+}}
diff --git a/.config/kak/kakrc b/.config/kak/kakrc
index e3ba67f..9f5a6cc 100644
--- a/.config/kak/kakrc
+++ b/.config/kak/kakrc
@@ -1,6 +1,8 @@
colorscheme gruber-darker
add-highlighter global/ number-lines -relative
+hook -once global KakBegin .* %{ require-module connect }
+
set-option global toolsclient t
set-option global jumpclient j
set-option global docsclient d
diff --git a/.config/khal/config b/.config/khal/config
new file mode 100644
index 0000000..28b3b46
--- /dev/null
+++ b/.config/khal/config
@@ -0,0 +1,11 @@
+[default]
+ default_calendar = home
+[calendars]
+ [[home]]
+ path = ~/Sync/pim/home
+ color = dark green
+ priority = 20
+ [[work]]
+ path = ~/Sync/pim/work
+ color = dark cyan
+ priority = 30
diff --git a/.config/ksh/ksh.kshrc b/.config/ksh/ksh.kshrc
index c65df65..d7e9c8e 100644
--- a/.config/ksh/ksh.kshrc
+++ b/.config/ksh/ksh.kshrc
@@ -15,7 +15,7 @@ lfcd () {
fi
}
clear-screen-saving-contents-in-scrollback() {
- sh -c 'printf "\e[H\e[22J"'
+ oksh -c 'printf "\e[H\e[22J"'
}
# Loses kill buffer which is a bit sad.
bind -m ^L="^E ^A^K clear-screen-saving-contents-in-scrollback^J^Y^B^D"
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..9124fce
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,20 @@
+[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/magnet=torrent.desktop;
+application/x-bittorrent=torrent.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
+video/mp4=video.desktop
+x-scheme-handler/lbry=lbry.desktop
+inode/directory=file.desktop
diff --git a/.config/newsboat/urls b/.config/newsboat/urls
index e69de29..c869c39 100644
--- a/.config/newsboat/urls
+++ b/.config/newsboat/urls
@@ -0,0 +1 @@
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
index 480d532..db026ab 100644
--- a/.config/shell/aliasrc
+++ b/.config/shell/aliasrc
@@ -5,8 +5,6 @@ alias s="{ git status --short ; git log --oneline @{push}.. ; }"
alias ga="git add "
alias gc="git commit "
alias d="docker "
-# alias k="kak "
alias d=' echo cd $PWD | kak -p s; eval "[ -n \"$(jobs)\" ] && fg" '
alias b=' eval "$(cd-kak-buf)"'
-alias e='$EDITOR '
alias z='zathura '
diff --git a/.config/shell/inputrc b/.config/shell/inputrc
index 9119437..e13e65f 100644
--- a/.config/shell/inputrc
+++ b/.config/shell/inputrc
@@ -1,8 +1,9 @@
+$include /etc/inputrc
set bind-tty-special-chars off
set show-all-if-ambiguous on
set menu-complete-display-prefix on
set colored-completion-prefix on
-set colored-stats on
+set colored-stats off
# next tab(s) will cycle through matches
TAB: menu-complete
diff --git a/.config/shell/profile b/.config/shell/profile
index 39f2ebd..ad92573 100644
--- a/.config/shell/profile
+++ b/.config/shell/profile
@@ -3,19 +3,22 @@ export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.local/share
export XDG_STATE_HOME=$HOME/.local/state
export PASSWORD_STORE_DIR=$HOME/.local/share/password-store
+export PASSWORD_STORE_GPG_OPTS="--no-throw-keyids"
if ! [ -d "${XDG_RUNTIME_DIR}" ] && [ "$(uname -s)" = "Linux" ]
then d="/run/user/$(id -u)"
if command -v sudo >/dev/null 2>&1; then
- mkdir -p "$d"
- chown -R "$USER:$USER" "$d"
- chmod 700 "$d"
+ sudo mkdir -p "$d"
+ sudo chown -R "$USER:$USER" "$d"
+ sudo chmod 700 "$d"
export XDG_RUNTIME_DIR="$d"
fi
fi
-export EDITOR="cs"
-export GIT_EDITOR="kak "
+export TERMINAL="st"
+export EDITOR="e"
+export GIT_EDITOR="kak"
+export BROWSER="firefox"
export PATH="$PATH:$HOME/go/bin:/usr/local/go/bin"
export PATH="$HOME/.local/bin:$PATH"
diff --git a/.config/x11/xprofile b/.config/x11/xprofile
index 588f9dd..ec24fe3 100644
--- a/.config/x11/xprofile
+++ b/.config/x11/xprofile
@@ -7,19 +7,20 @@ xrandr --dpi 96 # Set DPI. User may want to use a larger number for larger scre
# setbg & # set the background with the `setbg` script
#xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$! # Uncomment to use Xresources colors/settings on startup
-autostart="mpd xcompmgr dunst pipewire" # remapd, doesn't work that well with usb hubs.
+autostart="mpd xcompmgr dunst pipewire remaps" # remapd, doesn't work that well with usb hubs.
for program in $autostart; do
pidof -sx "$program" || "$program" &
done >/dev/null 2>&1
+pidof -sx "redshift" || redshift -x -l 52.30487057853634:4.764923605516801 -b 1.0:0.8 &
pidof -sx "unclutter" || unclutter -noevents &
# Starts a gpg-agents and configures it as ssh-agent.
export GPG_TTY="$(tty)"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
-gpgconf --launch gpg-agent
-gpg-connect-agent updatestartuptty /bye > /dev/null
+gpgconf --launch gpg-agent &
+gpg-connect-agent updatestartuptty /bye > /dev/null &
# Ensure that xrdb has finished running before moving on to start the WM/DE.
[ -n "$xrdbpid" ] && wait "$xrdbpid"
diff --git a/.editorconfig b/.editorconfig
index 37feeba..63bf85c 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -8,7 +8,7 @@ root = true
insert_final_newline = true
trim_trailing_whitespace = true
-[*.{yaml,yml,lua,md,tf,j2}]
+[*.{yaml,yml,lua,md,tf,j2,html,vto,sh,nix}]
indent_style = space
indent_size = 2
diff --git a/.local/bin/cal-ics-combine b/.local/bin/cal-ics-combine
new file mode 100755
index 0000000..240ff2b
--- /dev/null
+++ b/.local/bin/cal-ics-combine
@@ -0,0 +1,10 @@
+#!/bin/sh
+dir="${1:-$(ls ~/Sync/calendars | dmenu -p "combine ics files for")}"
+file="${2:-combined.ics}"
+[ -z "$dir" ] && exit 0
+{
+ echo BEGIN:VCALENDAR
+ cat "$HOME/Sync/pim/$dir"/* |
+ grep -v -e END:VCALENDAR -e BEGIN:VCALENDAR; echo END:VCALENDAR
+} > "$file"
+echo "$file"
diff --git a/.local/bin/container.d/xdg-open b/.local/bin/container.d/xdg-open
new file mode 100755
index 0000000..4cd0a92
--- /dev/null
+++ b/.local/bin/container.d/xdg-open
@@ -0,0 +1,5 @@
+#!/bin/bash
+case "$(file --mime-type $1 | awk '{print $2}')" in
+ text/*|application/json) exec "$EDITOR" "$@" ;;
+ *) printf '%q ' "$@" | nc 127.0.0.1 1994 ;;
+esac
diff --git a/.local/bin/e b/.local/bin/e
new file mode 100755
index 0000000..b5a395d
--- /dev/null
+++ b/.local/bin/e
@@ -0,0 +1,5 @@
+#!/bin/sh
+if [ -n "$1" ]
+then kak-shell "" a "$@"
+else kak-shell ""
+fi
diff --git a/.local/bin/list-glyphs b/.local/bin/list-glyphs
new file mode 100755
index 0000000..93264e2
--- /dev/null
+++ b/.local/bin/list-glyphs
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+printhelp() { echo "$0 FontFile"; exit 1; }
+printerror() { local error=$1; shift; echo "$0: $@"; exit "$error"; }
+
+[ "$#" -ne 1 ] && printhelp
+
+width=70
+fontfile="$1"
+
+[ -f "$fontfile" ] || printerror 4 'File not found'
+
+list=$(fc-query --format='%{charset}\n' "$fontfile")
+
+for range in $list
+do IFS=- read start end <<<"$range"
+ if [ "$end" ]
+ then
+ start=$((16#$start))
+ end=$((16#$end))
+ for((i=start;i<=end;i++)); do
+ printf -v char '\\U%x' "$i"
+ printf '%b' "$char"
+ done
+ else
+ printf '%b' "\\U$start"
+ fi
+done | grep -oP '.{'"$width"'}'
diff --git a/.local/bin/mailsync b/.local/bin/mailsync
deleted file mode 100755
index 426e5b7..0000000
--- a/.local/bin/mailsync
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/sh
-
-# - Syncs mail for all accounts, or a single account given as an argument.
-# - Displays a notification showing the number of new mails.
-# - Displays a notification for each new mail with its subject displayed.
-# - Runs notmuch to index new mail.
-# - This script can be set up as a cron job for automated mail syncing.
-
-# There are many arbitrary and ugly features in this script because it is
-# inherently difficult to pass environmental variables to cronjobs and other
-# issues. It also should at least be compatible with Linux (and maybe BSD) with
-# Xorg and MacOS as well.
-
-# Run only if not already running in other instance
-pgrep mbsync >/dev/null && { echo "mbsync is already running."; exit ;}
-
-# First, we have to get the right variables for the mbsync file, the pass
-# archive, notmuch and the GPG home. This is done by searching common profile
-# files for variable assignments. This is ugly, but there are few options that
-# will work on the maximum number of machines.
-eval "$(grep -h -- \
- "^\s*\(export \)\?\(MBSYNCRC\|MPOPRC\|PASSWORD_STORE_DIR\|PASSWORD_STORE_GPG_OPTS\|NOTMUCH_CONFIG\|GNUPGHOME\|MAILSYNC_MUTE\|XDG_CONFIG_HOME\|XDG_DATA_HOME\)=" \
- "$HOME/.profile" "$HOME/.bash_profile" "$HOME/.zprofile" "$HOME/.config/zsh/.zprofile" "$HOME/.zshenv" \
- "$HOME/.config/zsh/.zshenv" "$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.config/zsh/.zshrc" \
- "$HOME/.pam_environment" 2>/dev/null)"
-
-export GPG_TTY="$(tty)"
-
-[ -n "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" || MBSYNCRC="$HOME/.mbsyncrc"
-[ -n "$MPOPRC" ] || MPOPRC="$HOME/.config/mpop/config"
-
-lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/neomutt/.mailsynclastrun"
-
-# Settings are different for MacOS (Darwin) systems.
-case "$(uname)" in
- Darwin) notify() { osascript -e "display notification \"$2\" with title \"$1\"" ;} ;;
- *)
- case "$(readlink -f /sbin/init)" in
- *systemd*|*openrc*) export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus ;;
- esac
- # remember if a display server is running since `ps` doesn't always contain a display
- pgrepoutput="$(pgrep -ax X\(\|org\|wayland\))"
- displays="$(echo "$pgrepoutput" | grep -wo "[0-9]*:[0-9]\+" | sort -u)"
- [ -z "$displays" ] && [ -d /tmp/.X11-unix ] && displays=$(cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done)
-
- notify() { [ -n "$pgrepoutput" ] && for x in ${displays:-:0}; do
- export DISPLAY="$x"
- notify-send --app-name="mutt-wizard" "$1" "$2"
- done ;}
- ;;
-esac
-
-# Check account for new mail. Notify if there is new content.
-syncandnotify() {
- case "$1" in
- imap) mbsync -q "$2" ;;
- pop) mpop -q "$2" ;;
- esac
- new=$(find\
- "$HOME/.local/share/mail/${2%%-*}/"[Ii][Nn][Bb][Oo][Xx]/new/ \
- "$HOME/.local/share/mail/${2%%-*}/"[Ii][Nn][Bb][Oo][Xx]/cur/ \
- -type f -newer "$lastrun" 2> /dev/null)
- newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
- case 1 in
- $((newcount > 5)) )
- echo "$newcount new mail for $2."
- [ -z "$MAILSYNC_MUTE" ] && notify "New Mail!" "📬 $newcount new mail(s) in \`$2\` account."
- ;;
- $((newcount > 0)) )
- echo "$newcount new mail for $2."
- [ -z "$MAILSYNC_MUTE" ] &&
- for file in $new; do
- # Extract and decode subject and sender from mail.
- subject="$(sed -n "/^Subject:/ s|Subject: *|| p" "$file" |
- perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
- from="$(sed -n "/^From:/ s|From: *|| p" "$file" |
- perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
- from="${from% *}" ; from="${from%\"}" ; from="${from#\"}"
- notify "📧$from:" "$subject"
- done
- ;;
- *) echo "No new mail for $2." ;;
-esac
-}
-
-allgroups="$(grep -hs "Group" "$MBSYNCRC" "$MPOPRC" | sort -u)"
-
-# Get accounts to sync. All if no argument. Prefix with `error` if non-existent.
-IFS='
-'
-if [ -z "$1" ]; then
- tosync="$allgroups"
-else
- tosync="$(for arg in "$@"; do for grp in $allgroups; do
- [ "$arg" = "${grp##* }" ] && echo "$grp" && break
- done || echo "error $arg"; done)"
-fi
-
-for grp in $tosync; do
- case $grp in
- Group*) syncandnotify imap "${grp##* }" & ;;
- account*) syncandnotify pop "${grp##* }" & ;;
- error*) echo "ERROR: Account ${channelt##* } not found." ;;
- esac
-done
-
-wait
-
-notmuch-hook
-
-#Create a touch file that indicates the time of the last run of mailsync
-touch "$lastrun"
diff --git a/.local/bin/mutt-limit-from b/.local/bin/mutt-limit-from
new file mode 100755
index 0000000..c3546a7
--- /dev/null
+++ b/.local/bin/mutt-limit-from
@@ -0,0 +1,5 @@
+#!/bin/sh
+grep ^From |
+ sed -E 's/.*<(.*)>.*/\1/' |
+ sed -E 's/From:\s*//' |
+ xargs -I{} printf '%s\n' "macro index E L\"~f {}\"" >/tmp/mutt-limit-from
diff --git a/.local/bin/sb-clock b/.local/bin/sb-clock
index c079a58..e7dc172 100755
--- a/.local/bin/sb-clock
+++ b/.local/bin/sb-clock
@@ -19,8 +19,12 @@ case "$clock" in
esac
case $BLOCK_BUTTON in
- 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"cyan\">/;s|..0m|</span></b>|")" && notify-send -t 100000 "$(khal list now 14d -f "{calendar-color} {start-time} {title} {status} {description}
-" | sed "s/..7m/<b><span color=\"cyan\">/;s|..0m|</span></b>|")" ;;
+ 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"cyan\">/;s|..0m|</span></b>|")" && {
+ msg="$(khal list now 14d -f "{calendar-color} {start-time} {title} {status} {description}
+" | sed "s/..7m/<b><span color=\"cyan\">/;s|..0m|</span></b>|")"
+ [ -n "$msg" ] && notify-send -t 100000 "$msg"
+}
+;;
2) setsid -f "$TERMINAL" -e khal interactive ;;
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" ;;
diff --git a/.local/bin/sysact b/.local/bin/sysact
index 4bb92dc..8b51f24 100755
--- a/.local/bin/sysact
+++ b/.local/bin/sysact
@@ -8,14 +8,38 @@ wmpid(){ # This function is needed if there are multiple instances of the window
echo "$(pidof dwm)"
}
+sysact() {
+ sys_name="$(readlink /sbin/init)"
+ case "$1" in
+ reboot)
+ case "$sys_name" in
+ *runit*) sudo reboot -i ;;
+ *systemd*) $ctl reboot -i ;;
+ esac
+ ;;
+ shutdown)
+ case "$sys_name" in
+ *runit*) sudo poweroff -i ;;
+ *systemd*) $ctl poweroff -i ;;
+ esac
+ ;;
+ sleep)
+ case "$sys_name" in
+ *runit*) sudo zzz ;;
+ *systemd*) slock $ctl suspend -i ;;
+ esac
+ ;;
+ esac
+}
+
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️shutdown\n💤 sleep\n📺 display off" | dmenu -i -p 'Action: ')" in
'🔒 lock') slock ;;
"🚪 leave $WM") kill -TERM "$(wmpid)" ;;
"♻️ renew $WM") kill -HUP "$(wmpid)" ;;
'🐻 hibernate') slock $ctl hibernate -i ;;
- '💤 sleep') slock $ctl suspend -i ;;
- '🔃 reboot') $ctl reboot -i ;;
- '🖥️shutdown') $ctl poweroff -i ;;
+ '💤 sleep') sysact sleep ;;
+ '🔃 reboot') sysact reboot ;;
+ '🖥️shutdown') sysact shutdown ;;
'📺 display off') xset dpms force off ;;
*) exit 1 ;;
esac
diff --git a/.local/share/applications/file.desktop b/.local/share/applications/file.desktop
new file mode 100644
index 0000000..5df1633
--- /dev/null
+++ b/.local/share/applications/file.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=File Manager
+Exec=/usr/local/bin/st -e lfub %u
diff --git a/.local/share/applications/img.desktop b/.local/share/applications/img.desktop
new file mode 100644
index 0000000..5783107
--- /dev/null
+++ b/.local/share/applications/img.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=Image viewer
+Exec=/usr/bin/nsxiv -a %f
diff --git a/.local/share/applications/mail.desktop b/.local/share/applications/mail.desktop
new file mode 100644
index 0000000..d24aea2
--- /dev/null
+++ b/.local/share/applications/mail.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=Mail
+Exec=/usr/local/bin/st -e neomutt %u
diff --git a/.local/share/applications/pdf.desktop b/.local/share/applications/pdf.desktop
new file mode 100644
index 0000000..8c38677
--- /dev/null
+++ b/.local/share/applications/pdf.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=PDF reader
+Exec=/usr/bin/zathura %u
diff --git a/.local/share/applications/rss.desktop b/.local/share/applications/rss.desktop
new file mode 100644
index 0000000..6fafc4f
--- /dev/null
+++ b/.local/share/applications/rss.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=RSS feed addition
+Exec=/usr/bin/env rssadd %U
diff --git a/.local/share/applications/text.desktop b/.local/share/applications/text.desktop
new file mode 100644
index 0000000..41ee05f
--- /dev/null
+++ b/.local/share/applications/text.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=Text editor
+Exec=/usr/local/bin/st -e nvim %u
diff --git a/.local/share/applications/torrent.desktop b/.local/share/applications/torrent.desktop
new file mode 100644
index 0000000..f6d28d9
--- /dev/null
+++ b/.local/share/applications/torrent.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=Torrent
+Exec=/usr/bin/env transadd %U
diff --git a/.local/share/applications/video.desktop b/.local/share/applications/video.desktop
new file mode 100644
index 0000000..a29a0b1
--- /dev/null
+++ b/.local/share/applications/video.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=Application
+Name=Video viewer
+Exec=/usr/bin/mpv -quiet %f