foreign_toplevel_manager.lua
local wau = require("wau")
wau:require("protocol.wlr-foreign-toplevel-management-unstable-v1")
local display = wau.wl_display.connect()
assert(display, "Failed to connect to wayland compositor")
display:roundtrip()
local registry = display:get_registry()
local toplevel_manager
registry:add_listener {
["global"] = function(self, name, iface, version)
if iface == "zwlr_foreign_toplevel_manager_v1" then
toplevel_manager = self:bind(name,
wau.zwlr_foreign_toplevel_manager_v1, version)
end
end
}
display:roundtrip()
assert(toplevel_manager, "Failed to bind foreign toplevel manager")
local toplevel_listener = {
["title"] = function(_, title) print("New title!", title) end,
["app_id"] = function(_, app_id) print("New app_id!", app_id) end,
["closed"] = function(self) print("Oh no it closed!", self) end,
["parent"] = function(self, p) print("New parent!", self, p) end,
}
toplevel_manager:add_listener {
["finished"] = function() error("Breakup with the compositor! :(") end,
["toplevel"] = function(_, tl) tl:add_listener(toplevel_listener) end,
}
while true do
display:roundtrip()
end
display:disconnect()