Make the progress bars and graphs more configurable and themable
authorTuomas Jormola <tj@solitudo.net>
Thu, 17 Mar 2016 19:05:01 +0000 (21:05 +0200)
committerTuomas Jormola <tj@solitudo.net>
Thu, 17 Mar 2016 19:05:01 +0000 (21:05 +0200)
delightful/widgets/battery.lua
delightful/widgets/cpu.lua
delightful/widgets/memory.lua
delightful/widgets/pulseaudio.lua

index dc7de11..ed1b2af 100644 (file)
 -- -- Name of the battery. Matches a file under the directory
 -- -- /sys/class/power_supply/ and typically is "BATn" where n
 -- -- is a number, most likely 0. 'BAT0' by default.
 -- -- Name of the battery. Matches a file under the directory
 -- -- /sys/class/power_supply/ and typically is "BATn" where n
 -- -- is a number, most likely 0. 'BAT0' by default.
---           battery         = 'BAT2',
+--        battery            = 'BAT2',
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
---           command         = 'gnome-power-preferences',
+--        command            = 'gnome-power-preferences',
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
---        no_icon         = true,
+--        no_icon            = true,
+-- -- Height of the progress bar in pixels. Default is 19.
+--        progressbar_height = 19,
+-- -- Width of the progress bar in pixels. Default is 8.
+--        progressbar_width  = 12,
 -- -- How often update the widget data. Default is 20 seconds.
 -- -- How often update the widget data. Default is 20 seconds.
---           update_interval = 30
+--        update_interval    = 30
 -- }
 --
 --
 -- Theme:
 --
 -- }
 --
 --
 -- Theme:
 --
--- The widget uses following colors and icons if available in
+-- The widget uses following settings, colors and icons if available in
 -- the Awesome theme.
 --
 -- the Awesome theme.
 --
+-- theme.progressbar_height        - height of the battery charge progress bar in pixels
+-- theme.progressbar_width         - width of the battery charge progress bar in pixels
 -- theme.bg_widget                 - widget background color
 -- theme.fg_widget                 - widget foreground color
 -- theme.fg_center_widget          - widget gradient color, middle
 -- theme.bg_widget                 - widget background color
 -- theme.fg_widget                 - widget foreground color
 -- theme.fg_center_widget          - widget gradient color, middle
@@ -56,6 +62,7 @@
 
 local awful      = require('awful')
 local wibox      = require('wibox')
 
 local awful      = require('awful')
 local wibox      = require('wibox')
