#!/bin/bash
# pSnip -- simple GTK frontend for grim, slurp & ffmpeg
# with basic screenshot options for Wayland compositors
# Copyright 2026 GPL3
# Roger Grider (radky)

# Dependencies: bash gtkdialog grim slurp ffmpeg

export TEXTDOMAIN=precorder
export OUTPUT_CHARSET=UTF-8

export VERSION=1.2.1

########################################################################
#                                                                      #
# GUI PARAMETERS                                                       #
#                                                                      #
########################################################################

APPDIR="/usr/local/precorder"
[ ! -d $APPDIR ] && mkdir -p $APPDIR
PREFDIR="$APPDIR/preferences"
[ ! -d $PREFDIR ] && mkdir -p $PREFDIR
[ ! -d $HOME/Pictures ] && mkdir -p $HOME/Pictures
[ ! -d $HOME/Pictures/Screenshots ] && mkdir -p $HOME/Pictures/Screenshots
SAVEFOLDER=`cat $PREFDIR/savefolder 2>/dev/null`
[ ! "$SAVEFOLDER" ] && SAVEFOLDER="$HOME/Pictures/Screenshots/" && echo "$SAVEFOLDER" > $PREFDIR/savefolder
WORKDIR="/tmp/psnip-tmp"
[ ! -d $WORKDIR ] && mkdir -p $WORKDIR

#pSnip settings
ACTION=`cat $PREFDIR/action 2>/dev/null`
[ ! "$ACTION" ] && ACTION="$(gettext 'None')" && echo "$ACTION" > $PREFDIR/action
DATE=`cat $PREFDIR/ss-date 2>/dev/null`
[ ! "$DATE" ] && DATE=false && echo "$DATE" > $PREFDIR/ss-date
EDIT=`cat $PREFDIR/ss-edit 2>/dev/null`
[ ! "$EDIT" ] && EDIT=false && echo "$EDIT" > $PREFDIR/ss-edit
DELAY=`cat $PREFDIR/ss-delay 2>/dev/null`
[ ! "$DELAY" ] && DELAY=0 && echo "$DELAY" > $PREFDIR/ss-delay
FILEMANAGER=`cat $PREFDIR/filemanager 2>/dev/null`
if [ ! "$FILEMANAGER" ]; then
	for i in defaultfilemanager roxfiler rox spacefm pcmanfm xfe Thunar emelfm2; do [ "`which $i 2>/dev/null`" ] && { FILEMANAGER="$i"; break; } done
	echo "$FILEMANAGER" > $PREFDIR/filemanager
fi
if [ "$FILEMANAGER" = "defaultfilemanager" ]; then
	if [[ $(grep spacefm /usr/local/bin/defaultfilemanager 2>/dev/null) ]]; then
		FILEMANAGER="spacefm"
	fi
fi
[ "$FILEMANAGER" = "spacefm" ] && FILEMANAGER="spacefm -w"
FILENAME=`cat $PREFDIR/ss-filename 2>/dev/null`
[ ! "$FILENAME" ] && FILENAME="$(gettext 'Screenshot')" && echo "$FILENAME" > $PREFDIR/ss-filename
FILETYPE=`cat $PREFDIR/ss-filetype 2>/dev/null`
[ ! "$FILETYPE" ] && FILETYPE=PNG && echo "$FILETYPE" > $PREFDIR/ss-filetype
GEOMETRY=`cat $PREFDIR/ss-geometry 2>/dev/null`
[ ! "$GEOMETRY" ] && GEOMETRY=Fullscreen && echo "$GEOMETRY" > $PREFDIR/ss-geometry
IMAGEEDITOR=`cat $PREFDIR/imageeditor 2>/dev/null`
if [ ! "$IMAGEEDITOR" ]; then
	for i in defaultimageeditor mtpaint gimp; do [ "`which $i 2>/dev/null`" ] && { IMAGEEDITOR="$i"; break; } done
	echo "$IMAGEEDITOR" > $PREFDIR/imageeditor
