summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lang/lua/astal/binding.lua9
-rw-r--r--lang/lua/astal/gtk3/app.lua50
-rw-r--r--lang/lua/astal/gtk3/astalify.lua4
-rw-r--r--lang/lua/astal/variable.lua12
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
+})