[wdb] This rustical megawidget makes mplayer controllable via Tcl/Tk. Built and tested on Linux; functional test on Windows is up to you. Procedure mplayer makes a frame with classname Mplayer with attribute `-container` set to `yes`, starting a piped instance of mplayer with arguments described below. The resulting command, eg. `.movieframe`, is then renamed to `_.movieframe`, and newly defined procedure `.movieframe` has additional sub-command `cmd` which sends commands to mplayer instance. To see list of all commands, enter: mplayer -input cmdlist Description of commands see https://bbs.archlinux.org/viewtopic.php?id=103766%|%here%|% or http://bbs.chinaunix.net/thread-2039912-1-1.html%|%here%|%. Key bindings on `.movieframe` are made according to original key bindings. Destroying `.movieframe` sends cmd `quit` to mplayer, then closes the pipe, then renames procedure `.movieframe` to empty string. Creating the frame occurs as in in this example: % mplayer .movieframe -width 400 -height 300 -- -nosound {*}[glob *.mp4] .movieframe % _ Explanation: first attributes for Tk frame, then two hyphens `--`, then arguments to start the mplayer instance. If no switches for mplayer intended, `--` can be omitted. Have fun! ====== proc mplayer {f args} { set options {-width 600 -height 400} while {[string match -* $args]} { if {[lindex $args 0] eq "--"} then { set args [lrange $args 1 end] break } else { set args [lassign $args key val] dict set options $key $val } } frame $f -class Mplayer -container yes {*}$options set wid [winfo id $f] set channel\ [open [concat | mplayer -quiet -idle -slave -wid $wid $args] r+] flush $channel bind $f [subst { catch { rename $f "" puts $channel quit flush $channel close $channel } }] rename $f _$f proc $f {cmd args} [subst -nocommand { if {\$cmd eq "cmd"} then { puts $channel \$args flush $channel } else { _$f \$cmd [list \$args] } }] bind $f <1> [list focus $f] bind $f [list focus $f] bind $f "$f cmd pause" bind $f "$f cmd pt_step 1" bind $f "$f cmd pt_step -1" bind $f "$f cmd seek 10" bind $f "$f cmd seek -10" bind $f "$f cmd seek -100" bind $f "$f cmd seek 100" bind $f "$f cmd osd_show_progression" bind $f 9 "$f cmd volume -1" bind $f 0 "$f cmd volume 1" set f } ====== ---- '''[aplsimple] - 2019-08-17 05:48:51''' Probably, you mean pack .movieframe -fill both -expand 1 after calling mplayer proc, not?