123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- --local beautiful = require("beautiful")
- --@author cedlemo
- local naughty = require("naughty")
- local os = require("os")
- local awful = require("awful")
- local helpers =require("blingbling.helpers")
- local string = require("string")
- local superproperties = require('blingbling.superproperties')
- ---Differents popups for Awesome widgets
- --@module blingbling.popups
- local function colorize(string, pattern, color)
-
- local mystring=""
- mystring=string.gsub(string,pattern,'<span color="'..color..'">%1</span>')
- return mystring
- end
- local processpopup = nil
- local processstats = nil
- local proc_offset = 25
- local function hide_process_info()
- if processpopup ~= nil then
- naughty.destroy(processpopup)
- processpopup = nil
- proc_offset = 25
- end
- end
- local function show_process_info(inc_proc_offset, title_color,user_color, root_color)
- local save_proc_offset = proc_offset
- hide_process_info()
- proc_offset = save_proc_offset + inc_proc_offset
- processstats = awful.util.pread('/bin/ps --sort -c,-s -eo fname,user,%cpu,%mem,pid,gid,ppid,tname,label | /usr/bin/head -n '..proc_offset)
- processstats = colorize(processstats, "COMMAND", title_color)
- processstats = colorize(processstats, "USER", title_color)
- processstats = colorize(processstats, "%%CPU", title_color)
- processstats = colorize(processstats, "%%MEM", title_color)
- processstats = colorize(processstats, " PID", title_color)
- processstats = colorize(processstats, "GID", title_color)
- processstats = colorize(processstats, "PPID", title_color)
- processstats = colorize(processstats, "TTY", title_color)
- processstats = colorize(processstats, "LABEL", title_color)
- processstats = colorize(processstats, "root", root_color)
- processstats = colorize(processstats, os.getenv("USER"), user_color)
- processpopup = naughty.notify({
- text = processstats,
- timeout = 0, hover_timeout = 0.5,
- })
- end
- ---Top popup.
- --It binds a colorized output of the top command to a widget, and the possibility to launch htop with a click on the widget.
- --</br>Example blingbling.popups.htop(mycairograph,{ title_color = "#rrggbbaa", user_color = "#rrggbbaa", root_color="#rrggbbaa", terminal = "urxvt"})
- --</br>The terminal parameter is not mandatory, htop will be launch in xterm. Mandatory arguments:
- -- <ul> <li>title_color define the color of the title's columns.</li>
- -- <li>user_color display the name of the current user with this color in the top output.</li>
- -- <li>root_color display the root name with this color in the top output. </li></ul>
- --@param mywidget the widget
- --@param args a table of arguments { title_color = "#rrggbbaa", user_color = "#rrggbbaa", root_color="#rrggbbaa", terminal = a terminal name})
- function htop(mywidget, args)
- local args = args or {}
- mywidget:connect_signal("mouse::enter", function()
- show_process_info(0, args["title_color"] or superproperties.htop_title_color,
- args["user_color"] or superproperties.htop_user_color,
- args["root_color"] or superproperties.htop_root_color)
- end)
- mywidget:connect_signal("mouse::leave", function()
- hide_process_info()
- end)
- mywidget:buttons(awful.util.table.join(
- awful.button({ }, 4, function()
- show_process_info(-1, args["title_color"] or superproperties.htop_title_color,
- args["user_color"] or superproperties.htop_user_color,
- args["root_color"] or superproperties.htop_root_color)
- end),
- awful.button({ }, 5, function()
- show_process_info(1, args["title_color"] or superproperties.htop_title_color,
- args["user_color"] or superproperties.htop_user_color,
- args["root_color"] or superproperties.htop_root_color)
- end),
- awful.button({ }, 1, function()
- if args["terminal"] then
- awful.util.spawn_with_shell(args["terminal"] .. " -e htop")
- else
- awful.util.spawn_with_shell("xterm" .. " -e htop")
- end
- end)
- ))
- end
- local netpopup = nil
- local function get_netinfo( my_title_color, my_established_color, my_listen_color)
- local str=awful.util.pread('/bin/netstat -pa -u -t | grep -v TIME_WAIT')
- str=colorize(str,"Proto", my_title_color)
- str=colorize(str,'Recv%XQ', my_title_color)
- str=colorize(str,"Send%XQ", my_title_color)
- str=colorize(str,"Local Address", my_title_color)
- str=colorize(str,"Foreign Address", my_title_color)
- str=colorize(str,"State", my_title_color)
- str=colorize(str,'PID/Program name', my_title_color)
- str=colorize(str,"Security Context", my_title_color)
- str=colorize(str,"ESTABLISHED", my_established_color)
- str=colorize(str,"LISTEN", my_listen_color)
- return str
- end
- local function hide_netinfo()
- if netpopup ~= nil then
- naughty.destroy(netpopup)
- netpopup = nil
- end
- end
- local function show_netinfo(c1,c2,c3)
- hide_netinfo()
- netpopup=naughty.notify({
- text = get_netinfo(c1,c2,c3),
- timeout = 0, hover_timeout = 0.5,
- })
- end
- ---Netstat popup.
- --It binds a colorized output of the netstat command to a widget.
- --</br>Example: blingbling.popups.netstat(net,{ title_color = "#rrggbbaa", established_color= "#rrggbbaa", listen_color="#rrggbbaa"})
- --</br>Mandatory arguments:
- --<ul><li>widget (if blinbling widget add .widget ex: cpu.widget, if textbox or image box just put the widget name)</li>
- --<li>title_color define the color of the title's columns.</li>
- --<li>established_color display the state "ESTABLISHED" of a connexion with this color in the netstat output.</li>
- --<li>listen_color display the state "LISTEN" with this color in the netstat output.</li></ul>
- --@param mywidget the widget
- --@param args a table { title_color = "#rrggbbaa", established_color= "#rrggbbaa", listen_color="#rrggbbaa"}
- function netstat(mywidget, args)
- local args = args or {}
- mywidget:connect_signal("mouse::enter", function()
- show_netinfo( args["title_color"] or superproperties.netstat_title_color,
- args["established_color"] or superproperties.netstat_established_color,
- args["listen_color"] or superproperties.netstat_listen_color)
- end)
- mywidget:connect_signal("mouse::leave", function()
- hide_netinfo()
- end)
- end
- return {
- htop = htop ,
- netstat = netstat
- }
|