slitaz-tools annotate tinyutils/desktopbox @ rev 549

Tiny edits
author Paul Issott <paul@slitaz.org>
date Sun Mar 06 19:58:55 2011 +0000 (2011-03-06)
parents fb6a1c0c820e
children
rev   line source
pankso@178 1 #! /bin/sh
pankso@189 2 #
MikeDSmith25@252 3 # Multi-call script providing GTK boxes to manage a desktop following
MikeDSmith25@252 4 # Freedesktop standards.
pankso@178 5 #
pankso@178 6 # (C) GNU gpl v3 - SliTaz GNU/Linux 2008.
pankso@178 7 #
pankso@343 8 VERSION=20090504
pankso@178 9
pankso@347 10 # Glade XML file path and translated messages path.
pankso@343 11 GLADE_XML=/usr/share/slitaz/glade
pankso@347 12 MESSAGES=/usr/share/slitaz/messages
pankso@347 13
paul@549 14 # Export script path and others if needed so we can use them in 'quote'.
pankso@296 15 export BIN=$0
pankso@296 16 export AUTOSTART_SCRIPT=$HOME/.config/openbox/autostart.sh
pankso@189 17
MikeDSmith25@252 18 # Standard directories.
pankso@178 19 mkdir -p $HOME/Desktop $HOME/.local/share/applications
pankso@178 20
pankso@178 21 # Get the active locale (default to English).
lufeng369@526 22 . $MESSAGES/en/desktopbox.msg
lufeng369@526 23 test -f $MESSAGES/${LANG%.*}/desktopbox.msg && . $MESSAGES/${LANG%.*}/desktopbox.msg
lufeng369@526 24 test -f $MESSAGES/${LANG%_*}/desktopbox.msg && . $MESSAGES/${LANG%_*}/desktopbox.msg
lufeng369@526 25
pankso@178 26
pankso@178 27 # Command line usage.
pankso@178 28 usage()
pankso@178 29 {
pankso@178 30 echo -e "\nSliTaz Freedesktop Box - Version: $VERSION\n
pankso@178 31 \033[1mUsage: \033[0m `basename $0` command
pankso@178 32 \033[1mCommands: \033[0m\n
MikeDSmith25@252 33 new-folder Create a new folder on the desktop with mkdir.
MikeDSmith25@252 34 new-file Create a new empty file or SHell script on the desktop.
paul@317 35 add-icons Add a system icon to the desktop.
pankso@294 36 notify Display a notification message (center/no decoration).
pankso@294 37 Ex: `basename $0` notify \"Message to display\" 4
pankso@296 38 autostart Manage autostarted applications with Openbox.
pankso@187 39 logout Prompt for X session exit or system halt/reboot.\n"
pankso@178 40 }
pankso@178 41
paul@549 42 # Openbox autostart functions, first column is used for icons
pankso@296 43 autostart_list()
pankso@296 44 {
pankso@296 45 # Enabled
pankso@296 46 for app in `cat $AUTOSTART_SCRIPT | grep ^[a-z] | awk '{ print $1 }'`
pankso@296 47 do
pankso@296 48 comment=`grep -B 1 "^$app" $AUTOSTART_SCRIPT | grep '^# ' | sed s/'#'//`
pankso@296 49 [ -x /usr/bin/$app ] && echo "go-next | $app | $comment"
pankso@296 50 done
pankso@296 51 # Disabled
pankso@296 52 for app in `cat $AUTOSTART_SCRIPT | grep ^#[a-z] | awk '{ print $1 }'`
pankso@296 53 do
pankso@296 54 comment=`grep -B 1 "^$app" $AUTOSTART_SCRIPT | grep '^# ' | sed s/'#'//`
pankso@296 55 app=${app#\#}
pankso@296 56 [ -x /usr/bin/$app ] && echo "stop | $app | $comment"
pankso@296 57 done
pankso@296 58 }
pankso@296 59
paul@549 60 # Enable or disable autostarted applications.
pankso@296 61 autostart_actions()
pankso@296 62 {
pankso@296 63 if grep -q "^$APPLICATION" $AUTOSTART_SCRIPT; then
pankso@296 64 sed -i s/"^$APPLICATION"/"\#$APPLICATION"/ $AUTOSTART_SCRIPT
pankso@296 65 else
pankso@296 66 sed -i s/"^\#$APPLICATION"/"$APPLICATION"/ $AUTOSTART_SCRIPT
pankso@296 67 fi
pankso@296 68 }
pankso@296 69
pankso@296 70 add_autostarted_app()
pankso@296 71 {
pankso@296 72 if ! grep -q "^$NEW_APP" $AUTOSTART_SCRIPT; then
pankso@296 73 NEW_APP=`echo $NEW_APP | sed s/'&'/''/`
pankso@296 74 echo "" >> $AUTOSTART_SCRIPT
pankso@296 75 echo "# $NEW_COMMENT" >> $AUTOSTART_SCRIPT
pankso@296 76 echo "$NEW_APP &" >> $AUTOSTART_SCRIPT
pankso@296 77 fi
pankso@296 78 }
pankso@296 79
pankso@296 80 add_autostarted_app_box()
pankso@296 81 {
pankso@296 82 export ADD_AUTO_START_BOX='
pankso@296 83 <window title="Add auto started applications" icon-name="preferences-system-session">
pankso@296 84 <vbox>
pankso@296 85 <text width-chars="54">
pankso@296 86 <label>"
pankso@296 87 Add a new application starting with your session
pankso@296 88 "</label>
pankso@296 89 </text>
pankso@296 90 <hbox>
pankso@296 91 <text>
pankso@296 92 <label>"Application:"</label>
pankso@296 93 </text>
pankso@296 94 <entry>
pankso@296 95 <variable>NEW_APP</variable>
pankso@296 96 </entry>
pankso@296 97 </hbox>
pankso@296 98 <hbox>
pankso@296 99 <text>
pankso@296 100 <label>"Comment: "</label>
pankso@296 101 </text>
pankso@296 102 <entry>
pankso@296 103 <variable>NEW_COMMENT</variable>
pankso@296 104 </entry>
pankso@296 105 </hbox>
pankso@296 106 <hbox>
pankso@296 107 <button ok>
pankso@296 108 <action>$BIN add_autostarted_app</action>
pankso@296 109 <action type="exit">exit</action>
pankso@296 110 </button>
pankso@296 111 <button cancel></button>
pankso@296 112 </hbox>
pankso@296 113 </vbox>
pankso@296 114 </window>'
pankso@296 115 gtkdialog --center --program=ADD_AUTO_START_BOX
pankso@296 116 }
pankso@296 117
pankso@178 118 # Box commands.
pankso@296 119
pankso@178 120 case $1 in
pankso@178 121 new-folder)
MikeDSmith25@252 122 # Create a directory on the ~/Desktop.
pankso@178 123 #
pankso@178 124 DESKTOP_DIALOG="
pankso@178 125 <window title=\"Desktopbox - mkdir\" icon-name=\"folder-new\">
pankso@178 126 <vbox>
pankso@178 127
pankso@178 128 <text use-markup=\"true\" width-chars=\"40\">
pankso@178 129 <label>\"
pankso@178 130 <b>$NEW_FOLDER_LABEL</b>\"
pankso@178 131 </label>
pankso@178 132 </text>
pankso@189 133
pankso@178 134 <hbox>
pankso@178 135 <entry>
pankso@178 136 <default>$FOLDER_ENTRY_MSG</default>
pankso@178 137 <variable>DIR</variable>
pankso@178 138 </entry>
pankso@178 139 </hbox>"
pankso@178 140 ACTIONS='
pankso@178 141 <hbox>
pankso@178 142 <button>
pankso@178 143 <label>Mkdir</label>
pankso@178 144 <input file icon="folder-new"></input>
pankso@178 145 <action>mkdir -p "$HOME/Desktop/$DIR"</action>
pankso@178 146 <action type="exit">Exit</action>
pankso@178 147 </button>
pankso@178 148 <button cancel>
pankso@178 149 <action type="exit">Exit</action>
pankso@178 150 </button>
pankso@178 151 </hbox>
pankso@178 152
pankso@178 153 </vbox>
pankso@178 154 </window>'
pankso@178 155 export DESKTOP_DIALOG="${DESKTOP_DIALOG}${ACTIONS}" ;;
pankso@178 156 new-file)
MikeDSmith25@252 157 # Create a file on the ~/Desktop.
pankso@178 158 #
pankso@178 159 DESKTOP_DIALOG="
pankso@178 160 <window title=\"Desktopbox - touch/cat\" icon-name=\"document-new\">
pankso@178 161 <vbox>
pankso@178 162 <text use-markup=\"true\" width-chars=\"40\">
pankso@178 163 <label>\"
pankso@178 164 <b>$NEW_FILE_LABEL</b>\"
pankso@178 165 </label>
pankso@178 166 </text>
pankso@189 167
pankso@178 168 <hbox>
pankso@178 169 <entry>
pankso@178 170 <default>$FILE_ENTRY_MSG</default>
pankso@178 171 <variable>FILE</variable>
pankso@178 172 </entry>
pankso@178 173 </hbox>"
pankso@178 174 ACTIONS='
pankso@178 175 <hbox>
pankso@178 176 <button>
pankso@178 177 <label>SH script</label>
pankso@178 178 <input file icon="document-new"></input>
pankso@178 179 <action>echo "#!/bin/sh" > "$HOME/Desktop/$FILE"</action>
pankso@178 180 <action>echo "#" >> "$HOME/Desktop/$FILE"</action>
pankso@178 181 <action>chmod +x "$HOME/Desktop/$FILE"</action>
pankso@178 182 <action type="exit">Exit</action>
pankso@178 183 </button>
pankso@178 184 <button>
pankso@178 185 <label>Empty</label>
pankso@178 186 <input file icon="document-new"></input>
pankso@178 187 <action>touch "$HOME/Desktop/$FILE"</action>
pankso@178 188 <action type="exit">Exit</action>
pankso@178 189 </button>
pankso@178 190 <button cancel>
pankso@178 191 <action type="exit">Exit</action>
pankso@178 192 </button>
pankso@178 193 </hbox>
pankso@178 194 </vbox>
pankso@178 195 </window>'
pankso@178 196 export DESKTOP_DIALOG="${DESKTOP_DIALOG}${ACTIONS}" ;;
pankso@178 197 add-icons)
MikeDSmith25@252 198 # Add new icons on the ~/Desktop from /usr/share/applications.
pankso@178 199 #
pankso@178 200 DESKTOP_DIALOG="
pankso@178 201 <window title=\"$ADD_ICON_LABEL\" icon-name=\"document-new\">
pankso@178 202 <vbox>
pankso@342 203 <text use-markup=\"true\" width-chars=\"40\">
pankso@178 204 <label>\"
pankso@178 205 <b>$ADD_ICON_LABEL</b>
pankso@178 206 \"
pankso@178 207 </label>
pankso@178 208 </text>
pankso@178 209 <tree headers_visible=\"false\">
pankso@178 210 <width>420</width><height>200</height>
pankso@178 211 <variable>ICON</variable>
pankso@178 212 <label>Filename|Application</label>"
pankso@178 213 # Get application name and icon.
pankso@178 214 cd /usr/share/applications
pankso@178 215 for file in *.desktop
pankso@178 216 do
pankso@178 217 # Try to get the name in the right locale.
pankso@178 218 NAME=`grep ^Name $file | grep $lang || grep ^Name= $file`
pankso@178 219 NAME=`echo $NAME | cut -d "=" -f 2`
pankso@178 220 ICON=`grep ^Icon= $file | cut -d "=" -f 2`
pankso@178 221 ICON=`basename $ICON`
pankso@178 222 ICON=${ICON%.*}
pankso@178 223 FILE=${file%.desktop}
pankso@178 224 ITEM="<item icon=\"$ICON\">$FILE | $NAME</item>"
pankso@178 225 DESKTOP_DIALOG="${DESKTOP_DIALOG}${ITEM}"
pankso@178 226 done
pankso@178 227 ACTIONS='<action>cp /usr/share/applications/$ICON.desktop ~/Desktop</action>
pankso@178 228 </tree>
pankso@178 229 <hbox>
pankso@178 230 <button>
pankso@178 231 <label>Add</label>
pankso@178 232 <input file icon="gtk-add"></input>
pankso@178 233 <action>cp /usr/share/applications/$ICON.desktop ~/Desktop</action>
pankso@178 234 </button>
pankso@178 235 <button>
pankso@178 236 <label>Exit</label>
pankso@178 237 <input file icon="exit"></input>
pankso@178 238 <action type="exit">Exit</action>
pankso@178 239 </button>
pankso@178 240 </hbox>
pankso@178 241 </vbox>
pankso@187 242 </window>'
pankso@187 243 export DESKTOP_DIALOG=${DESKTOP_DIALOG}${ACTIONS} ;;
pankso@187 244 logout)
pankso@187 245 # X session/system logout.
pankso@187 246 #
pankso@187 247 DESKTOP_DIALOG="
pankso@294 248 <window title=\"SliTaz Desktop logout\" icon-name=\"user-desktop\" skip_taskbar_hint=\"true\">
pankso@187 249 <vbox>
pankso@187 250 <pixmap>
pankso@187 251 <input file>/usr/share/icons/Tango/32x32/places/user-desktop.png</input>
pankso@187 252 </pixmap>
pankso@187 253 <hbox>
pankso@282 254 <text use-markup=\"true\" width-chars=\"$CHARS_SIZE\">
pankso@187 255 <label>
pankso@187 256 \"<b>$DESKTOP_DIALOG_LABEL</b>
pankso@187 257 \"
pankso@187 258 </label>
pankso@187 259 </text>
pankso@187 260 </hbox>"
pascal@268 261 TAZUSB_DIALOG="
pascal@268 262 <hbox>
pascal@268 263 <checkbox>
pascal@268 264 <label>$DESKTOP_DIALOG_TAZUSB</label>
pascal@268 265 <variable>TAZUSB_WRITE</variable>
pascal@268 266 <default>false</default>
pascal@268 267 </checkbox>
pascal@268 268 <radiobutton>
pascal@268 269 <label>lzma</label>
pascal@268 270 <variable>LZMA</variable>
pascal@268 271 </radiobutton>
pascal@268 272 <radiobutton active=\"true\">
pascal@268 273 <label>gzip</label>
pascal@268 274 <variable>GZIP</variable>
pascal@268 275 </radiobutton>
pascal@268 276 <radiobutton>
pascal@268 277 <label>none</label>
pascal@268 278 <variable>NONE</variable>
pascal@268 279 </radiobutton>
pascal@268 280 </hbox>"
pascal@269 281 EXTRA="COMP=none; [ \$LZMA = true ] && COMP=lzma; [ \$GZIP = true ] && COMP=gzip; [ \$TAZUSB_WRITE = true ] && { subox \"xterm -e '/usr/bin/tazusb writefs \$COMP'\"; sleep 1; while ps x | grep -v grep | grep -q tazusb; do sleep 1; done; };"
pascal@269 282 [ -f /home/boot/rootfs.gz ] || { TAZUSB_DIALOG=""; EXTRA=""; }
pankso@187 283 # Logout for Openbox or JWM and system shutdown or reboot.
pascal@268 284 ACTIONS="
pankso@187 285 <hbox>
pankso@187 286 <button>
pankso@282 287 <label>$DESKTOP_LOGOUT_BUTTON</label>
pascal@268 288 <input file icon=\"video-display\"></input>
pascal@269 289 <action>$EXTRA openbox --exit || jwm -exit</action>
pascal@268 290 <action type=\"exit\">Exit</action>
pankso@187 291 </button>
pankso@187 292 <button>
pankso@282 293 <label>$DESKTOP_SHUTDOWN_BUTTON</label>
pascal@268 294 <input file icon=\"system-shutdown\"></input>
pascal@269 295 <action>$EXTRA poweroff</action>
pascal@268 296 <action type=\"exit\">Exit</action>
pankso@187 297 </button>
pankso@187 298 <button>
pankso@282 299 <label>$DESKTOP_REBOOT_BUTTON</label>
pascal@268 300 <input file icon=\"reload\"></input>
pascal@269 301 <action>$EXTRA reboot</action>
pascal@268 302 <action type=\"exit\">Exit</action>
pankso@187 303 </button>
pankso@187 304 <button cancel>
pascal@268 305 <action type=\"exit\">Exit</action>
pankso@187 306 </button>
pankso@187 307 </hbox>
pankso@187 308 </vbox>
pascal@268 309 </window>"
pascal@268 310 export DESKTOP_DIALOG=${DESKTOP_DIALOG}${TAZUSB_DIALOG}${ACTIONS} ;;
pankso@294 311 notify)
paul@549 312 # Notification message without window decoration.
pankso@294 313 MSG="$2"
pankso@294 314 SEC=$3
pankso@295 315 [ -z $SEC ] && SEC=4
pankso@294 316 export NOTIFY_BOX="
pankso@294 317 <window decorated=\"false\" skip_taskbar_hint=\"true\">
pankso@294 318 <vbox>
pankso@294 319 <text width-chars=\"64\" use-markup=\"true\">
pankso@294 320 <label>\"
pankso@295 321 <b>$MSG</b>
pankso@294 322 \"</label>
pankso@294 323 </text>
pankso@294 324 </vbox>
pankso@294 325 </window>"
pankso@294 326 gtkdialog --center --program=NOTIFY_BOX >/dev/null &
pankso@294 327 sleep $SEC
pankso@294 328 pid=`ps | grep NOTIFY_BOX | awk '{ print $1 }'`
pankso@294 329 kill $pid 2>/dev/null
pankso@294 330 exit 0 ;;
pankso@296 331 autostart)
pankso@296 332 # Autostarted apps management. Functions are used for input
pankso@296 333 # and actions
pankso@296 334 export DESKTOP_DIALOG='
pankso@296 335 <window title="Auto start applications with Openbox" icon-name="preferences-system-session">
pankso@296 336 <vbox>
pankso@296 337 <tree>
pankso@296 338 <width>540</width><height>200</height>
pankso@296 339 <variable>APPLICATION</variable>
pankso@296 340 <label>Application|Comment</label>
pankso@296 341 <input icon_column="0">$BIN autostart_list</input>
pankso@296 342 <action>$BIN autostart_actions</action>
pankso@296 343 <action>refresh:APPLICATION</action>
pankso@296 344 </tree>
pankso@296 345 <hbox>
pankso@296 346 <text width-chars="36">
pankso@296 347 <label>
paul@310 348 "Double click to enable/disable an application"
pankso@296 349 </label>
pankso@296 350 </text>
pankso@296 351 <button>
pankso@296 352 <label>Add</label>
pankso@296 353 <input file icon="gtk-add"></input>
pankso@296 354 <action>$BIN add_autostarted_app_box</action>
pankso@296 355 <action>refresh:APPLICATION</action>
pankso@296 356 </button>
pankso@296 357 <button>
pankso@296 358 <label>Configuration</label>
pankso@296 359 <input file icon="accessories-text-editor"></input>
pankso@348 360 <action>editor $AUTOSTART_SCRIPT</action>
pankso@296 361 <action>refresh:APPLICATION</action>
pankso@296 362 </button>
pankso@296 363 <button>
pankso@296 364 <label>Exit</label>
pankso@296 365 <input file icon="exit"></input>
pankso@296 366 <action type="exit">exit</action>
pankso@296 367 </button>
pankso@296 368 </hbox>
pankso@296 369 </vbox>
pankso@296 370 </window>'
pankso@296 371 ;;
pankso@335 372 tazapps)
pankso@335 373 # Default applications configuration script. System wide config file
paul@549 374 # is /etc/slitaz/applications.conf and each user can have personal
paul@549 375 # settings. System wide for root and personal config for user.
pankso@339 376 export CONFIG="$HOME/.config/slitaz/applications.conf"
pankso@339 377 if [ ! -f $CONFIG ]; then
pankso@339 378 mkdir -p $HOME/.config/slitaz
pankso@339 379 cp /etc/slitaz/applications.conf $CONFIG
pankso@335 380 fi
pankso@335 381 export DESKTOP_DIALOG='
pankso@335 382 <window title="SliTaz default applications" icon-name="preferences-desktop">
pankso@335 383 <vbox>
pankso@335 384 <vbox>
pankso@341 385 <text use-markup="true" width-chars="54">
pankso@335 386 <label>"
pankso@341 387 <b>SliTaz default applications configuration</b>
pankso@335 388 "</label>
pankso@335 389 </text>
pankso@335 390 </vbox>
pankso@335 391 <hbox>
pankso@335 392 <text wrap="false">
pankso@341 393 <label>"File manager: "</label>
pankso@341 394 </text>
pankso@341 395 <entry>
pankso@341 396 <input>. $CONFIG; echo $FILE_MANAGER</input>
pankso@341 397 <variable>FILE_MANAGER</variable>
pankso@341 398 </entry>
pankso@341 399 <button>
pankso@341 400 <label>Change</label>
pankso@341 401 <input file icon="forward"></input>
pankso@341 402 <action>sed -i s/"FILE_MANAGER=.*"/"FILE_MANAGER=\"$FILE_MANAGER\""/ $CONFIG</action>
pankso@341 403 </button>
pankso@341 404 </hbox>
pankso@341 405 <hbox>
pankso@341 406 <text wrap="false">
pankso@339 407 <label>"Web browser: "</label>
pankso@335 408 </text>
pankso@335 409 <entry>
pankso@335 410 <input>. $CONFIG; echo $BROWSER</input>
pankso@335 411 <variable>BROWSER</variable>
pankso@335 412 </entry>
pankso@335 413 <button>
pankso@335 414 <label>Change</label>
pankso@335 415 <input file icon="forward"></input>
pankso@335 416 <action>sed -i s/"BROWSER=.*"/"BROWSER=\"$BROWSER\""/ $CONFIG</action>
pankso@335 417 </button>
pankso@335 418 </hbox>
pankso@335 419 <hbox>
pankso@335 420 <text wrap="false">
pankso@339 421 <label>"Text editor: "</label>
pankso@335 422 </text>
pankso@335 423 <entry>
pankso@335 424 <input>. $CONFIG; echo $EDITOR</input>
pankso@335 425 <variable>EDITOR</variable>
pankso@335 426 </entry>
pankso@335 427 <button>
pankso@335 428 <label>Change</label>
pankso@335 429 <input file icon="forward"></input>
pankso@335 430 <action>sed -i s/"EDITOR=.*"/"EDITOR=\"$EDITOR\""/ $CONFIG</action>
pankso@335 431 </button>
pankso@335 432 </hbox>
pankso@335 433 <hbox>
pankso@335 434 <text wrap="false">
paul@350 435 <label>"Terminal: "</label>
pankso@335 436 </text>
pankso@335 437 <entry>
pankso@335 438 <input>. $CONFIG; echo $TERMINAL</input>
pankso@335 439 <variable>TERMINAL</variable>
pankso@335 440 </entry>
pankso@335 441 <button>
pankso@335 442 <label>Change</label>
pankso@335 443 <input file icon="forward"></input>
pankso@335 444 <action>sed -i s/"TERMINAL=.*"/"TERMINAL=\"$TERMINAL\""/ $CONFIG</action>
pankso@335 445 </button>
pankso@335 446 </hbox>
pankso@335 447 <hbox>
pankso@339 448 <text wrap="false">
pankso@339 449 <label>"Window manager:"</label>
pankso@339 450 </text>
pankso@339 451 <entry>
pankso@339 452 <input>. $CONFIG; echo $WINDOW_MANAGER</input>
pankso@339 453 <variable>WINDOW_MANAGER</variable>
pankso@339 454 </entry>
pankso@339 455 <button>
pankso@339 456 <label>Change</label>
pankso@339 457 <input file icon="forward"></input>
pankso@339 458 <action>sed -i s/"WINDOW_MANAGER=.*"/"WINDOW_MANAGER=\"$WINDOW_MANAGER\""/ $CONFIG</action>
pankso@339 459 </button>
pankso@339 460 </hbox>
pankso@339 461 <hbox>
pankso@335 462 <button>
pankso@335 463 <label>Exit</label>
pankso@335 464 <input file icon="exit"></input>
pankso@335 465 <action type="exit">exit</action>
pankso@335 466 </button>
pankso@335 467 </hbox>
pankso@335 468 </vbox>
pankso@335 469 </window>' ;;
pankso@296 470 *_*)
pankso@296 471 # Exec all function called by args (must have an underscore).
pankso@296 472 $1
pankso@296 473 exit 0 ;;
pankso@178 474 *)
MikeDSmith25@252 475 # Usage if executed from cmdline.
pankso@178 476 #
pankso@178 477 usage
pankso@178 478 exit 0 ;;
pankso@178 479 esac
pankso@178 480
pankso@178 481 gtkdialog --center --program=DESKTOP_DIALOG >/dev/null
pankso@178 482
pankso@178 483 exit 0