PaneSize
How big a split makes the pane it creates.
Source and package
- Qualified name
-
PaneSize - Package
- libtmux-swift
- Source
- Sources/LibTmux/Creation.swift
-
Description#
Both spellings are one tmux flag,
-l, which reads a percentage when the value ends in%. Modelling them as separate cases keeps a caller from building that string, and from having to remember which of the two a bare number means.Examples#
Split a specific pane. Split the fixture's pane to the right and give the new pane 40 percent of its width. Address the pane itself so a different active pane cannot change the target. Use Swift 6.2 or newer and tmux 3.3a or newer on Linux or macOS. In an empty directory, save this consumer package as
Package.swift; SwiftPM fetches the library from release 0.1.1:// swift-tools-version: 6.2import PackageDescriptionlet package = Package(name: "ApiExample",platforms: [.macOS(.v13)],dependencies: [.package(url: "https://github.com/libtmux/libtmux-swift.git", from: "0.1.1")],targets: [.executableTarget(name: "ApiExample",dependencies: [.product(name: "LibTmux", package: "libtmux-swift"),.product(name: "TmuxFixture", package: "libtmux-swift"),],path: "Sources")])Create a
Sourcesdirectory and save this complete program asSources/Example.swift. ThewithTmuxServerfixture owns a private tmux server and stops it after success or failure. Ordinary application code usesServerfor its own socket; these examples use the fixture until their setup moves to ordinary server objects. View sourceimport Foundationimport LibTmuximport TmuxFixture@mainstruct ApiSplitPane {static func main() async {do {try await withTmuxServer { @Sendable server inguard let original = try await server.panes().first else {throw ExampleError.paneMissing}let created = try await server.split(original,direction: .right,size: .percentage(40))let panes = try await server.panes().filter { $0.windowID == original.windowID }print("Panes in window: \(panes.count)")print("Same window: \(created.windowID == original.windowID)")}} catch {FileHandle.standardError.write(Data("Example failed: \(error)\n".utf8))exit(EXIT_FAILURE)}}enum ExampleError: Error {case paneMissing}}Build and run the saved program. An operation or cleanup error produces a failing exit status. Set
LIBTMUX_TMUX_BINto an absolute executable path to select a tmux version:Terminal window $ swift run ApiExampleExpected output:
Panes in window: 2Same window: true
Members2#
- cells(_:): case cells(Int) constant Columns for a side-by-side split, rows for a stacked one — the axis follows the direction, because that is the one the split divides.
- percentage(_:): case percentage(Int) constant A share of what the pane being split has, rounded down by tmux.
Inherited members2 members#
Reached through Equatable.!=(_:_:), Decodable.init(from:).
- !=(_:_:) function inherited Returns a Boolean value indicating whether two values are not equal.
- init(from:) method inherited Creates a new instance by decoding from the given decoder.