Core Library0.xAPI Reference

Choose documentation 3

latest

Current version

latest
English

Early release libtmux is released, and its APIs may still change between releases. This site's structure and URLs may change too.

enum libtmux-swift latest

PaneSize

How big a split makes the pane it creates.

Source and package
Qualified name
PaneSize
Package
libtmux-swift
Source
Sources/LibTmux/Creation.swift
enum PaneSize : enum PaneSize

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.2
import PackageDescription
let 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 Sources directory and save this complete program as Sources/Example.swift. The withTmuxServer fixture owns a private tmux server and stops it after success or failure. Ordinary application code uses Server for its own socket; these examples use the fixture until their setup moves to ordinary server objects. View source

import Foundation
import LibTmux
import TmuxFixture
@main
struct ApiSplitPane {
static func main() async {
do {
try await withTmuxServer { @Sendable server in
guard 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_BIN to an absolute executable path to select a tmux version:

Terminal window
$ swift run ApiExample

Expected output:

Panes in window: 2
Same 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.
Esc

Type to search.

Reference previewOpen reference