aboutsummaryrefslogtreecommitdiff
path: root/Sources/phbar/Config.swift
diff options
context:
space:
mode:
authorTommaso Negri <me@tommasongr.com>2026-08-09 23:58:42 +0200
committerTommaso Negri <me@tommasongr.com>2026-08-09 23:58:44 +0200
commitd59b22e557fa5d69ea6be725a7e5bcd829588225 (patch)
tree618e20ef2b648e46eac3d51e14b8e0fcc1faba3c /Sources/phbar/Config.swift
parent62ce97dcb63d61c8db739c1b32bd387042ca66a0 (diff)
downloadbar-d59b22e557fa5d69ea6be725a7e5bcd829588225.tar.gz
bar-d59b22e557fa5d69ea6be725a7e5bcd829588225.zip
rename project and add documentation guides
Diffstat (limited to 'Sources/phbar/Config.swift')
-rw-r--r--Sources/phbar/Config.swift143
1 files changed, 0 insertions, 143 deletions
diff --git a/Sources/phbar/Config.swift b/Sources/phbar/Config.swift
deleted file mode 100644
index e948b30..0000000
--- a/Sources/phbar/Config.swift
+++ /dev/null
@@ -1,143 +0,0 @@
-import SwiftUI
-
-/// The top-level configuration for the bar.
-///
-/// Set appearance, define blocks, and choose the bar position here.
-/// This is the primary file a user edits to customise phbar.
-enum Config {
- /// The bar height in points (pt).
- ///
- /// Tip: Set this value to 30 to match the default macOS
- /// menu bar height.
- static let height: CGFloat = 30
-
- /// The bar position on the screen.
- static let position: Position = .top
-
- // NOTE: Customizing font
- //
- // You can use system default fonts thanks to the standard SwiftUI
- // methods and access properties. However, you can also use your
- // preferred custom font.
- //
- // E.g: `.custom("Comic Code", fixedSize: 14)`
- //
- // You may want to use a patched Nerd Font (https://www.nerdfonts.com)
- // so you can have icons in your bar. Alternatively, you can display
- // SF Symbols by copy and pasting them as glyphs.
-
- /// The font used for all text and icons in the bar.
- static let font: Font = .system(size: 14, weight: .regular, design: .monospaced)
-
- // NOTE: Customizing colors
- //
- // You can use system default colors and the standard SwiftUI
- // methods to define them. However, for convenience we added
- // support for hex colors too (see ``HEX``).
- //
- // E.g: `.hex("#000000")`
-
- /// The color used for texts and icons.
- static let foreground: Color = .hex("#FFFFFF")
-
- /// The color used for the bar background.
- static let background: Color = .hex("#000000").opacity(0.75)
-
- /// The colors used to highlight a cell at different levels (see ``Cell``).
- static let highlights: [Color] = [.blue, .purple]
-
- /// The blocks that make up the bar, listed in display order.
- ///
- /// Each block is positioned on the left or right side of the bar
- /// and runs a shell command, optionally on a repeating interval.
- /// See ``Config-swift.enum/Block`` for the full configuration options.
- static let blocks: [Block] = [
- Block(name: "version", placement: .left, command: "echo '&!1 phbar v1.0.0 '"),
- Block(name: "ph", placement: .left, command: "echo ' by Panini House'"),
- Block(name: "memory", placement: .right, command: "echo \"􀟱 Hi $USER, welcome to phbar! | \""),
- Block(name: "clock", placement: .right, command: "echo \"􀐬 $(date '+%a %d, %H:%M:%S') \"", interval: 1),
- ]
-}
-
-// MARK: Types reference
-
-extension Config {
- /// The bar position on the screen.
- enum Position: Sendable {
- /// Anchor the bar at the top of the screen.
- case top
-
- /// Anchor the bar at the bottom of the screen.
- case bottom
- }
-
- /// A block defined in the configuration.
- ///
- /// Represents one unit of the bar. Each block is a named command that
- /// produces output on an optional timer. See ``phbar/Block`` for the
- /// runtime counterpart that manages execution and cell publishing.
- struct Block: Sendable {
- /// The block identifier used for manual updates.
- ///
- /// Some blocks do not need to be updated on an defined
- /// interval. You might want instead to react to specific
- /// events or "manually" update them.
- /// In such cases, you can send a standard system
- /// notification that tells phbar to trigger an update
- /// for the block identified by the name.
- ///
- /// E.g: `notifyutil -p house.panini.phbar.touch.<name>`
- ///
- /// Be aware that nothing stops you from having multiple
- /// blocks with the same name. In such case, triggering
- /// a notification will cause all blocks with that name
- /// to be re-evaluated.
- let name: String
-
- /// Whether the block anchors to the left or right side of the bar.
- let placement: Placement
-
- /// The shell command used for updating the content.
- ///
- /// You can write an expression directly in the block
- /// definition or you can point to a proper executable
- /// script somewhere on the system.
- ///
- /// The command process will inherit the environment
- /// of the process that executed phbar in the first place.
- /// This means that running phbar from your regular shell
- /// or from launchctl might result in different behaviours.
- /// Make sure to test both scenarios properly.
- let command: String
-
- /// The interval, in seconds, at which the command is executed.
- ///
- /// If set to `nil`, the block will be evaluated just once
- /// at launch. You can of course trigger a manual update via
- /// a notification later on.
- let interval: Double?
-
- /// Define a block of the bar.
- ///
- /// - Parameters:
- /// - name: The block identifier used for manual updates.
- /// - placement: Left or right side of the bar.
- /// - command: The shell command used for updating the content.
- /// - interval: The interval, in seconds, at which the command is executed.
- ///
- init(name: String, placement: Placement, command: String, interval: Double? = nil) {
- self.name = name
- self.placement = placement
- self.command = command
- self.interval = interval
- }
-
- /// Where the block is anchored inside the bar.
- enum Placement: Sendable {
- /// Anchored to the left side of the bar.
- case left
- /// Anchored to the right side of the bar.
- case right
- }
- }
-}