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 |