codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: sway config file3" Original Author: Josef Litos (litoj/i3config.vim)4" Maintainer: James Eapen <james.eapen@vai.org>5" Version: 1.2.86" Last Change: 2026-04-017 8" References:9" http://i3wm.org/docs/userguide.html#configuring10" https://github.com/swaywm/sway/blob/b69d637f7a34e239e48a4267ae94a5e7087b5834/sway/sway.5.scd11" http://vimdoc.sourceforge.net/htmldoc/syntax.html12"13"14" Quit when a syntax file was already loaded15if exists("b:current_syntax")16 finish17endif18 19" before i3 load to give i3ConfigKeyword lower priority20syn cluster i3ConfigCommand contains=i3ConfigCommand,i3ConfigAction,i3ConfigActionKeyword,@i3ConfigValue,i3ConfigColor,i3ConfigKeyword21 22runtime! syntax/i3config.vim23 24" In sway, popup_during_fullscreen does not have options like all option.25syn cluster i3ConfigPopupFullscreenOpts remove=i3ConfigPopupFullscreenOptsExtra26 27" Sway extensions to i328syn keyword i3ConfigActionKeyword opacity urgent shortcuts_inhibitor splitv splith splitt contained contained skipwhite nextgroup=i3ConfigOption29syn keyword i3ConfigOption set plus minus allow deny csd v h t contained contained skipwhite nextgroup=i3ConfigOption,@i3ConfigValue30 31syn keyword i3ConfigConditionProp app_id pid shell sandbox_app_id sandbox_engine sandbox_instance_id tag contained32 33syn keyword i3ConfigWorkspaceDir prev_on_output next_on_output contained34 35syn match i3ConfigBindArgument /--\(locked\|to-code\|no-repeat\|input-device=[^ '"]*\|no-warn\|inhibited\) / contained contains=i3ConfigShOper,@i3ConfigStrVar nextgroup=i3ConfigBindArgument,i3ConfigBindCombo36syn region i3ConfigBindArgument start=/--input-device=['"]/ end=/\s/ contained contains=@i3ConfigIdent,i3ConfigShOper,i3ConfigString nextgroup=i3ConfigBindArgument,i3ConfigBindCombo37 38syn region i3ConfigBindCombo matchgroup=i3ConfigParen start=/{$/ end=/^\s*}$/ contained contains=i3ConfigBindArgument,i3ConfigBindCombo,i3ConfigComment fold keepend extend39" hack for blocks with start outside parsing range40syn region swayConfigBlockOrphan start=/^\s\+\(--[a-z-]\+ \)*\([$A-Z][$0-9A-Za-z_+]\+\|[a-z]\) [a-z[]/ skip=/\\$\|$\n^\s*}$/ end=/$/ contains=i3ConfigBindArgument,i3ConfigBindCombo,i3ConfigParen keepend extend41 42" Note: braces highlighted by @i3ConfigSh already43syn region i3ConfigExec start=/ {$/ end=/^\s*}$/ contained contains=i3ConfigExecAction,@i3ConfigSh,i3ConfigComment fold keepend extend44 45syn keyword swayConfigFloatingModifierOpts normal inverse none contained46syn match i3ConfigKeyword /floating_modifier \(none\|[$A-Z][0-9A-Za-z]\+ \(normal\|inverse\)\)$/ contained contains=i3ConfigVariable,i3ConfigBindModkey,swayConfigFloatingModifierOpts47 48syn match swayConfigI3Param /--i3/ contains=i3ConfigShParam skipwhite nextgroup=i3ConfigEdgeOpts49syn keyword i3ConfigKeyword hide_edge_borders contained skipwhite nextgroup=swayConfigI3Param,i3ConfigEdgeOpts50 51" accept bar ids in the form: bar <id> { ... }52syn match swayConfigBarIdent /[^{ ,;]\+/ contained contains=@i3ConfigStrVar skipwhite nextgroup=i3ConfigBarBlock53syn keyword i3ConfigKeyword bar contained skipwhite nextgroup=swayConfigBarIdent,i3ConfigBarBlock54 55syn keyword i3ConfigBarOpts swaybar_command contained skipwhite nextgroup=@i3ConfigSh56syn region i3ConfigBarOpts matchgroup=i3ConfigBarOpts start=/gaps/ end=/$/ contained contains=@i3ConfigNumVar57syn keyword i3ConfigBarOpts height pango_markup status_edge_padding status_padding wrap_scroll tray_bindcode tray_bindsym icon_theme contained skipwhite nextgroup=i3ConfigBarOptVals,@i3ConfigValue,i3ConfigShOper58syn keyword i3ConfigBarOptVals overlay contained59 60syn keyword i3ConfigExecActionKeyword swaymsg contained61 62" Sway-only options63" Xwayland64syn keyword swayConfigXOpt enable disable force contained65syn keyword i3ConfigKeyword xwayland contained skipwhite nextgroup=swayConfigXOpt66 67" Inhibit idle68syn keyword swayConfigInhibitOpts focus fullscreen open none visible contained69syn keyword i3ConfigActionKeyword inhibit_idle contained skipwhite nextgroup=swayConfigInhibitOpts70 71" Primary selection72syn keyword i3ConfigKeyword primary_selection contained skipwhite nextgroup=i3ConfigBoolean73 74" Swaybg command75" Swaynag command76syn keyword i3ConfigKeyword swaybg_command swaynag_command contained nextgroup=i3ConfigExec77 78" Bindswitch79syn match swayConfigBindswitchArgument /--\(locked\|no-warn\|reload\) / contained nextgroup=swayConfigBindswitchArgument,swayConfigBindswitchType80syn keyword swayConfigBindswitchType lid tablet contained nextgroup=swayConfigBindswitchCombo81syn keyword swayConfigBindswitchState toggle contained82syn match swayConfigBindswitchCombo /:\(on\|off\|toggle\) / contained contains=i3ConfigColonOperator,swayConfigBindswitchState,i3ConfigBoolean nextgroup=i3ConfigBind83syn region swayConfigBindswitchType matchgroup=i3ConfigParen start=/{$/ end=/^\s*}$/ contained contains=swayConfigBindswitchArgument,swayConfigBindswitchType,i3ConfigComment fold keepend extend84syn keyword i3ConfigBindKeyword bindswitch contained skipwhite nextgroup=swayConfigBindswitchArgument,swayConfigBindswitchType85" hack for blocks with start outside parsing range86syn region swayConfigBlockOrphan start=/^\s\+\(lid\|tablet\):/ skip=/\\$\|$\n^\s*}$/ end=/$/ contains=swayConfigBindswitchArgument,swayConfigBindswitchType,i3ConfigParen keepend extend87 88" Bindgesture89syn match swayConfigBindgestureArgument /--\(exact\|input-device=[:0-9A-Za-z_/-]\+\|no-warn\) / contained nextgroup=swayConfigBindgestureArgument,swayConfigBindgestureCombo90syn keyword swayConfigBindgestureType hold swipe pinch contained91syn keyword swayConfigBindgestureDir up down left right inward outward clockwise counterclockwise contained92syn match swayConfigBindgestureCombo /\(hold\(:[1-5]\)\?\|swipe\(:[3-5]\)\?\(:up\|:down\|:left\|:right\)\?\|pinch\(:[2-5]\)\?:\(+\?\(inward\|outward\|clockwise\|counterclockwise\|up\|down\|left\|right\)\)\+\) / contained contains=i3ConfigNumber,swayConfigBindgestureType,i3ConfigColonOperator,swayConfigBindgestureDir,i3ConfigBindModifier nextgroup=swayConfigBindgestureCombo,i3ConfigBind93syn region swayConfigBindgestureCombo matchgroup=i3ConfigParen start=/{$/ end=/^\s*}$/ contained contains=swayConfigBindgestureArgument,swayConfigBindgestureCombo,i3ConfigComment fold keepend extend94syn keyword i3ConfigBindKeyword bindgesture contained skipwhite nextgroup=swayConfigBindgestureArgument,swayConfigBindgestureCombo95" hack for blocks with start outside parsing range96syn region swayConfigBlockOrphan start=/^\s\+\(--[a-z-]\+ \)*\(hold\|swipe\|pinch\):/ skip=/\\$\|$\n^\s*}$/ end=/$/ contains=swayConfigBindgestureArgument,swayConfigBindgestureCombo,i3ConfigParen keepend extend97 98" Tiling drag threshold99" Titlebar commands100syn keyword i3ConfigKeyword tiling_drag_threshold titlebar_border_thickness contained skipwhite nextgroup=@i3ConfigNumVar101syn match i3ConfigKeyword /titlebar_padding \(\d\+\|\$\S\+\)\( \d\+\)\?$/ contained contains=@i3ConfigNumVar102 103syn match swayConfigDeviceOper /[*:;!]/ contained104 105" Input devices106syn keyword swayConfigInputOpts xkb_variant xkb_rules xkb_switch_layout xkb_numlock xkb_file xkb_capslock xkb_model repeat_delay repeat_rate map_to_output map_to_region map_from_region tool_mode accel_profile dwt dwtp drag_lock drag click_method clickfinger_button_map middle_emulation tap events calibration_matrix natural_scroll left_handed pointer_accel scroll_button scroll_button_lock scroll_factor scroll_method tap_button_map contained skipwhite nextgroup=swayConfigInputOptVals,@i3ConfigValue107syn keyword swayConfigInputOptVals absolute relative adaptive flat none button_areas clickfinger toggle two_finger edge on_button_down lrm lmr next prev pen eraser brush pencil airbrush disabled_on_external_mouse disable enable contained skipwhite nextgroup=swayConfigInputOpts,@i3ConfigValue,swayConfigDeviceOper108syn match swayConfigDeviceOper /,/ contained nextgroup=swayConfigXkbOptsPair,swayConfigXkbLayout109syn match swayConfigXkbLayout /[a-z]\+/ contained nextgroup=swayConfigDeviceOper110syn keyword swayConfigInputOpts xkb_layout contained skipwhite nextgroup=swayConfigXkbLayout111syn match swayConfigXkbOptsPairVal /[0-9a-z_-]\+/ contained contains=i3ConfigNumber skipwhite nextgroup=swayConfigDeviceOper,swayConfigInputOpts112syn match swayConfigXkbOptsPair /[a-z]\+:/ contained contains=i3ConfigColonOperator nextgroup=swayConfigXkbOptsPairVal113syn keyword swayConfigInputOpts xkb_options contained skipwhite nextgroup=swayConfigXkbOptsPair114syn match swayConfigInputAngle /\(3[0-5][0-9]\|[1-2]\?[0-9]\{1,2\}\)\(\.[0-9]\+\)\?/ skipwhite nextgroup=swayConfigInputOpts115syn keyword swayConfigInputOpts rotation_angle contained skipwhite nextgroup=swayConfigInputAngle116 117syn region swayConfigInput start=/\s/ skip=/\\$/ end=/\ze[,;]\|$/ contained contains=swayConfigInputOpts,@i3ConfigValue keepend118syn region swayConfigInput matchgroup=i3ConfigParen start=/ {$/ end=/^\s*}$/ contained contains=swayConfigInputOpts,@i3ConfigValue,i3ConfigComment keepend119syn keyword swayConfigInputType touchpad pointer keyboard touch tablet_tool tablet_pad switch contained skipwhite nextgroup=swayConfigInput120syn match swayConfigInputTypeIdent /type:!\?/ contained contains=swayConfigDeviceOper skipwhite nextgroup=swayConfigInputType121syn match swayConfigInputIdent /[^t ,;][^ ,;]*/ contained contains=@i3ConfigStrVar skipwhite nextgroup=swayConfigInput extend122syn keyword i3ConfigKeyword input contained skipwhite nextgroup=swayConfigInputTypeIdent,swayConfigInputIdent123 124" Seat125syn keyword swayConfigSeatOpts cursor fallback hide_cursor keyboard_grouping shortcuts_inhibitor pointer_constraint xcursor_theme contained skipwhite nextgroup=swayConfigSeatOptVals,@i3ConfigValue126syn match swayConfigInputTypeSeq / \w\+/ contained contains=swayConfigInputType skipwhite nextgroup=swayConfigInputTypeSeq,swayConfigSeatOpts127syn keyword swayConfigSeatOpts idle_inhibit idle_wake contained nextgroup=swayConfigInputTypeSeq128syn keyword swayConfigSeatOpts attach contained skipwhite nextgroup=swayConfigSeatIdent129syn match swayConfigSeatOptVals /when-typing/ contained skipwhite nextgroup=swayConfigSeatOptVals130syn keyword swayConfigSeatOptVals move set press release none smart activate deactivate toggle escape enable disable contained skipwhite nextgroup=swayConfigSeatOpts131syn region swayConfigSeat start=/\s/ skip=/\\$/ end=/\ze[,;]\|$/ contained contains=swayConfigSeatOpts,@i3ConfigValue keepend132syn region swayConfigSeat matchgroup=i3ConfigParen start=/ {$/ end=/^\s*}$/ contained contains=swayConfigSeatOpts,@i3ConfigValue,i3ConfigComment keepend133syn match swayConfigSeatIdent /[^ ,;]\+/ contained contains=@i3ConfigStrVar nextgroup=swayConfigSeat extend134syn keyword i3ConfigKeyword seat contained skipwhite nextgroup=swayConfigSeatIdent135 136" Output monitors137syn keyword swayConfigOutputOpts mode resolution res modeline position pos scale scale_filter subpixel transform disable enable toggle power dpms max_render_time adaptive_sync render_bit_depth color_profile allow_tearing hdr contained skipwhite nextgroup=swayConfigOutputOptVals,@i3ConfigValue,swayConfigOutputMode138syn keyword swayConfigOutputOptVals linear nearest smart rgb bgr vrgb vbgr none toggle srgb contained skipwhite nextgroup=swayConfigOutputOptVals,@i3ConfigValue139syn keyword swayConfigOutputBgVals solid_color fill stretch fit center tile contained skipwhite nextgroup=@i3ConfigColVar140syn match swayConfigOutputBg /[#$]\S\+ solid_color/ contained contains=@i3ConfigColVar,swayConfigOutputBgVals skipwhite nextgroup=swayConfigOutputOpts141syn match swayConfigOutputBg /[^b# ,;][^ ,;]*/ contained contains=@i3ConfigStrVar skipwhite nextgroup=swayConfigOutputBgVals extend142syn keyword swayConfigOutputOpts bg background contained skipwhite nextgroup=swayConfigOutputBg143syn match swayConfigOutputFPS /@[0-9.]\+Hz/ contained skipwhite nextgroup=swayConfigOutputOpts144syn match swayConfigOutputMode /\(--custom \)\?[0-9]\+x[0-9]\+/ contained contains=i3ConfigShParam skipwhite nextgroup=swayConfigOutputFPS,swayConfigOutputOpts145" clockwise and anticlockwise are relative -> only as bindings / user actions - not in config setup146syn match swayConfigOutputOptVals /\(\(flipped-\)\?\(90\|180\|270\)\|flipped\|normal\)\( \(anti\)\?clockwise\)\?/ contained contains=i3ConfigNumber skipwhite nextgroup=swayConfigOutputOpts147syn match swayConfigOutputICCPath /\S\+/ contained contains=@i3ConfigStrVar skipwhite nextgroup=swayConfigOutputOpts extend148syn keyword swayConfigOutputOptVals icc contained skipwhite nextgroup=swayConfigOutputICCPath149syn region swayConfigOutput start=/\s/ skip=/\\$/ end=/\ze[,;]\|$/ contained contains=swayConfigOutputOpts,@i3ConfigValue keepend150syn region swayConfigOutput matchgroup=i3ConfigParen start=/ {$/ end=/^\s*}$/ contained contains=swayConfigOutputOpts,@i3ConfigValue,i3ConfigComment keepend151syn match swayConfigOutputIdent /[^ ,;]\+/ contained contains=@i3ConfigIdent skipwhite nextgroup=swayConfigOutput extend152syn keyword i3ConfigKeyword output contained skipwhite nextgroup=swayConfigOutputIdent153syn keyword i3ConfigActionKeyword output contained skipwhite nextgroup=swayConfigOutputIdent154 155" Define the highlighting.156hi def link swayConfigFloatingModifierOpts i3ConfigOption157hi def link swayConfigBarIdent i3ConfigIdent158hi def link swayConfigXOpt i3ConfigOption159hi def link swayConfigInhibitOpts i3ConfigOption160hi def link swayConfigBindswitchArgument i3ConfigBindArgument161hi def link swayConfigBindswitchType i3ConfigMoveType162hi def link swayConfigBindswitchState i3ConfigMoveDir163hi def link swayConfigBindgestureArgument i3ConfigBindArgument164hi def link swayConfigBindgestureType i3ConfigMoveType165hi def link swayConfigBindgestureDir i3ConfigMoveDir166hi def link swayConfigDeviceOper i3ConfigOperator167hi def link swayConfigInputType i3ConfigMoveType168hi def link swayConfigInputTypeIdent i3ConfigMoveDir169hi def link swayConfigInputIdent i3ConfigIdent170hi def link swayConfigInputOptVals i3ConfigShParam171hi def link swayConfigInputOpts i3ConfigOption172hi def link swayConfigInputAngle i3ConfigNumber173hi def link swayConfigXkbOptsPairVal i3ConfigParamLine174hi def link swayConfigXkbOptsPair i3ConfigShParam175hi def link swayConfigXkbLayout i3ConfigParamLine176hi def link swayConfigSeatOptVals swayConfigInputOptVals177hi def link swayConfigSeatOpts swayConfigInputOpts178hi def link swayConfigSeatIdent i3ConfigIdent179hi def link swayConfigOutputOptVals swayConfigInputOptVals180hi def link swayConfigOutputBgVals swayConfigInputOptVals181hi def link swayConfigOutputBg i3ConfigString182hi def link swayConfigOutputICCPath i3ConfigString183hi def link swayConfigOutputOpts swayConfigInputOpts184hi def link swayConfigOutputFPS Constant185hi def link swayConfigOutputMode i3ConfigNumber186hi def link swayConfigOutputIdent i3ConfigIdent187 188let b:current_syntax = "swayconfig"189 