summaryrefslogtreecommitdiff
path: root/dot-config/rofi/scripts/rofi_screenshot
diff options
context:
space:
mode:
Diffstat (limited to 'dot-config/rofi/scripts/rofi_screenshot')
-rwxr-xr-xdot-config/rofi/scripts/rofi_screenshot139
1 files changed, 139 insertions, 0 deletions
diff --git a/dot-config/rofi/scripts/rofi_screenshot b/dot-config/rofi/scripts/rofi_screenshot
new file mode 100755
index 00000000..f5a1c3d7
--- /dev/null
+++ b/dot-config/rofi/scripts/rofi_screenshot
@@ -0,0 +1,139 @@
+#!/usr/bin/env bash
+
+# Import Current Theme
+DIR="$HOME/.config/rofi"
+RASI="$DIR/screenshot.rasi"
+
+# Theme Elements
+prompt='Screenshot'
+mesg="Directory :: `xdg-user-dir PICTURES`/Screenshots"
+
+# Options
+layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
+if [[ "$layout" == 'NO' ]]; then
+ option_1=" Capture Desktop"
+ option_2=" Capture Area"
+ option_3=" Capture Window"
+ option_4=" Capture in 5s"
+ option_5=" Capture in 10s"
+else
+ option_1=""
+ option_2=""
+ option_3=""
+ option_4=""
+ option_5=""
+fi
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu \
+ -p "$prompt" \
+ -mesg "$mesg" \
+ -markup-rows \
+ -theme ${RASI}
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd
+}
+
+# Screenshot
+time=`date +%Y-%m-%d-%H-%M-%S`
+geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'`
+dir="`xdg-user-dir PICTURES`/Screenshots"
+file="Screenshot_${time}_${geometry}.png"
+
+# Directory
+if [[ ! -d "$dir" ]]; then
+ mkdir -p "$dir"
+fi
+
+# notify and view screenshot
+notify_view() {
+ notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
+ ${notify_cmd_shot} "Copied to clipboard."
+ paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
+ viewnior ${dir}/"$file"
+ if [[ -e "$dir/$file" ]]; then
+ ${notify_cmd_shot} "Screenshot Saved."
+ else
+ ${notify_cmd_shot} "Screenshot Deleted."
+ fi
+}
+
+# Copy screenshot to clipboard
+copy_shot () {
+ tee "$file" | xclip -selection clipboard -t image/png
+}
+
+# countdown
+countdown () {
+ for sec in `seq $1 -1 1`; do
+ dunstify -t 1000 -h string:x-dunst-stack-tag:screenshottimer -i /usr/share/archcraft/icons/dunst/timer.png "Taking shot in : $sec"
+ sleep 1
+ done
+}
+
+# take shots
+shotnow () {
+ cd ${dir} && sleep 0.5 && maim -u -f png | copy_shot
+ notify_view
+}
+
+shot5 () {
+ countdown '5'
+ sleep 1 && cd ${dir} && maim -u -f png | copy_shot
+ notify_view
+}
+
+shot10 () {
+ countdown '10'
+ sleep 1 && cd ${dir} && maim -u -f png | copy_shot
+ notify_view
+}
+
+shotwin () {
+ cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot
+ notify_view
+}
+
+shotarea () {
+ cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot
+ notify_view
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ shotnow
+ elif [[ "$1" == '--opt2' ]]; then
+ shotarea
+ elif [[ "$1" == '--opt3' ]]; then
+ shotwin
+ elif [[ "$1" == '--opt4' ]]; then
+ shot5
+ elif [[ "$1" == '--opt5' ]]; then
+ shot10
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+ $option_1)
+ run_cmd --opt1
+ ;;
+ $option_2)
+ run_cmd --opt2
+ ;;
+ $option_3)
+ run_cmd --opt3
+ ;;
+ $option_4)
+ run_cmd --opt4
+ ;;
+ $option_5)
+ run_cmd --opt5
+ ;;
+esac