fi
IMAGEVIEWER=`cat $PREFDIR/imageviewer 2>/dev/null`
if [ ! "$IMAGEVIEWER" ]; then
	for i in defaultimageviewer viewnior gpicview fotoxx geeqie gqview gwenview ristretto xnview; do [ "`which $i 2>/dev/null`" ] && { IMAGEVIEWER="$i"; break; } done
	echo "$IMAGEVIEWER" > $PREFDIR/imageviewer
fi
SCALE=`cat $PREFDIR/ss-scale 2>/dev/null`
[ ! "$SCALE" ] && SCALE=false && echo "$SCALE" > $PREFDIR/ss-scale
SCALE_PCT=`cat $PREFDIR/ss-scalepct 2>/dev/null`
[ ! "$SCALE_PCT" ] && SCALE_PCT=75 && echo "$SCALE_PCT" > $PREFDIR/ss-scalepct
TIMER=`cat $PREFDIR/ss-timer 2>/dev/null`
[ ! "$TIMER" ] && TIMER=true && echo "$TIMER" > $PREFDIR/ss-timer

export APPDIR PREFDIR WORKDIR SAVEFOLDER DELAY FILEMANAGER IMAGEEDITOR IMAGEVIEWER

#define title-bar icon
[ ! -f /usr/share/icons/hicolor/48x48/apps/psnip.svg ] && \
ln -sf $APPDIR/icons/psnip.svg /usr/share/icons/hicolor/48x48/apps && gtk-update-icon-cache -f -i /usr/share/icons/hicolor 2>/dev/null

#define gui-title color
DARK_GTKT_THEME=$(grep 'gtk-theme-name' $HOME/.config/gtk-3.0/settings.ini | grep -Ei 'black|dark|dusk|night')
[ -n "$DARK_GTKT_THEME" ] && COLOR=#84aad9 || COLOR=#3272C0

#define $FILETYPE_ITEMS for screenshot combobox
FILETYPE_ITEMS="<item>PNG</item> <item>JPG</item> <item>BMP</item> <item>TIF</item> <item>GIF</item> <item>WEBP</item>"

#define $GEOMETRY_ITEMS for geometry combobox
GEOMETRY_ITEMS="<item>Fullscreen</item> <item>Region</item>"

#define $ACTION_ITEMS for Action combobox
CLIPBOARD=$(type wl-copy 2>/dev/null)
if [ "$CLIPBOARD" ]; then
	CLIPBOARD="<item>$(gettext 'Clipboard')</item>"
	echo true > $PREFDIR/clipboard
else
	CLIPBOARD=""
	echo false > $PREFDIR/clipboard
fi
ACTION_ITEMS="<item>$(gettext 'None')</item> <item>$(gettext 'Editor')</item> <item>$(gettext 'Viewer')</item> $CLIPBOARD"

#define audio alert (beep confirmation of screenshot)
if [ "`which aplay 2>/dev/null`" ]; then
	BEEP=`cat $PREFDIR/beep 2>/dev/null`
	[ ! "$BEEP" ] && BEEP="false" && echo "$BEEP" > $PREFDIR/beep
	AUDIO_ALERT="<vbox space-expand=\"true\" space-fill=\"false\">
						<checkbox tooltip-text=\" $(gettext 'Enable beep confirmation of screenshot') \">
							<label>$(gettext 'Audio Alert')  </label>
							<variable>BEEP</variable>
							<input>cat $PREFDIR/beep</input>
							<action>if true echo true > $PREFDIR/beep</action>
							<action>if false echo false > $PREFDIR/beep</action>
						</checkbox>
					</vbox>"
else
	AUDIO_ALERT=""
fi

########################################################################
#                                                                      #
# FUNCTIONS                                                            #
#                                                                      #
########################################################################

