mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
sketchybar: use finalpackage wrapper
Use finalPackage pattern with wrapper so that people who don't use the service can benefit from the other options. Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
parent
5dc3bc3368
commit
e4b0102f69
10 changed files with 295 additions and 238 deletions
15
modules/misc/news/2025/05/2025-05-22_18-47-11.nix
Normal file
15
modules/misc/news/2025/05/2025-05-22_18-47-11.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
time = "2025-05-22T23:47:11+00:00";
|
||||||
|
condition = pkgs.stdenv.hostPlatform.isDarwin;
|
||||||
|
message = ''
|
||||||
|
A new sketchybar module has been added.
|
||||||
|
|
||||||
|
- Simple configuration with a single `config` option that accepts the
|
||||||
|
configuration as lines, a file, or a directory.
|
||||||
|
- Support for both bash and lua configuration types
|
||||||
|
- `extraLuaPackages` option for additional Lua dependencies
|
||||||
|
- `extraPackages` option for additional runtime dependencies
|
||||||
|
- Integrated launchd service management
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,13 @@ in
|
||||||
|
|
||||||
package = lib.mkPackageOption pkgs "sketchybar" { };
|
package = lib.mkPackageOption pkgs "sketchybar" { };
|
||||||
|
|
||||||
|
finalPackage = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
readOnly = true;
|
||||||
|
internal = true;
|
||||||
|
description = "Resulting customized sketchybar package.";
|
||||||
|
};
|
||||||
|
|
||||||
configType = mkOption {
|
configType = mkOption {
|
||||||
type = types.enum [
|
type = types.enum [
|
||||||
"bash"
|
"bash"
|
||||||
|
|
@ -77,6 +84,38 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sbarLuaPackage = lib.mkPackageOption pkgs "sbarlua" {
|
||||||
|
nullable = true;
|
||||||
|
extraDescription = "Required when using a lua configuration.";
|
||||||
|
};
|
||||||
|
|
||||||
|
luaPackage = lib.mkPackageOption pkgs "lua5_4" {
|
||||||
|
nullable = true;
|
||||||
|
extraDescription = "Lua interpreter to use when configType is lua.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraLuaPackages = mkOption {
|
||||||
|
type = with types; functionTo (listOf package);
|
||||||
|
default = _: [ ];
|
||||||
|
defaultText = literalExpression "ps: [ ]";
|
||||||
|
example = literalExpression "luaPkgs: with luaPkgs; [ luautf8 ]";
|
||||||
|
description = ''
|
||||||
|
The extra Lua packages required for your plugins to work.
|
||||||
|
This option accepts a function that takes a Lua package set as an argument,
|
||||||
|
and selects the required Lua packages from this package set.
|
||||||
|
See the example for more info.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
default = [ ];
|
||||||
|
example = literalExpression "[ pkgs.jq ]";
|
||||||
|
description = ''
|
||||||
|
Extra packages to add to PATH for the sketchybar service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
service = {
|
service = {
|
||||||
enable = mkEnableOption "sketchybar service" // {
|
enable = mkEnableOption "sketchybar service" // {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -97,99 +136,122 @@ in
|
||||||
example = "/Users/khaneliman/Library/Logs/sketchybar.log";
|
example = "/Users/khaneliman/Library/Logs/sketchybar.log";
|
||||||
description = "Absolute path to log all stdout output.";
|
description = "Absolute path to log all stdout output.";
|
||||||
};
|
};
|
||||||
|
|
||||||
sbarLuaPackage = lib.mkPackageOption pkgs "sbarlua" {
|
|
||||||
nullable = true;
|
|
||||||
extraDescription = "Required when using a lua configuration.";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraLuaPackages = mkOption {
|
|
||||||
type = with types; functionTo (listOf package);
|
|
||||||
default = _: [ ];
|
|
||||||
defaultText = literalExpression "ps: [ ]";
|
|
||||||
example = literalExpression "luaPkgs: with luaPkgs; [ luautf8 ]";
|
|
||||||
description = ''
|
|
||||||
The extra Lua packages required for your plugins to work.
|
|
||||||
This option accepts a function that takes a Lua package set as an argument,
|
|
||||||
and selects the required Lua packages from this package set.
|
|
||||||
See the example for more info.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
extraPackages = mkOption {
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
default = [ ];
|
|
||||||
example = literalExpression "[ pkgs.jq ]";
|
|
||||||
description = ''
|
|
||||||
Extra packages to add to PATH for the sketchybar service.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = lib.mkIf cfg.enable {
|
||||||
(lib.mkIf cfg.enable {
|
assertions = [
|
||||||
assertions = [
|
(lib.hm.assertions.assertPlatform "programs.sketchybar" pkgs lib.platforms.darwin)
|
||||||
{
|
{
|
||||||
assertion = !(cfg.configType == "lua" && cfg.sbarLuaPackage == null);
|
assertion = !(cfg.configType == "lua" && cfg.sbarLuaPackage == null);
|
||||||
message = "When configType is set to \"lua\", sbarLuaPackage must be specified";
|
message = "When configType is set to \"lua\", service.sbarLuaPackage must be specified";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.sketchybar.finalPackage =
|
||||||
|
let
|
||||||
|
resolvedExtraLuaPackages = cfg.extraLuaPackages pkgs.lua54Packages;
|
||||||
|
|
||||||
|
pathPackages =
|
||||||
|
[ cfg.package ]
|
||||||
|
++ cfg.extraPackages
|
||||||
|
++ lib.optional (cfg.configType == "lua" && cfg.luaPackage != null) cfg.luaPackage;
|
||||||
|
|
||||||
|
luaPaths = lib.filter (x: x != "") [
|
||||||
|
(lib.optionalString (cfg.configType == "lua" && resolvedExtraLuaPackages != [ ]) (
|
||||||
|
lib.concatMapStringsSep ";" pkgs.lua54Packages.getLuaPath resolvedExtraLuaPackages
|
||||||
|
))
|
||||||
|
(lib.optionalString (cfg.configType == "lua" && cfg.sbarLuaPackage != null) (
|
||||||
|
pkgs.lua54Packages.getLuaPath cfg.sbarLuaPackage
|
||||||
|
))
|
||||||
|
(lib.optionalString (cfg.configType == "lua" && cfg.config != null && cfg.config.source != null) (
|
||||||
|
let
|
||||||
|
configDir = "${config.xdg.configHome}/sketchybar";
|
||||||
|
in
|
||||||
|
"${configDir}/?.lua;${configDir}/?/init.lua;${configDir}/?/?.lua"
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
luaCPaths = lib.filter (x: x != "") [
|
||||||
|
(lib.optionalString (cfg.configType == "lua" && resolvedExtraLuaPackages != [ ]) (
|
||||||
|
lib.concatMapStringsSep ";" pkgs.lua54Packages.getLuaCPath resolvedExtraLuaPackages
|
||||||
|
))
|
||||||
|
(lib.optionalString (cfg.configType == "lua" && cfg.sbarLuaPackage != null) (
|
||||||
|
pkgs.lua54Packages.getLuaCPath cfg.sbarLuaPackage
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
makeWrapperArgs = lib.flatten (
|
||||||
|
lib.filter (x: x != [ ]) [
|
||||||
|
(lib.optional (pathPackages != [ ]) [
|
||||||
|
"--prefix"
|
||||||
|
"PATH"
|
||||||
|
":"
|
||||||
|
"${lib.makeBinPath pathPackages}"
|
||||||
|
])
|
||||||
|
|
||||||
|
(lib.optional (luaPaths != [ ]) [
|
||||||
|
"--prefix"
|
||||||
|
"LUA_PATH"
|
||||||
|
";"
|
||||||
|
"${lib.concatStringsSep ";" luaPaths}"
|
||||||
|
])
|
||||||
|
|
||||||
|
(lib.optional (luaCPaths != [ ]) [
|
||||||
|
"--prefix"
|
||||||
|
"LUA_CPATH"
|
||||||
|
";"
|
||||||
|
"${lib.concatStringsSep ";" luaCPaths}"
|
||||||
|
])
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
hasWrapperArgs = makeWrapperArgs != [ ];
|
||||||
|
in
|
||||||
|
if hasWrapperArgs then
|
||||||
|
pkgs.symlinkJoin {
|
||||||
|
name = "sketchybar";
|
||||||
|
paths = [ cfg.package ];
|
||||||
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/sketchybar ${lib.escapeShellArgs makeWrapperArgs}
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
];
|
else
|
||||||
|
cfg.package;
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.finalPackage ];
|
||||||
|
|
||||||
xdg.configFile."sketchybar/sketchybarrc".source = lib.mkIf (cfg.config != "") (
|
xdg.configFile."sketchybar/sketchybarrc".source = lib.mkIf (cfg.config != "") (
|
||||||
pkgs.writeTextFile {
|
pkgs.writeTextFile {
|
||||||
name = "sketchybarrc";
|
name = "sketchybarrc";
|
||||||
text =
|
text =
|
||||||
if cfg.configType == "lua" then
|
if cfg.configType == "lua" then
|
||||||
''
|
''
|
||||||
#!/usr/bin/env lua
|
#!/usr/bin/env lua
|
||||||
-- Generated by home-manager
|
-- Generated by home-manager
|
||||||
${cfg.config}
|
${cfg.config}
|
||||||
''
|
''
|
||||||
else
|
else
|
||||||
''
|
''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Generated by home-manager
|
# Generated by home-manager
|
||||||
${cfg.config}
|
${cfg.config}
|
||||||
'';
|
'';
|
||||||
executable = true;
|
executable = true;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.service.enable {
|
launchd.agents.sketchybar = {
|
||||||
assertions = [
|
enable = cfg.service.enable;
|
||||||
(lib.hm.assertions.assertPlatform "programs.sketchybar" pkgs lib.platforms.darwin)
|
config = {
|
||||||
];
|
Program = lib.getExe cfg.finalPackage;
|
||||||
|
ProcessType = "Interactive";
|
||||||
launchd.agents.sketchybar =
|
KeepAlive = true;
|
||||||
let
|
RunAtLoad = true;
|
||||||
resolvedExtraLuaPackages = cfg.service.extraLuaPackages pkgs.lua54Packages;
|
StandardErrorPath = cfg.service.errorLogFile;
|
||||||
in
|
StandardOutPath = cfg.service.outLogFile;
|
||||||
{
|
};
|
||||||
enable = true;
|
};
|
||||||
config = {
|
};
|
||||||
Program = lib.getExe cfg.package;
|
|
||||||
ProcessType = "Interactive";
|
|
||||||
KeepAlive = true;
|
|
||||||
RunAtLoad = true;
|
|
||||||
StandardErrorPath = cfg.service.errorLogFile;
|
|
||||||
StandardOutPath = cfg.service.outLogFile;
|
|
||||||
EnvironmentVariables =
|
|
||||||
{
|
|
||||||
PATH = (lib.concatMapStringsSep ":" (p: "${p}/bin") ([ cfg.package ] ++ cfg.service.extraPackages));
|
|
||||||
}
|
|
||||||
// lib.optionalAttrs
|
|
||||||
(cfg.configType == "lua" && (cfg.sbarLuaPackage != null || cfg.extraLuaPackages != (_: [ ])))
|
|
||||||
{
|
|
||||||
LUA_CPATH = "${
|
|
||||||
lib.concatMapStringsSep ";" pkgs.lua54Packages.getLuaCPath resolvedExtraLuaPackages
|
|
||||||
};${cfg.sbarLuaPackage}/lib/lua/${pkgs.lua.luaversion}/?.so";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
# Combined tests with built-in validation
|
|
||||||
sketchybar = ./sketchybar.nix; # Bash configuration with validation
|
sketchybar = ./sketchybar.nix; # Bash configuration with validation
|
||||||
sketchybar-lua-config = ./sketchybar-lua-config.nix; # Lua configuration with validation
|
sketchybar-lua-config = ./sketchybar-lua-config.nix; # Lua configuration with validation
|
||||||
sketchybar-invalid-lua-config = ./sketchybar-invalid-lua-config.nix; # Tests error on missing sbarLua
|
sketchybar-invalid-lua-config = ./sketchybar-invalid-lua-config.nix; # Tests error on missing sbarLua
|
||||||
|
|
|
||||||
|
|
@ -2,22 +2,27 @@
|
||||||
{
|
{
|
||||||
programs.sketchybar = {
|
programs.sketchybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = config.lib.test.mkStubPackage { };
|
package = config.lib.test.mkStubPackage {
|
||||||
|
name = "sketchybar";
|
||||||
|
buildScript = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
touch $out/bin/sketchybar
|
||||||
|
chmod 755 $out/bin/sketchybar
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# Test case for lua configuration without sbarLuaPackage
|
# Test case for lua configuration without sbarLuaPackage
|
||||||
configType = "lua";
|
configType = "lua";
|
||||||
# sbarLuaPackage intentionally not set
|
sbarLuaPackage = null;
|
||||||
|
|
||||||
variables = {
|
config = ''
|
||||||
PADDING = 3;
|
-- Basic lua config
|
||||||
};
|
local sbar = require("sbarlua")
|
||||||
|
sbar.bar:set({ height = 30 })
|
||||||
config.bar = {
|
'';
|
||||||
height = 30;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
test.asserts.assertions.expected = [
|
test.asserts.assertions.expected = [
|
||||||
"When configType is set to \"lua\", sbarLuaPackage must be specified"
|
"When configType is set to \"lua\", service.sbarLuaPackage must be specified"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,58 +14,54 @@ in
|
||||||
{
|
{
|
||||||
programs.sketchybar = {
|
programs.sketchybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = config.lib.test.mkStubPackage { };
|
package = config.lib.test.mkStubPackage {
|
||||||
|
name = "sketchybar";
|
||||||
|
buildScript = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
touch $out/bin/sketchybar
|
||||||
|
chmod 755 $out/bin/sketchybar
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
configType = "lua";
|
configType = "lua";
|
||||||
|
|
||||||
sbarLuaPackage = pkgsSbarlua;
|
sbarLuaPackage = pkgsSbarlua;
|
||||||
|
|
||||||
variables = {
|
config = ''
|
||||||
PADDING = 3;
|
|
||||||
FONT = "SF Pro";
|
|
||||||
COLOR = "0xff0000ff";
|
|
||||||
# Test more complex values
|
|
||||||
ITEMS = [
|
|
||||||
"calendar"
|
|
||||||
"cpu"
|
|
||||||
"memory"
|
|
||||||
];
|
|
||||||
SETTINGS = {
|
|
||||||
refresh_freq = 1;
|
|
||||||
enable_logging = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
bar = {
|
|
||||||
height = 30;
|
|
||||||
position = "top";
|
|
||||||
padding_left = 10;
|
|
||||||
padding_right = 10;
|
|
||||||
blur_radius = 20;
|
|
||||||
corner_radius = 9;
|
|
||||||
};
|
|
||||||
|
|
||||||
defaults = {
|
|
||||||
"icon.font" = "$FONT";
|
|
||||||
"icon.color" = "$COLOR";
|
|
||||||
"background.height" = 24;
|
|
||||||
"label.padding" = "$PADDING";
|
|
||||||
"popup.background.border_width" = 2;
|
|
||||||
"popup.background.corner_radius" = 9;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
-- This is a test Lua configuration
|
-- This is a test Lua configuration
|
||||||
|
local sbar = require("sbarlua")
|
||||||
|
|
||||||
|
-- Configure bar
|
||||||
|
sbar.bar:set({
|
||||||
|
height = 30,
|
||||||
|
position = "top",
|
||||||
|
padding_left = 10,
|
||||||
|
padding_right = 10,
|
||||||
|
blur_radius = 20,
|
||||||
|
corner_radius = 9,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Configure defaults
|
||||||
|
sbar.defaults:set({
|
||||||
|
["icon.font"] = "SF Pro",
|
||||||
|
["icon.color"] = "0xff0000ff",
|
||||||
|
["background.height"] = 24,
|
||||||
|
["popup.background.border_width"] = 2,
|
||||||
|
["popup.background.corner_radius"] = 9,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Add items
|
||||||
sbar:add("item", "cpu", {
|
sbar:add("item", "cpu", {
|
||||||
position = "right",
|
position = "right",
|
||||||
update_freq = 1,
|
update_freq = 1,
|
||||||
script = "./scripts/cpu.lua"
|
script = "./scripts/cpu.lua",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Subscribe to events
|
-- Subscribe to events
|
||||||
sbar:subscribe("cpu", "system_woke")
|
sbar:subscribe("cpu", "system_woke")
|
||||||
'';
|
|
||||||
|
-- Update the bar
|
||||||
|
sbar:update()'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Validate the generated Lua configuration file
|
# Validate the generated Lua configuration file
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,6 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>EnvironmentVariables</key>
|
|
||||||
<dict>
|
|
||||||
<key>PATH</key>
|
|
||||||
<string>/@sketchybar@/bin:/@jq@/bin</string>
|
|
||||||
</dict>
|
|
||||||
<key>KeepAlive</key>
|
<key>KeepAlive</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Label</key>
|
<key>Label</key>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,11 @@ let
|
||||||
self: super: {
|
self: super: {
|
||||||
sketchybar = config.lib.test.mkStubPackage {
|
sketchybar = config.lib.test.mkStubPackage {
|
||||||
name = "sketchybar";
|
name = "sketchybar";
|
||||||
outPath = "/@sketchybar@";
|
buildScript = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
touch $out/bin/sketchybar
|
||||||
|
chmod 755 $out/bin/sketchybar
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
jq = config.lib.test.mkStubPackage { outPath = "/@jq@"; };
|
jq = config.lib.test.mkStubPackage { outPath = "/@jq@"; };
|
||||||
}
|
}
|
||||||
|
|
@ -21,23 +25,22 @@ in
|
||||||
package = hmPkgs.sketchybar;
|
package = hmPkgs.sketchybar;
|
||||||
configType = "bash";
|
configType = "bash";
|
||||||
|
|
||||||
variables = {
|
config = ''
|
||||||
PADDING = "3";
|
#!/usr/bin/env bash
|
||||||
FONT = "SF Pro";
|
|
||||||
COLOR = "0xff0000ff";
|
|
||||||
};
|
|
||||||
|
|
||||||
config.bar = {
|
# Configure bar
|
||||||
height = 30;
|
sketchybar --bar height=30 \
|
||||||
position = "top";
|
position=top \
|
||||||
padding_left = 10;
|
padding_left=10 \
|
||||||
padding_right = 10;
|
padding_right=10
|
||||||
};
|
|
||||||
|
# Update the bar
|
||||||
|
sketchybar --update
|
||||||
|
'';
|
||||||
|
|
||||||
# Enable the integrated service
|
# Enable the integrated service
|
||||||
service = {
|
service = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = [ hmPkgs.jq ];
|
|
||||||
errorLogFile = "/home/hm-user/Library/Logs/sketchybar/sketchybar.err.log";
|
errorLogFile = "/home/hm-user/Library/Logs/sketchybar/sketchybar.err.log";
|
||||||
outLogFile = "/home/hm-user/Library/Logs/sketchybar/sketchybar.out.log";
|
outLogFile = "/home/hm-user/Library/Logs/sketchybar/sketchybar.out.log";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,45 +3,42 @@
|
||||||
{
|
{
|
||||||
programs.sketchybar = {
|
programs.sketchybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = config.lib.test.mkStubPackage { };
|
package = config.lib.test.mkStubPackage {
|
||||||
|
name = "sketchybar";
|
||||||
|
buildScript = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
touch $out/bin/sketchybar
|
||||||
|
chmod 755 $out/bin/sketchybar
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
configType = "bash";
|
configType = "bash";
|
||||||
|
|
||||||
variables = {
|
config = ''
|
||||||
PADDING = "3";
|
# Define colors
|
||||||
FONT = "SF Pro";
|
export COLOR_BLACK="0xff181926"
|
||||||
COLOR = "0xff0000ff";
|
export COLOR_WHITE="0xffcad3f5"
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
# Configure bar
|
||||||
bar = {
|
sketchybar --bar height=32 \
|
||||||
height = 30;
|
position=top \
|
||||||
position = "top";
|
padding_left=10 \
|
||||||
padding_left = 10;
|
padding_right=10 \
|
||||||
padding_right = 10;
|
color=$COLOR_BLACK
|
||||||
};
|
|
||||||
|
|
||||||
defaults = {
|
# Configure default values
|
||||||
"icon.font" = "$FONT";
|
sketchybar --default icon.font="SF Pro:Bold:14.0" \
|
||||||
"icon.color" = "$COLOR";
|
icon.color=$COLOR_WHITE \
|
||||||
"background.height" = 24;
|
label.font="SF Pro:Bold:14.0" \
|
||||||
};
|
label.color=$COLOR_WHITE
|
||||||
};
|
|
||||||
|
|
||||||
plugins = [
|
# Add items to the bar
|
||||||
{
|
sketchybar --add item clock right \
|
||||||
name = "clock";
|
--set clock script="date '+%H:%M'" \
|
||||||
placement = "right";
|
update_freq=10
|
||||||
script = "./scripts/clock.sh";
|
|
||||||
update_freq = 1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
# Update the bar
|
||||||
# This is a test configuration
|
sketchybar --update
|
||||||
sketchybar --add item cpu right \
|
|
||||||
--set cpu script="$PLUGIN_DIR/cpu.sh" \
|
|
||||||
--subscribe cpu system_woke
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,27 @@
|
||||||
export COLOR=0xff0000ff
|
#!/usr/bin/env bash
|
||||||
export FONT=SF Pro
|
# Generated by home-manager
|
||||||
export PADDING=3
|
# Define colors
|
||||||
|
export COLOR_BLACK="0xff181926"
|
||||||
|
export COLOR_WHITE="0xffcad3f5"
|
||||||
|
|
||||||
sketchybar --bar \
|
# Configure bar
|
||||||
height=30 \
|
sketchybar --bar height=32 \
|
||||||
padding_left=10 \
|
position=top \
|
||||||
padding_right=10 \
|
padding_left=10 \
|
||||||
position=top
|
padding_right=10 \
|
||||||
|
color=$COLOR_BLACK
|
||||||
|
|
||||||
sketchybar --default \
|
# Configure default values
|
||||||
background.height=24 \
|
sketchybar --default icon.font="SF Pro:Bold:14.0" \
|
||||||
icon.color=$COLOR \
|
icon.color=$COLOR_WHITE \
|
||||||
icon.font=$FONT
|
label.font="SF Pro:Bold:14.0" \
|
||||||
|
label.color=$COLOR_WHITE
|
||||||
|
|
||||||
|
# Add items to the bar
|
||||||
|
sketchybar --add item clock right \
|
||||||
|
--set clock script="date '+%H:%M'" \
|
||||||
|
update_freq=10
|
||||||
|
|
||||||
sketchybar --add item clock right --set clock script=./scripts/clock.sh update_freq=1
|
# Update the bar
|
||||||
|
sketchybar --update
|
||||||
|
|
||||||
|
|
||||||
# This is a test configuration
|
|
||||||
sketchybar --add item cpu right \
|
|
||||||
--set cpu script="$PLUGIN_DIR/cpu.sh" \
|
|
||||||
--subscribe cpu system_woke
|
|
||||||
|
|
||||||
|
|
||||||
sketchybar --update
|
|
||||||
|
|
@ -1,52 +1,36 @@
|
||||||
#!/usr/bin/env lua
|
#!/usr/bin/env lua
|
||||||
-- Generated by home-manager
|
-- Generated by home-manager
|
||||||
|
-- This is a test Lua configuration
|
||||||
local sbar = require("sbarlua")
|
local sbar = require("sbarlua")
|
||||||
|
|
||||||
-- Set variables
|
|
||||||
sbar.variables["COLOR"] = "0xff0000ff"
|
|
||||||
sbar.variables["FONT"] = "SF Pro"
|
|
||||||
sbar.variables["ITEMS"] = {
|
|
||||||
"calendar",
|
|
||||||
"cpu",
|
|
||||||
"memory"
|
|
||||||
}
|
|
||||||
sbar.variables["PADDING"] = 3
|
|
||||||
sbar.variables["SETTINGS"] = {
|
|
||||||
["enable_logging"] = true,
|
|
||||||
["refresh_freq"] = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Configure bar
|
-- Configure bar
|
||||||
sbar.bar:set({
|
sbar.bar:set({
|
||||||
["blur_radius"] = 20,
|
height = 30,
|
||||||
["corner_radius"] = 9,
|
position = "top",
|
||||||
["height"] = 30,
|
padding_left = 10,
|
||||||
["padding_left"] = 10,
|
padding_right = 10,
|
||||||
["padding_right"] = 10,
|
blur_radius = 20,
|
||||||
["position"] = "top"
|
corner_radius = 9,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Configure defaults
|
-- Configure defaults
|
||||||
sbar.defaults:set({
|
sbar.defaults:set({
|
||||||
|
["icon.font"] = "SF Pro",
|
||||||
|
["icon.color"] = "0xff0000ff",
|
||||||
["background.height"] = 24,
|
["background.height"] = 24,
|
||||||
["icon.color"] = "$COLOR",
|
|
||||||
["icon.font"] = "$FONT",
|
|
||||||
["label.padding"] = "$PADDING",
|
|
||||||
["popup.background.border_width"] = 2,
|
["popup.background.border_width"] = 2,
|
||||||
["popup.background.corner_radius"] = 9
|
["popup.background.corner_radius"] = 9,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Extra configuration
|
-- Add items
|
||||||
-- This is a test Lua configuration
|
|
||||||
sbar:add("item", "cpu", {
|
sbar:add("item", "cpu", {
|
||||||
position = "right",
|
position = "right",
|
||||||
update_freq = 1,
|
update_freq = 1,
|
||||||
script = "./scripts/cpu.lua"
|
script = "./scripts/cpu.lua",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Subscribe to events
|
-- Subscribe to events
|
||||||
sbar:subscribe("cpu", "system_woke")
|
sbar:subscribe("cpu", "system_woke")
|
||||||
|
|
||||||
|
|
||||||
-- Update the bar
|
-- Update the bar
|
||||||
sbar:update()
|
sbar:update()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue