Fork me on GitHub

Wireless status widget/watcher

Get wireless Quality link (converted to percentages) and wireless status.

Data is taken from /proc/net/wireless.

According to this website /proc/net/wireless has the following information:

  • Status: Its current state. This is a device dependent information.

  • Quality - link: general quality of the reception.

  • Quality - level: signal strength at the receiver.

  • Quality - noise: silence level (no packet) at the receiver.

  • Discarded - nwid: number of discarded packets due to invalid network id.

  • Discarded - crypt: number of packet unable to decrypt.

  • Discarded - misc: unused (for now).

This widget uses Quality - link and converts it to percentages (perc=Quality_link*10/7). The above equation is taken from this forum answer.

It also stores Status information (note that this is presumably device dependent).

Requirements

  • iw

Usage

  • Download wirelessStatus.lua file and put it into awesome's folder (like ~/.config/awesome/widgets/wirelessStatus.lua)

  • Add widget to theme.lua:

local widgets = {
    wirelessStatus = require("widgets/wirelessStatus"),
}
-- Wireless status widget (`status` is presumably device dependent)
theme.wirelessStatus = widgets.wirelessStatus({
    notification_preset = { font = "Mononoki Nerd Font 10", fg = theme.fg_normal },
    timeout = 10,
    settings = function(self)
        if self.status == "1" or self.status == "" then
            self.widget:set_image(theme.wifidisc)
        else
            if self.perc <= 5 then
                self.widget:set_image(theme.wifinone)
            elseif self.perc <= 25 then
                self.widget:set_image(theme.wifilow)
            elseif self.perc <= 50 then
                self.widget:set_image(theme.wifimed)
            elseif self.perc <= 75 then
                self.widget:set_image(theme.wifihigh)
            else
                self.widget:set_image(theme.wififull)
            end
        end
    end,
})
local widget_wirelessStatus = wibox.widget { nil, theme.wirelessStatus.widget, layout = wibox.layout.align.horizontal }
  • Set which application to run on widget press (add to rc.lua):
-- wirelessStatus widget pressed function - open terminal and start `nmtui`
beautiful.wirelessStatus.pressed = function(self, button)
    if button == 1 then  -- left mouse click
        awful.spawn(terminal.." -e nmtui")
    end
end