river: add send-to-previous-tags command

This commit is contained in:
Peter Rice 2021-09-11 16:21:48 -04:00 committed by Isaac Freund
parent 5f6428bafe
commit 81d103d425
6 changed files with 24 additions and 0 deletions

@ -25,6 +25,7 @@ function __riverctl_completion ()
send-layout-cmd \ send-layout-cmd \
set-focused-tags \ set-focused-tags \
focus-previous-tags \ focus-previous-tags \
send-to-previous-tags \
set-view-tags \ set-view-tags \
toggle-focused-tags \ toggle-focused-tags \
toggle-view-tags \ toggle-view-tags \

@ -64,6 +64,7 @@ complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a toggle-fo
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a toggle-view-tags -d 'Toggle the tags of the currently focused view' complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a toggle-view-tags -d 'Toggle the tags of the currently focused view'
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a spawn-tagmask -d 'Set a tagmask to filter the tags assigned to newly spawned views on the focused output' complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a spawn-tagmask -d 'Set a tagmask to filter the tags assigned to newly spawned views on the focused output'
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a focus-previous-tags -d 'Sets tags to their previous value on the focused output' complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a focus-previous-tags -d 'Sets tags to their previous value on the focused output'
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a send-to-previous-tags -d 'Assign the currently focused view the previous tags of the focused output'
# Mappings # Mappings
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a declare-mode -d 'Create a new mode' complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a declare-mode -d 'Create a new mode'
complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a enter-mode -d 'Switch to given mode if it exists' complete -c riverctl -x -n '__fish_riverctl_complete_no_subcommand' -a enter-mode -d 'Switch to given mode if it exists'

@ -33,6 +33,7 @@ _riverctl_subcommands()
'toggle-view-tags:Toggle the tags of the currently focused view' 'toggle-view-tags:Toggle the tags of the currently focused view'
'spawn-tagmask:Set a tagmask to filter the tags assigned to newly spawned views on the focused output' 'spawn-tagmask:Set a tagmask to filter the tags assigned to newly spawned views on the focused output'
'focus-previous-tags:Sets tags to their previous value on the focused output' 'focus-previous-tags:Sets tags to their previous value on the focused output'
'send-to-previous-tags:Assign the currently focused view the previous tags of the focused output'
# Mappings # Mappings
'declare-mode:Create a new mode' 'declare-mode:Create a new mode'
'enter-mode:Switch to given mode if it exists' 'enter-mode:Switch to given mode if it exists'

@ -147,6 +147,10 @@ are ignored by river.
Sets tags to their previous value on the currently focused output, Sets tags to their previous value on the currently focused output,
allowing jumping back and forth between 2 tag setups. allowing jumping back and forth between 2 tag setups.
*send-to-previous-tags*
Assign the currently focused view the previous tags of the currently
focused output.
## MAPPINGS ## MAPPINGS
Mappings are modal in river. Each mapping is associated with a mode and is Mappings are modal in river. Each mapping is associated with a mode and is

@ -83,6 +83,7 @@ const str_to_impl_fn = [_]struct {
.{ .name = "toggle-fullscreen", .impl = @import("command/toggle_fullscreen.zig").toggleFullscreen }, .{ .name = "toggle-fullscreen", .impl = @import("command/toggle_fullscreen.zig").toggleFullscreen },
.{ .name = "toggle-view-tags", .impl = @import("command/tags.zig").toggleViewTags }, .{ .name = "toggle-view-tags", .impl = @import("command/tags.zig").toggleViewTags },
.{ .name = "focus-previous-tags", .impl = @import("command/tags.zig").focusPreviousTags }, .{ .name = "focus-previous-tags", .impl = @import("command/tags.zig").focusPreviousTags },
.{ .name = "send-to-previous-tags", .impl = @import("command/tags.zig").sendToPreviousTags },
.{ .name = "unmap", .impl = @import("command/map.zig").unmap }, .{ .name = "unmap", .impl = @import("command/map.zig").unmap },
.{ .name = "unmap-pointer", .impl = @import("command/map.zig").unmapPointer }, .{ .name = "unmap-pointer", .impl = @import("command/map.zig").unmapPointer },
.{ .name = "xcursor-theme", .impl = @import("command/xcursor_theme.zig").xcursorTheme }, .{ .name = "xcursor-theme", .impl = @import("command/xcursor_theme.zig").xcursorTheme },

@ -121,6 +121,22 @@ pub fn focusPreviousTags(
} }
} }
/// Set the tags of the focused view to the tags that were selected previously
pub fn sendToPreviousTags(
allocator: *std.mem.Allocator,
seat: *Seat,
args: []const []const u8,
out: *?[]const u8,
) Error!void {
const previous_tags = seat.focused_output.previous_tags;
if (seat.focused == .view) {
const view = seat.focused.view;
view.pending.tags = previous_tags;
seat.focus(null);
view.applyPending();
}
}
fn parseTags( fn parseTags(
allocator: *std.mem.Allocator, allocator: *std.mem.Allocator,
args: []const [:0]const u8, args: []const [:0]const u8,