1

私は、avant ウィンドウ ナビゲーターや ubuntu unity のようなパネル アプリケーションを構築しようとしています。

私の質問は、事前に定義されたアプリケーションでパネルを作成したら、アプリケーションが開いているか起動しているときにパネルにアイテムを追加するにはどうすればよいですか?

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
}

これを実現できる端末、tcl、または python コマンドはありますか?

洞察に感謝します。前もって感謝します。

4

1 に答える 1

2

コマンドがオンになっている場合send(これは、ディスプレイのセキュリティに関連するあらゆる要因に依存します)、「既知の名前」をリッスンするように指示し、別の小さなアプリを使用sendしてスクリプトをディスパッチして評価することができます。 .

パネルで、「良い」名前を聞きます。

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

これで、シェル スクリプトまたは任意の場所からその小さなスクリプトを使用して、何かを登録するようにパネルに指示を送ることができます。それはそれと同じくらい簡単です。


sendコマンドが存在しない場合は、Tcllib の comm パッケージを試しみてください。ただし、ポート マッピングのレジストリを作成するポータブルな方法がないのとまったく同じものはありません (comm はローカル TCP チャネルを使用します)。そのため、その情報を通信する方法を見つける必要があります (よく知られている場所にあるファイル?)。残念ながら、私はそれについてあまり経験していないので、詳細にアドバイスすることはできません.comm::comm sendsendtk appname

于 2013-01-02T23:30:34.800 に答える