shikane(5) File Formats Manual shikane(5) (NAME) shikane - (DESCRIPTION) shikane TOML profile . profile output . "output" "display" "monitor" . "display" "output" . "display" "output" . "mode" "mode" . ( .) shikane (profile) . profile output output . output : o search ( OUTPUT FIELDS ) o (mode) output . profile shikane (variants) profile . shikane . profile . : 1920x1080@60Hz 1920x1080@50Hz. mode config.toml "1920x1080" . shikane profile . 1920x1080@60Hz 1920x1080@50Hz . search . (display,output,mode) shikane . . export shikanectl(1) . . (FORMAT) timeout = timeout . shikane timeout ( ) . shikane . 0 . [[profile]] . profile . name . PROFILE FIELDS . (PROFILE FIELDS) name = "name" . (name) profile . [[profile.output]] . output profile . . OUTPUT FIELDS . sway(1) (name) (description) swaymsg -t get_outputs . exec = [ "command", ... ] . exec (command) profile . . (name) $SHIKANE_PROFILE_NAME . (OUTPUT FIELDS) name vendor model serialnumber description : "DP-1" "Company Foo" "FooHD-24" "12345678" "Something Foo Something Bar" search = "pattern" search = "[kind]pattern" search = "[[attrs]kind]pattern" search = [ "[[attrs]kind]pattern", ... ] . . (attribute list) attrs (search kind) kind (pattern) . (attribute list) attrs pattern . {dnmvs} . . search . / / . search pattern . (search kind) kind {=/%} . (search kinds) -- (/) (%) (=) -- pattern (attribute) attrs . pattern . pattern . pattern . . pattern . . (attribute list) (search kind) . shikane . . enable = true | false . . exec = [ "command", ... ] . exec profile . . (name) $SHIKANE_OUTPUT_NAME . mode position scale transform adaptive_sync ( scale ). mode = "best" | "preferred" mode = "[!]widthxheight[@rate[Hz]]" mode = { width = width, height = height, refresh = rate[, custom = true | false] } . . (width) (height) ( ) (rate) ( ) . (rate) . (mode) output . mode (!) . shikane compositor . mode best preferred shikane . best shikane . . mode preferred shikane . . position = "x,y" . . scale = factor . (factor) . transform = "transform" . . 90 180 270 flipped flipped-90 flipped-180 flipped-270 normal . adaptive_sync = true | false . ( VRR ). (EXAMPLES) . [[profile]] name = "Company Foo with one vertical display" [[profile.output]] search = "v=Company Foo" enable = true mode = "1920x1080@50Hz" position = "0,0" scale = 1.3 [[profile.output]] search = "n/HDMI-[ABC]-[1-9]" enable = true exec = [ "echo This is output $SHIKANE_OUTPUT_NAME" ] position = "1920,0" transform = "270" [profile.output.mode] width = 2560 height = 1440 refresh = 75 [[profile]] name = "custom DP-[1-9] flip" exec = [ "echo This is an unusual display" ] [[profile.output]] search = "/DP-[1-9]" enable = true transform = "flipped" position = "0,0" mode = "!2000x1500@55.194Hz" . [[profile]] name = "laptop builtin" [[profile.output]] search = "eDP-1" enable = true [[profile]] name = "no builtin + HDMI" [[profile.output]] search = "n=eDP-1" enable = false [[profile.output]] search = "n=HDMI-A-1" mode = "best" enable = true shikane . . [[profile]] name = "home setup" [[profile.output]] search = "n=eDP-1" enable = false [[profile.output]] search = [ "n=HDMI-A-1", "s=1234VBAM", "m=1QX04Z", "v=specific company" ] enable = true [[profile.output]] search = "smv=1234abcd" enable = true sway(1) exec : [[profile]] name = "double monitor" exec = [ "swaymsg workspace 1, move workspace to eDP-1", "swaymsg workspace 2, move workspace to DP-1" ] output = [ {search = "eDP-1", enable = true}, {search = "DP-1", enable = true} ] shikane $SHIKANE_PROFILE_NAME profile.exec $SHIKANE_OUTPUT_NAME output.exec . sway(1) swayws . [[profile]] name = "generic profile" exec = ["notify-send shikane \"Profile $SHIKANE_PROFILE_NAME has been applied\""] [[profile.output]] search = "/DP-[1-9]" enable = true exec = ["swayws range --numeric 1 5 $SHIKANE_OUTPUT_NAME"] [[profile.output]] search = "n%HDMI-" enable = true mode = "preferred" exec = ["swayws range --numeric 6 10 $SHIKANE_OUTPUT_NAME"] (AUTHORS) Hendrik Wolff (SEE ALSO) shikane(1) shikanectl(1) swayws TOML shikane 1.1.0 2026-05-31 shikane(5)