slitaz-tools annotate tinyutils/burnbox @ rev 296

desktopbox: Add autostart (GUI to enable/disable apps started with Openbox)
author Christophe Lincoln <pankso@slitaz.org>
date Sat Feb 21 22:33:58 2009 +0100 (2009-02-21)
parents db0e82bebc70
children af65458ca488
rev   line source
pankso@286 1 #!/bin/sh
pankso@31 2 #
pankso@286 3 # Gtkdialog box to burn CD or DVD using Wodim with basic options. Burnbox
pankso@286 4 # can burn ISO images, blank rewritable CD or create audio CD with WAV.
pankso@286 5 #
pankso@286 6 # (c) - SliTaz GNU/Linux 2009 - GNU GPL v3
pankso@31 7 #
pankso@286 8 VERSION=20090204
pankso@31 9
pankso@286 10 # Display audio cd size.
pankso@286 11 audio_cd_stats()
pankso@286 12 {
pankso@286 13 AUDIO_CD_SIZE=`du -m /tmp/audio-cd | awk '{print $1}'`
pankso@286 14 TRACK_NB=`ls -1 /tmp/audio-cd | wc -l`
pankso@286 15 echo -n "Total tracks: $AUDIO_CD_SIZE Mb"
pankso@286 16 }
pankso@286 17
pankso@286 18 decode_ogg()
pankso@286 19 {
pankso@286 20 if ls /tmp/audio-cd | grep -q .ogg; then
pankso@286 21 cd /tmp/audio-cd
pankso@286 22 xterm -bg gray93 -fg black -geometry 80x16 -title "Oggdec" \
pankso@286 23 -e 'for i in *.ogg; do oggdec "$i" && rm "$i"; done; sleep 2'
pankso@286 24 fi
pankso@286 25 }
pankso@286 26
pankso@286 27 # We must think about " space " between directory/track and
pankso@286 28 # filter directory copy to avoid copying other files than audio.
pankso@286 29 # Only burning non-compressed wav format is supported directly.
pankso@286 30 copy_audio_file()
pankso@286 31 {
pankso@286 32 if ls "$NEW_TRACK" | grep -q .ogg; then
pankso@286 33 cp "${NEW_TRACK%.ogg}.ogg" /tmp/audio-cd
pankso@286 34 decode_ogg
pankso@286 35 else
pankso@286 36 cp "${NEW_TRACK%.wav}.wav" /tmp/audio-cd
pankso@286 37 fi
pankso@286 38 }
pankso@286 39 copy_audio_dir()
pankso@286 40 {
pankso@286 41 for i in .wav .ogg
pankso@286 42 do
pankso@286 43 cp "$NEW_DIR"/*$i /tmp/audio-cd 2>/dev/null
pankso@286 44 done
pankso@286 45 decode_ogg
pankso@286 46 }
pankso@286 47
pankso@286 48 burn_iso()
pankso@286 49 {
pankso@286 50 xterm -bg gray93 -fg black -geometry 80x16 -title "Wodim" \
pankso@286 51 -e "wodim -v speed=$SPEED dev=$DEVICE $OPTIONS $ISO_IMAGE; sleep 4"
pankso@286 52 }
pankso@286 53
pankso@286 54 # Use -pad to avoid file size error.
pankso@286 55 burn_audio()
pankso@286 56 {
pankso@286 57 xterm -bg gray93 -fg black -geometry 80x16 -title "Wodim" \
pankso@286 58 -e "wodim -v speed=$SPEED dev=$DEVICE $OPTIONS -pad -dao -audio /tmp/audio-cd/*.wav; sleep 4"
pankso@286 59 }
pankso@286 60
pankso@286 61 # Main GTK interface
pankso@286 62 MAIN_DIALOG='
pankso@286 63 <window title="SliTaz - Burnbox" icon-name="drive-optical">
pankso@286 64 <vbox>
pankso@286 65
pankso@286 66 <notebook labels="General|ISO image|Audio CD">
pankso@286 67
pankso@286 68 <vbox>
pankso@286 69 <frame Information>
pankso@286 70 <text>
pankso@286 71 <label>
pankso@286 72 "Burn CD or DVD using Wodim from cdrkit. Before burning,
pankso@286 73 please verify device writer settings or add options if needed.
pankso@286 74 Audio CD use uncompressed WAV (OGG are decoded)."
pankso@286 75 </label>
pankso@286 76 </text>
pankso@286 77 </frame>
pankso@286 78 <frame Settings>
pankso@286 79 <hbox>
pankso@286 80 <text use-markup="true">
pankso@286 81 <label>"<b>Device: </b>"</label>
pankso@286 82 </text>
pankso@286 83 <entry>
pankso@286 84 <default>/dev/cdrom</default>
pankso@286 85 <variable>DEVICE</variable>
pankso@286 86 </entry>
pankso@286 87 </hbox>
pankso@286 88 <hbox>
pankso@286 89 <text use-markup="true">
pankso@286 90 <label>"<b>Speed: </b>"</label>
pankso@286 91 </text>
pankso@286 92 <entry>
pankso@286 93 <input>cat /proc/sys/dev/cdrom/info | grep "drive speed" | cut -f 3</input>
pankso@286 94 <variable>SPEED</variable>
pankso@286 95 </entry>
pankso@286 96 </hbox>
pankso@286 97 <hbox>
pankso@286 98 <text use-markup="true">
pankso@286 99 <label>"<b>Options: </b>"</label>
pankso@286 100 </text>
pankso@286 101 <entry>
pankso@286 102 <default>-eject -multi</default>
pankso@286 103 <variable>OPTIONS</variable>
pankso@286 104 </entry>
pankso@286 105 <button>
pankso@286 106 <input file icon="help"></input>
pankso@286 107 <action>xterm -sb -bg gray93 -fg black -geometry 95x25 -title "wodim help" -e "wodim --help ; echo -e \"----\nENTER to continue...\" && read close"</action>
pankso@286 108 </button>
pankso@286 109 </hbox>
pankso@286 110 </frame>
pankso@286 111 <frame Blank CD/DVD-RW>
pankso@286 112 <hbox>
pankso@286 113 <text use-markup="true">
pankso@286 114 <label>"<b>Option: </b>"</label>
pankso@286 115 </text>
pankso@286 116 <entry>
pankso@286 117 <variable>BLANK_OPTS</variable>
pankso@286 118 <default>fast</default>
pankso@286 119 </entry>
pankso@286 120 <button>
pankso@286 121 <input file icon="help"></input>
pankso@286 122 <action>xterm -bg gray93 -fg black -geometry 80x15 -title "wodim blank=help" -e "wodim blank=help ; echo -e \"----\nENTER to continue...\" && read close"</action>
pankso@286 123 </button>
pankso@286 124 <button>
pankso@286 125 <label>Blank disk</label>
pankso@286 126 <input file icon="forward"></input>
pankso@286 127 <action>xterm -bg gray93 -fg black -title "Wodim" -e "wodim -v -blank=$BLANK_OPTS dev=$DEVICE; sleep 2"</action>
pankso@286 128 </button>
pankso@286 129 </hbox>
pankso@286 130 </frame>
pankso@286 131 </vbox>
pankso@286 132
pankso@286 133 <vbox>
pankso@286 134 <frame Select and burn>
pankso@286 135
pankso@286 136 <text>
pankso@286 137 <label>
pankso@36 138 "
pankso@286 139 You can create or manipulate ISO images with ISO Master utility
pankso@286 140 or use genisoimage from the command line.
pankso@36 141 "
pankso@286 142 </label>
pankso@286 143 </text>
pankso@286 144
pankso@286 145 <hbox>
pankso@286 146 <text use-markup="true">
pankso@286 147 <label>"<b>ISO path:</b>"</label>
pankso@286 148 </text>
pankso@286 149 <entry>
pankso@286 150 <variable>ISO_IMAGE</variable>
pankso@286 151 </entry>
pankso@286 152 <button>
pankso@286 153 <input file stock="gtk-cdrom"></input>
pankso@286 154 <action type="fileselect">ISO_IMAGE</action>
pankso@286 155 </button>
pankso@286 156 </hbox>'
pankso@286 157 # Burn iso button.
pankso@286 158 MAIN_DIALOG=${MAIN_DIALOG}"
pankso@286 159 <hbox>
pankso@286 160 <button>
pankso@286 161 <label>Burn disk</label>
pankso@286 162 <input file icon=\"forward\"></input>
pankso@286 163 <action>$0 burn_iso</action>
pankso@286 164 </button>
pankso@286 165 </hbox>"
pankso@286 166 MAIN_DIALOG=${MAIN_DIALOG}'
pankso@286 167 </frame>
pankso@286 168
pankso@286 169 </vbox>
pankso@286 170 <vbox>
pankso@286 171 <tree icon_name="audio-x-generic">
pankso@286 172 <width>500</width><height>200</height>
pankso@286 173 <variable>TRACKS_LIST</variable>
pankso@286 174 <label>Track name</label>
pankso@286 175 <input>ls -1 /tmp/audio-cd</input>
pankso@286 176 <action>rm "/tmp/audio-cd/$TRACKS_LIST"</action>
pankso@286 177 <action>refresh:TRACKS_LIST</action>
pankso@286 178 <action>refresh:TRACKS_SIZE</action>
pankso@286 179 </tree>'
pankso@286 180 # Select, add and burn audio buttons.
pankso@286 181 MAIN_DIALOG=${MAIN_DIALOG}"
pankso@286 182 <hbox>
pankso@286 183 <text>
pankso@286 184 <label>Title: </label>
pankso@286 185 </text>
pankso@286 186 <entry accept=\"filename\">
pankso@286 187 <label>Select an Audio track</label>
pankso@286 188 <variable>NEW_TRACK</variable>
pankso@286 189 </entry>
pankso@286 190 <button>
pankso@286 191 <input file stock=\"gtk-open\"></input>
pankso@286 192 <action type=\"fileselect\">NEW_TRACK</action>
pankso@286 193 </button>
pankso@286 194 <button>
pankso@286 195 <label>Add</label>
pankso@286 196 <input file stock=\"gtk-add\"></input>
pankso@286 197 <action>$0 copy_audio_file</action>
pankso@286 198 <action>refresh:TRACKS_LIST</action>
pankso@286 199 <action>refresh:TRACKS_SIZE</action>
pankso@286 200 </button>
pankso@286 201 </hbox>
pankso@286 202 <hbox>
pankso@286 203 <text>
pankso@286 204 <label>Album:</label>
pankso@286 205 </text>
pankso@286 206 <entry accept=\"directory\">
pankso@286 207 <label>Select an Audio track</label>
pankso@286 208 <variable>NEW_DIR</variable>
pankso@286 209 </entry>
pankso@286 210 <button>
pankso@286 211 <input file stock=\"gtk-open\"></input>
pankso@286 212 <action type=\"fileselect\">NEW_DIR</action>
pankso@286 213 </button>
pankso@286 214 <button>
pankso@286 215 <label>Add</label>
pankso@286 216 <input file stock=\"gtk-add\"></input>
pankso@286 217 <action>$0 copy_audio_dir</action>
pankso@286 218 <action>refresh:TRACKS_LIST</action>
pankso@286 219 <action>refresh:TRACKS_SIZE</action>
pankso@286 220 </button>
pankso@286 221 </hbox>
pankso@286 222 <hbox>
pankso@286 223 <text>
pankso@286 224 <variable>TRACKS_SIZE</variable>
pankso@286 225 <input>$0 audio_cd_stats</input>
pankso@286 226 </text>
pankso@286 227 <button>
pankso@286 228 <label>Clean</label>
pankso@286 229 <input file stock=\"gtk-clear\"></input>
pankso@286 230 <action>rm -rf /tmp/audio-cd/*</action>
pankso@286 231 <action>refresh:TRACKS_LIST</action>
pankso@286 232 <action>refresh:TRACKS_SIZE</action>
pankso@286 233 <action>clear:NEW_TRACK</action>
pankso@286 234 <action>clear:NEW_DIR</action>
pankso@286 235 </button>
pankso@286 236 <button>
pankso@286 237 <label>Burn disk</label>
pankso@286 238 <input file icon=\"forward\"></input>
pankso@286 239 <action>$0 burn_audio</action>
pankso@286 240 </button>
pankso@286 241 </hbox>
pankso@286 242 </vbox>"
pankso@286 243 export MAIN_DIALOG=${MAIN_DIALOG}'
pankso@286 244
pankso@286 245 </notebook>
pankso@286 246
pankso@286 247 <hbox>
pankso@286 248 <button>
pankso@286 249 <label>Exit</label>
pankso@286 250 <input file icon="exit"></input>
pankso@286 251 <action type="exit">Exit</action>
pankso@286 252 </button>
pankso@286 253 </hbox>
pankso@286 254
pankso@286 255 </vbox>
pankso@38 256 </window>
pankso@31 257 '
pankso@31 258
pankso@286 259 # Script can be called with an arg to exec a function.
pankso@286 260 if [ -n "$1" ]; then
pankso@286 261 $1
pankso@286 262 else
pankso@286 263 mkdir -p /tmp/audio-cd
pankso@286 264 gtkdialog --center --program=MAIN_DIALOG >/dev/null
pankso@286 265 rm -rf /tmp/audio-cd
pankso@286 266 fi
pankso@31 267
pankso@31 268 exit 0