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フィードはバーにあり、クリックすると

答え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スクリプト

i3blocks-gaps pango ラベルの色はカラー名とともに使用されます。

20他の人のコードを使ってi3 - i3ブロックの外観を変更する

i3blocks-contrib

i3blocksで動的テキストをどのようにクリックできますか?

クリック可能なi3block?

別のブロックを試してください。

[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 50pango

[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

head -c 50 問題が発生する可能性がある

コマンドがエラーなしで単独で実行されることを確認してください。

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

関連情報