diff options
Diffstat (limited to 'lang/lua/astal')
-rw-r--r-- | lang/lua/astal/binding.lua | 9 | ||||
-rw-r--r-- | lang/lua/astal/gtk3/app.lua | 50 | ||||
-rw-r--r-- | lang/lua/astal/gtk3/astalify.lua | 4 | ||||
-rw-r--r-- | lang/lua/astal/variable.lua | 12 |
4 files changed, 33 insertions, 42 deletions
diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 2944ec4..610f3a6 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -7,7 +7,7 @@ local GObject = lgi.require("GObject", "2.0") ---@field transform_fn function local Binding = {} ----@param emitter table +---@param emitter table | userdata ---@param property? string ---@return Binding function Binding.new(emitter, property) @@ -28,11 +28,11 @@ function Binding:__tostring() return str .. ">" end +---@return any function Binding:get() if self.property ~= nil and GObject.Object:is_type_of(self.emitter) then return self.transform_fn(self.emitter[self.property]) - end - if type(self.emitter.get) == "function" then + elseif type(self.emitter.get) == "function" then return self.transform_fn(self.emitter:get()) end error("can not get: Not a GObject or a Variable " + self) @@ -58,8 +58,7 @@ function Binding:subscribe(callback) return function() GObject.signal_handler_disconnect(self.emitter, id) end - end - if type(self.emitter.subscribe) == "function" then + elseif type(self.emitter.subscribe) == "function" then return self.emitter:subscribe(function() callback(self:get()) end) diff --git a/lang/lua/astal/gtk3/app.lua b/lang/lua/astal/gtk3/app.lua index 7895f69..e0ae65a 100644 --- a/lang/lua/astal/gtk3/app.lua +++ b/lang/lua/astal/gtk3/app.lua @@ -24,30 +24,28 @@ end local app = AstalLua() ----@class StartConfig ----@field icons? string ----@field instance_name? string ----@field gtk_theme? string ----@field icon_theme? string ----@field cursor_theme? string ----@field css? string ----@field hold? boolean ----@field request_handler? fun(msg: string, response: fun(res: any)) ----@field main? fun(...): unknown ----@field client? fun(message: fun(msg: string): string, ...): unknown +--- @alias StartConfig { +--- icons?: string, +--- instance_name?: string, +--- gtk_theme?: string, +--- icon_theme?: string, +--- cursor_theme?: string, +--- css?: string, +--- hold?: boolean, +--- request_handler?: fun(msg: string, response: fun(res: any)), +--- main?: fun(...), +--- client?: fun(message: fun(msg: string): string, ...), +---} ----@param config StartConfig | nil +---@param config? StartConfig function Astal.Application:start(config) - if config == nil then - config = {} - end + config = config or {} - if config.client == nil then - config.client = function() + config.client = config.client + or function() print('Astal instance "' .. app.instance_name .. '" is already running') os.exit(1) end - end if config.hold == nil then config.hold = true @@ -61,17 +59,11 @@ function Astal.Application:start(config) if config.icons then self:add_icons(config.icons) end - if config.instance_name then - self.instance_name = config.instance_name - end - if config.gtk_theme then - self.gtk_theme = config.gtk_theme - end - if config.icon_theme then - self.icon_theme = config.icon_theme - end - if config.cursor_theme then - self.cursor_theme = config.cursor_theme + + for _, key in ipairs({ "instance_name", "gtk_theme", "icon_theme", "cursor_theme" }) do + if config[key] then + self[key] = config[key] + end end app.on_activate = function() diff --git a/lang/lua/astal/gtk3/astalify.lua b/lang/lua/astal/gtk3/astalify.lua index 211a1d4..95faa2c 100644 --- a/lang/lua/astal/gtk3/astalify.lua +++ b/lang/lua/astal/gtk3/astalify.lua @@ -163,9 +163,7 @@ return function(ctor) end return function(tbl) - if tbl == nil then - tbl = {} - end + tbl = tbl or {} local bindings = {} local setup = tbl.setup diff --git a/lang/lua/astal/variable.lua b/lang/lua/astal/variable.lua index 2305a71..f06fd16 100644 --- a/lang/lua/astal/variable.lua +++ b/lang/lua/astal/variable.lua @@ -40,7 +40,7 @@ function Variable.new(value) return variable end ----@param transform? fun(v: any): any +---@param transform? fun(v: any): any ---@return Binding function Variable:__call(transform) if type(transform) == "nil" then @@ -54,10 +54,13 @@ function Variable:__tostring() return "Variable<" .. tostring(self:get()) .. ">" end +---@return any function Variable:get() return self._value end +---@param value any +---@return nil function Variable:set(value) if value ~= self:get() then self._value = value @@ -107,7 +110,6 @@ function Variable:start_watch() end) end - function Variable:stop_poll() if self:is_polling() then self._poll.cancel() @@ -122,7 +124,6 @@ function Variable:stop_watch() self._watch = nil end - function Variable:drop() self.variable.emit_dropped() end @@ -180,8 +181,9 @@ end ---@param exec string | string[] ---@param transform? fun(next: any, prev: any): any +---@return Variable function Variable:watch(exec, transform) - transform = transform or function (next) + transform = transform or function(next) return next end @@ -272,4 +274,4 @@ return setmetatable(Variable, { __call = function(_, v) return Variable.new(v) end, -})
\ No newline at end of file +}) |