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

View file

@ -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 \

View file

@ -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'

View file

@ -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'

View file

@ -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

View file

@ -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 },

View file

@ -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,