aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2019-11-07 12:39:12 +0000
committerYann Herklotz <git@yannherklotz.com>2019-11-07 12:39:12 +0000
commit3fed8bf7b2915d2d00b830f5103a4962a29be4c7 (patch)
tree41e64a9f70fcaa57bf55d95a9928edbd2c57c186
parentacedbb6a814796ee5b7e8f4e355b1757443dae22 (diff)
downloaddotfiles-3fed8bf7b2915d2d00b830f5103a4962a29be4c7.tar.gz
dotfiles-3fed8bf7b2915d2d00b830f5103a4962a29be4c7.zip
Add scripts and services
-rwxr-xr-xscripts/betterlock393
-rwxr-xr-xscripts/emacsmail2
-rwxr-xr-xscripts/hdmi30
-rwxr-xr-xscripts/i3exit30
-rwxr-xr-xscripts/mailnotify.sh13
-rw-r--r--services/mailnotify.service9
-rw-r--r--services/mbsync.service7
-rw-r--r--services/mbsync.timer10
8 files changed, 494 insertions, 0 deletions
diff --git a/scripts/betterlock b/scripts/betterlock
new file mode 100755
index 0000000..d9f90af
--- /dev/null
+++ b/scripts/betterlock
@@ -0,0 +1,393 @@
+#!/usr/bin/env bash
+
+# Author : Pavan Jadhaw
+# Github Profile : https://github.com/pavanjadhaw
+# Project Repository : https://github.com/pavanjadhaw/betterlockscreen
+
+# find your resolution so images can be resized to match your screen resolution
+res=$(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
+locktext='Type password to unlock...'
+
+
+init_filenames() {
+ #$1 resolution
+
+ # create folder in ~/.cache/i3lock directory
+ res_folder="$HOME/.cache/i3lock/$1"
+ folder="$HOME/.cache/i3lock/current"
+ echo "Got" $@ $res_folder
+ if [ ! -d $folder -o -n "$2" ]; then
+ rm -f $folder
+ ln -s $res_folder $folder
+ fi
+
+ # ratio for rectangle to be drawn for time background on lockscreen
+ # Original Image
+ orig_wall="$folder/wall.png"
+
+ # Versions (from here)
+ # You can use these images to set different versions as wallpaper
+ # lockscreen background.
+ resized="$folder/resized.png" # resized image for your resolution
+
+ # images to be used as wallpaper
+ dim="$folder/dim.png" # image with subtle overlay of black
+ blur="$folder/blur.png" # blurred version
+ dimblur="$folder/dimblur.png"
+
+ # lockscreen images (images to be used as lockscreen background)
+ l_resized="$folder/l_resized.png"
+ l_dim="$folder/l_dim.png"
+ l_blur="$folder/l_blur.png"
+ l_dimblur="$folder/l_dimblur.png"
+}
+
+init_filenames $res
+
+
+prelock() {
+ if [ ! -z "$(pidof dunst)" ]; then
+ pkill -u "$USER" -USR1 dunst
+ fi
+}
+
+
+lock() {
+ #$1 image path
+ letterEnteredColor=d23c3dff
+ letterRemovedColor=d23c3dff
+ passwordCorrect=00000000
+ passwordIncorrect=d23c3dff
+ background=00000000
+ foreground=ffffffff
+ i3lock \
+ -t -i "$1" \
+ --timepos='x+110:h-70' \
+ --datepos='x+43:h-45' \
+ --clock --date-align 1 --datestr "$locktext" \
+ --insidecolor=$background --ringcolor=$foreground --line-uses-inside \
+ --keyhlcolor=$letterEnteredColor --bshlcolor=$letterRemovedColor --separatorcolor=$background \
+ --insidevercolor=$passwordCorrect --insidewrongcolor=$passwordIncorrect \
+ --ringvercolor=$foreground --ringwrongcolor=$foreground --indpos='x+280:h-70' \
+ --radius=20 --ring-width=4 --veriftext='' --wrongtext='' \
+ --verifcolor="$foreground" --timecolor="$foreground" --datecolor="$foreground" \
+ --noinputtext='' --force-clock $lockargs
+}
+
+
+postlock() {
+ if [ ! -z "$(pidof dunst)" ] ; then
+ pkill -u "$USER" -USR2 dunst
+ fi
+}
+
+
+rec_get_random() {
+ dir="$1"
+ if [ ! -d "$dir" ]; then
+ user_input="$dir"
+ return
+ fi
+ dir=($dir/*)
+ dir=${dir[RANDOM % ${#dir[@]}]}
+ rec_get_random "$dir"
+}
+
+
+lockselect() {
+ prelock
+ case "$1" in
+ dim)
+ # lockscreen with dimmed background
+ lock "$l_dim"
+ ;;
+
+ blur)
+ # set lockscreen with blurred background
+ lock "$l_blur"
+ ;;
+
+ dimblur)
+ # set lockscreen with dimmed + blurred background
+ lock "$l_dimblur"
+ ;;
+
+ *)
+ # default lockscreen
+ lock "$l_resized"
+ ;;
+ esac
+ postlock
+}
+
+
+update() {
+ # use
+ background="$1"
+
+ # default blur level; fallback to 1
+ [[ $blur_level ]] || blur_level=1
+
+ rectangles=" "
+ SR=$(xrandr --query | grep ' connected' | grep -o '[0-9][0-9]*x[0-9][0-9]*[^ ]*')
+ for RES in $SR; do
+ SRA=(${RES//[x+]/ })
+ CX=$((${SRA[2]} + 25))
+ CY=$((${SRA[1]} - 30))
+ rectangles+="rectangle $CX,$CY $((CX+300)),$((CY-80)) "
+ done
+
+ # User supplied Image
+ user_image="$folder/user_image.png"
+
+ # create folder
+ if [ ! -d $folder ]; then
+ echo "Creating '$folder' directory to cache processed images."
+ mkdir -p "$folder"
+ fi
+
+ # get random file in dir if passed argument is a dir
+ rec_get_random "$background"
+
+ # get user image
+ cp "$user_input" "$user_image"
+ if [ ! -f $user_image ]; then
+ echo 'Please specify the path to the image you would like to use'
+ exit 1
+ fi
+
+ # replace orignal with user image
+ cp "$user_image" "$orig_wall"
+ rm "$user_image"
+
+ echo 'Generating alternate images based on the image you specified,'
+ echo 'please wait this might take few seconds...'
+
+ # wallpapers
+
+ echo
+ echo 'Converting provided image to match your resolution...'
+ # resize image
+ convert "$orig_wall" -resize "$res""^" -gravity center -extent "$res" "$resized"
+
+ echo
+ echo 'Applying dim and blur effect to resized image'
+ # dim
+ convert "$resized" -fill black -colorize 40% "$dim"
+
+ # blur
+ blur_shrink=$(echo "scale=2; 20 / $blur_level" | bc)
+ blur_sigma=$(echo "scale=2; 0.6 * $blur_level" | bc)
+ convert "$resized" \
+ -filter Gaussian \
+ -resize "$blur_shrink%" \
+ -define "filter:sigma=$blur_sigma" \
+ -resize "$res^" -gravity center -extent "$res" \
+ "$blur"
+
+ # dimblur
+ convert "$dim" \
+ -filter Gaussian \
+ -resize "$blur_shrink%" \
+ -define "filter:sigma=$blur_sigma" \
+ -resize "$res^" -gravity center -extent "$res" \
+ "$dimblur"
+
+ # lockscreen backgrounds
+
+ echo
+ echo 'Caching images for faster screen locking'
+ # resized
+ convert "$resized" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_resized"
+
+ # dim
+ convert "$dim" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dim"
+
+ # blur
+ convert "$blur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_blur"
+
+ # blur
+ convert "$dimblur" -draw "fill rgba(0, 0, 0, 0.4) $rectangles" "$l_dimblur"
+ echo
+ echo 'All required changes have been applied'
+}
+
+
+wallpaper() {
+ case "$1" in
+ '')
+ # set resized image as wallpaper if no argument is supplied by user
+ feh --bg-fill $resized
+ ;;
+
+ dim)
+ # set dimmed image as wallpaper
+ feh --bg-fill $dim
+ ;;
+
+ blur)
+ # set blurred image as wallpaper
+ feh --bg-fill $blur
+ ;;
+
+ dimblur)
+ # set dimmed + blurred image as wallpaper
+ feh --bg-fill $dimblur
+ ;;
+ esac
+}
+
+
+empty() {
+ if [ -f $l_dim ]; then
+ echo -e "\nSeems you haven't provided any arguments. See below for usage details."
+ else
+ echo 'Important: Update the image cache (e.g. betterlockscreen -u path/to/image.jpg).'
+ echo
+ echo ' Image cache must be updated to initially configure or update the wallpaper used.'
+ fi
+
+ echo
+ echo 'For other sets of options and help, use the help command.'
+ echo 'e.g. betterlockscreen -h or betterlockscreen --help'
+ echo
+ echo 'See: https://github.com/pavanjadhaw/betterlockscreen for additional info...'
+ exit 1
+}
+
+
+usage() {
+ echo 'Important: Update the image cache (e.g. betterlockscreen -u path/to/image.jpg).'
+ echo ' Image cache must be updated to initially configure or update wallpaper used'
+ echo
+ echo
+ echo 'See: https://github.com/pavanjadhaw/betterlockscreen for additional info...'
+ echo
+ echo
+ echo 'Options:'
+ echo
+ echo ' -h --help'
+ echo ' For help (e.g. betterlockscreen -h or betterlockscreen --help).'
+ echo
+ echo
+ echo ' -u --update'
+ echo ' to update image cache, you should do this before using any other options'
+ echo ' E.g: betterlockscreen -u path/to/image.png when image.png is custom background'
+ echo ' Or you can use betterlockscreen -u path/to/imagedir and a random file will be selected.'
+ echo
+ echo
+ echo ' -l --lock'
+ echo ' to lock screen (e.g. betterlockscreen -l)'
+ echo ' you can also use dimmed or blurred background for lockscreen.'
+ echo ' E.g: betterlockscreen -l dim (for dimmed background)'
+ echo ' E.g: betterlockscreen -l blur (for blurred background)'
+ echo ' E.g: betterlockscreen -l dimblur (for dimmed + blurred background)'
+ echo
+ echo
+ echo ' -s --suspend'
+ echo ' to suspend system and lock screen (e.g. betterlockscreen -s)'
+ echo ' you can also use dimmed or blurred background for lockscreen.'
+ echo ' E.g: betterlockscreen -s dim (for dimmed background)'
+ echo ' E.g: betterlockscreen -s blur (for blurred background)'
+ echo ' E.g: betterlockscreen -s dimblur (for dimmed + blurred background)'
+ echo
+ echo
+ echo ' -w --wall'
+ echo ' you can also set lockscreen background as wallpaper'
+ echo ' to set wallpaper (e.g. betterlockscreen -w or betterlockscreen --wall)'
+ echo ' you can also use dimmed or blurred variants.'
+ echo ' E.g: betterlockscreen -w dim (for dimmed wallpaper)'
+ echo ' E.g: betterlockscreen -w blur (for blurred wallpaper)'
+ echo ' E.g: betterlockscreen -w dimblur (for dimmed + blurred wallpaper)'
+ echo
+ echo
+ echo ' -r --resolution'
+ echo ' to be used after -u'
+ echo ' used to set a custom resolution for the image cache.'
+ echo ' E.g: betterlockscreen -u path/to/image.png -r 1920x1080'
+ echo ' E.g: betterlockscreen -u path/to/image.png --resolution 3840x1080'
+ echo
+ echo
+ echo ' -b --blur'
+ echo ' to be used after -u'
+ echo ' used to set blur intensity. Default to 1.'
+ echo ' E.g: betterlockscreen -u path/to/image.png -b 3'
+ echo ' E.g: betterlockscreen -u path/to/image.png --blur 0.5'
+ echo
+ echo
+ echo ' -t --text'
+ echo ' to set custom lockscreen text (max 31 chars)'
+ echo " E.g: betterlockscreen -l dim -t \"Don't touch my machine!\""
+ echo ' E.g: betterlockscreen --text "Hi, user!" -s blur'
+}
+
+
+# Options
+[[ "$1" = '' ]] && empty
+
+for arg in "$@"; do
+ [[ "${arg:0:1}" = '-' ]] || continue
+
+ case "$1" in
+ -h | --help)
+ usage
+ break
+ ;;
+
+ -s | --suspend)
+ runsuspend=true
+ ;&
+
+ -l | --lock)
+ runlock=true
+ [[ $runsuspend ]] || lockargs="$lockargs -n"
+ [[ ${2:0:1} = '-' ]] && shift 1 || { lockstyle="$2"; shift 2; }
+ ;;
+
+ -w | --wall | --wallpaper)
+ wallpaper "$2"
+ shift 2
+ ;;
+
+ -u | --update)
+ runupdate=true
+ imagepath="$2"
+ shift 2
+ ;;
+
+ -t | --text)
+ locktext="$2"
+ shift 2
+ ;;
+
+ -r | --resolution)
+ res="$2"
+ init_filenames $res force
+ shift 2
+ ;;
+
+ -b | --blur)
+ blur_level="$2"
+ shift 2
+ ;;
+
+ --)
+ lockargs="$lockargs ${@:2}"
+ break
+ ;;
+
+ *)
+ echo "invalid argument: $1"
+ break
+ ;;
+ esac
+done
+
+# Run image generation
+[[ $runupdate ]] && update "$imagepath"
+
+# Activate lockscreen
+[[ $runlock ]] && lockselect "$lockstyle" && \
+ { [[ $runsuspend ]] && systemctl suspend; }
+
+exit 0
diff --git a/scripts/emacsmail b/scripts/emacsmail
new file mode 100755
index 0000000..8e7fa45
--- /dev/null
+++ b/scripts/emacsmail
@@ -0,0 +1,2 @@
+#!/bin/bash
+emacsclient -c --eval "(browse-url-mail \"$@\")"
diff --git a/scripts/hdmi b/scripts/hdmi
new file mode 100755
index 0000000..702c947
--- /dev/null
+++ b/scripts/hdmi
@@ -0,0 +1,30 @@
+#!/usr/bin/bash
+
+case $1 in
+ -l|--left)
+ xrandr --output DP-1 --left-of eDP-1 --auto;;
+ -r|--right)
+ xrandr --output DP-1 --right-of eDP-1 --auto;;
+ -o|--off)
+ xrandr --output DP-1 --off --auto;;
+ -t|--rotate)
+ xrandr --output DP-1 --rotate left --right-of eDP-1 --auto;;
+ --reload);;
+ *)
+ echo <<- EOF
+hdmi: Simple wrapper around xrandr to set the external display
+ appropriately, with the options mostly premade.
+
+ Options:
+ -l,--left Screen to the left of main.
+ -r,--right Screen to the right of main.
+ -o,--off Turn the other screen off.
+ -r,--rotate Rotate the screen left.
+ --reload Only reload the session.
+EOF
+exit 0;;
+esac
+
+~/.config/bspwm/bspwmrc >/dev/null 2>&1 &
+~/.fehbg >/dev/null 2>&1
+
diff --git a/scripts/i3exit b/scripts/i3exit
new file mode 100755
index 0000000..bea4549
--- /dev/null
+++ b/scripts/i3exit
@@ -0,0 +1,30 @@
+#!/bin/sh
+lock() {
+ /home/yannherklotz/.local/bin/betterlock -$1 blur
+}
+
+case "$1" in
+ lock)
+ lock l
+ ;;
+ logout)
+ i3-msg exit
+ ;;
+ suspend)
+ lock s
+ ;;
+ hibernate)
+ lock && systemctl hibernate
+ ;;
+ reboot)
+ systemctl reboot
+ ;;
+ shutdown)
+ systemctl poweroff
+ ;;
+ *)
+ echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
+ exit 2
+esac
+
+exit 0
diff --git a/scripts/mailnotify.sh b/scripts/mailnotify.sh
new file mode 100755
index 0000000..0c22e57
--- /dev/null
+++ b/scripts/mailnotify.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+mail=${HOME}/.mail/imperial/Inbox/new
+
+inotifywait -m ${mail} | while read line; do
+ if [[ $line =~ .*MOVED_TO ]] || [[ $line =~ .*CREATE ]]; then
+ filename=$(echo "$line" | sed -E 's/[[:space:]]+((MOVED_TO)|(CREATE))[[:space:]]+//')
+ subject=$(grep '^Subject:' $filename | sed -E 's/^Subject:[[:space:]]+//')
+ from=$(grep '^From:' $filename | sed -E 's/^From:[[:space:]]+//')
+ dunstify -i mail-unread "$from
+$subject" "" &
+ fi
+done
diff --git a/services/mailnotify.service b/services/mailnotify.service
new file mode 100644
index 0000000..8e11656
--- /dev/null
+++ b/services/mailnotify.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Mailbox notification service
+
+[Service]
+Type=simple
+ExecStart=/home/yannherklotz/.local/bin/mailnotify.sh
+
+[Install]
+WantedBy=default.target
diff --git a/services/mbsync.service b/services/mbsync.service
new file mode 100644
index 0000000..5d74edb
--- /dev/null
+++ b/services/mbsync.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Mailbox synchronization service
+After=network.target network-online.target dbus.socket
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/mbsync -Va
diff --git a/services/mbsync.timer b/services/mbsync.timer
new file mode 100644
index 0000000..bd6ba12
--- /dev/null
+++ b/services/mbsync.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Mailbox synchronization timer
+
+[Timer]
+OnBootSec=2m
+OnUnitActiveSec=2m
+Unit=mbsync.service
+
+[Install]
+WantedBy=timers.target