isblocks.confはonclickイベントを生成します(URLでFirefoxを開く)。

isblocks.confはonclickイベントを生成します(URLでFirefoxを開く)。

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

RSSフィードはバーにあり、クリックすると

おすすめ記事