+local beautiful  = require('beautiful')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
@@ -99,6 +106,18 @@ local config_description = {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
+               name     = 'progressbar_height',
+               required = true,
+               default  = 19,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
+               name     = 'progressbar_width',
+               required = true,
+               default  = 8,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
                name     = 'update_interval',
                required = true,
                default  = 20,
                name     = 'update_interval',
                required = true,
                default  = 20,
@@ -169,8 +188,8 @@ function load(self, config)
                battery_widget:set_background_color(bg_color)
        end
        local color_args = fg_color
                battery_widget:set_background_color(bg_color)
        end
        local color_args = fg_color
-       local width  = 8
-       local height = 19
+       local height = beautiful.progressbar_height or battery_config.progressbar_height
+       local width  = beautiful.progressbar_width  or battery_config.progressbar_width
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
index e6501c4..1dff68e 100644 (file)
 -- The load() function can be supplied with configuration.
 -- Format of the configuration is as follows.
 -- {
 -- The load() function can be supplied with configuration.
 -- Format of the configuration is as follows.
 -- {
--- -- Width of the graph in pixels. Default is 20.
---           graph_width     = 50,
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
---           command         = 'gnome-system-monitor',
+--        command         = 'gnome-system-monitor',
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 --        no_icon         = true,
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 --        no_icon         = true,
+-- -- Height of the graph in pixels. Default is 19.
+--        graph_height    = 19,
+-- -- Width of the graph in pixels. Default is 20.
+--        graph_width     = 50,
 -- -- How often update the widget data. Default is 1 second.
 -- -- How often update the widget data. Default is 1 second.
---           update_interval = 2
+--        update_interval = 2
 -- }
 --
 --
 -- Theme:
 --
 -- }
 --
 --
 -- Theme:
 --
--- The widget uses following colors and icons if available in
+-- The widget uses following settings, colors and icons if available in
 -- the Awesome theme.
 --
 -- the Awesome theme.
 --
+-- theme.graph_height     - height of the CPU graph in pixels
+-- theme.graph_width      - width of the CPU graph in pixels
 -- theme.bg_widget        - widget background color
 -- theme.fg_widget        - widget foreground color
 -- theme.fg_center_widget - widget gradient color, middle
 -- theme.bg_widget        - widget background color
 -- theme.fg_widget        - widget foreground color
 -- theme.fg_center_widget - widget gradient color, middle
@@ -49,6 +53,7 @@
 
 local awful       = require('awful')
 local wibox       = require('wibox')
 
 local awful       = require('awful')
 local wibox       = require('wibox')
+local beautiful   = require('beautiful')
 
 local delightful  = { utils = require('delightful.utils') }
 local vicious     = require('vicious')
 
 local delightful  = { utils = require('delightful.utils') }
 local vicious     = require('vicious')
@@ -64,12 +69,6 @@ local icon_tooltip
 
 local config_description = {
        {
 
 local config_description = {
        {
-               name     = 'graph_width',
-               required = true,
-               default  = 20,
-               validate = function(value) return delightful.utils.config_int(value) end
-       },
-       {
                name     = 'command',
                validate = function(value) return delightful.utils.config_string(value) end
        },
                name     = 'command',
                validate = function(value) return delightful.utils.config_string(value) end
        },
@@ -78,6 +77,18 @@ local config_description = {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
+               name     = 'graph_height',
+               required = true,
+               default  = 19,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
+               name     = 'graph_width',
+               required = true,
+               default  = 20,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
                name     = 'update_interval',
                required = true,
                default  = 1,
                name     = 'update_interval',
                required = true,
                default  = 1,
@@ -147,8 +158,8 @@ function load(self, config)
                cpu_widget:set_border_color(bg_color)
        end
        local color_args = fg_color
                cpu_widget:set_border_color(bg_color)
        end
        local color_args = fg_color
-       local width  = cpu_config.graph_width
-       local height = 19
+       local height = beautiful.graph_height or cpu_config.graph_height
+       local width  = beautiful.graph_width  or cpu_config.graph_width
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
index 0d2c9c2..367bd3e 100644 (file)
 -- {
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
 -- {
 -- -- Command to execute when left-clicking the widget icon.
 -- -- Empty by default.
---           command         = 'gnome-system-monitor',
+--        command            = 'gnome-system-monitor',
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
---        no_icon         = true,
+--        no_icon            = true,
+-- -- Height of the progress bar in pixels. Default is 19.
+--        progressbar_height = 19,
+-- -- Width of the progress bar in pixels. Default is 8.
+--        progressbar_width  = 12,
 -- -- How often update the widget data. Default is 10 second.
 -- -- How often update the widget data. Default is 10 second.
---       update_interval = 20
+--        update_interval    = 20
 -- }
 --
 --
 -- Theme:
 --
 -- }
 --
 --
 -- Theme:
 --
--- The widget uses following colors and icons if available in
+-- The widget uses following settings, colors and icons if available in
 -- the Awesome theme.
 --
 -- the Awesome theme.
 --
--- theme.bg_widget        - widget background color
--- theme.fg_widget        - widget foreground color
--- theme.fg_center_widget - widget gradient color, middle
--- theme.fg_end_widget    - widget gradient color, end
--- theme.delightful_mem   - icon shown next to the memory progress bars
+-- theme.progressbar_height - height of the memory usage progress bar in pixels
+-- theme.progressbar_width  - width of the memory usage progress bar in pixels
+-- theme.bg_widget          - widget background color
+-- theme.fg_widget          - widget foreground color
+-- theme.fg_center_widget   - widget gradient color, middle
+-- theme.fg_end_widget      - widget gradient color, end
+-- theme.delightful_mem     - icon shown next to the memory progress bars
 --
 -------------------------------------------------------------------------------
 
 local awful      = require('awful')
 local wibox      = require('wibox')
 --
 -------------------------------------------------------------------------------
 
 local awful      = require('awful')
 local wibox      = require('wibox')
+local beautiful  = require('beautiful')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
@@ -86,6 +93,18 @@ local config_description = {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
+               name     = 'progressbar_height',
+               required = true,
+               default  = 19,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
+               name     = 'progressbar_width',
+               required = true,
+               default  = 8,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
                name     = 'update_interval',
                required = true,
                default  = 10,
                name     = 'update_interval',
                required = true,
                default  = 10,
@@ -156,8 +175,8 @@ function load(self, config)
                memory_widget:set_border_color(bg_color)
        end
        local color_args = fg_color
                memory_widget:set_border_color(bg_color)
        end
        local color_args = fg_color
-       local width  = 8
-       local height = 19
+       local height = beautiful.progressbar_height or memory_config.progressbar_height
+       local width  = beautiful.progressbar_width  or memory_config.progressbar_width
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
        if fg_color and fg_center_color and fg_end_color then
                color_args = {
                        type = 'linear',
index 2d762ef..ec60f7d 100644 (file)
 -- -- "pacmd list-sinks" command. This can be used to limit mixer controls
 -- -- to certain sinks only. By default, widget creates controls for
 -- -- all the sinks in the system. The example shows 1st and 3rd sink.
 -- -- "pacmd list-sinks" command. This can be used to limit mixer controls
 -- -- to certain sinks only. By default, widget creates controls for
 -- -- all the sinks in the system. The example shows 1st and 3rd sink.
---       sink_nums          = { 0, 2 },
+--        sink_nums          = { 0, 2 },
 -- -- Whether to try to start PulseAudio if reading of the sink data
 -- -- fails. Default is true.
 -- -- Whether to try to start PulseAudio if reading of the sink data
 -- -- fails. Default is true.
---           pulseaudio_start   = true,
+--        pulseaudio_start   = true,
 -- -- Path to pulseaudio command. 'pulseaudio' by default.
 -- -- Path to pulseaudio command. 'pulseaudio' by default.
---           pulseaudio_command = '/usr/local/bin/pulseaudio',
+--        pulseaudio_command = '/usr/local/bin/pulseaudio',
 -- -- Path to pacmd command. 'pacmd' by default.
 -- -- Path to pacmd command. 'pacmd' by default.
---           pacmd_command      = '/usr/local/bin/pacmd',
+--        pacmd_command      = '/usr/local/bin/pacmd',
 -- -- Command to execute when right-clicking the widget icon.
 -- -- Empty by default.
 -- -- Command to execute when right-clicking the widget icon.
 -- -- Empty by default.
---           mixer_command      = 'pavucontrol',
+--        mixer_command      = 'pavucontrol',
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 --        no_icon            = true,
 -- -- Don't try to display any icons. Default is false (i.e. display icons).
 --        no_icon            = true,
+-- -- Height of the progress bar in pixels. Default is 19.
+--        progressbar_height = 19,
+-- -- Width of the progress bar in pixels. Default is 8.
+--        progressbar_width  = 12,
 -- -- How often update the widget data. Default is 10 seconds.
 -- -- How often update the widget data. Default is 10 seconds.
---           update_interval    = 30
+--        update_interval    = 30
 -- }
 --
 --
 -- Theme:
 --
 -- }
 --
 --
 -- Theme:
 --
--- The widget uses following colors and icons if available in
+-- The widget uses following settings, colors and icons if available in
 -- the Awesome theme.
 --
 -- the Awesome theme.
 --
+-- theme.progressbar_height  - height of the volume progress bar in pixels
+-- theme.progressbar_width   - width of the volume progress bar in pixels
 -- theme.bg_widget           - widget background color
 -- theme.fg_widget           - widget foreground color
 -- theme.fg_center_widget    - widget gradient color, middle
 -- theme.bg_widget           - widget background color
 -- theme.fg_widget           - widget foreground color
 -- theme.fg_center_widget    - widget gradient color, middle
@@ -70,6 +76,7 @@
 
 local awful      = require('awful')
 local wibox      = require('wibox')
 
 local awful      = require('awful')
 local wibox      = require('wibox')
+local beautiful  = require('beautiful')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
 
 local delightful = { utils = require('delightful.utils') }
 local vicious    = require('vicious')
@@ -138,6 +145,18 @@ local config_description = {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
                validate = function(value) return delightful.utils.config_boolean(value) end
        },
        {
+               name     = 'progressbar_height',
+               required = true,
+               default  = 19,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
+               name     = 'progressbar_width',
+               required = true,
+               default  = 8,
+               validate = function(value) return delightful.utils.config_int(value) end
+       },
+       {
                name     = 'update_interval',
                required = true,
                default  = 10,
                name     = 'update_interval',
                required = true,
                default  = 10,
@@ -349,8 +368,8 @@ function load(self, config)
                        widget:set_background_color(bg_color)
                end
                local color_args = fg_color
                        widget:set_background_color(bg_color)
                end
                local color_args = fg_color
-               local width  = 8
-               local height = 19
+               local height = beautiful.progressbar_height or pulseaudio_config.progressbar_height
+               local width  = beautiful.progressbar_width  or pulseaudio_config.progressbar_width
                if fg_color and fg_center_color and fg_end_color then
                        color_args = {
                                type = 'linear',
                if fg_color and fg_center_color and fg_end_color then
                        color_args = {
                                type = 'linear',