func_screenshot(){
	DATE_STAMP=`date +%F`
	FILETYPE="`echo ${FILETYPE} | tr [:upper:] [:lower:]`"
	SAVEFOLDER="`echo "${SAVEFOLDER}" | sed -e 's%/*$%%' -e 's%$%\/%'`"
	if [ "$DATE" = "true" ]; then #enable dated filename, else use default nomenclature with sequential enumeration
		FILENAME="$(gettext 'Screenshot')_$DATE_STAMP-(1)"
		num=1
		while [ -f "$SAVEFOLDER$FILENAME.$FILETYPE" ]
		do
		FILENAME="$(echo $(gettext 'Screenshot')_$DATE_STAMP-"($num)")"
		let num=num+1
		done
	else
		FILENAME=`cat $PREFDIR/ss-filename`
		FILENAME=$(echo "$FILENAME" | sed -e 's% %_%g' -e 's%[/\\"*|<>:?]%_%g')
		[ ! "$FILENAME" ] && FILENAME="$(gettext 'Screenshot')"
		TEMPNAME=$(echo "$FILENAME" | rev | cut -f2- -d '-' | rev)
		[ "$TEMPNAME" = "$(gettext 'Screenshot')" ] && FILENAME="$TEMPNAME-1" || FILENAME="$TEMPNAME"
		num=1
		while [ -f "$SAVEFOLDER$FILENAME.$FILETYPE" ]
		do
		FILENAME="$(echo "$TEMPNAME-$num")"
		let num=num+1
		done
	fi
	echo "$FILENAME" > $PREFDIR/ss-filename
	[ "${SCALE}" = "true" ] && SCALE_PCT="-vf scale=iw/(100/${SCALE_PCT}):-1" || SCALE_PCT=""
	if [ "$GEOMETRY" = "Region" ]; then #region of interest (ROI)
		if [ "$TIMER" = "true" ]; then #timer ON
			if [ "$FILETYPE" = "gif" ]; then
				grim -g "$(slurp -d; func_timer_delay; sleep 0.5)" "${WORKDIR}/tmp-psnip.png"
				if [ "${SCALE}" = "true" ]; then
					ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "${WORKDIR}/tmp-psnip2.png"
					mv -f "${WORKDIR}/tmp-psnip2.png" "${WORKDIR}/tmp-psnip.png"
				fi
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -filter_complex "[0]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			elif [ "$FILETYPE" = "jpg" ]; then
				grim -g "$(slurp -d; func_timer_delay; sleep 0.5)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -qscale:v 5 ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			elif [ "$FILETYPE" = "webp" ]; then
				grim -g "$(slurp -d; func_timer_delay; sleep 0.5)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -c:v libwebp ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			else
				grim -g "$(slurp -d; func_timer_delay; sleep 0.5)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			fi
		else #timer OFF
			if [ "$FILETYPE" = "gif" ]; then
				grim -g "$(slurp -d; sleep $DELAY)" "${WORKDIR}/tmp-psnip.png"
				if [ "${SCALE}" = "true" ]; then
					ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "${WORKDIR}/tmp-psnip2.png"
					mv -f "${WORKDIR}/tmp-psnip2.png" "${WORKDIR}/tmp-psnip.png"
				fi
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -filter_complex "[0]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			elif [ "$FILETYPE" = "jpg" ]; then
				grim -g "$(slurp -d; sleep $DELAY)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -qscale:v 5 ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			elif [ "$FILETYPE" = "webp" ]; then
				grim -g "$(slurp -d; sleep $DELAY)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -c:v libwebp ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			else
				grim -g "$(slurp -d; sleep $DELAY)" "${WORKDIR}/tmp-psnip.png"
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
			fi
		fi
		rm -f "${WORKDIR}/tmp-psnip.png"
	else #fullscreen
		OUTPUTS="`wlr-randr | grep -m 2 -v '^ ' | cut -f 1 -d ' ' | tr '\n' ' ' | sed 's/ $//'`" #define screen ID
		OUTPUT="${OUTPUTS%% *}"
		[ -z "$OUTPUT" ] && exit
		if [ "$OUTPUT" != "$OUTPUTS" ]; then #when multiple screens detected, use mouse-click to select a screen for fullscreen capture
			OUTPUT="`slurp -p -f %o`"
			[ -z "$OUTPUT" ] && exit
		fi
		if [ "$TIMER" = "true" ]; then
			func_timer_delay
			sleep .5
		else
			sleep $DELAY
		fi
		if [ "$FILETYPE" = "gif" ]; then
			grim -o "$OUTPUT" "${WORKDIR}/tmp-psnip.png"
			if [ "${SCALE}" = "true" ]; then
				ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "${WORKDIR}/tmp-psnip2.png"
				mv -f "${WORKDIR}/tmp-psnip2.png" "${WORKDIR}/tmp-psnip.png"
			fi
			ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -filter_complex "[0]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" "$SAVEFOLDER${FILENAME}.${FILETYPE}"
		elif [ "$FILETYPE" = "jpg" ]; then
			grim -o "$OUTPUT" "${WORKDIR}/tmp-psnip.png"
			ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -qscale:v 5 ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
		elif [ "$FILETYPE" = "webp" ]; then
			grim -o "$OUTPUT" "${WORKDIR}/tmp-psnip.png"
			ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true -c:v libwebp ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
		else
			grim -o "$OUTPUT" "${WORKDIR}/tmp-psnip.png"
			ffmpeg -y -i "${WORKDIR}/tmp-psnip.png" -update true ${SCALE_PCT} "$SAVEFOLDER${FILENAME}.${FILETYPE}"
		fi
		rm -f "${WORKDIR}/tmp-psnip.png"
	fi
	[ "$BEEP" = "true" ] && $APPDIR/beep
	echo "${SAVEFOLDER}${FILENAME}.${FILETYPE}" > $PREFDIR/ss-current
	$APPDIR/psnip &

	if [ -f "$SAVEFOLDER$FILENAME.$FILETYPE" ]; then
		if [ "$ACTION" = "$(gettext 'Editor')" ]; then
			sleep 2
			$IMAGEEDITOR "${SAVEFOLDER}${FILENAME}.${FILETYPE}" &
		elif [ "$ACTION" = "$(gettext 'Viewer')" ]; then
			sleep 2
			$IMAGEVIEWER "${SAVEFOLDER}${FILENAME}.${FILETYPE}" &
		elif [ "$ACTION" = "$(gettext 'Clipboard')" ]; then #send captured image to Xclipboard
			TYPE="image/$FILETYPE"
			wl-copy <  "${SAVEFOLDER}${FILENAME}.${FILETYPE}" &
		fi
	fi
}
export -f func_screenshot

