slitaz-tools annotate tinyutils/desktopbox @ rev 456

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