slitaz-tools annotate tazdrop/tazdrop @ rev 939

tazbox: fix subox icon when ~/.local/share/applications is absent; fix working with freegeoip; write full list of icons used; all other files: 2015 and insert blank lines.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Apr 17 07:35:02 2015 +0300 (2015-04-17)
parents c79e656b37a5
children
rev   line source
pankso@556 1 #!/bin/sh
pankso@556 2 #
pankso@556 3 # SliTaz Drag N' Drop tool! Just put whatever you want on the tiny box
pankso@556 4 # or the expanded panel and it will deal with it. Or at least it will
paul@560 5 # try, since we are in the first stages of the tool.
pankso@556 6 #
al@939 7 # Copyright (C) 2011-2015 SliTaz GNU/linux - BSD License
pankso@556 8 # - Christophe Lincoln <pankso@slitaz.org>
pankso@556 9 #
al@939 10
al@813 11 . /lib/libtaz.sh
al@813 12 export TEXTDOMAIN='tazdrop' # i18n
pankso@556 13
al@939 14
pankso@556 15 # Follow XDG standards
al@939 16
pankso@556 17 CONFIG=$HOME/.config/slitaz/tazdrop.conf
pankso@556 18 NOTES=$HOME/.cache/tazdrop.notes
pankso@556 19
pankso@556 20 [ ! -f "$CONFIG" ] && cp /etc/slitaz/tazdrop.conf $CONFIG
pankso@556 21 . $CONFIG
pankso@556 22
slaxemulator@563 23 [ -d $DOWNLOADS ] || mkdir -p $DOWNLOADS
slaxemulator@563 24
pankso@556 25
pankso@556 26 #
al@813 27 # Functions
pankso@556 28 #
pankso@556 29
pankso@556 30 usage() {
al@813 31 newline; _ 'SliTaz Drag N Drop tool'
pankso@556 32
al@813 33 newline; boldify "$(_ 'Usage:')"
al@813 34 echo " $(basename $0) [--$(_n 'option')|$(_n 'file')|$(_n 'URL')]"
pankso@556 35
al@813 36 newline; boldify "$(_ 'Options:')"
al@813 37 optlist "\
al@813 38 --usage|-h|--help $(_ 'Display this small help')
al@813 39 --dnd $(_ 'Display the desktop Drag N Drop window')
al@813 40 --image $(_ 'Display the desktop Drag N Drop image')
al@813 41 --notes $(_ 'Display your dropped text notes')"
al@813 42 newline
pankso@556 43 }
pankso@556 44
al@939 45
pankso@556 46 # Write notes content type to a file
al@939 47
pankso@556 48 write_drop() {
al@813 49 sed "s/$(echo -en '\r') /\n/g" >> $NOTES << EOT
al@813 50 ====[ $(date '+%x %X') ]====
pankso@556 51 $drop
pankso@556 52 EOT
pankso@556 53 }
pankso@556 54
al@939 55
paul@560 56 # Get and install a package from an URL
al@939 57
pankso@556 58 get_install_pkg() {
al@813 59 tmp=$DOWNLOADS/$$
pankso@556 60 mkdir -p $tmp
al@813 61 cd $tmp
al@813 62 wget $drop
al@813 63 su -c "tazpkg install *.tazpkg && mv *.tazpkg .. && cd .. && rm -rf $tmp"
pankso@556 64 }
pankso@556 65
al@939 66
pankso@556 67 # Main GUI function
al@939 68
pankso@556 69 drop_main() {
al@813 70 yad --geometry="$DROP_SIZE$DROP_GEOM" \
al@813 71 --sticky --on-top --skip-taskbar --undecorated --no-buttons \
al@813 72 --text "$DROP_TEXT" \
al@813 73 --name="tazdrop" \
al@813 74 --dnd \
pankso@556 75 --command="$0"
pankso@556 76 }
pankso@556 77
al@939 78
pankso@556 79 # Image GUI function
al@939 80
pankso@556 81 drop_image() {
al@813 82 yad --geometry="$DROP_IMAGE_GEOM" \
al@813 83 --sticky --on-top --skip-taskbar --undecorated --no-buttons \
al@813 84 --image=$DROP_IMAGE \
al@813 85 --name="tazdrop" \
al@813 86 --dnd \
pankso@556 87 --command="$0"
pankso@556 88 }
pankso@556 89
al@939 90
pankso@556 91 # Notes GUI function
al@939 92
pankso@556 93 drop_notes() {
al@939 94 icon='text-editor'
al@813 95 yad --title="$(_ 'Dropped Notes')" --window-icon=$icon \
al@813 96 --width=500 --height=400 --margins=5 \
al@813 97 --image=$icon --image-on-top \
al@813 98 --text-info --editable --filename=$NOTES \
al@813 99 --text="$(_ 'Edit or clean-up your dropped text notes')" \
pankso@556 100 --button="gtk-remove:2" \
pankso@556 101 --button="gtk-save:0" \
pankso@556 102 --button="gtk-close:1"
pankso@556 103 }
pankso@556 104
al@939 105
pankso@556 106 #
pankso@556 107 # We may have args on cmdline, execute cmd & and exit.
pankso@556 108 #
al@939 109
pankso@556 110 case "$1" in
al@813 111 --usage|-h|--help)
pankso@556 112 usage && exit 0 ;;
pankso@556 113 --dnd)
pankso@556 114 drop_main && exit 0 ;;
al@813 115 --image)
pankso@556 116 drop_image && exit 0 ;;
pankso@556 117 --notes)
pankso@556 118 drop_notes > /tmp/notes.$$
pankso@556 119 # Deal with --button
pankso@556 120 case $? in
pankso@556 121 1) continue ;;
pankso@556 122 0) mv -f /tmp/notes.$$ $NOTES ;;
pankso@556 123 2) echo "" > $NOTES ;;
pankso@556 124 esac
pankso@556 125 # Clean cache and exit
pankso@556 126 rm -f /tmp/notes.$$ && exit 0 ;;
al@813 127 get_install_pkg)
al@813 128 get_install_pkg ;;
pankso@556 129 *)
pankso@556 130 [ -z "$1" ] && usage && exit 0
pankso@556 131 drop="$1" && continue ;;
pankso@556 132 esac
pankso@556 133
al@939 134
pankso@556 135 #
pankso@556 136 # Drag and drop handler, uritype first filetype after.
pankso@556 137 #
pankso@556 138 # Use 'xdg-open' & 'xdg-mime query filetype /path/to/file',
paul@560 139 # both need xprop (on slitaz we have obxprop from openbox)?
pankso@556 140 #
al@939 141
pankso@556 142 case "$drop" in
pankso@556 143 file:///*)
pankso@556 144 # Handle local files
pankso@556 145 case "$drop" in
pankso@558 146 *.png|*.jpg|*.jpeg|*.gif|*.xpm|*.ico)
pankso@556 147 $IMAGE "$drop" & ;;
pankso@556 148 *.txt|*.conf|*.css|*.php|*.cgi|*.list|*README*|*TODO| \
pankso@556 149 *.diff|*.log|*.js|*.xml|*receipt)
al@813 150 editor "$drop" & ;;
pankso@556 151 *.pdf)
pankso@556 152 $PDF "$drop" & ;;
pankso@556 153 *.html)
al@813 154 browser "$drop" & ;;
pankso@556 155 *.ogg|*.mp3)
pankso@556 156 file=${drop#file://}
pankso@556 157 $SOUND "$file" & ;;
pankso@556 158 *.tazpkg)
pankso@556 159 file=${drop#file://}
pankso@556 160 dir=$(dirname $file)
pankso@556 161 pkg=$(basename $file)
al@813 162 tazbox su tazpkg actions $file ;;
pankso@556 163 *.desktop)
paul@560 164 # Exec *.desktop files so they can be used in a non
pankso@556 165 # Freedesktop environment (Ex: Ob/tint2/emlfm2)
pankso@556 166 file=${drop#file://}
al@813 167 # FIXME: should process all other stuff from .desktop file!
pankso@556 168 exec=$(fgrep Exec= "$file" | sed s'/Exec=//')
pankso@556 169 $exec & ;;
pankso@556 170 *)
paul@560 171 # Can a directory dropped be tarbalized!
paul@560 172 # Lets leave the tarball in the same directory.
pankso@556 173 file=${drop#file://}
pankso@556 174 if [ -d "$file" ]; then
pankso@556 175 cd $(dirname $file)
pankso@556 176 file=$(basename $file)
pankso@556 177 tar -c -j -f ${file}.tar.bz2 $file &
pankso@556 178 fi
pankso@556 179 # Or maybe an executable binary or script
pankso@556 180 if [ -x "$file" ]; then
pankso@556 181 $file &
pankso@556 182 fi
pankso@556 183 ;;
pankso@556 184 esac
pankso@556 185 ;;
pankso@556 186 http://*|https://*|ftp://*)
pankso@556 187 # Handle URL by filetype extension
pankso@556 188 case "$drop" in
pankso@558 189 *.png|*.jpg|*.jpeg|*.ico|*.gif|*.xpm|*.gz|*.bz2|*.lzma|*.xz| \
pankso@556 190 *.zip|*.pdf|*.iso)
al@813 191 terminal -e "cd $DOWNLOADS && wget $drop" & ;;
pankso@556 192 *.tazpkg)
al@813 193 terminal -hold -e $0 get_install_pkg ;;
pankso@556 194 *.html|*.php|*.cgi|*.py|*.pl|*/|*[a-zA-Z0-9])
al@813 195 browser "$drop" & ;;
pankso@556 196 esac
pankso@556 197 ;;
pankso@556 198 *[a-z0-9]@[a-z0-9]*.[a-z]*)
pankso@556 199 # Handle email
pankso@556 200 exec $EMAIL "$drop" & ;;
pankso@556 201 --*)
pankso@556 202 usage && exit 0 ;;
pankso@556 203 *)
pankso@556 204 write_drop ;;
pankso@556 205 esac
pankso@556 206
pankso@556 207 exit 0