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 |