- Notifications
You must be signed in to change notification settings - Fork 57
Configuring stackline
The stackline config file is a plain lua file. The default configuration is loaded from stackline/conf.lua.
conf.lua has 3 sections:
Paths
Specify paths to binaries & scripts without mucking around in the stackline source.
Appearance
Customize indicator sizing, coloring, positioning, roundness, animation durations, form factor, etc
Features
Enable/disable fuzzy frame detection, click-to-focus, or the hacky workaround for a troublesome Hammerspoon bug. The ability to enable/disable features will be especially useful for upcoming features such as displaying window titles during switching.
The main benefit is that you won't have to put up with bugs in a feature that you don't even use (see #41).
Let's assume that you think the icon indicators use up too much valuable screen real estate. This is an easy issue to fix!
Create a local variable in your init.lua to hold your customizations. I'll call mine myStackline, but you may name yours whatever you wish.
stackline=require"stackline.stackline.stackline"localmyStackline= {
appearance= { showIcons=false, -- default is true
},
features= {
clickToFocus=false, -- default is truefzyFrameDetect= {
fuzzFactor=25-- default is 30
},
},
}
stackline:init(myStackline)Values that you set in this table will override Stackline's default config. Note that this table must adhere to the config schema (which can be found in stackline/configmanager.lua). If invalid config options are passed, Stackline a macOS notification will let you know, and the details will be printed to the Hammerspoon console:
2020-10-1012:19:14: 12:19:14ERROR:sline.conf: Invalidstacklineconfig:
{
appearance= {
myCoolSetting="is not allowed."
}
}All config values can be edited while stackline is running (similarly to yabai).
Values can be set using the hs cli tool:
hs -c "stackline.config:set('appearance.radius', 3)"All config fields support get(key), set(key, val), and getOrSet(key, [val]).
In addition, boolean fields support toggle()
# Toggle boolean values with the hs cli
hs -c "stackline.config:toggle('appearance.showIcons')"You can get and set nested config fields by passing a dot-separated string path, like this: features.fzyFrameDetection.enabled
Config fields validated when stackline initializes and when config values are set live.
If a provided settings path does not exist, stackline will find the most similar setting that does exist and notify you:

c= {}
c.paths= {}
c.appearance= {}
c.features= {}
c.advanced= {}
-- Pathsc.paths.getStackIdxs=hs.configdir..'/stackline/bin/yabai-get-stack-idx'c.paths.jq='/usr/local/bin/jq'c.paths.yabai='/usr/local/bin/yabai'-- Appearancec.appearance.color= { white=0.90 } -- Indicator background color, e.g., {red = 0.5, blue = 0 }c.appearance.alpha=1-- Opacity of active indicatorsc.appearance.dimmer=2.5-- Higher numbers increase contrast b/n focused & unfocused statec.appearance.iconDimmer=1.1-- Higher numbers dim inactive icons *less* than the non-icon indicatorsc.appearance.showIcons=true-- Window indicator style ('lozenge'-shaped when false)c.appearance.size=32-- Size of window indicators (height when icons off)c.appearance.radius=3-- Indicator roundness. Higher numbers → *less* roundness… I'm sorryc.appearance.iconPadding=4-- Space between icon & indicator edge. Higher numbers → smaller, more inset iconsc.appearance.pillThinness=6-- Aspect ratio of pill-style icons (width = size / pillThinness)c.appearance.vertSpacing=1.2-- Amount of vertical space between indicatorsc.appearance.offset= {} -- Offset controls position of stack indicators relative to the windowc.appearance.offset.y=2-- Distance from top of the window to render indicatorsc.appearance.offset.x=4-- Distance away from the edge of the window to render indicatorsc.appearance.shouldFade=true-- Enable/disable fade animationsc.appearance.fadeDuration=0.2-- Duration of fade animations (seconds) -- Featuresc.features.clickToFocus=true-- Click indicator to focus window. Mouse clicks are tracked when enabledc.features.hsBugWorkaround=true-- Workaround for https://github.com/Hammerspoon/hammerspoon/issues/2400c.features.fzyFrameDetect= {} -- Round window frame dimensions by fuzzFactor before identifying stacked windowsc.features.fzyFrameDetect.enabled=true-- Enable/disable fuzzy frame detectionc.features.fzyFrameDetect.fuzzFactor=30-- Window frame dimensions will be rounded to nearest fuzzFactorc.features.winTitles='not_implemented' -- Valid options: false, true, 'when_switching', 'not_implemented'c.features.dynamicLuminosity='not_implemented' -- Valid options: false, true, 'not_implemented'c.advanced.maxRefreshRate=0.3-- How aggressively to refresh Stackline. Higher = slower response time + less battery drainreturnc