如何监控linux/tcl/python中正在打开或启动的应用程序?

如何监控linux/tcl/python中正在打开或启动的应用程序?,python,linux,tcl,window-managers,window-management,Python,Linux,Tcl,Window Managers,Window Management,我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity 我的问题是,一旦我用预先定义的应用程序构建面板,当应用程序打开或启动时,如何向面板添加项目 以下是我在tcl中的源代码: package require Tk set items {xterm gvim firefox} wm withdraw . toplevel .panel wm attributes .panel -topmost 1 ; # on top bind .panel

我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity

我的问题是,一旦我用预先定义的应用程序构建面板,当应用程序打开或启动时,如何向面板添加项目

以下是我在tcl中的源代码:

package require Tk

set items {xterm gvim firefox}
wm withdraw .
toplevel .panel
wm attributes .panel -topmost 1 ; # on top
bind .panel <Escape> {exit}
wm geometry .panel +0+0
wm overrideredirect .panel yes ; # remove window decorations

set counter 0
foreach item $items {
    incr counter
    set separator " "
    label .panel.$counter -text "$item$separator" -bg black -fg white \
    -font {-family "Fixedsys Excelsior 3.01" -size 12}
    grid .panel.$counter -column $counter -row 0
}
包需要Tk
设置项{xterm gvim firefox}
我退出。
顶层面板
wm attributes.panel-最上面的1;#最上面
bind.panel{exit}
wm几何。面板+0+0
wm overrideredirect。面板是;#拆除窗户装饰物
设置计数器0
foreach item$items{
递增计数器
设置分隔符“”
标签.面板.$计数器-文本“$项目$分隔符”-背景黑-前景白\
-字体{-family“Fixedsys Excelsior 3.01”-大小12}
网格.面板.$计数器-列$计数器-第0行
}
有没有终端、tcl或python命令可以实现这一点


欣赏任何见解。提前谢谢。

如果打开了
发送
命令(这取决于与显示器安全性相关的各种因素),您可以告诉它听一个“知名名称”,然后让另一个小应用程序使用
发送
发送脚本进行评估

在面板中,听一个“好”的名字:

package require Tk
tk appname MyExcellentPanel
proc registerItem args {
   # How to do the registration of things here
}
在助手脚本中:

#!/usr/bin/env wish
package require Tk
wm withdraw .                               ;  # IMPORTANT! Don't show a GUI here
send MyExcellentPanel registerItem $argv    ;  # The magic command
exit                                        ;  # IMPORTANT! Exit now
现在,您可以使用shell脚本或任何地方的小脚本向面板发送指令以注册某些内容。就这么简单



如果
send
命令不存在,请尝试Tcllib中的包,使用
comm::comm send
作为
send
的近似等效项。但是,没有什么与tk appname完全相同,因为没有可移植的方法来注册端口映射(comm使用本地TCP通道),所以您需要找到一种方法来传递该信息(在一个众所周知的地方的文件?)。唉,我对它不是很有经验,所以我不能提供详细的建议。

也许你可以从Tcl/Tk窗口管理器的奇思妙想中复制/学习:我已经看过了,但不幸的是无法在我的Ubuntu机器上编译。谢谢,谢谢你的回复。我只是看看send的主页,这似乎是一个很好的起点。再次感谢。