このブロックがあります。/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フィードを見てからクリックしました。