我有这个块/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,然后我点击了它:
答案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-gaps pango 标签颜色与颜色名称一起使用
尝试使用单独的块:
[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