diff --git a/config/config.dhall b/config/config.dhall index f6e3fc4..3553441 100644 --- a/config/config.dhall +++ b/config/config.dhall @@ -6,48 +6,113 @@ let Margin = Vector2 Natural let FSPath = { name : Text, path : Text } -let FileSystem = { show_smart : Bool, fs_paths : List FSPath } +let FSGeo = + { Type = { spacing : Natural, bar_pad : Natural, sep_spacing : Natural } + , default = { spacing = 20, bar_pad = 100, sep_spacing = 20 } + } + +let FileSystem = + { Type = + { show_smart : Bool, fs_paths : List FSPath, geometry : FSGeo.Type } + , default.geometry = FSGeo::{=} + } + +let PlotGeo = + { Type = { sec_break : Natural, height : Natural } + , default = { sec_break = 20, height = 56 } + } + +let GfxGeo = + { Type = + { sep_spacing : Natural, text_spacing : Natural, plot : PlotGeo.Type } + , default = { sep_spacing = 20, text_spacing = 20, plot = PlotGeo::{=} } + } let Graphics = - { dev_power : Text - , show_temp : Bool - , show_clock : Bool - , show_gpu_util : Bool - , show_mem_util : Bool - , show_vid_util : Bool + { Type = + { dev_power : Text + , show_temp : Bool + , show_clock : Bool + , show_gpu_util : Bool + , show_mem_util : Bool + , show_vid_util : Bool + , geometry : GfxGeo.Type + } + , default.geometry = GfxGeo::{=} + } + +let MemGeo = + { Type = { text_spacing : Natural, plot : PlotGeo.Type } + , default = { plot = PlotGeo::{=}, text_spacing = 20 } } let Memory = - { show_stats : Bool - , show_plot : Bool - , show_swap : Bool - , table_rows : Natural + { Type = + { show_stats : Bool + , show_plot : Bool + , show_swap : Bool + , table_rows : Natural + , geometry : MemGeo.Type + } + , default.geometry = MemGeo::{=} } +let Network = + { Type = { geometry : { plot : PlotGeo.Type } } + , default.geometry.plot = PlotGeo::{=} + } + +let ProcGeo = { Type = { plot : PlotGeo.Type }, default.plot = PlotGeo::{=} } + let Processor = - { core_rows : Natural - , core_padding : Natural - , show_stats : Bool - , show_plot : Bool - , table_rows : Natural + { Type = + { core_rows : Natural + , core_padding : Natural + , show_stats : Bool + , show_plot : Bool + , table_rows : Natural + , geometry : ProcGeo.Type + } + , default.geometry = ProcGeo::{=} } let RaplSpec = { name : Text, address : Text } -let Power = { battery : Text, rapl_specs : List RaplSpec } +let PwrGeo = + { Type = { text_spacing : Natural, plot : PlotGeo.Type } + , default = { text_spacing = 20, plot = PlotGeo::{=} } + } -let ReadWrite = { devices : List Text } +let Pacman = + { Type = { geometry : { text_spacing : Natural } } + , default.geometry.text_spacing = 20 + } + +let Power = + { Type = + { battery : Text, rapl_specs : List RaplSpec, geometry : PwrGeo.Type } + , default.geometry = PwrGeo::{=} + } + +let RWGeo = { Type = { plot : PlotGeo.Type }, default.plot = PlotGeo::{=} } + +let ReadWrite = + { Type = { devices : List Text, geometry : RWGeo.Type } + , default.geometry = RWGeo::{=} + } + +let System = Pacman let ModType = - < filesystem : FileSystem - | graphics : Graphics - | memory : Memory - | network - | pacman - | processor : Processor - | power : Power - | readwrite : ReadWrite - | system + < filesystem : FileSystem.Type + | graphics : Graphics.Type + | memory : Memory.Type + | network : Network.Type + | pacman : Pacman.Type + | processor : Processor.Type + | power : Power.Type + | readwrite : ReadWrite.Type + | system : System.Type > let Annotated = \(a : Type) -> { type : Text, data : a } @@ -246,9 +311,12 @@ in { toConfig , FileSystem , Graphics , Memory + , Network + , Pacman , Processor , Power , ReadWrite + , System , Theme , mod } diff --git a/config/fallback.dhall b/config/fallback.dhall index 54576b5..846961a 100644 --- a/config/fallback.dhall +++ b/config/fallback.dhall @@ -2,7 +2,8 @@ let C = ./config.dhall let memory = C.ModType.memory - { show_stats = False + C.Memory::{ + , show_stats = False , show_swap = False , show_plot = True , table_rows = 3 @@ -10,7 +11,8 @@ let memory = let processor = C.ModType.processor - { core_rows = 0 + C.Processor::{ + , core_rows = 0 , core_padding = 0 , show_stats = False , show_plot = True @@ -24,7 +26,7 @@ let layout = { columns = [ C.Column.CCol { blocks = - [ C.mod C.ModType.network + [ C.mod (C.ModType.network C.Network::{=}) , C.Block.Pad 10 , C.mod memory , C.Block.Pad 10 diff --git a/src/modules/filesystem.lua b/src/modules/filesystem.lua index 79d7248..c6bfa3a 100644 --- a/src/modules/filesystem.lua +++ b/src/modules/filesystem.lua @@ -3,9 +3,10 @@ local pure = require 'pure' local impure = require 'impure' return function(main_state, config, common, width, point) - local SPACING = 20 - local BAR_PAD = 100 - local SEPARATOR_SPACING = 20 + local geo = config.geometry + local SPACING = geo.spacing + local BAR_PAD = geo.bar_pad + local SEPARATOR_SPACING = geo.sep_spacing ----------------------------------------------------------------------------- -- smartd diff --git a/src/modules/graphics.lua b/src/modules/graphics.lua index a49f918..264a82a 100644 --- a/src/modules/graphics.lua +++ b/src/modules/graphics.lua @@ -2,10 +2,11 @@ local pure = require 'pure' local i_o = require 'i_o' return function(update_freq, config, common, width, point) - local SEPARATOR_SPACING = 20 - local TEXT_SPACING = 20 - local PLOT_SEC_BREAK = 20 - local PLOT_HEIGHT = 56 + local geo = config.geometry + local SEPARATOR_SPACING = geo.sep_spacing + local TEXT_SPACING = geo.text_spacing + local PLOT_SEC_BREAK = geo.plot.sec_break + local PLOT_HEIGHT = geo.plot.height local NA = 'N/A' local NVIDIA_EXE = 'nvidia-settings' local __string_match = string.match diff --git a/src/modules/memory.lua b/src/modules/memory.lua index b584520..bcd882e 100644 --- a/src/modules/memory.lua +++ b/src/modules/memory.lua @@ -5,14 +5,15 @@ local pure = require 'pure' local sys = require 'sys' return function(update_freq, config, common, width, point) + local geo = config.geometry local DIAL_THICKNESS = 8 local DIAL_RADIUS = 32 - local DIAL_SPACING = 40 + local DIAL_X_SPACING = 40 local CACHE_Y_OFFSET = 7 local CACHE_X_OFFSET = 50 - local TEXT_SPACING = 20 - local PLOT_SECTION_BREAK = 23 - local PLOT_HEIGHT = 56 + local TEXT_SPACING = geo.text_spacing + local PLOT_SECTION_BREAK = geo.plot.sec_break + local PLOT_HEIGHT = geo.plot.height local TABLE_SECTION_BREAK = 20 local __math_floor = math.floor @@ -54,7 +55,7 @@ return function(update_freq, config, common, width, point) local CACHE_X local SWAP_X if _show_swap == true then - SWAP_X = MEM_X + DIAL_DIAMETER + DIAL_SPACING + SWAP_X = MEM_X + DIAL_DIAMETER + DIAL_X_SPACING CACHE_X = SWAP_X + CACHE_X_OFFSET + DIAL_DIAMETER / 2 else CACHE_X = MEM_X + CACHE_X_OFFSET + DIAL_DIAMETER / 2 diff --git a/src/modules/network.lua b/src/modules/network.lua index c1fb4ae..7836901 100644 --- a/src/modules/network.lua +++ b/src/modules/network.lua @@ -3,9 +3,10 @@ local pure = require 'pure' local i_o = require 'i_o' local sys = require 'sys' -return function(update_freq, _, common, width, point) - local PLOT_SEC_BREAK = 20 - local PLOT_HEIGHT = 56 +return function(update_freq, config, common, width, point) + local geo = config.geometry + local PLOT_SEC_BREAK = geo.plot.sec_break + local PLOT_HEIGHT = geo.plot.height local interface_paths = sys.get_net_interface_paths() local get_bits = function(path) diff --git a/src/modules/pacman.lua b/src/modules/pacman.lua index f1739a9..88130f8 100644 --- a/src/modules/pacman.lua +++ b/src/modules/pacman.lua @@ -1,7 +1,7 @@ local pure = require 'pure' -return function(main_state, _, common, width, point) - local TEXT_SPACING = 20 +return function(main_state, config, common, width, point) + local TEXT_SPACING = config.geometry.text_spacing local __string_match = string.match local __string_gmatch = string.gmatch diff --git a/src/modules/power.lua b/src/modules/power.lua index a634fc4..4324663 100644 --- a/src/modules/power.lua +++ b/src/modules/power.lua @@ -3,9 +3,10 @@ local pure = require 'pure' local sys = require 'sys' return function(update_freq, config, common, width, point) - local TEXT_SPACING = 20 - local PLOT_SEC_BREAK = 20 - local PLOT_HEIGHT = 56 + local geo = config.geometry + local TEXT_SPACING = geo.text_spacing + local PLOT_SEC_BREAK = geo.plot.sec_break + local PLOT_HEIGHT = geo.plot.height local power_label_function = function(plot_max) local fmt = common.y_label_format_string(plot_max, 'W') diff --git a/src/modules/readwrite.lua b/src/modules/readwrite.lua index 2ffaed4..5824d44 100644 --- a/src/modules/readwrite.lua +++ b/src/modules/readwrite.lua @@ -5,8 +5,9 @@ local i_o = require 'i_o' local impure = require 'impure' return function(update_freq, config, common, width, point) - local PLOT_SEC_BREAK = 20 - local PLOT_HEIGHT = 56 + local geo = config.geometry + local PLOT_SEC_BREAK = geo.plot.sec_break + local PLOT_HEIGHT = geo.plot.height local mod_state = {read = 0, write = 0} local device_paths = sys.get_disk_paths(config.devices) diff --git a/src/modules/system.lua b/src/modules/system.lua index 9a47ccb..4c14193 100644 --- a/src/modules/system.lua +++ b/src/modules/system.lua @@ -1,8 +1,8 @@ local i_o = require 'i_o' local pure = require 'pure' -return function(main_state, _, common, width, point) - local TEXT_SPACING = 20 +return function(main_state, config, common, width, point) + local TEXT_SPACING = config.geometry.text_spacing local __string_match = string.match