diff --git a/contrib/config.sh b/contrib/config.sh index 969ceb6..c5f3969 100755 --- a/contrib/config.sh +++ b/contrib/config.sh @@ -29,18 +29,18 @@ riverctl map normal $mod Comma focus-output previous riverctl map normal $mod+Shift Period send-to-output next riverctl map normal $mod+Shift Comma send-to-output previous -# Mod+Return to bump the focused view to the top of the layout stack, making -# it the new master +# Mod+Return to bump the focused view to the top of the layout stack riverctl map normal $mod Return zoom -# Mod+H and Mod+L to decrease/increase the width of the master column by 5% -riverctl map normal $mod H mod-master-factor -0.05 -riverctl map normal $mod L mod-master-factor +0.05 +# Mod+H and Mod+L to decrease/increase the main factor by 5% +# If using rivertile(1) this determines the width of the main stack. +riverctl map normal $mod H mod-main-factor -0.05 +riverctl map normal $mod L mod-main-factor +0.05 # Mod+Shift+H and Mod+Shift+L to increment/decrement the number of -# master views in the layout -riverctl map normal $mod+Shift H mod-master-count +1 -riverctl map normal $mod+Shift L mod-master-count -1 +# main views in the layout +riverctl map normal $mod+Shift H mod-main-count +1 +riverctl map normal $mod+Shift L mod-main-count -1 # Mod+Alt+{H,J,K,L} to move views riverctl map normal $mod+Mod1 H move left 100 @@ -95,7 +95,7 @@ riverctl map normal $mod Space toggle-float # Mod+F to toggle fullscreen riverctl map normal $mod F toggle-fullscreen -# Mod+{Up,Right,Down,Left} to change master orientation +# Mod+{Up,Right,Down,Left} to change layout orientation riverctl map normal $mod Up layout rivertile top riverctl map normal $mod Right layout rivertile right riverctl map normal $mod Down layout rivertile down diff --git a/contrib/tiled.py b/contrib/tiled.py index 2bec975..325854c 100755 --- a/contrib/tiled.py +++ b/contrib/tiled.py @@ -4,7 +4,7 @@ from sys import argv # This is an implementation of the default "tiled" layout of dwm # -# With 4 views and one master, the layout looks something like this: +# With 4 views and one main view, the layout looks something like this: # # +-----------------------+------------+ # | | | @@ -23,46 +23,46 @@ from sys import argv # Assign the arguments to variables. The order and meaning of the arguments # is explained in the river-layouts(7) man page num_views = int(argv[1]) -master_count = int(argv[2]) -master_factor = float(argv[3]) +main_count = int(argv[2]) +main_factor = float(argv[3]) output_width = int(argv[4]) output_height = int(argv[5]) -secondary_count = num_views - master_count +secondary_count = num_views - main_count -# handle the cases where there are no master or no secondary views -master_width = 0 +# handle the cases where there are no main or no secondary views +main_width = 0 secondary_width = 0 -if master_count > 0 and secondary_count > 0: - master_width = int(master_factor * output_width) - secondary_width = output_width - master_width -elif master_count > 0: - master_width = output_width +if main_count > 0 and secondary_count > 0: + main_width = int(main_factor * output_width) + secondary_width = output_width - main_width +elif main_count > 0: + main_width = output_width elif secondary_count > 0: secondary_width = output_width # for each view, output the location/dimensions separated by spaces on a new line for i in range(num_views): - if i < master_count: - # to make things pixel-perfect, we make the first master and first secondary + if i < main_count: + # to make things pixel-perfect, we make the first main and first secondary # view slightly larger if the height is not evenly divisible - master_height = output_height // master_count - master_height_rem = output_height % master_count + main_height = output_height // main_count + main_height_rem = output_height % main_count x = 0 - y = i * master_height + (master_height_rem if i > 0 else 0) - width = master_width - height = master_height + (master_height_rem if i == 0 else 0) + y = i * main_height + (main_height_rem if i > 0 else 0) + width = main_width + height = main_height + (main_height_rem if i == 0 else 0) print(x, y, width, height) else: secondary_height = output_height // secondary_count secondary_height_rem = output_height % secondary_count - x = master_width - y = (i - master_count) * secondary_height + (secondary_height_rem if i > master_count else 0) + x = main_width + y = (i - main_count) * secondary_height + (secondary_height_rem if i > main_count else 0) width = secondary_width - height = secondary_height + (secondary_height_rem if i == master_count else 0) + height = secondary_height + (secondary_height_rem if i == main_count else 0) print(x, y, width, height) diff --git a/doc/river-layouts.7.scd b/doc/river-layouts.7.scd index 06ace54..6b76846 100644 --- a/doc/river-layouts.7.scd +++ b/doc/river-layouts.7.scd @@ -16,8 +16,8 @@ When running the executable, river will provide it with five parameters which are appended to the end of the command in the following order: . The amount of visible clients (integer) -. The amount of views dedicated as master (integer) -. The screen size multiplier for the master area (float between 0.0 and 1.0) +. The amount of views dedicated as main (integer) +. The screen size multiplier for the main area (float between 0.0 and 1.0) . The useable width of the output (integer) . The useable height of the output (integer) diff --git a/doc/riverctl.1.scd b/doc/riverctl.1.scd index 6994fcd..3e0f205 100644 --- a/doc/riverctl.1.scd +++ b/doc/riverctl.1.scd @@ -46,14 +46,20 @@ control and configure river. command to cause river to use its single internal layout, in which windows span the entire width and height of the output. -*mod-master-count* _integer_ - Increase or decrease the number of master views. _integer_ can be - positive or negative. +*mod-main-count* _integer_ + Increase or decrease the number of "main" views which is relayed to + the layout generator. _integer_ can be positive or negative. Exactly + how "main" views are display, or if they are even displayed differently + from other views, is left to the layout generator. -*mod-master-factor* _float_ - Make the master area bigger or smaller. _float_ is a positive or - negative floating point number (such as 0.05) where 1 corresponds to - the whole screen. +*mod-main-factor* _float_ + Increase or decrease the "main factor" relayed to layout + generators. _float_ is a positive or negative floating point number + (such as 0.05). This value is added to the current main factor which + is then clamped to the range [0.0, 1.0]. The layout generator is + free to interpret this value as it sees fit, or ignore it entirely. + *rivertile*(1) uses this to determine what percentage of the screen + the "main" area will occupy. *move* *up*|*down*|*left*|*right* _delta_ Move the focused view in the specified direction by _delta_. The view @@ -89,8 +95,8 @@ control and configure river. Toggle the fullscreen state of the focused view. *zoom* - Bump the focused view to the top of the layout stack to make it the new - master. + Bump the focused view to the top of the layout stack. If the top view + in the stack is already focused, bump the second view. ## TAG MANAGEMENT diff --git a/doc/rivertile.1.scd b/doc/rivertile.1.scd index 3d5daf8..f77c177 100644 --- a/doc/rivertile.1.scd +++ b/doc/rivertile.1.scd @@ -11,21 +11,21 @@ rivertile - Tiled layout generator for river # DESCRIPTION *rivertile* is a layout generator for river. It produces tiled layouts with -split master/secondary stacks in four configurable orientations. +split main/secondary stacks in four configurable orientations. # OPTIONS *left* - Place the master stack on the left side of the output. + Place the main stack on the left side of the output. *right* - Place the master stack on the right side of the output. + Place the main stack on the right side of the output. *top* - Place the master stack at the top of the output. + Place the main stack at the top of the output. *bottom* - Place the master stack at the bottom of the output. + Place the main stack at the bottom of the output. # EXAMPLE diff --git a/river/Output.zig b/river/Output.zig index 77a4307..c614b6e 100644 --- a/river/Output.zig +++ b/river/Output.zig @@ -59,11 +59,11 @@ views: ViewStack(View) = .{}, current: State = State{ .tags = 1 << 0 }, pending: State = State{ .tags = 1 << 0 }, -/// Number of views in "master" section of the screen. -master_count: u32 = 1, +/// Number of views in "main" section of the screen. +main_count: u32 = 1, -/// Percentage of the total screen that the master section takes up. -master_factor: f64 = 0.6, +/// Percentage of the total screen that the "main" section takes up. +main_factor: f64 = 0.6, /// Current layout of the output. If it is "full", river will use the full /// layout. Otherwise river assumes it contains a string which, when executed @@ -221,8 +221,8 @@ fn layoutExternal(self: *Self, visible_count: u32) !void { const layout_command = try std.fmt.allocPrint0(&arena.allocator, "{} {} {} {d} {} {}", .{ self.layout, visible_count, - self.master_count, - self.master_factor, + self.main_count, + self.main_factor, layout_width, layout_height, }); diff --git a/river/command.zig b/river/command.zig index 9d35457..90dd793 100644 --- a/river/command.zig +++ b/river/command.zig @@ -59,8 +59,8 @@ const str_to_impl_fn = [_]struct { .{ .name = "layout", .impl = @import("command/layout.zig").layout }, .{ .name = "map", .impl = @import("command/map.zig").map }, .{ .name = "map-pointer", .impl = @import("command/map.zig").mapPointer }, - .{ .name = "mod-master-count", .impl = @import("command/mod_master_count.zig").modMasterCount }, - .{ .name = "mod-master-factor", .impl = @import("command/mod_master_factor.zig").modMasterFactor }, + .{ .name = "mod-main-count", .impl = @import("command/mod_main_count.zig").modMainCount }, + .{ .name = "mod-main-factor", .impl = @import("command/mod_main_factor.zig").modMainFactor }, .{ .name = "move", .impl = @import("command/move.zig").move }, .{ .name = "opacity", .impl = @import("command/opacity.zig").opacity }, .{ .name = "outer-padding", .impl = @import("command/config.zig").outerPadding }, diff --git a/river/command/mod_master_count.zig b/river/command/mod_main_count.zig similarity index 88% rename from river/command/mod_master_count.zig rename to river/command/mod_main_count.zig index 10dfa90..68ce80b 100644 --- a/river/command/mod_master_count.zig +++ b/river/command/mod_main_count.zig @@ -20,8 +20,8 @@ const std = @import("std"); const Error = @import("../command.zig").Error; const Seat = @import("../Seat.zig"); -/// Modify the number of master views -pub fn modMasterCount( +/// Modify the number of main views +pub fn modMainCount( allocator: *std.mem.Allocator, seat: *Seat, args: []const []const u8, @@ -32,7 +32,7 @@ pub fn modMasterCount( const delta = try std.fmt.parseInt(i32, args[1], 10); const output = seat.focused_output; - output.master_count = @intCast(u32, std.math.max(0, @intCast(i32, output.master_count) + delta)); + output.main_count = @intCast(u32, std.math.max(0, @intCast(i32, output.main_count) + delta)); output.arrangeViews(); output.root.startTransaction(); } diff --git a/river/command/mod_master_factor.zig b/river/command/mod_main_factor.zig similarity index 80% rename from river/command/mod_master_factor.zig rename to river/command/mod_main_factor.zig index d692964..dd5fa9d 100644 --- a/river/command/mod_master_factor.zig +++ b/river/command/mod_main_factor.zig @@ -20,8 +20,8 @@ const std = @import("std"); const Error = @import("../command.zig").Error; const Seat = @import("../Seat.zig"); -/// Modify the percent of the width of the screen that the master views occupy. -pub fn modMasterFactor( +/// Modify the percent of the width of the screen that the main views occupy. +pub fn modMainFactor( allocator: *std.mem.Allocator, seat: *Seat, args: []const []const u8, @@ -32,9 +32,9 @@ pub fn modMasterFactor( const delta = try std.fmt.parseFloat(f64, args[1]); const output = seat.focused_output; - const new_master_factor = std.math.min(std.math.max(output.master_factor + delta, 0.05), 0.95); - if (new_master_factor != output.master_factor) { - output.master_factor = new_master_factor; + const new_main_factor = std.math.min(std.math.max(output.main_factor + delta, 0.05), 0.95); + if (new_main_factor != output.main_factor) { + output.main_factor = new_main_factor; output.arrangeViews(); output.root.startTransaction(); } diff --git a/rivertile/main.zig b/rivertile/main.zig index d5cb8d1..d1149b1 100644 --- a/rivertile/main.zig +++ b/rivertile/main.zig @@ -29,7 +29,7 @@ const Orientation = enum { /// orientation in mind and then the input/output values are adjusted to apply /// the necessary transformations to derive the other 3. /// -/// With 4 views and one master, the left layout looks something like this: +/// With 4 views and one main view, the left layout looks something like this: /// /// +-----------------------+------------+ /// | | | @@ -49,15 +49,15 @@ pub fn main() !void { if (args.len != 7) printUsageAndExit(); // first arg must be left, right, top, or bottom - const master_location = std.meta.stringToEnum(Orientation, std.mem.spanZ(args[1])) orelse + const main_location = std.meta.stringToEnum(Orientation, std.mem.spanZ(args[1])) orelse printUsageAndExit(); // the other 5 are passed by river and described in river-layouts(7) const num_views = try std.fmt.parseInt(u32, std.mem.spanZ(args[2]), 10); - const master_count = try std.fmt.parseInt(u32, std.mem.spanZ(args[3]), 10); - const master_factor = try std.fmt.parseFloat(f64, std.mem.spanZ(args[4])); + const main_count = try std.fmt.parseInt(u32, std.mem.spanZ(args[3]), 10); + const main_factor = try std.fmt.parseFloat(f64, std.mem.spanZ(args[4])); - const width_arg: u32 = switch (master_location) { + const width_arg: u32 = switch (main_location) { .left, .right => 5, .top, .bottom => 6, }; @@ -66,32 +66,32 @@ pub fn main() !void { const output_width = try std.fmt.parseInt(u32, std.mem.spanZ(args[width_arg]), 10); const output_height = try std.fmt.parseInt(u32, std.mem.spanZ(args[height_arg]), 10); - const secondary_count = if (num_views > master_count) num_views - master_count else 0; + const secondary_count = if (num_views > main_count) num_views - main_count else 0; - // to make things pixel-perfect, we make the first master and first secondary + // to make things pixel-perfect, we make the first main and first secondary // view slightly larger if the height is not evenly divisible - var master_width: u32 = undefined; - var master_height: u32 = undefined; - var master_height_rem: u32 = undefined; + var main_width: u32 = undefined; + var main_height: u32 = undefined; + var main_height_rem: u32 = undefined; var secondary_width: u32 = undefined; var secondary_height: u32 = undefined; var secondary_height_rem: u32 = undefined; - if (master_count > 0 and secondary_count > 0) { - master_width = @floatToInt(u32, master_factor * @intToFloat(f64, output_width)); - master_height = output_height / master_count; - master_height_rem = output_height % master_count; + if (main_count > 0 and secondary_count > 0) { + main_width = @floatToInt(u32, main_factor * @intToFloat(f64, output_width)); + main_height = output_height / main_count; + main_height_rem = output_height % main_count; - secondary_width = output_width - master_width; + secondary_width = output_width - main_width; secondary_height = output_height / secondary_count; secondary_height_rem = output_height % secondary_count; - } else if (master_count > 0) { - master_width = output_width; - master_height = output_height / master_count; - master_height_rem = output_height % master_count; + } else if (main_count > 0) { + main_width = output_width; + main_height = output_height / main_count; + main_height_rem = output_height % main_count; } else if (secondary_width > 0) { - master_width = 0; + main_width = 0; secondary_width = output_width; secondary_height = output_height / secondary_count; secondary_height_rem = output_height % secondary_count; @@ -108,19 +108,19 @@ pub fn main() !void { var width: u32 = undefined; var height: u32 = undefined; - if (i < master_count) { + if (i < main_count) { x = 0; - y = i * master_height + if (i > 0) master_height_rem else 0; - width = master_width; - height = master_height + if (i == 0) master_height_rem else 0; + y = i * main_height + if (i > 0) main_height_rem else 0; + width = main_width; + height = main_height + if (i == 0) main_height_rem else 0; } else { - x = master_width; - y = (i - master_count) * secondary_height + if (i > master_count) secondary_height_rem else 0; + x = main_width; + y = (i - main_count) * secondary_height + if (i > main_count) secondary_height_rem else 0; width = secondary_width; - height = secondary_height + if (i == master_count) secondary_height_rem else 0; + height = secondary_height + if (i == main_count) secondary_height_rem else 0; } - switch (master_location) { + switch (main_location) { .left => try stdout.print("{} {} {} {}\n", .{ x, y, width, height }), .right => try stdout.print("{} {} {} {}\n", .{ output_width - x - width, y, width, height }), .top => try stdout.print("{} {} {} {}\n", .{ y, x, height, width }),