func_screenshot_view(){
	SCREENSHOT=`cat $PREFDIR/ss-current 2>/dev/null`
	if [ -f "$SCREENSHOT" ]; then
		$IMAGEVIEWER "${SCREENSHOT}"
	else
		$FILEMANAGER "${SAVEFOLDER}"
	fi
}
export -f func_screenshot_view

func_timer_delay(){
 if [ ${DELAY} -gt 0 ] && [ "$TIMER" = "true" ]; then #countdown code by SFR
	echo '<window resizable="false" opacity="0.7" type-hint="6" title="" icon-name="" window-position="3">
		<vbox spacing="0" margin="0">
			<notebook show-border="false" show-tabs="false" tab-base-index="0">
				'$( for ((V=${DELAY}; V>=1; V--)); do
				echo '<text use-markup="true"><label>"<span font='"'Sans 24'"' size='"'xx-large'"' weight='"'bold'"' color='"'green'"'>'${V}'</span>"</label></text>'
				done )'
				<variable>varINDEX</variable>
				<input>echo $(( ($varINDEX+1) % '${DELAY}' ))</input>
			</notebook>
			<timer visible="false" interval="1">
				<action>refresh:varINDEX</action>
			</timer>
			<timer visible="false" interval="'${DELAY}'">
				<action>exit:EXIT</action>
			</timer>
		</vbox>
		<action signal="hide">exit:abort</action>
	</window>' | gtkdialog -s >/dev/null 2>&1
 else
	sleep ${DELAY}
 fi
}
export -f func_timer_delay

