次のosd_catスクリプトが失敗するのはなぜですか?

次のosd_catスクリプトが失敗するのはなぜですか?

私はosd_catlibpurple(例えばFinchやPidginを介して)を介して受け取ったメッセージの表示に基づいて簡単なユーティリティを書いています。

これまで、これは私がうまく作ったものです。

dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | awk '/string/ && (NR%2==1) {split($0, sender, "\"") }; /string/ && (NR%2==0) {print sender[2] ": " substr($0,11) }' | osd_cat --pos=top --align=right --indent=8 -O 4 -u white

あるいは、読書の楽しみを高めるために複数行に分割します。

dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg"
 | awk '/string/ && (NR%2==1) {split($0, sender, "\"") };
        /string/ && (NR%2==0) {print sender[2] ": " substr($0,11) }'
 | osd_cat --pos=top --align=right --indent=8 -O 4 -u white

いくつかの実験を行った結果、次のことがわかりました。

yes | osd_cat
echo "text" | osd_cat
dbus-monitor | osd_cat
dbus-monitor | awk '{print $0}' | osd_cat
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | osd_cat

しかし、以下はうまくいきません。

dbus-monitor | awk '{print $1 $2}' | osd_cat
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | awk '{print $0}' |osd_cat

私は完全に迷子になった。

ベストアンサー1

古い質問ですが、Googleスタッフのための質問です。

同様の問題がありましたが、はるかに単純な規模です。私はやりたいです。

echo "Some string\nWith a bunch of chars" | osd_cat

私はosd_catにOSDメカニズムの可用性検出の遅延や入力バッファリングの問題など、いくつかの問題があるようです。

入力文字列が長すぎると(私のシステムでは、印刷可能な文字が7〜11文字の間)、遅延された後に何も表示されずに終了します。 osd_cat オプションを

使用すると問題がなくなります。しかし、副作用は、メッセージが表示されるのに5秒以上かかることがあります(私のシステムでは)。 osd_catに指定した遅延は、メッセージが表示されたときにのみ開始されます。ただし、これはデフォルトでは、5秒間表示されるメッセージが表示されるまでに5秒かかり、消えるまで5秒かかることを意味します。関連するメモでは、これはosd_catの上に構築されたすべてのツールの問題のようです。原作者が提供したツールのリストは彼のページにあります(osd_catのマニュアルページにリストされています)。--wait


http://ignavus.net/xosd
これにはより一般的なものが含まれますosdsh。これが私が偶然発見したときに呼び出されたときに断続的に何も表示しないので、代替を見つけようとする理由ですosd_cat

おすすめ記事