slitaz-tools annotate tinyutils/tazctrlbox @ 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 e1be96425578
children e53d5618c5da
rev   line source
pankso@275 1 #!/bin/sh
pankso@275 2 #
pankso@275 3 # SliTaz Control Box is a tool to configure and manage a SliTaz system.
pankso@275 4 # The script use GTKdialog for the UI interface, some shell functions
pankso@275 5 # are called by argument. Individual window dialog are put into
pankso@275 6 # functions.
pankso@275 7 #
pankso@275 8 # (C) GNU gpl v3 - SliTaz GNU/Linux 2008.
pankso@275 9 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@275 10 #
pankso@275 11 VERSION=1.0
pankso@275 12
pankso@275 13 # Get init configuration.
pankso@275 14 . /etc/rcS.conf
pankso@275 15
pankso@275 16 # Tazctrlbox is only for root.
pankso@275 17 if test $(id -u) != 0 ; then
pankso@275 18 exec subox $0
pankso@275 19 exit 0
pankso@275 20 fi
pankso@275 21
pankso@275 22 # Change Grub menu.lst timeout.
pankso@275 23 sed_grub_timeout()
pankso@275 24 {
pankso@275 25 CURRENT=`cat /boot/grub/menu.lst | grep ^timeout | cut -d " " -f2`
pankso@275 26 sed -i s/"timeout $CURRENT"/"timeout $GRUB_TIMEOUT"/ /boot/grub/menu.lst
pankso@275 27 }
pankso@275 28
pankso@275 29 # Change Grub menu.lst timeout.
pankso@275 30 sed_grub_color()
pankso@275 31 {
pankso@275 32 CURRENT=`cat /boot/grub/menu.lst | grep ^color | cut -d " " -f2-3`
pankso@275 33 sed -i s#"color $CURRENT"#"color $GRUB_COLOR"# /boot/grub/menu.lst
pankso@275 34 }
pankso@275 35
pankso@275 36 # Set checked fs on boot.
pankso@275 37 sed_check_fs()
pankso@275 38 {
pankso@275 39 sed -i s#"CHECK_FS=\"$CHECK_FS\""#"CHECK_FS=\"$NEW_CHECK_FS\""# \
pankso@275 40 /etc/rcS.conf
pankso@275 41 }
pankso@275 42
pankso@275 43 # Set loaded modules on boot.
pankso@275 44 sed_load_modules()
pankso@275 45 {
pankso@275 46 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$NEW_MODULES\""/ \
pankso@275 47 /etc/rcS.conf
pankso@275 48 }
pankso@275 49
pankso@275 50 # Set daemons to run on boot.
pankso@275 51 sed_run_daemons()
pankso@275 52 {
pankso@275 53 sed -i s/"RUN_DAEMONS=\"$RUN_DAEMONS\""/"RUN_DAEMONS=\"$NEW_DAEMONS\""/ \
pankso@275 54 /etc/rcS.conf
pankso@275 55 }
pankso@275 56
pankso@275 57 # Get user list
pankso@275 58 get_users()
pankso@275 59 {
pankso@275 60 for i in `cat /etc/passwd | cut -d ":" -f 1`
pankso@275 61 do
pankso@275 62 if [ -d /home/$i ]; then
pankso@275 63 login=$i
pankso@275 64 uid=`cat /etc/passwd | grep $i | cut -d ":" -f 3`
pankso@275 65 gid=`cat /etc/passwd | grep $i | cut -d ":" -f 4`
pankso@275 66 name=`cat /etc/passwd | grep $i | cut -d ":" -f 5 | sed s/,,,//`
pankso@275 67 home=`cat /etc/passwd | grep $i | cut -d ":" -f 6`
pankso@275 68 shell=`cat /etc/passwd | grep $i | cut -d ":" -f 7`
pankso@275 69 echo "$login | $uid:$gid | $name | $home | $shell"
pankso@275 70 fi
pankso@275 71 done
pankso@275 72 }
pankso@275 73
pankso@275 74 # Remove a user or change passwd.
pankso@275 75 manage_user()
pankso@275 76 {
pankso@275 77 export MANAGE_DIALOG="
pankso@275 78 <window title=\"Manage user: $USER\" icon-name=\"computer\">
pankso@275 79 <vbox>
pankso@275 80 <hbox>
pankso@275 81 <text wrap=\"false\" width-chars=\"34\">
pankso@275 82 <label>\"
pankso@275 83 Login name: $USER
pankso@275 84 \"</label>
pankso@275 85 </text>
pankso@275 86 </hbox>
pankso@275 87 <hbox>
pankso@275 88 <text wrap=\"false\">
pankso@275 89 <label>\"New password:\"</label>
pankso@275 90 </text>
pankso@275 91 <entry invisible_char=\"*\" visibility=\"false\">
pankso@275 92 <variable>PASSWD</variable>
pankso@275 93 </entry>
pankso@275 94 <button>
pankso@275 95 <label>Change</label>
pankso@275 96 <input file icon=\"forward\"></input>
pankso@275 97 <action>echo \"$USER:$PASSWD\" | chpasswd</action>
pankso@275 98 <action type=\"closewindow\">MANAGE_USER</action>
pankso@275 99 </button>
pankso@275 100 </hbox>
pankso@275 101 <hbox>
pankso@275 102 <button>
pankso@275 103 <label>Delete user</label>
pankso@275 104 <input file icon=\"gtk-delete\"></input>
pankso@275 105 <action>deluser $USER</action>
pankso@275 106 <action type=\"closewindow\">MANAGE_USER</action>
pankso@275 107 </button>
pankso@275 108 <button cancel>
pankso@275 109 <action type=\"closewindow\">MANAGE_USER</action>
pankso@275 110 </button>
pankso@275 111 </hbox>
pankso@275 112 </vbox>
pankso@275 113 </window>
pankso@275 114 "
pankso@275 115 gtkdialog --center --program=MANAGE_DIALOG >/dev/null
pankso@275 116 }
pankso@275 117
pankso@275 118 # Add a new user.
pankso@275 119 add_user()
pankso@275 120 {
pankso@275 121 export ADD_USER_DIALOG='
pankso@275 122 <window title="New user" icon-name="gtk-add">
pankso@275 123 <vbox>
pankso@275 124 <hbox>
pankso@275 125 <text wrap="false" width-chars="34">
pankso@275 126 <label>"
pankso@275 127 New account information
pankso@275 128 "</label>
pankso@275 129 </text>
pankso@275 130 </hbox>
pankso@275 131 <hbox>
pankso@275 132 <text wrap="false">
pankso@275 133 <label>"Login: "</label>
pankso@275 134 </text>
pankso@275 135 <entry>
pankso@275 136 <variable>NEW_USER</variable>
pankso@275 137 </entry>
pankso@275 138 </hbox>
pankso@275 139 <hbox>
pankso@275 140 <text wrap="false">
pankso@275 141 <label>"Password:"</label>
pankso@275 142 </text>
pankso@275 143 <entry invisible_char="*" visibility="false">
pankso@275 144 <variable>PASSWD</variable>
pankso@275 145 </entry>
pankso@275 146 </hbox>
pankso@275 147 <hbox>
pankso@275 148 <button ok>
pankso@275 149 <action>adduser -D $NEW_USER</action>
pankso@275 150 <action>echo "$NEW_USER:$PASSWD" | chpasswd</action>
pankso@275 151 <action>adduser -G audio $NEW_USER</action>
pankso@275 152 <action>rmdir /home/$NEW_USER</action>
pankso@275 153 <action>cp -a /etc/skel /home/$NEW_USER</action>
pankso@275 154 <action>cp /root/.xinitrc /home/$NEW_USER</action>
pankso@275 155 <action>chown -R $NEW_USER:$NEW_USER /home/$NEW_USER</action>
pankso@275 156 <action type="closewindow">MANAGE_USER</action>
pankso@275 157 </button>
pankso@275 158 <button cancel>
pankso@275 159 <action type="closewindow">MANAGE_USER</action>
pankso@275 160 </button>
pankso@275 161 </hbox>
pankso@275 162 </vbox>
pankso@275 163 </window>
pankso@275 164 '
pankso@275 165 gtkdialog --center --program=ADD_USER_DIALOG >/dev/null
pankso@275 166 }
pankso@275 167
pankso@275 168 # Main dialog with notebook.
pankso@275 169 #
pankso@275 170 export MAIN_DIALOG='
pankso@275 171 <window title="SliTaz Control Box" icon-name="computer">
pankso@275 172 <vbox>
pankso@275 173
pankso@275 174 <hbox>
pankso@275 175 <text use-markup="true">
pankso@275 176 <label>"<b>SliTaz Control Box</b>"</label>
pankso@275 177 </text>
pankso@275 178 <pixmap>
pankso@275 179 <input file>/usr/share/pixmaps/tazctrlbox.png</input>
pankso@275 180 </pixmap>
pankso@275 181 </hbox>
pankso@275 182
pankso@275 183 <notebook labels="System|Boot|Login|Users">
pankso@275 184
pankso@275 185 <vbox>
pankso@275 186 <frame Boxes panel>
pankso@275 187 <hbox>
pankso@275 188 <button>
pankso@275 189 <label>Devices Manager</label>
pankso@275 190 <input file icon="media-flash"></input>
pankso@275 191 <action>mountbox &</action>
pankso@275 192 </button>
pankso@275 193 <button>
pankso@275 194 <label>Network configuration</label>
pankso@275 195 <input file icon="netbox"></input>
pankso@275 196 <action>netbox &</action>
pankso@275 197 </button>
pankso@275 198 <button>
pankso@275 199 <label>Packages Manager</label>
pankso@275 200 <input file icon="tazpkg"></input>
pankso@275 201 <action>tazpkgbox &</action>
pankso@275 202 </button>
pankso@275 203 </hbox>
pankso@275 204 </frame>
pankso@275 205 <frame Date and time>
pankso@275 206 <hbox>
pankso@275 207 <text wrap="false">
pankso@275 208 <label>"Date: "</label>
pankso@275 209 </text>
pankso@275 210 <entry editable="false" has_frame="false">
pankso@275 211 <input>date</input>
pankso@275 212 <variable>DATE</variable>
pankso@275 213 </entry>
pankso@275 214 <button>
pankso@275 215 <label>Sync online</label>
pankso@275 216 <input file icon="reload"></input>
pankso@275 217 <action>rdate -s tick.greyware.com</action>
pankso@275 218 <action>refresh:DATE</action>
pankso@275 219 </button>
pankso@275 220 </hbox>
pankso@275 221 <hbox>
pankso@275 222 <text wrap="true">
pankso@275 223 <label>"Timezone:"</label>
pankso@275 224 </text>
pankso@275 225 <entry>
pankso@275 226 <input>cat /etc/TZ</input>
pankso@275 227 <variable>NEW_TZ</variable>
pankso@275 228 </entry>
pankso@275 229 <button>
pankso@275 230 <label>Change</label>
pankso@275 231 <input file icon="forward"></input>
pankso@275 232 <action>echo "$NEW_TZ" > /etc/TZ</action>
pankso@275 233 </button>
pankso@275 234 </hbox>
pankso@275 235 </frame>
pankso@275 236 </vbox>'
pankso@275 237 # Boot
pankso@275 238 MAIN_DIALOG=${MAIN_DIALOG}"
pankso@275 239 <vbox>
pankso@275 240 <frame Grub boot loader>
pankso@275 241 <hbox>
pankso@275 242 <text wrap=\"false\">
pankso@275 243 <label>\"Timeout:\"</label>
pankso@275 244 </text>
pankso@275 245 <entry>
pankso@275 246 <input>cat /boot/grub/menu.lst | grep ^timeout | cut -d \" \" -f2</input>
pankso@275 247 <variable>GRUB_TIMEOUT</variable>
pankso@275 248 </entry>
pankso@275 249 <button>
pankso@275 250 <label>Change</label>
pankso@275 251 <input file icon=\"forward\"></input>
pankso@275 252 <action>$0 sed_grub_timeout</action>
pankso@275 253 </button>
pankso@275 254 </hbox>
pankso@275 255 <hbox>
pankso@275 256 <text wrap=\"false\">
pankso@275 257 <label>\"Color: \"</label>
pankso@275 258 </text>
pankso@275 259 <entry>
pankso@275 260 <input>cat /boot/grub/menu.lst | grep ^color | cut -d \" \" -f2-3</input>
pankso@275 261 <variable>GRUB_COLOR</variable>
pankso@275 262 </entry>
pankso@275 263 <button>
pankso@275 264 <label>Change</label>
pankso@275 265 <input file icon=\"forward\"></input>
pankso@275 266 <action>$0 sed_grub_color</action>
pankso@275 267 </button>
pankso@275 268 </hbox>
pankso@275 269 <hbox>
pankso@275 270 <text wrap=\"false\">
pankso@275 271 <label>\"Configuration file:\"</label>
pankso@275 272 </text>
pankso@275 273 <button>
pankso@275 274 <label>/boot/grub/menu.lst</label>
pankso@275 275 <input file icon=\"accessories-text-editor\"></input>
pankso@275 276 <action>leafpad /boot/grub/menu.lst</action>
pankso@275 277 <action>refresh:GRUB_COLOR</action>
pankso@275 278 <action>refresh:GRUB_TIMEOUT</action>
pankso@275 279 </button>
pankso@275 280 </hbox>
pankso@275 281 </frame>
pankso@275 282 <frame rcS init scripts>
pankso@275 283 <hbox>
pankso@275 284 <text wrap=\"false\">
pankso@275 285 <label>\"Check filesystems:\"</label>
pankso@275 286 </text>
pankso@275 287 <entry>
pankso@275 288 <input>echo $CHECK_FS</input>
pankso@275 289 <variable>NEW_CHECK_FS</variable>
pankso@275 290 </entry>
pankso@275 291 <button>
pankso@275 292 <label>Change</label>
pankso@275 293 <input file icon=\"forward\"></input>
pankso@275 294 <action>$0 sed_check_fs</action>
pankso@275 295 </button>
pankso@275 296 </hbox>
pankso@275 297 <hbox>
pankso@275 298 <text wrap=\"false\">
pankso@275 299 <label>\"Load modules: \"</label>
pankso@275 300 </text>
pankso@275 301 <entry>
pankso@275 302 <input>echo $LOAD_MODULES</input>
pankso@275 303 <variable>NEW_MODULES</variable>
pankso@275 304 </entry>
pankso@275 305 <button>
pankso@275 306 <label>Change</label>
pankso@275 307 <input file icon=\"forward\"></input>
pankso@275 308 <action>$0 sed_load_modules</action>
pankso@275 309 </button>
pankso@275 310 </hbox>
pankso@275 311 <hbox>
pankso@275 312 <text wrap=\"false\">
pankso@275 313 <label>\"Run daemons: \"</label>
pankso@275 314 </text>
pankso@275 315 <entry>
pankso@275 316 <input>echo $RUN_DAEMONS</input>
pankso@275 317 <variable>NEW_DAEMONS</variable>
pankso@275 318 </entry>
pankso@275 319 <button>
pankso@275 320 <label>Change</label>
pankso@275 321 <input file icon=\"forward\"></input>
pankso@275 322 <action>$0 sed_run_daemons</action>
pankso@275 323 </button>
pankso@275 324 </hbox>
pankso@275 325 <hbox>
pankso@275 326 <text wrap=\"false\">
pankso@275 327 <label>\"Add local comands:\"</label>
pankso@275 328 </text>
pankso@275 329 <button>
pankso@275 330 <label>/etc/init.d/local.sh</label>
pankso@275 331 <input file icon=\"accessories-text-editor\"></input>
pankso@275 332 <action>leafpad /etc/init.d/local.sh</action>
pankso@275 333 </button>
pankso@275 334 </hbox>
pankso@275 335 </frame>
pankso@275 336 </vbox>"
pankso@275 337 # Login
pankso@275 338 MAIN_DIALOG=${MAIN_DIALOG}'
pankso@275 339 <vbox>
pankso@275 340 <frame Slim settings>
pankso@275 341 <hbox>
pankso@275 342 <text wrap="false">
pankso@275 343 <label>"Sessions: "</label>
pankso@275 344 </text>
pankso@275 345 <entry>
pankso@275 346 <input>cat /etc/slim.conf | grep ^session | sed s/"sessions "//</input>
pankso@275 347 <variable>SLIM_SESSIONS</variable>
pankso@275 348 </entry>
pankso@275 349 <button>
pankso@275 350 <label>Change</label>
pankso@275 351 <input file icon="forward"></input>
pankso@275 352 <action>sed -i "s/^sessions.*/sessions $SLIM_SESSIONS/" /etc/slim.conf</action>
pankso@275 353 </button>
pankso@275 354 </hbox>
pankso@275 355 <hbox>
pankso@275 356 <text wrap="false">
pankso@275 357 <label>"Default user: "</label>
pankso@275 358 </text>
pankso@275 359 <entry>
pankso@275 360 <input>cat /etc/slim.conf | grep ^default_user | sed s/"default_user "//</input>
pankso@275 361 <variable>SLIM_DEF_USER</variable>
pankso@275 362 </entry>
pankso@275 363 <button>
pankso@275 364 <label>Change</label>
pankso@275 365 <input file icon="forward"></input>
pankso@275 366 <action>sed -i "s/^default_user.*/default_user $SLIM_DEF_USER/" /etc/slim.conf</action>
pankso@275 367 </button>
pankso@275 368 </hbox>
pankso@275 369 <hbox>
pankso@275 370 <text wrap="false">
pankso@275 371 <label>"Theme:"</label>
pankso@275 372 </text>
pankso@275 373 <combobox>
pankso@275 374 <variable>NEW_SLIM_THEME</variable>'
pankso@275 375 # List all installed Slim themes.
pankso@275 376 for dir in $(ls /usr/share/slim/themes)
pankso@275 377 do
pankso@275 378 THEME_ITEMS="<item>$dir</item>"
pankso@275 379 MAIN_DIALOG=${MAIN_DIALOG}${THEME_ITEMS}
pankso@275 380 done
pankso@275 381 MAIN_DIALOG=${MAIN_DIALOG}'
pankso@275 382 </combobox>
pankso@275 383 <button>
pankso@275 384 <label>Preview</label>
pankso@275 385 <input file icon="video-display"></input>
pankso@275 386 <action>slim -p /usr/share/slim/themes/$NEW_SLIM_THEME &</action>
pankso@275 387 </button>
pankso@275 388 <button>
pankso@275 389 <label>Change</label>
pankso@275 390 <input file icon="forward"></input>
pankso@275 391 <action>sed -i "s/^current_theme.*/current_theme $NEW_SLIM_THEME/" /etc/slim.conf</action>
pankso@275 392 <action>refresh:SLIM_THEME</action>
pankso@275 393 </button>
pankso@275 394 </hbox>
pankso@275 395 <hbox>
pankso@275 396 <text wrap="false">
pankso@275 397 <label>"Configuration file:"</label>
pankso@275 398 </text>
pankso@275 399 <button>
pankso@275 400 <label>/etc/slim.conf</label>
pankso@275 401 <input file icon="accessories-text-editor"></input>
pankso@275 402 <action>leafpad /etc/slim.conf</action>
pankso@275 403 <action>refresh:SLIM_SESSIONS</action>
pankso@275 404 <action>refresh:SLIM_DEF_USER</action>
pankso@275 405 </button>
pankso@275 406 </hbox>
pankso@275 407 </frame>
pankso@275 408 </vbox>'
pankso@275 409 # Display users list throught get_users.
pankso@275 410 MAIN_DIALOG=${MAIN_DIALOG}"
pankso@275 411 <vbox>
pankso@275 412 <tree>
pankso@275 413 <width>650</width><height>300</height>
pankso@275 414 <variable>USER</variable>
pankso@275 415 <label>Login|uid:gid|Name|Home|SHell</label>
pankso@275 416 <input>$0 get_users</input>
pankso@275 417 <action>$0 manage_user</action>
pankso@275 418 <action>refresh:USER</action>
pankso@275 419 </tree>
pankso@275 420 <hbox>
paul@278 421 <text width-chars=\"60\">
paul@278 422 <label>
paul@278 423 \"Note: To change passwords and delete users you can double-click on the user name.\"
paul@278 424 </label>
paul@278 425 </text>
pankso@275 426 <button>
pankso@275 427 <label>Add newuser</label>
pankso@275 428 <input file icon=\"gtk-add\"></input>
pankso@275 429 <action>$0 add_user</action>
pankso@275 430 <action>refresh:USER</action>
pankso@275 431 </button>
pankso@275 432 </hbox>
pankso@275 433 </vbox>"
pankso@275 434 export MAIN_DIALOG=${MAIN_DIALOG}'
pankso@275 435 </notebook>
pankso@275 436
pankso@275 437 <hbox>
pankso@275 438 <button>
pankso@275 439 <label>Exit</label>
pankso@275 440 <input file icon="exit"></input>
pankso@275 441 <action type="exit">Exit</action>
pankso@275 442 </button>
pankso@275 443 </hbox>
pankso@275 444
pankso@275 445 </vbox>
pankso@275 446
pankso@275 447 </window>
pankso@275 448 '
pankso@275 449
pankso@275 450 # Script can be called with an arg to exec a function.
pankso@275 451 if [ -n "$1" ]; then
pankso@275 452 $1
pankso@275 453 else
pankso@275 454 gtkdialog --center --program=MAIN_DIALOG >/dev/null
pankso@275 455 fi
pankso@275 456
pankso@275 457 exit 0