command/spawn-tagmask: apply globally

Currently the spawn-tagmask applies to the currently focused output.
This however means that it is lost if the monitor is unplugged and makes
it hard to set for all outputs.

Change this to make the command apply to all outputs.

This is a breaking change.
This commit is contained in:
Isaac Freund
2023-01-02 00:54:53 +01:00
parent 931405abe4
commit 39104ae9e3
5 changed files with 10 additions and 12 deletions

View File

@ -87,6 +87,9 @@ warp_cursor: WarpCursorMode = .disabled,
/// Output.layout_namespace is null.
default_layout_namespace: []const u8 = &[0]u8{},
/// Bitmask restricting the tags of newly created views.
spawn_tagmask: u32 = std.math.maxInt(u32),
/// Determines where new views will be attached to the view stack.
attach_mode: AttachMode = .top,

View File

@ -96,9 +96,6 @@ layout_namespace: ?[]const u8 = null,
/// The last set layout name.
layout_name: ?[:0]const u8 = null,
/// Bitmask that whitelists tags for newly spawned views
spawn_tagmask: u32 = math.maxInt(u32),
/// List of status tracking objects relaying changes to this output to clients.
status_trackers: std.SinglyLinkedList(OutputStatus) = .{},

View File

@ -127,7 +127,7 @@ request_activate: wl.Listener(*wlr.XdgActivationV1.event.RequestActivate) =
pub fn init(self: *Self, output: *Output, impl: Impl) void {
const initial_tags = blk: {
const tags = output.current.tags & output.spawn_tagmask;
const tags = output.current.tags & server.config.spawn_tagmask;
break :blk if (tags != 0) tags else output.current.tags;
};

View File

@ -39,14 +39,13 @@ pub fn setFocusedTags(
}
}
/// Set the spawn tagmask
pub fn spawnTagmask(
seat: *Seat,
_: *Seat,
args: []const [:0]const u8,
out: *?[]const u8,
) Error!void {
const tags = try parseTags(args, out);
seat.focused_output.spawn_tagmask = tags;
server.config.spawn_tagmask = tags;
}
/// Set the tags of the focused view.