cagebreak-config(5)
cagebreak-config(5) β Cagebreak Manual, but make it group chat ππ
πΈ NAME πΈ
cagebreak-config β Cagebreak configuration file. This is literally the file where you tell Cagebreak what to do, bestie. π
β¨ SYNOPSIS β¨
$XDG_CONFIG_PATH/cagebreak/config
π¦ DESCRIPTION π¦
The cagebreak configuration is a plain text file. No secret binary nonsense, no weird encoding arc, just text. π
Each line consists of a comment or a command and its arguments which are parsed sequentially but independently from the rest of the file. The way that works is very βone line at a time, main character energyβ β a line does not need its neighbor to make sense. β¨
Each line starting with a # is a comment.
Lowkey important: nesting of commands is limited to50times. Lines are arbitrarily long in practice, though a reasonable limit of4Mbhas been set. π
See KEY DEFINITIONS for details on modifier keys and MODES for details on modes.
π COMMANDS π
Here's the whole command menu, bestie. Every single one. No skips, no βlol you'll figure it outβ. π«Ά
abortβ Return to default mode. It's the βtake me backβ button, no cap. π«Άbackground <r> <g> <b>β Set RGB of background.<[r|g|b]>are floating point numbers between0and1. There is no support for background images. So yes, solid colors only, bestie. π
# Set background to red
background 1.0 0.0 0.0
bind <key> <command>β Bind<key>to execute<command>if pressed in root mode. π
bind <key> <command>
# is equivalent to
definekey root <key> <command>
closeβ Close current window β This may be useful for windows of applications which do not offer any method of closing them. It's giving βescape hatch for feral app windowsβ. πconfigure_messageβ Configure message characteristics. The full syntax is:
configure_message [font <font description>|[f|b]g_color <r> <g> <b> <a>|display_time <n>|anchor <position>|[enable|disable]]
font <font description>sets the font of the message. Here,<font description>is either- an X core font description or
- a FreeType font description via pango
fg_color <r> <g> <b> <a>sets the RGBA of the foregroundbg_color <r> <g> <b> <a>sets the RGBA of the backgrounddisplay_time <n>sets the display time in secondsanchor <position>sets the position of the message.<position>may be one of{top,bottom}_{left,center,right}orcenter.[enable|disable]Enable or disable messages
# Set font
## Set example X code font
configure_message font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
## Set example FreeType font description
configure_message font pango:monospace 10
# Set foreground RGBA to red
configure_message fg_color 1.0 0.0 0.0 1.0
# Set background RGBA to red
configure_message bg_color 1.0 0.0 0.0 1.0
# Set duration for message display to four seconds
configure_message display_time 4
cursor [enable|disable]β Enable or disable cursor. This simply hides the cursor. Pointing and clicking is still possible. So the cursor can ghost, but the clicks still ate. π±οΈβ¨custom_event <message>β Send a custom event to the IPC socket. This sends an event of type"custom_event"to all programs listening to the IPC socket along with the string<message>. Seecagebreak-socket(7)for more details. π°οΈdefinekey <mode> <key> <command>β Bind<key>to execute<command>if pressed in<mode>βdefinekeyis a more general version ofbind. It's the deluxe edition, fr fr. πdefinemode <mode>β Define new mode<mode>β After a call todefinemode,<mode>can be used withdefinekeyto create a custom key mapping. Custom mode era. π
# define new mode and create a mapping for it
definemode foo
definekey foo C-t abort
dumpβ Triggers the dump event, seecagebreak-socket(7)for details. It's giving βsend the state to the socket bestiesβ. π€escape <key>β Set<key>to switch to root mode to execute one command. π«Ά
escape <key>
# is equivalent to
definekey top <key> mode root
exchange <tile_id 1> <tile_id 2> [<follow_focus>]β Exchange tile ids<tile_id 1>and<tile_id 2>, optionally setfollow_focusto0to disable to focus following. Tile swap behavior, but make it intentional. πexchangedownβ Exchange current window with window in the tile to the bottom. Down bad, but spatially. β¬οΈexchangeleftβ Exchange current window with window in the tile to the left. β¬ οΈexchangerightβ Exchange current window with window in the tile to the right. β‘οΈexchangeupβ Exchange current window with window in the tile to the top. β¬οΈexec <command>β Execute<command>usingsh -c. Yes, shell time. πfocus [<tile_id>]β If<tile_id>is provided, focus it, else focus next tile. Focus is the main character, obviously. πfocusdownβ Focus tile to the bottom. β¬οΈβ¨focusleftβ Focus tile to the left. β¬ οΈβ¨focusprevβ Focus previous tile. βͺfocusrightβ Focus tile to the right. β‘οΈβ¨focusupβ Focus tile to the top. β¬οΈβ¨hsplit [<percentage>]β Split current tile horizontally, optionally give a float between0.0and1.0as a percentage of the screen size to split. Horizontal split, horizontal slay. πinput <identifier> <setting> <value>β Set<setting>to<value>for device<identifier>β<identifier>can be"*"(wildcard), of the form"type:<device_type>"or the identifier of the device as printed for example bycagebreak -s. The supported input types are:touchpadpointerkeyboardtouchtablet_tooltablet_padswitch
Configurations are applied sequentially. Currently, only libinput devices may be configured. The available settings and their corresponding values are as follows:
accel_profile adaptive|flatβ Set pointer acceleration profile for specified input devicecalibration_matrix <6 space-separated floating point values>β Set calibration matrixclick_method none|button_areas|clickfingerβ Change click method for the specified devicedrag enabled|disabledβ Enable or disable tap-and-drag for specified input devicedrag_lock enabled|disabledβ Enable or disable drag lock for specified input devicedwt enabled|disabledβ Enable or disable disable-while-typing for specified input deviceevents enabled|disabled|disabled_on_external_mouseβ Enable or disable send_events for specified input device β Disabling send_events disables the input device.keybindings [enabled|disabled]β Enable or disable keybinding interpretation for a specific keyboard.left_handed enabled|disabledβ Enable or disable left handed mode for specified input devicemiddle_emulation enabled|disabledβ Enable or disable middle click emulationnatural_scroll enabled|disabledβ Enable or disable natural (inverted) scrolling for specified input devicepointer_accel [<-1|1>]β Change the pointer acceleration for specified input devicescroll_button disable|<event-code-or-name>β Set button used for scroll_method on_button_down β The button can be given as an event name or code, which can be obtained fromlibinput debug-events. If set to disable, it disables the scroll_method on_button_down.scroll_factor <floating point value>β Change the scroll factor for the specified input device β Scroll speed will be scaled by the given value, which must be non-negative.scroll_method none|two_finger|edge|on_button_downβ Change scroll method for specified input devicerepeat_delay <n>β Repeat delay in ms for keyboards onlyrepeat_rate <n>β Repeat rate in 1/s for keyboards onlytap enabled|disabledβ Enable or disable tap for specified input devicetap_button_map lrm|lmrβ Specify which button mapping to use for tapping βlrmtreats 1 finger as left click, 2 fingers as right click, and 3 fingers as middle click.lmrtreats 1 finger as left click, 2 fingers as middle click, and 3 fingers as right click.
message <text>β Display a line of arbitrary text. Say something iconic. π¬mode <mode>β Enter mode"<mode>"β Returns to default mode, after a command is executed. Temporary mode behavior, very cinderella. π§movetonextscreenβ Move currently focused window to next screen. Seeoutputfor differences between screen and output. π₯οΈβ‘οΈmovetoprevscreenβ Move currently focused window to previous screen. Seeoutputfor differences between screen and output. β¬ οΈπ₯οΈmovetoscreen <n>β Move currently focused window to<n>-th screen. Seeoutputfor differences between screen and output. π₯οΈmovetoworkspace <n>β Move currently focused window to<n>-th workspace. Seeoutputfor differences between screen and output. ποΈmoveviewtotile <view_id> <tile_id> [<follow_focus>]β Move view with<view_id>to tile with<tile_id>, optionally set<follow_focus>to0to disable following the view with the focus. π§³moveviewtoworkspace <view_id> <workspace> [<follow_focus>]β Move view with<view_id>to workspace number<workspace>, optionally set<follow_focus>to0to disable following the view with the focus. ποΈβ¨moveviewtoscreen <view_id> <screen> [<follow_focus>]β Move view with<view_id>to screen number<screen>, optionally set<follow_focus>to0to disable following the view with the focus. π₯οΈβ¨mergeleft [<tile_id>]β Merge tile to the left, relative to the focussed tile by default, the specified<tile_id>otherwise. Merge behavior, left edition. β¬ οΈπ«Άmergeright [<tile_id>]β Merge tile to the right, relative to the focussed tile by default, the specified<tile_id>otherwise. β‘οΈπ«Άmergeup [<tile_id>β Merge tile to the top, relative to the focussed tile by default, the specified<tile_id>otherwise. β¬οΈπ«Άmergedown [<tile_id>β Merge tile to the bottom, relative to the focussed tile by default, the specified<tile_id>otherwise. β¬οΈπ«Άnext [<view_id>]β If given a<view_id>, focus it else focus next. Next bestie, please stand up. πnextscreenβ Focus next screen. Seeoutputfor differences between screen and output. π₯οΈβ‘οΈβ¨only [<screen> <workspace>]β Remove all splits and make current view fill the entire screen on current screen and workspace by default or<screen>and<workspace>if given. One window to rule them all, no cap. ππ₯οΈoutput<name> [[pos <xpos> <ypos> res <width>x<height> rate <rate> [scale <scale>]] | enable | disable | [permanent|peripheral] | prio <n> | rotate <n>] β configure output "<name>" β¨
Okay so this one's a whole little menu of things you can do to a monitor, lowkey the most extra command in the whole file. Here's the rundown bestie:
- <xpos> and <ypos> are the position of the monitor in pixels. The top-left monitor should have the coordinates
0 0. (top-left is the main character, everyone else is relative to her π ) - <width> and <height> specify the resolution in pixels.
- <rate> sets the refresh rate of the monitor (often this is
50or60). - <scale> sets the output scale (default is
1.0, minimum is0.01, maximum is10.0) so yes there ARE bounds, don't get weird with it enableanddisableenable or disable <name>. Note that if <output> is the only enabled output,output <output> disablehas no effect. (the last one standing can't leave the party, sorry π«Ά)permanentsets <name> to persist even on disconnect. When the physical monitor is disconnected, the output is maintained and operates identically to the attached monitor. On reconnect, the monitor operates as though it was never disconnected. Setting the output role toperipheralwhen the monitor is disconnected, destroys the output, as if the monitor were disconnected.peripheralsets the role of <name> to peripheral, meaning that on disconnecting the respective monitor, all views will be moved to another available output. The default role isperipheral.prio <n>is used to set the priority of an output. If nothing else is set, outputs are added as they request to be added and have a numerical priority of-1. Usingprio <n>it is possible to set priorities for outputs, where <n>>= 1. The larger <n> is, the higher the priority is, that is to say, the earlier the output will appear in the list of outputs. (bigger number = earlier in the lineup = more important vibes)rotate <n>is used to rotate the output by<n> mod 4 x 90degrees counter-clockwise.
And here's the rotation cheat sheet, straight from the source, no cap:
# Don't rotate
output DP-1 rotate 0
# rotate 90 degrees counter-clockwise
output DP-1 rotate 1
# rotate 180 degrees counter-clockwise
output DP-1 rotate 2
# rotate 270 degrees counter-clockwise
output DP-1 rotate 3
Also important lore: output and the screen family of commands are similar in that they both deal with monitors on some level. The difference, iykyk:
outputaddresses outputs by their name and is vaguely symmetric toinput.- Any
screencommand deals with the number identifying a monitor within a Cagebreak session either explicitly or implicitly (i.e. the commands containingnextandprev).
prevβ Focus previous window in current tile <butterfly>back one, bestie</butterfly>prevscreenβ Focus previous screenquitβ Exit cagebreak (she's leaving, say bye π)resizedown[<pixels> [<tile_id>]]β Resize towards the bottom, by10pixels by default and <pixels> if given, on the focussed tile by default and <tile_id> if given.resizeleft[<pixels> [<tile_id>]]β Resize towards the left, by10pixels by default and <pixels> if given, on the focussed tile by default and <tile_id> if given.resizeright[<pixels> [<tile_id>]]β Resize towards the right, by10pixels by default and <pixels> if given, on the focussed tile by default and <tile_id> if given.resizeup[<pixels> [<tile_id>]]β Resize towards the top, by10pixels by default and <pixels> if given, on the focussed tile by default and <tile_id> if given.screen<n>β Change to <n>-th screen. Seeoutputfor differences betweenscreenandoutput. (scroll up, it's all there π)show_infoβ Display information about the current setup β In particular, print the identifiers of the available inputs and outputs. basically the receipts for everything currently plugged insetmode<mode>β Set default mode to <mode>setmodecursor<mode> <cursor>β Set cursor to be <cursor> when in mode <mode>switchvt<n>β Switch to tty <n>timeβ Display time (clock check β)vsplit[<percentage>]β Split current tile vertically, optionally give a float between0.0and1.0as a percentage of the screen size to splitworkspace<n>β Change to <n>-th workspaceworkspaces<n>β Set number of workspaces to <n> β <n> is a single integer larger than1and less than30. fr fr, keep it in that range, there's a limit okay
π MODES π
By default, three modes are defined. Three! Default! Modes! the range, the drama
top
Default mode β Keybindings defined in this mode can be accessed directly.
definekeycan be used to set keybindings fortopmode.setmodecan be used to set a different default mode.
root
Command mode β Keybindings defined in this mode can be accessed after pressing the key defined by escape.
bindcan be used to set keybindings forrootmode.
resize
Resize mode β Used to resize tiles.
definemode can be used to create additional modes. build your own, be the architect of your own destiny bestie
β¨ KEY DEFINITIONS β¨
Keys are specified by their names as displayed for example by xev.
Modifiers can be specified using the following syntax:
<mod>-<key>
The supported modifiers are:
Aβ AltCβ ControlLβ LogoSβ Shift2β Mod 23β Mod 35β Mod 5
For example to specify the keybinding Control+t, the expression
C-t
is used. see? not scary at all π«Ά
πΈ SEE ALSO πΈ
cagebreak(1) cagebreak-socket(7)
π BUGS π
See GitHub Issues: <https://github.com/project-repo/cagebreak/issues>
Mail contact: cagebreak @ project-repo . co
GPG Fingerprints:
0A268C188D7949FEB39FD1462F2AD980247E4918283D10F54201B0C6CCEE2C561DE04E4B056C749D
π LICENSE π
Copyright (c) 2020-2024 The Cagebreak authors
Copyright (c) 2018-2020 Jente Hidskes
Copyright (c) 2019 The Sway authors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
and that's the whole page bestie!! πβ¨ this little beauty is Version 3.2.0, dated 2026-04-15, and it's the cagebreak-config(5) page β go forth and configure, you absolute icon π¦π
π¦ where this page comes from
- alpine 3.24: cagebreak-doc 3.2.0-r0 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms