因此,我看到很多透明日志、运行日志或 htop 实例显示在桌面的固定区域上。我认为这类似于 root-tail,但我无法让 root-tail 工作。这让我怀疑要么是用另一种方式完成的,要么如果您知道如何修复它,这个问题就很简单。两种情况都可能。
因此我尝试了几个例子:
sudo root-tail -g 800x250+100+50 /var/log/syslog,green
上面的例子没有显示任何错误,但也没有显示。
user@machine:/home/user/scripts# sudo root-tail -g 800x250+100+50 -font fixed /var/log/syslog,green /var/log/auth.log,red,'ALERT'
Missing charsets in String to FontSet conversion (ISO8859-2)
Missing charsets in String to FontSet conversion (ISO8859-2)
不行。又被三振出局了。
线索?
答案1
root-tail
正在执行您想要的操作,但还有另一个窗口。这在错误root-tail
手册页的部分。
如今,大多数桌面都使用覆盖窗口来管理“根窗口”。在 LXDE 中,这是通过 完成的pcmanfm
,在 GNOME 中是nautilus
,而 Unity 有自己的功能。您要做的就是将 root-tail 输出到此覆盖层。
- 打开终端(xterm、rxvt、gnome-terminal 等)
- 跑步
xwininfo
- 您的光标现在已变为十字线。单击您的背景。
- 在输出中,请注意以 开头的行
xwininfo: Window id:
。您需要以下十六进制数字。 - 像前面一样运行 root-tail,但添加
-id
上一步中的十六进制数的标志。即:root-tail -g 800x250+100+50 -id 0x1000003 /var/log/syslog,green
xwininfo
对我来说(作为 LXDE 用户)的情况如下:
❯ xwininfo
xwininfo: Please select the window about which you
would like information by clicking the
mouse in that window.
xwininfo: Window id: 0x1000003 "pcmanfm"
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 1680
Height: 1050
Depth: 24
Visual: 0x21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +0+0 -0+0 -0-0 +0-0
-geometry 1680x1050+0+0
如果我kill
pcmanfm
(并缩短输出)你可以看到根窗口到底是什么。这是当你不使用root-tail
's-id
标志时你写的地方:
❯ ps xa |grep pcmanfm
13123 ? Sl 0:00 pcmanfm --desktop --profile lubuntu
14496 pts/0 S+ 0:00 grep pcmanfm
❯ kill 13123
❯ xwininfo |grep id:
xwininfo: Window id: 0x29a (the root window) (has no name)
笔记:您的“托管背景”的窗口 ID 很可能会在每次会话中发生变化。
答案2
您可以使用 Conky 以透明窗口显示日志,可能如下所示:
conky.config = {
-- — SETTINGS —
background = false,
update_interval = 1,
cpu_avg_samples = 2,
net_avg_samples = 2,
double_buffer = true,
no_buffers = true,
text_buffer_size = 2048,
imlib_cache_size = 0,
-- — WINDOW —
--own_window_class = 'Conky',
own_window_argb_visual = true,
own_window_argb_value=0,
--own_window_type='dock',
own_window=true,
own_window_transparent=true,
own_window_hints='undecorated,below,sticky,skip_taskbar,skip_pager',
-- — BORDER —
border_inner_margin = 1,
border_outer_margin = 1,
border_width = 1,
-- — SIZE — #
minimum_width = 1800,
maximum_width = 1800,
-- default_bar_width = 50, default_bar_height = 15,
-- — ALIGNMENT —
gap_x = 75,
gap_y = 450,
-- — GRAPHIC —
draw_shades = false,
draw_outline = false,
draw_borders = false,
draw_graph_borders = true,
--default_shade_color
--default_outline_color 909090
--own_window_colour 808080
-- — TEXT —
use_xft = true,
font = 'Dejavu Sans:size=10',
xftalpha = 1.0,
uppercase = false,
override_utf8_locale = true,
default_color = 'white',
-- — LUA —
--lua_load ~/Conky/bgcolor/bg.lua
--lua_draw_hook_pre conky_draw_bg
-- — Colors —
color1 = '#C18C24',
};
conky.text = [[
${color1}${font Dejavu Sans:size=12:condensed:bold}DD-WRT Router Log${font}
#${exec curl ipinfo.io}
----------------------------------${font}${color}
${exec watch -nd | tail -n 15 /var/log/ddwrt/ddwrt.log | sort -r}
]];
将显示如下内容:
答案3
像 htop 这样的程序是用 C 语言开发的自定义程序。它使用 ncurses 库,该库允许程序在终端(某种伪 GUI)中管理其输出。要获得相同的效果,需要使用 ncurses 编写程序。