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

为 feed 创建 bash 脚本

您需要创建一个 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 feed,然后我点击了它:

RSS feed 位于栏上,点击后

答案2

包含 onclick 以通过 url 启动 Firefox。

[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 命令并提取输出的第二行

重新加载 i3blocks 以应用更改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认可,尝试有和没有
  • 改变interval300
  • rss块的格式是否正确
  • rsstail命令是否正常工作
  • iconv必要的
  • 可以单独运行命令吗
  • 你有什么版本
  • i3blocks如果您在终端中运行,您会看到这些块吗
  • 您是否编辑了~/.config/i3/config

相关内容