如何获得这些漂亮的透明日志显示?

如何获得这些漂亮的透明日志显示?

因此,我看到很多透明日志、运行日志或 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 输出到此覆盖层。

  1. 打开终端(xterm、rxvt、gnome-terminal 等)
  2. 跑步xwininfo
  3. 您的光标现在已变为十字线。单击您的背景。
  4. 在输出中,请注意以 开头的行xwininfo: Window id:。您需要以下十六进制数字。
  5. 像前面一样运行 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 编写程序。

相关内容