128 lines
4.8 KiB
Raw Normal View History

Copyright (C) 2012 - 2013
Thomas Schmitt <>,
Provided under BSD license: Use, modify, and distribute as you like.
xorriso-tcltk is mainly a proof of concept for a frontend that operates
xorriso in dialog mode.
- xorriso ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program
- Tcl programming language
- Tk widget toolkit
- optionally the Tcl/Tk package BWidget
It exercises several fundamental gestures of communication:
- connecting via two pipes
- sending commands
- receiving replies
- inquiring the xorriso message sieve
- using the xorriso parsing service
Note that any other language than Tcl/Tk could be used, if it only can
do i/o via standard input and standard output or via named pipes.
Further it has to perform integer arithmetics and string manipulations.
And, well, a graphical widget set would be nice.
See man xorriso for a documentation of xorriso concepts and commands.
See man xorrecord for details of the burn image file feature.
Quick start
In the xorriso build directory, without installation of xorriso:
xorriso/xorriso -launch_frontend frontend/xorriso-tcltk --stdio --
After installation of xorriso by make install:
Overview of GUI
The window is separated into three main areas:
- Connection to xorriso.
- Management of drives and image files.
- Inspection, manipulation, and exploitation of xorriso ISO image model.
Click the rightmost mouse button while being over any of the GUI elements
in order to get the particular help text for that element.
There is no need to close the help window. Just click another element to
get another help text.
The "Help" button in the upper right corner gives a short overview and
instructions for several common use cases.
Program start options
The Tcl shell "wish" is allergic to options which start by "-h".
So here is the output of xorriso-tcltk --help :
frontend/xorriso-tcltk [options]
All options must be given with two dashes ("--option") in
order to distinguish them from any options of the Tcl shell.
Print this text and exit.
Establish connection to xorriso via stdin and stdout.
E.g. when letting xorriso start this frontend program:
xorriso -launch_frontend $(which xorriso-tcltk) --stdio --
--named_pipes cmd_fifo reply_fifo
Establish connection to a xorriso process started by:
xorriso -dialog on <cmd_fifo >reply_fifo
which is then ready for a run of:
xorriso-tcltk --named_pipes cmd_fifo reply_fifo
It is important that the parent of xorriso and of this
tcl/tk frontend opens the named pipe for commands before
it opens the named pipe for replies. This avoids deadlock.
Do not issue the start message xorriso-tcltk-version.
This works only if --silent_start is the first argument.
Do not allow extraction of files from ISO filesystem to
hard disk. This is not revokable during the program run.
Do not try to load the Tcl/Tk package BWidget which is
a prerequisite for the "/" file browser buttons.
--geometry {+|-}X{+|-}Y
Sets the position of the main window.
Chooses that input fields and list boxes get the keyboard
focus only when being clicked by the mouse. (Default)
Chooses that the keyboard focus is where the mouse
pointer is.
--pipe_log_file path
Set a file address for logging of xorriso commands and
reply messages and enable this logging.
The log lines will be appended. Path "-" means stderr.
--script_log_file path
Set a file address for logging of essential xorriso
commands and enable this logging.
The log lines will be appended. Path "-" means stderr.
With logging of commands log non-essential commands too.
Use xorriso command -move for the "Move to: button
if xorriso version is >= 1.2.8
Use xorriso command -mv for the "Move to:" button.
If neither --stdio nor --named_pipes is given, then this script
will try to locate itself in the filesystem and start a xorriso
run that launches it again.
In the running GUI, click with the rightmost mouse button on
any GUI element to get its particular help text.