i3blocks 电池脚本,使用很棒的字体不适用于某些 unicode
i3blocks battery script, using font awesome doesn't work with some unicodes
我使用 font-awesome 4.4.0 并使用新的电池图标扩展了默认的 i3blocks 电池脚本。
一切似乎都正常工作,但 fa-battery-half Unicode: f242
使脚本无用。 unicode 似乎也指字符
.
在终端中崩溃:
$ perl /usr/share/i3blocks/battery
Wide character in print at /usr/share/i3blocks/battery line 65.
28% (01:02)
Wide character in print at /usr/share/i3blocks/battery line 66.
28%
#000000
脚本是默认的,除了以下几行:
if ($status eq 'Discharging') {
if ($percent < 10) {
$full_text .= ' ';
} elsif ($percent < 25) {
$full_text .= ' ';
} elsif ($percent < 50) {
$full_text .= ' ';
} elsif ($percent < 75) {
$full_text .= ' ';
} elsif ($percent < 100) {
$full_text .= ' ';
}
} elsif ($status eq 'Charging') {
$full_text .= ' ';
}
和
if ($status eq 'Discharging') {
if ($percent < 25) {
print "#FF003C\n";
} else {
print "#000000\n";
}
if ($percent < 5) {
exit(33);
}
}
在编辑器中,脚本如下所示:
如何使用 fa-battery-half Unicode: f242
图标让脚本运行。
你有两个问题。
您的第一个问题是导致 "wide character" 警告和其他可能问题的错误。要解决错误,请正确编码您的输出。具体来说,将以下内容添加到您的脚本中:
use open ':std', ':encoding(UTF-8)';
这告诉 Perl
- 使用 UTF-8 对发送到 STDOUT 的文本进行编码。
- 使用 UTF-8 对发送到 STDERR 的文本进行编码。
- 使用 UTF-8 解码从 STDIN 读取的文本。
- 使用 UTF-8 作为文件的默认编码。
警告表明 Perl 能够注意到您的错误,并且它试图通过使用 UTF-8 对输出进行编码来修复它。这是正确的修复,所以你的程序的输出不会改变,这给我们带来了第二个问题。
你的第二个问题是你的终端字体没有 U+F242 的字形。如果您希望显示该字符,则需要使用不同的字体。
我使用 font-awesome 4.4.0 并使用新的电池图标扩展了默认的 i3blocks 电池脚本。
一切似乎都正常工作,但 fa-battery-half Unicode: f242
使脚本无用。 unicode 似乎也指字符
.
在终端中崩溃:
$ perl /usr/share/i3blocks/battery
Wide character in print at /usr/share/i3blocks/battery line 65.
28% (01:02)
Wide character in print at /usr/share/i3blocks/battery line 66.
28%
#000000
脚本是默认的,除了以下几行:
if ($status eq 'Discharging') {
if ($percent < 10) {
$full_text .= ' ';
} elsif ($percent < 25) {
$full_text .= ' ';
} elsif ($percent < 50) {
$full_text .= ' ';
} elsif ($percent < 75) {
$full_text .= ' ';
} elsif ($percent < 100) {
$full_text .= ' ';
}
} elsif ($status eq 'Charging') {
$full_text .= ' ';
}
和
if ($status eq 'Discharging') {
if ($percent < 25) {
print "#FF003C\n";
} else {
print "#000000\n";
}
if ($percent < 5) {
exit(33);
}
}
在编辑器中,脚本如下所示:
如何使用 fa-battery-half Unicode: f242
图标让脚本运行。
你有两个问题。
您的第一个问题是导致 "wide character" 警告和其他可能问题的错误。要解决错误,请正确编码您的输出。具体来说,将以下内容添加到您的脚本中:
use open ':std', ':encoding(UTF-8)';
这告诉 Perl
- 使用 UTF-8 对发送到 STDOUT 的文本进行编码。
- 使用 UTF-8 对发送到 STDERR 的文本进行编码。
- 使用 UTF-8 解码从 STDIN 读取的文本。
- 使用 UTF-8 作为文件的默认编码。
警告表明 Perl 能够注意到您的错误,并且它试图通过使用 UTF-8 对输出进行编码来修复它。这是正确的修复,所以你的程序的输出不会改变,这给我们带来了第二个问题。
你的第二个问题是你的终端字体没有 U+F242 的字形。如果您希望显示该字符,则需要使用不同的字体。