
このブロックがあります。/etc/i3blocks.conf
[rss]
command=rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 50
color=#00FF00
interval=300
firefox
このブロックをクリックして正しいURLで開きたいです。
URL を使用して Firefox を開くブロックです。
[clickme]
align=center
full_text=Click me!
command=/usr/bin/firefox --new-tab https://www.stackexchange.com/
私はそれらを組み合わせる方法を知りません。ここ文書です。
ここリンクを取得する方法:
rsstail -l -n1 -1 -N -u https://news.ycombinator.com/rss | sed -n 2p
rsstail
リンクを一部の「ブロック変数」に保存してから、コマンドで使用する必要があります。
これまで、私は次の解決策を持っています。
[rss]
command=rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT # | head -c 40
color=#00FF00
interval=300
[clickme]
align=center
full_text=*
command=firefox --new-tab `rsstail -l -n1 -1 -N -u https://news.ycombinator.com/rss | sed -n 2p`
クリックするとリンクが開きます*
。したがって、タイトルをクリックするのではなく、*
タイトルの横にあるタイトルをクリックします。しかし、リンクがタイトルとは何の関係もないかもしれないので、私は望んでいません。リンクをある種の変数(可能な場合はブロック変数や環境変数など)に渡す必要があります。
答え1
これは思ったよりずっと難しかったです。これを行うには、別々のbashスクリプトを生成する必要があります。 i3blocksファイルにパスが正しく設定されているとしますconfig
。
フィード用bashスクリプトの作成
テーマを表示するために必要な情報と、クリック時に正しいWebページが開くかどうかを読むbashを生成する必要があります。
警告する:これを認識できない場合、問題を引き起こす可能性のある隠された制限があります。 URLの長さは最大32文字です。インスタンス変数それが定義された方法です。長いURLを使用するには、URLショートカットを使用する必要があります。 (台本にも言及されています!)
というbashスクリプトを作成してディレクトリrss
に配置しましたrss
。私のパスは次のとおりです~/Build/i3blocks/blocklets/rss/rss
。
i3blocks 構成にはグローバルコマンドがあります。
command=$SCRIPT_DIR/$BLOCK_NAME/$BLOCK_NAME
i3 構成には次のものがあります。
bar {
# status_command i3status
status_command SCRIPT_DIR=~/Build/i3blocks/blocklets i3blocks
}
スクリプトrss
:
#!/usr/bin/env bash
# WARNING: This has a LIMIT of 32 characters for now!
# If your URL is longer you should use an URL shortener
# Caused by https://github.com/vivien/i3blocks/blob/01a4f4a9ca1e3d0b3c95d1d62000ad8506bdff1a/include/block.h#L50
# if BLOCK_INSTANCE is empty try a default value page instead
rss_url="${BLOCK_INSTANCE:-https://news.ycombinator.com/rss}"
if [[ "${url}" = "" ]]; then
exit 1
fi
# get the title to show on bar
rss_title=$(rsstail -n1 -1 -N -u "${rss_url}" | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 40)
# the link to web page that will be displayed
rss_link=$(rsstail -l -n1 -1 -N -u "${rss_url}" | sed -n 2p)
if [[ "${rss_title}" = *404* ]]; then
echo "${rss_url}"
echo "${rss_url}"
echo ""
exit 1
fi
if [[ "${BLOCK_BUTTON}" -eq 1 ]]; then
/usr/bin/firefox --new-tab "${rss_link}"
fi
echo "${rss_title}"
echo "${rss_title}"
echo ""
i3blocks構成ファイルにブロックを追加する
[rss]
instance=https://news.ycombinator.com/rss
label=
interval=300
メモ:タグはRSSのUnicodeシンボルですが、なぜunix SEがこれを見ることができないのかわかりません。
最終結果を共有することにしました。まずRSSフィードを見てからクリックしました。
答え2
URLを介してFirefoxを実行するには、onclickを含めてください。
[rss]
command=rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 50
color=#00FF00
interval=300
markup=pango
onclick=/usr/bin/firefox --new-tab "$(rsstail -l -n1 -1 -N -u https://news.ycombinator.com/rss | sed -n 2p)"
markup=pango
ブロックテキストにpangoタグを使用できるようにします。デフォルトのテキストの書式設定には必要ありませんが、便利です。
onclick
イベントはURLを使用してFirefoxを起動し、rsstailコマンドを実行して出力の2行目を抽出します。
変更を適用するには、i3blockを再ロードしてください。pkill -RTMIN+10 i3blocks
RSSブロックをクリックすると、正しいURLでFirefoxが起動します。
i3blocks-gaps pango ラベルの色はカラー名とともに使用されます。
20他の人のコードを使ってi3 - i3ブロックの外観を変更する
i3blocksで動的テキストをどのようにクリックできますか?
別のブロックを試してください。
[start_firefox]
command=/usr/bin/firefox --new-tab https://news.ycombinator.com/
interval=once
[rss]
command=echo "<a href='signal:USR1:start_firefox'>$(rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 50)</a>"
color=#00FF00
interval=300
markup=pango
いいえ<a href></a>
:
[start_firefox]
command=/usr/bin/firefox --new-tab https://news.ycombinator.com/
interval=once
[rss]
command=$(rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 50)
color=#00FF00
interval=300
markup=pango
なし:head -c 50
pango
[start_firefox]
command=/usr/bin/firefox --new-tab https://news.ycombinator.com/
interval=once
[rss]
command=$(rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT)
color=#00FF00
interval=300
コマンドがエラーなしで単独で実行されることを確認してください。
rsstail -n1 -1 -N -u news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT | head -c 50
rsstail -n1 -1 -N -u news.ycombinator.com/rss | iconv -f UTF-8 -t ASCII//TRANSLIT
その他のエラー:
- ルート確認
/usr/bin/firefox
- 認識され
--new-tab
、有無にかかわらず試みられました。 interval
値の変更300
rss
ブロックの形式は正しいですか?rsstail
コマンドは正しく機能しますか?iconv
必要- コマンドを個別に実行できますか?
- あなたはどのバージョンを持っていますか?
i3blocks
端末で実行すると、次のブロックが表示されますか?- 編集しましたか?
~/.config/i3/config