########################################################################
#                                                                      #
# HELP DIALOG                                                          #
#                                                                      #
########################################################################

psnip_help() {
export PS_HELP="
<window title=\"pSnip Help\" icon-name=\"psnip\" window-position=\"3\" resizable=\"false\">
	<vbox margin=\"10\" width-request=\"350\">
	<pixmap><input file>$APPDIR/icons/psnip.svg</input><height>70</height><width>70</width></pixmap>
		<vbox margin=\"5\">
		<text use-markup=\"true\"><label>\"<b><span size='"'x-large'"'>pSnip</span> $VERSION</b>\"</label></text>
		<text use-markup=\"true\"><label>\"<b><span size='"'large'"'>Wayland Screenshot Tool</span></b>\"</label></text>
		<text use-markup=\"true\"><label>\"<b>$(gettext 'Frontend for grim, slurp &amp; ffmpeg')</b>\"</label></text>
		<text><label>\"Roger D. Grider (C) 2026 GPL3\"</label></text>
		</vbox>
		<hbox space-expand=\"true\" space-fill=\"true\" homogeneous=\"true\">
			<button space-expand=\"false\" space-fill=\"true\">
				<label>\"$(gettext 'Help')\"</label>
				<action>mdview \/usr\/local\/precorder\/help_psnip.md &</action>
			</button>
			<button space-expand=\"false\" space-fill=\"true\" tooltip-text=\" http://www.gnu.org/licenses \">
				<label>\"$(gettext 'License')\"</label>
				<action>defaulthtmlviewer http:\/\/www.gnu.org\/licenses\/ &</action>
			</button>
		</hbox>
	</vbox>
</window>"
gtkdialog -p PS_HELP
unset PS_HELP
}
export -f psnip_help

########################################################################
#                                                                      #
# MAIN DIALOG                                                          #
#                                                                      #
########################################################################

