Ubuntu桌面可视化显示GUP、CPU、自定义等信息

本文使用conky工具实现该功能!!!

安装conky

sudo apt-get install conky

创建并写入.conkyrc文件

打开并创建.conkyrc文件

vim ~/.conkyrc

写入内容如下:

conky.config = {
    -- Basic settings
    update_interval = 1,
    double_buffer = true,
    total_run_times = 0,

    -- Transparency settings
    own_window = true,
    own_window_type = 'desktop',
    own_window_transparent = true,
    own_window_argb_visual = true,
    own_window_argb_value = 0,
    own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',

    -- Positioning
    alignment = 'top_right',
    gap_x = 30,
    gap_y = 30,

    -- Font
    use_xft = true,
    font = 'DejaVu Sans Mono:size=10',
    use_spacer = 'right',

    -- Appearance
    draw_shades = false,
    draw_outline = false,
    draw_borders = false,
    border_width = 0,
    background = false,

    -- GPU support
    lua_load = '~/.conky/lua/nvidia.lua'
}

conky.text = [[
${color white}System Monitor${alignr}${time %H:%M}
${color grey}-----------------------------
${color orange}CPU${color grey} [${cpu cpu0}%] ${alignr}${color green}${freq_g} GHz
${cpubar 10}
${color orange}RAM${color grey} ${mem}/${memmax} ${alignr}${color green}${memperc}%
${membar 10}
${color orange}GPU${color grey} [${lua nvidia gpuutil}%] ${alignr}${color green}${lua nvidia gpufreq} MHz 
${color grey}VRAM: ${lua nvidia memused} / ${lua nvidia memmax} MB
${color grey}TEMP: ${lua nvidia gputemp}°C

${color white}Commands
${color grey}-----------------------------
${color green}pj            ${alignr}${color grey}Start plotjugger
${color green}cursor        ${alignr}${color grey}Into cursor
${color green}filebox       ${alignr}${color grey}Start filebox
${color green}into_server   ${alignr}${color grey}Into ubuntu server
]]

创建文件夹,创建并打开nvidia.lua文件

mkdir -p ~/.conky/lua
vim ~/.conky/lua/nvidia.lua

写入

function conky_nvidia(what)
    local handle = io.popen("nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu,clocks.current.sm --format=csv,noheader,nounits 2>/dev/null")
    local result = handle:read("*a")
    handle:close()
    
    local gpuutil, memused, memmax, gputemp, gpufreq = result:match("(%d+),%s*(%d+),%s*(%d+),%s*(%d+),%s*(%d+)")
    
    if what == "gpuutil" then return gpuutil or "N/A"
    elseif what == "memused" then return memused or "N/A"
    elseif what == "memmax" then return memmax or "N/A"
    elseif what == "gputemp" then return gputemp or "N/A"
    elseif what == "gpufreq" then return gpufreq or "N/A"
    end
    return "N/A"
end

function conky_draw_gpu_bar(height)
    local util = tonumber(conky_nvidia("gpuutil")) or 0
    local width = conky_window.width - 60  -- 动态宽度
    height = tonumber(height) or 10
    
    -- 获取绘图上下文
    if conky_window == nil then return end
    local cs = cairo_xlib_surface_create(conky_window.display, 
                                        conky_window.drawable, 
                                        conky_window.visual, 
                                        conky_window.width, 
                                        conky_window.height)
    local cr = cairo_create(cs)
    
    -- 计算位置(跟随GPU信息下方)
    local x = 50
    local y = 140  -- 根据实际布局调整
    
    -- 绘制背景
    cairo_set_source_rgba(cr, 0.3, 0.3, 0.3, 0.5)
    cairo_rectangle(cr, x, y, width, height)
    cairo_fill(cr)
    
    -- 绘制进度条
    local progress_width = (util / 100) * width
    if util > 80 then
        cairo_set_source_rgba(cr, 1, 0, 0, 0.8)  -- 红色高负载
    else
        cairo_set_source_rgba(cr, 0, 1, 0, 0.8)  -- 绿色正常
    end
    cairo_rectangle(cr, x, y, progress_width, height)
    cairo_fill(cr)
    
    -- 添加百分比文本
    cairo_set_source_rgb(cr, 1, 1, 1)
    cairo_select_font_face(cr, "DejaVu Sans Mono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL)
    cairo_set_font_size(cr, 10)
    cairo_move_to(cr, x + width + 5, y + height/2 + 4)
    cairo_show_text(cr, util .. "%")
    
    -- 释放资源
    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    return ""
end

终端运行

conky

成果展示

好啦,到这里就完成了本文的所有配置,你应该能得到这样的桌面了。

图片[1]-Ubuntu桌面可视化显示GUP、CPU、自定义等信息-九桑

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容