export PSNIP="
<window title=\"$(gettext 'Wayland Screenshot')\" icon-name=\"psnip\" resizable=\"false\" window-position=\"3\">
	<vbox>
		<hbox margin=\"2\">
			<text width-request=\"40\" space-expand=\"false\" space-fill=\"true\"><label>\" \"</label></text>
			<text space-expand=\"true\" space-fill=\"true\"><label>\" \"</label></text>
			<text use-markup=\"true\"><label>\"<b><span size='"'x-large'"'>p</span><span size='"'x-large'"' color='"$COLOR"'>Snip</span></b>\"</label></text>
			<text space-expand=\"true\" space-fill=\"true\"><label>\" \"</label></text>
			<hbox width-request=\"40\">
				<button relief=\"2\" height-request=\"32\" width-request=\"35\" tooltip-text=\" $(gettext 'Help') \"><input file>$APPDIR/icons/help.svg</input><height>18</height><width>18</width><action>psnip_help &</action></button>
			</hbox>
		</hbox>

		<vbox>
			<hbox margin=\"2\" space-expand=\"true\" space-fill=\"true\">
				<vbox space-expand=\"true\" space-fill=\"true\">
					<entry height-request=\"35\" space-expand=\"true\" space-fill=\"true\" has-focus=\"true\" tooltip-text=\" $(gettext 'Name for screenshot') \" secondary-icon-stock=\"gtk-clear\" secondary-icon-tooltip-text=\" $(gettext 'Clear name') \">
						<variable>FILENAME</variable>
						<input>cat $PREFDIR/ss-filename</input>
						<action>echo "\$FILENAME" > $PREFDIR/ss-filename</action>
						<action signal=\"secondary-icon-release\">clear:FILENAME</action>
						<action signal=\"secondary-icon-release\">echo > $PREFDIR/ss-filename</action>
					</entry>
				</vbox>
			  	<vbox width-request=\"85\" homogeneous=\"true\" space-expand=\"false\" space-fill=\"false\">
					<hbox homogeneous=\"true\" space-expand=\"false\" space-fill=\"false\">
						<checkbox tooltip-text=\" "$(gettext "Assign current date to image file name")" \">
							<label>$(gettext 'Date')</label>
							<variable>DATE</variable>
							<input>cat $PREFDIR/ss-date</input>
							<action>if true echo true > $PREFDIR/ss-date</action>
							<action>if true clear:FILENAME</action>
							<action>if true echo "$(gettext 'Screenshot')_$(date +%F)" > $PREFDIR/ss-filename</action>
							<action>if true refresh:FILENAME</action>
							<action>if false echo false > $PREFDIR/ss-date</action>
							<action>if false clear:FILENAME</action>
							<action>if false echo "$(gettext 'Screenshot')" > $PREFDIR/ss-filename</action>
							<action>if false refresh:FILENAME</action>
						</checkbox>
					</hbox>
				</vbox>
			</hbox>

			<hbox margin=\"2\" space-expand=\"true\" space-fill=\"true\">
				<vbox space-expand=\"true\" space-fill=\"true\">
					<entry height-request=\"35\" space-expand=\"true\" space-fill=\"true\" tooltip-text=\" $(gettext 'Folder for screenshot') \" fs-action=\"directory\" fs-folder=\""$SAVEFOLDER"\" fs-title=\"$(gettext 'Screenshot Folder')\">
						<input>cat $PREFDIR/savefolder</input>
						<variable>SAVEFOLDER</variable>
						<action>echo \$SAVEFOLDER | sed -e 's%/*$%%' -e 's%$%\/%' > $PREFDIR/savefolder</action>
					</entry>
				</vbox>
				<vbox space-expand=\"false\" space-fill=\"false\">
					<button relief=\"1\" height-request=\"35\" width-request=\"40\" space-expand=\"false\" space-fill=\"false\" tooltip-text=\" $(gettext 'Folder selector') \">
						<input file>$APPDIR/icons/open.svg</input><height>22</height><width>20</width>
						<action>fileselect:SAVEFOLDER</action>
						<action>echo \$SAVEFOLDER | sed -e 's%/*$%%' -e 's%$%\/%' > $PREFDIR/savefolder</action>
						<action type=\"refresh\">SAVEFOLDER</action>
					</button>
			  	</vbox>
			  	<vbox space-expand=\"false\" space-fill=\"false\">
					<button relief=\"1\" height-request=\"35\" width-request=\"40\" space-expand=\"false\" space-fill=\"false\" tooltip-text=\" $(gettext 'Manage screenshots with') $FILEMANAGER \">
						<input file>$APPDIR/icons/filemanager.svg</input><height>22</height><width>20</width>
						<action>$FILEMANAGER "$SAVEFOLDER" &</action>
					</button>
			  	</vbox>	
			</hbox>

			<hbox margin=\"2\" homogeneous=\"true\">
				<vbox>
					<hbox>
						<vbox>
							<text height-request=\"35\"><label>$(gettext 'Format')</label></text>
							<comboboxtext wrap-width=\"1\" height-request=\"35\" width-request=\"131\" tooltip-text=\" $(gettext 'Screenshot file format') \">
								<variable>FILETYPE</variable>
								<default>"$FILETYPE"</default>
								$FILETYPE_ITEMS
								<action>echo "\$FILETYPE" > $PREFDIR/ss-filetype</action>
							</comboboxtext>
			  			</vbox>

			  			<vbox>
							<text height-request=\"35\"><label>$(gettext 'Geometry')</label></text>
							<comboboxtext wrap-width=\"1\" height-request=\"35\" width-request=\"133\" tooltip-text=\" $(gettext 'Screenshot geometry') \">
								<variable>GEOMETRY</variable>
								<default>"$GEOMETRY"</default>
								$GEOMETRY_ITEMS
								<action>echo "\$GEOMETRY" > $PREFDIR/ss-geometry</action>
							</comboboxtext>
			  			</vbox>

						<vbox>
							<text height-request=\"35\"><label>$(gettext 'Action')</label></text>
							<comboboxtext wrap-width=\"1\" height-request=\"35\" width-request=\"131\" tooltip-text=\" $(gettext 'Post-capture screenshot destination') \">
								<variable>ACTION</variable>
								<default>"$ACTION"</default>
								$ACTION_ITEMS
								<action>echo "\$ACTION" > $PREFDIR/action</action>
							</comboboxtext>
						</vbox>
					</hbox>

					<hbox>
			  			<vbox>
							<text height-request=\"35\"><label>$(gettext 'Delay')</label></text>
							<spinbutton height-request=\"35\" width-request=\"200\" range-min=\"0\" range-max=\"9999\" range-step=\"1\" range-value=\"'${DELAY}'\" tooltip-text=\" $(gettext 'Screenshot delay in seconds') \">
								<variable>DELAY</variable>
								<default>"$DELAY"</default>
								<action>echo "\$DELAY" > $PREFDIR/ss-delay</action>
							</spinbutton>
			  			</vbox>
			  			<vbox>
							<hbox homogeneous=\"true\">
								<checkbox height-request=\"35\" tooltip-text=\" "$(gettext "Scale image size")" \">
									<label>$(gettext 'Scale (%)')</label>
									<variable>SCALE</variable>
									<input>cat $PREFDIR/ss-scale</input>
									<action>if true echo true > $PREFDIR/ss-scale</action>
									<action>if true enable:SCALE_PCT</action>
									<action>if false echo false > $PREFDIR/ss-scale</action>
									<action>if false disable:SCALE_PCT</action>
								</checkbox>
							</hbox>
							<hbox>
								<spinbutton height-request=\"35\" width-request=\"200\" range-min=\"25\" range-max=\"150\" range-step=\"5\" range-value=\"'${SCALE_PCT}'\" tooltip-text=\" $(gettext 'Percent of original size (25-150%)') \">
									<variable>SCALE_PCT</variable>
									<default>"$SCALE_PCT"</default>
									<action>echo "\$SCALE_PCT" > $PREFDIR/ss-scalepct</action>
									<sensitive>"${SCALE}"</sensitive>
								</spinbutton>
							</hbox>
			  			</vbox>
					</hbox>
				</vbox>
			</hbox>

			<hbox margin=\"2\" homogeneous=\"true\">
				<vbox space-expand=\"true\" space-fill=\"false\">
					<checkbox tooltip-text=\" "$(gettext "Show countdown timer")" \">
						<label>$(gettext 'Show Timer')</label>
						<variable>TIMER</variable>
						<input>cat $PREFDIR/ss-timer</input>
						<action>if true echo true > $PREFDIR/ss-timer</action>
						<action>if false echo false > $PREFDIR/ss-timer</action>
					</checkbox>
				</vbox>
				$AUDIO_ALERT
			</hbox>
		</vbox>

		<hseparator></hseparator>

		<hbox homogeneous=\"true\" space-expand=\"true\" space-fill=\"true\">
			<button height-request=\"35\" use-underline=\"true\" tooltip-text=\" $(gettext 'View screenshot') \">
				<label>\"$(gettext 'View') \"</label>
				<input file>$APPDIR/icons/view.svg</input><height>20</height><width>20</width>
				<action>func_screenshot_view &</action>
			</button>
			<button height-request=\"35\" tooltip-text=\" $(gettext 'Capture screenshot') \">
				<label>\"$(gettext 'Capture') \"</label>
				<input file>$APPDIR/icons/screenshot.svg</input><height>20</height><width>20</width>
				<action>func_screenshot &</action>
				<action type=\"exit\">quit_now</action>
			</button>
			<button height-request=\"35\" tooltip-text=\" $(gettext 'Close pSnip') \">
				<label>\"$(gettext 'Quit') \"</label>
				<input file>$APPDIR/icons/quit.svg</input><height>20</height><width>20</width>
				<action>[ -f /tmp/psnip-run ] && $APPDIR/precorder &</action>
				<action type=\"exit\">quit_now</action>
			</button>
		</hbox>
	</vbox>
</window>"

gtkdialog -p PSNIP

unset PSNIP

exit 0
