diff --git a/Syntax/i3wm_config.YAML-tmLanguage b/Syntax/i3wm_config.YAML-tmLanguage index 035adcf..ec89e15 100644 --- a/Syntax/i3wm_config.YAML-tmLanguage +++ b/Syntax/i3wm_config.YAML-tmLanguage @@ -1,149 +1,633 @@ -# [PackageDev] target_format: plist, ext: tmLanguage + name: i3-wm Config +author: skk scopeName: source.i3wm_config fileTypes: [i3/config, config] uuid: bb9ebd33-1b88-4310-acef-41720bcac38f + patterns: +- name: criteria + match: \[(.*)\] + captures: + '1': {name: constant.string.i3wm_config} + +# Chapter 4, Configuring i3 - name: comment - match: (?:^ *|\G *)((#).*) + match: ((#).*) captures: '1': {name: comment} '2': {name: comment.source.i3wm_config} -- name: set - match: (?:^ *|\G *)(set)\s*(.*) - captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} - -- name: ipc_socket - match: (?:^ *|\G *)(ipc-socket)\s*(.*) +- name: font_pango + match: (font\ pango\:)\s*([- ,\w]*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: position - match: (?:^ *|\G *)(position)\s*(.*) +- name: font + match: (font)\s*([-\w]*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: status_command - match: (?:^ *|\G *)(status_command)\s*(.*) +# fullscreen +- name: fullscreen + match: (fullscreen) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} -- name: tray_output - match: (?:^ *|\G *)(tray_output)\s*(.*) +# floating_modifier +- name: floating_modifier + match: (floating_modifier)\s*(\$?\w*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: meta.scope.variable.other.i3wm_config} -- name: background - match: (?:^ *|\G *)(background)\s*(.*) +# floating_minimum_size +- name: floating_minimum_size + match: (floating_minimum_size)\s*(-?\d*)\s*(x)\s*(-?\d*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.numeric.i3wm_config} + '3': {name: keyword.control.i3wm_config} + '4': {name: constant.numeric.i3wm_config} -- name: focused_workspace - match: (?:^ *|\G *)(focused_workspace)\s*(.*) +# floating_maximum_size +- name: floating_maximum_size + match: (floating_maximum_size)\s*(-?\d*)\s*(x)\s*(-?\d*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.numeric.i3wm_config} + '3': {name: keyword.control.i3wm_config} + '4': {name: constant.numeric.i3wm_config} -- name: active_workspace - match: (?:^ *|\G *)(active_workspace)\s*(.*) +# default_orientation +- name: default_orientation + match: (default_orientation)\s*(vertical|horizontal|v|h|auto|a) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: inactive_workspace - match: (?:^ *|\G *)(inactive_workspace)\s*(.*) +# workspace_layout +- name: workspace_layout + match: (workspace_layout)\s*(default|stacking|tabbed|d|s|t) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: statusline - match: (?:^ *|\G *)(statusline)\s*(.*) +# new_(window|float) +- name: new_window_or_float + match: (new_(?:window|float))\s*(normal|none|(?:\d*pixel\s\d*)) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: exec - match: (?:^ *|\G *)(exec)\s*(.*) +#hide_edge_borders +- name: hide_edge_borders + match: (hide_edge_borders)\s*(vertical|horizontal|none|both|v|h|n|b) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} -- name: font_pango - match: (?:^ *|\G *)(font\ pango\:)\s*([ \w]*) +#for_window command +- name: for_window + match: (for_window)\s*\[(\w*)=([\"\w\s\:\~\/\$]*\])\s* captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.string.i3wm_config} -- name: bind - match: (?:^ *|\G *)(bindsym|bindcode)\s*(.*)\s*(.*) +# set $mod Mod4 +- name: set + match: (set)\s*(\$\w*)\s*(\w*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} - '3': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: meta.scope.variable.other.i3wm_config} + '3': {name: constant.language.i3wm_config} -- name: font - match: (?:^ *|\G *)(font)\s*([-\w]*) +#assign command +- name: assign + match: (assign)\s*\[(.*)]\s*(→)?\s*([\w\d]*) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} + '3': {name: keyword.operator.i3wm_config} + '4': {name: constant.language.i3wm_config} -- name: force_xinerama - match: (?:^ *|\G *)(force_xinerama)\s*(.*) +# exec_always [--no-startup-id] command +- name: exec_always + match: (exec_always)\s*(\-\-no-startup-id)?\s*(.*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.string.i3wm_config} -- name: floating_modifier - match: (?:^ *|\G *)(floating_modifier)\s*(.*) +# exec [--no-startup-id] command +- name: exec + match: (exec)\s*(\-\-no-startup-id)?\s*(.*) captures: - '1': {name: keyword.source.i3wm_config} - '2': {name: constant.string.i3wm_config} + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.string.i3wm_config} +# client.focused - name: client_focused - match: (?:^ *|\G *)(client\.focused)\s*(.*)\s*(.*)\s*(.*)\s*(.*) + match: (client.focused)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} '3': {name: constant.string.i3wm_config} '4': {name: constant.string.i3wm_config} '5': {name: constant.string.i3wm_config} +# client.focused_inactive - name: client_focused_inactive - match: (?:^ *|\G *)(client\.focused_inactive)\s*(.*)\s*(.*)\s*(.*)\s*(.*) + match: (client\.focused\_inactive)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} '3': {name: constant.string.i3wm_config} '4': {name: constant.string.i3wm_config} '5': {name: constant.string.i3wm_config} +# client.unfocused - name: client_unfocused - match: (?:^ *|\G *)(client\.unfocused)\s*(.*)\s*(.*)\s*(.*)\s*(.*) + match: (client\.unfocused)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} '3': {name: constant.string.i3wm_config} '4': {name: constant.string.i3wm_config} '5': {name: constant.string.i3wm_config} -- name: bar - match: (?:^ *|\G *)(bar)\s*(.*) +# client.urgent +- name: client_urgent + match: (client\.urgent)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} + '3': {name: constant.string.i3wm_config} + '4': {name: constant.string.i3wm_config} + '5': {name: constant.string.i3wm_config} -- name: colors - match: (?:^ *|\G *)(colors)\s*(.*) +# ipc-socket +- name: ipc_socket + match: (ipc-socket)\s*(.*) captures: - '1': {name: keyword.source.i3wm_config} + '1': {name: keyword.control.i3wm_config} '2': {name: constant.string.i3wm_config} +# focus_follows_mouse yes|no +- name: focus_follows_mouse + match: (focus_follows_mouse)\s*(yes|no|y|n) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# popup_during_fullscreen +- name: popup_during_fullscreen + match: (popup_during_fullscreen)\s*(smart|ignore|leave_fullscreen) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# force_focus_wrapping yes|no +- name: force_focus_wrapping + match: (force_focus_wrapping)\s*(yes|no|y|n) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# force_xinerama +- name: force_xinerama + match: (force_xinerama)\s*(no|yes) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# force_xinerama +- name: force_xinerama + match: (force_xinerama)\s*(yes|no|y|n) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# workspace_auto_back_and_forth +- name: workspace_auto_back_and_forth + match: (workspace_auto_back_and_forth)\s*(yes|no|y|n) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# force_display_urgency_hint ms +- name: force_display_urgency_hint + match: (force_display_urgency_hint)\s*(\d*)\s*ms + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.numeric.i3wm_config} + + +# Chapter 5, Configuring i3bar + +# bar { + # i3bar commands +# } +- name: bar + match: (?:^ *|\G *)(bar) + captures: + '1': {name: keyword.control.i3wm_config} + +# i3bar_command i3status --config ~/.i3/i3status.conf +- name: i3bar_command + match: (i3bar_command)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# status_command i3status --config ~/.i3/i3status.conf +- name: status_command + match: (status_command)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# modifier +- name: modifier + match: (modifier)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# hidden_state +- name: hidden_state + match: (hidden_state)\s*(show|hide) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# mode +- name: mode + match: (mode)\s*(dock|hide|invisible) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# bar_id +- name: id + match: (id)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# position +- name: position + match: (position)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# output +- name: output + match: (output)\s*(\w*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# tray_output primary +- name: tray_output + match: (tray_output)\s*(\w*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# workspace_buttons +- name: workspace_buttons + match: (workspace_buttons)\s*(yes|no|y|n) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# colors { + # color commands +# } +- name: colors + match: (colors)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: meta.scope.block.i3wm_config} + +# background +- name: background + match: (background)\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# statusline +- name: statusline + match: (statusline)\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# separator +- name: separator + match: (separator)\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# focused_workspace +- name: focused_workspace + match: (focused_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# active_workspace +- name: active_workspace + match: (active_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# inactive_workspace +- name: inactive_workspace + match: (inactive_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# urgent_workspace +- name: urgent_workspace + match: (urgent_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# Chapter 6, List of commands + +- name: bindcode + match: (bindcode)\s*(--release)?\s*(\d*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.numeric.i3wm_config} + +- name: bindsym + match: (bindsym)\s*(--release)?\s*([$\w\+]*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: meta.scope.variable.other.i3wm_config} + +# split +- name: split + match: (split)\s*(vertical|horizontal|v|h) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# layout +- name: layout + match: (layout)\s*(default|tabbed|stacking|split v|split h) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# layout toggle [split|all] +- name: layout_toggle + match: (layout toggle)\s*(split|all)? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# floating toggle +- name: floating_toggle + match: (floating toggle) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# focus +# focus +- name: focus + match: (focus)\s*(left|right|down|up|l|r|d|u|parent|child|floating|tiling|mode_toggle) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# focus output <|output> +- name: focus_output + match: (focus output)\s*(left|right|down|up|l|r|d|u|(?:[-\w]*)) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# move [ px] +- name: move + match: (move)\s*(left|right|down|up|l|r|d|u)(?:\s*(-?\d*)\s*(px)\s*(?:(-?\d*)\s*(px))?)? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.numeric.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.numeric.i3wm_config} + '6': {name: constant.language.i3wm_config} + +# move [absolute] position [[ px] [ px]|center] +- name: move_abs + match: (move)\s*(absolute)\s*(position)\s*(?:(\d*)\s*(px))?(?:\s*(\d*)\s*(px))?(?:\s*(center)|\s*(?:(\d*) (px))\s*(?:(\d*)\s*(px)))? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.numeric.i3wm_config} + '5': {name: constant.language.i3wm_config} + '6': {name: constant.numeric.i3wm_config} + '7': {name: constant.language.i3wm_config} + '8': {name: constant.language.i3wm_config} + '9': {name: constant.numeric.i3wm_config} + '10': {name: constant.language.i3wm_config} + '11': {name: constant.numeric.i3wm_config} + '12': {name: constant.language.i3wm_config} + +# workspace +# workspace back_and_forth +# workspace +# workspace number +- name: workspace + match: (workspace)\s*(next|prev|next_on_output|prev_on_output|back_and_forth|(?:\w)*|(?:\d*\s*\w*)) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# rename workspace to +# rename workspace to +- name: rename_workspace + match: (rename workspace)\s*([:\s\w]*)\s*(to)\s*([:\s\w]*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: keyword.control.i3wm_config} + '4': {name: constant.language.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# NOTE: move__container_or_workspace needs to be defined before move_workspace. +# It needs to be defined first, so that Sublime match 'move workspace to output' +# correctly. If its defined second, the 'output' won't be highlighted currently +# move container to output <|> +# move workspace to output <|> +- name: move__container_or_workspace + match: (move)\s*(workspace|container)\s*(to)\s*(output)\s*(left|right|down|up|[\w]*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: keyword.control.i3wm_config} + '3': {name: keyword.control.i3wm_config} + '4': {name: keyword.control.i3wm_config} + '5': {name: constant.language.i3wm_config} + +# move workspace +# move workspace back_and_forth +# move workspace +# move workspace number +- name: move_workspace + match: (move)\s*(workspace)\s*(next|prev|next_on_output|prev_on_output|back_and_forth|(?:\w)*|(?:\d*\s*\w*)) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: keyword.control.i3wm_config} + '3': {name: constant.language.i3wm_config} + +# move [window|container] [to] workspace +# move [window|container] [to] workspace number +# move [window|container] [to] workspace +- name: move__window_or_container + match: (move)\s*(window|container)\s*(to)? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: keyword.control.i3wm_config} + '3': {name: keyword.control.i3wm_config} + +# resize_mode +- name: resize_mode + match: (mode)\s*\"(resize)\"\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.stirng.i3wm_config} + +# resize [ px [or ppt]] +- name: resize + match: (resize)\s*(grow|shrink)\s*(width|height)\s*(\d*)\s*(px)\s*(or)\s*(\d*)\s*(ppt) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + '4': {name: constant.numeric.i3wm_config} + '5': {name: constant.language.i3wm_config} + '6': {name: constant.language.i3wm_config} + '7': {name: constant.numeric.i3wm_config} + '8': {name: constant.language.i3wm_config} + +# resize_mode_default +- name: resize_mode_default + match: (mode)\s*\"(default)\" + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.stirng.i3wm_config} + +- name: focus + match: (focus) + captures: + '1': {name: keyword.control.i3wm_config} + +- name: mark_identifier + match: (unmark|mark)\s*(.*) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# border +- name: border + match: (border)\s*(normal|none|(?:(\d*)\s*pixel)) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + +# shmlog +# shmlog +- name: shmlog + match: (shmlog)\s*(?:(on|off|toggle)|(\d*)) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.numeric.i3wm_config} + +# debuglog +- name: shmlog + match: (debuglog)\s*(on|off|toggle) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.numeric.i3wm_config} + +# reload +- name: reload + match: (reload) + captures: + '1': {name: keyword.control.i3wm_config} + +# restart +- name: restart + match: (restart) + captures: + '1': {name: keyword.control.i3wm_config} + +# exit +- name: exit + match: (exit) + captures: + '1': {name: keyword.control.i3wm_config} + +# move scratchpad +- name: move_scratchpad + match: (move)\s*(scratchpad) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: keyword.control.i3wm_config} + +# scratchpad show +- name: scratchpad_show + match: (scratchpad)\s*(show) + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: keyword.control.i3wm_config} + +# bar_hidden_state +- name: bar_hidden_state + match: (bar hidden_state)\s*(show|hide|toggle)\s*(.*)? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} + +# bar mode dock|hide|invisible|toggle [bar_id] +- name: bar_mode + match: (mode)\s*(dock|hide|invisible|toggle)\s*(.*)? + captures: + '1': {name: keyword.control.i3wm_config} + '2': {name: constant.language.i3wm_config} + '3': {name: constant.language.i3wm_config} diff --git a/Syntax/i3wm_config.tmLanguage b/Syntax/i3wm_config.tmLanguage index a60d02b..49dc1ba 100644 --- a/Syntax/i3wm_config.tmLanguage +++ b/Syntax/i3wm_config.tmLanguage @@ -1,488 +1,1814 @@ - + - - - fileTypes - - i3/config - config - - name - i3-wm Config - patterns - - - captures - - 1 - - name - comment - - 2 - - name - comment.source.i3wm_config - - - match - (?:^ *|\G *)((#).*) - name - comment - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(set)\s*(.*) - name - set - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(ipc-socket)\s*(.*) - name - ipc_socket - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(position)\s*(.*) - name - position - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(status_command)\s*(.*) - name - status_command - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(tray_output)\s*(.*) - name - tray_output - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(background)\s*(.*) - name - background - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(focused_workspace)\s*(.*) - name - focused_workspace - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(active_workspace)\s*(.*) - name - active_workspace - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(inactive_workspace)\s*(.*) - name - inactive_workspace - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(statusline)\s*(.*) - name - statusline - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(exec)\s*(.*) - name - exec - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(font\ pango\:)\s*([ \w]*) - name - font_pango - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - 3 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(bindsym|bindcode)\s*(.*)\s*(.*) - name - bind - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(font)\s*([-\w]*) - name - font - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(force_xinerama)\s*(.*) - name - force_xinerama - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(floating_modifier)\s*(.*) - name - floating_modifier - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - 3 - - name - constant.string.i3wm_config - - 4 - - name - constant.string.i3wm_config - - 5 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(client\.focused)\s*(.*)\s*(.*)\s*(.*)\s*(.*) - name - client_focused - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - 3 - - name - constant.string.i3wm_config - - 4 - - name - constant.string.i3wm_config - - 5 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(client\.focused_inactive)\s*(.*)\s*(.*)\s*(.*)\s*(.*) - name - client_focused_inactive - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - 3 - - name - constant.string.i3wm_config - - 4 - - name - constant.string.i3wm_config - - 5 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(client\.unfocused)\s*(.*)\s*(.*)\s*(.*)\s*(.*) - name - client_unfocused - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(bar)\s*(.*) - name - bar - - - captures - - 1 - - name - keyword.source.i3wm_config - - 2 - - name - constant.string.i3wm_config - - - match - (?:^ *|\G *)(colors)\s*(.*) - name - colors - - - scopeName - source.i3wm_config - uuid - bb9ebd33-1b88-4310-acef-41720bcac38f - + + + name + i3-wm Config + author + skk + scopeName + source.i3wm_config + fileTypes + + i3/config + config + + uuid + bb9ebd33-1b88-4310-acef-41720bcac38f + patterns + + + name + criteria + match + \[(.*)\] + captures + + 1 + + name + constant.string.i3wm_config + + + + + name + comment + match + ((#).*) + captures + + 1 + + name + comment + + 2 + + name + comment.source.i3wm_config + + + + + name + font_pango + match + (font\ pango\:)\s*([- ,\w]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + font + match + (font)\s*([-\w]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + fullscreen + match + (fullscreen) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + + + + name + floating_modifier + match + (floating_modifier)\s*(\$?\w*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + meta.scope.variable.other.i3wm_config + + + + + name + floating_minimum_size + match + (floating_minimum_size)\s*(-?\d*)\s*(x)\s*(-?\d*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.numeric.i3wm_config + + 3 + + name + keyword.control.i3wm_config + + 4 + + name + constant.numeric.i3wm_config + + + + + name + floating_maximum_size + match + (floating_maximum_size)\s*(-?\d*)\s*(x)\s*(-?\d*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.numeric.i3wm_config + + 3 + + name + keyword.control.i3wm_config + + 4 + + name + constant.numeric.i3wm_config + + + + + name + default_orientation + match + (default_orientation)\s*(vertical|horizontal|v|h|auto|a) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + workspace_layout + match + (workspace_layout)\s*(default|stacking|tabbed|d|s|t) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + new_window_or_float + match + (new_(?:window|float))\s*(normal|none|(?:\d*pixel\s\d*)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + hide_edge_borders + match + (hide_edge_borders)\s*(vertical|horizontal|none|both|v|h|n|b) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + for_window + match + (for_window)\s*\[(\w*)=([\"\w\s\:\~\/\$]*\])\s* + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.string.i3wm_config + + + + + name + set + match + (set)\s*(\$\w*)\s*(\w*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + meta.scope.variable.other.i3wm_config + + 3 + + name + constant.language.i3wm_config + + + + + name + assign + match + (assign)\s*\[(.*)]\s*(→)?\s*([\w\d]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + 3 + + name + keyword.operator.i3wm_config + + 4 + + name + constant.language.i3wm_config + + + + + name + exec_always + match + (exec_always)\s*(\-\-no-startup-id)?\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.string.i3wm_config + + + + + name + exec + match + (exec)\s*(\-\-no-startup-id)?\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.string.i3wm_config + + + + + name + client_focused + match + (client.focused)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + 3 + + name + constant.string.i3wm_config + + 4 + + name + constant.string.i3wm_config + + 5 + + name + constant.string.i3wm_config + + + + + name + client_focused_inactive + match + (client\.focused\_inactive)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + 3 + + name + constant.string.i3wm_config + + 4 + + name + constant.string.i3wm_config + + 5 + + name + constant.string.i3wm_config + + + + + name + client_unfocused + match + (client\.unfocused)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + 3 + + name + constant.string.i3wm_config + + 4 + + name + constant.string.i3wm_config + + 5 + + name + constant.string.i3wm_config + + + + + name + client_urgent + match + (client\.urgent)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + 3 + + name + constant.string.i3wm_config + + 4 + + name + constant.string.i3wm_config + + 5 + + name + constant.string.i3wm_config + + + + + name + ipc_socket + match + (ipc-socket)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.string.i3wm_config + + + + + name + focus_follows_mouse + match + (focus_follows_mouse)\s*(yes|no|y|n) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + popup_during_fullscreen + match + (popup_during_fullscreen)\s*(smart|ignore|leave_fullscreen) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + force_focus_wrapping + match + (force_focus_wrapping)\s*(yes|no|y|n) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + force_xinerama + match + (force_xinerama)\s*(no|yes) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + force_xinerama + match + (force_xinerama)\s*(yes|no|y|n) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + workspace_auto_back_and_forth + match + (workspace_auto_back_and_forth)\s*(yes|no|y|n) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + force_display_urgency_hint + match + (force_display_urgency_hint)\s*(\d*)\s*ms + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.numeric.i3wm_config + + + + + name + bar + match + (?:^ *|\G *)(bar) + captures + + 1 + + name + keyword.control.i3wm_config + + + + + name + i3bar_command + match + (i3bar_command)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + status_command + match + (status_command)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + modifier + match + (modifier)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + hidden_state + match + (hidden_state)\s*(show|hide) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + mode + match + (mode)\s*(dock|hide|invisible) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + id + match + (id)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + position + match + (position)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + output + match + (output)\s*(\w*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + tray_output + match + (tray_output)\s*(\w*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + workspace_buttons + match + (workspace_buttons)\s*(yes|no|y|n) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + colors + match + (colors)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + meta.scope.block.i3wm_config + + + + + name + background + match + (background)\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + statusline + match + (statusline)\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + separator + match + (separator)\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + focused_workspace + match + (focused_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + active_workspace + match + (active_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + inactive_workspace + match + (inactive_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + urgent_workspace + match + (urgent_workspace)\s*(#\w{6})\s*(#\w{6})\s*(#\w{6}) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + bindcode + match + (bindcode)\s*(--release)?\s*(\d*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.numeric.i3wm_config + + + + + name + bindsym + match + (bindsym)\s*(--release)?\s*([$\w\+]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + meta.scope.variable.other.i3wm_config + + + + + name + split + match + (split)\s*(vertical|horizontal|v|h) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + layout + match + (layout)\s*(default|tabbed|stacking|split v|split h) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + layout_toggle + match + (layout toggle)\s*(split|all)? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + floating_toggle + match + (floating toggle) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + focus + match + (focus)\s*(left|right|down|up|l|r|d|u|parent|child|floating|tiling|mode_toggle) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + focus_output + match + (focus output)\s*(left|right|down|up|l|r|d|u|(?:[-\w]*)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + move + match + (move)\s*(left|right|down|up|l|r|d|u)(?:\s*(-?\d*)\s*(px)\s*(?:(-?\d*)\s*(px))?)? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.numeric.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.numeric.i3wm_config + + 6 + + name + constant.language.i3wm_config + + + + + name + move_abs + match + (move)\s*(absolute)\s*(position)\s*(?:(\d*)\s*(px))?(?:\s*(\d*)\s*(px))?(?:\s*(center)|\s*(?:(\d*) (px))\s*(?:(\d*)\s*(px)))? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.numeric.i3wm_config + + 5 + + name + constant.language.i3wm_config + + 6 + + name + constant.numeric.i3wm_config + + 7 + + name + constant.language.i3wm_config + + 8 + + name + constant.language.i3wm_config + + 9 + + name + constant.numeric.i3wm_config + + 10 + + name + constant.language.i3wm_config + + 11 + + name + constant.numeric.i3wm_config + + 12 + + name + constant.language.i3wm_config + + + + + name + workspace + match + (workspace)\s*(next|prev|next_on_output|prev_on_output|back_and_forth|(?:\w)*|(?:\d*\s*\w*)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + rename_workspace + match + (rename workspace)\s*([:\s\w]*)\s*(to)\s*([:\s\w]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + keyword.control.i3wm_config + + 4 + + name + constant.language.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + move__container_or_workspace + match + (move)\s*(workspace|container)\s*(to)\s*(output)\s*(left|right|down|up|[\w]*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + keyword.control.i3wm_config + + 3 + + name + keyword.control.i3wm_config + + 4 + + name + keyword.control.i3wm_config + + 5 + + name + constant.language.i3wm_config + + + + + name + move_workspace + match + (move)\s*(workspace)\s*(next|prev|next_on_output|prev_on_output|back_and_forth|(?:\w)*|(?:\d*\s*\w*)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + keyword.control.i3wm_config + + 3 + + name + constant.language.i3wm_config + + + + + name + move__window_or_container + match + (move)\s*(window|container)\s*(to)? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + keyword.control.i3wm_config + + 3 + + name + keyword.control.i3wm_config + + + + + name + resize_mode + match + (mode)\s*\"(resize)\"\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.stirng.i3wm_config + + + + + name + resize + match + (resize)\s*(grow|shrink)\s*(width|height)\s*(\d*)\s*(px)\s*(or)\s*(\d*)\s*(ppt) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + 4 + + name + constant.numeric.i3wm_config + + 5 + + name + constant.language.i3wm_config + + 6 + + name + constant.language.i3wm_config + + 7 + + name + constant.numeric.i3wm_config + + 8 + + name + constant.language.i3wm_config + + + + + name + resize_mode_default + match + (mode)\s*\"(default)\" + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.stirng.i3wm_config + + + + + name + focus + match + (focus) + captures + + 1 + + name + keyword.control.i3wm_config + + + + + name + mark_identifier + match + (unmark|mark)\s*(.*) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + border + match + (border)\s*(normal|none|(?:(\d*)\s*pixel)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + + + + name + shmlog + match + (shmlog)\s*(?:(on|off|toggle)|(\d*)) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.numeric.i3wm_config + + + + + name + shmlog + match + (debuglog)\s*(on|off|toggle) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.numeric.i3wm_config + + + + + name + reload + match + (reload) + captures + + 1 + + name + keyword.control.i3wm_config + + + + + name + restart + match + (restart) + captures + + 1 + + name + keyword.control.i3wm_config + + + + + name + exit + match + (exit) + captures + + 1 + + name + keyword.control.i3wm_config + + + + + name + move_scratchpad + match + (move)\s*(scratchpad) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + keyword.control.i3wm_config + + + + + name + scratchpad_show + match + (scratchpad)\s*(show) + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + keyword.control.i3wm_config + + + + + name + bar_hidden_state + match + (bar hidden_state)\s*(show|hide|toggle)\s*(.*)? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + + + + name + bar_mode + match + (mode)\s*(dock|hide|invisible|toggle)\s*(.*)? + captures + + 1 + + name + keyword.control.i3wm_config + + 2 + + name + constant.language.i3wm_config + + 3 + + name + constant.language.i3wm_config + + + + + diff --git a/config b/config new file mode 100644 index 0000000..5b91a8f --- /dev/null +++ b/config @@ -0,0 +1,538 @@ +# Chapter 4, Configuring i3 + +# Section 4.1, Comments +# Examples: +# This is a comment + +# Section 4.2, Fonts +# Syntax +# font +# font pango:[family list] [style options] [size] +# Examples +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +font pango:DejaVu Sans Mono 10 +font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11 +font pango:Terminus 11px + +# Section 4.3, Keyboard Bindings +# Syntax +# bindsym [--release] [Modifiers+]keysym command +# bindcode [--release] [Modifiers+]keycode command + +# Fullscreen +bindsym $mod+f fullscreen + +# Restart +bindsym $mod+Shift+r restart + +# Notebook-specific hotkeys +bindcode 214 exec --no-startup-id /home/michael/toggle_beamer.sh + +# Simulate ctrl+v upon pressing $mod+x +bindsym --release $mod+x exec xdotool key --clearmodifiers ctrl+v + +# Take a screenshot upon pressing $mod+x (select an area) +bindsym --release $mod+x exec --no-startup-id import /tmp/latest-screenshot.png + +# 4.4, Floating modifier +# Syntax: +# floating_modifier +# Example: +floating_modifier Mod1 +floating_modifier $m + +# 4.5. Constraining floating window size +# Syntax: +# floating_minimum_size x +# floating_maximum_size x +# Example: +floating_minimum_size 75 x 50 +floating_maximum_size -1 x -1 + +# 4.6. Orientation for new workspaces +#Syntax: +#default_orientation +#Example: +default_orientation vertical + +#4.7. Layout mode for new containers +#Syntax: +#workspace_layout +#Example: +workspace_layout tabbed + +#4.8. Border style for new windows +#Syntax: +#new_window +#new_float +#Example: +new_window 1pixel +new_float 1pixel +new_float none +new_window pixel 3 + +#4.9. Hiding vertical borders +#Syntax: +#hide_edge_borders +#Example: +hide_edge_borders vertical + +#4.10. Arbitrary commands for specific windows (for_window) +#Syntax: +#for_window command +#Examples: +for_window [class="XTerm"] floating enable +for_window [class="urxvt"] border 1pixel +for_window [title="x200: ~/work"] floating enable + +#4.11. Variables +#Syntax: +#set $name value +#Example: +set $m Mod1 +bindsym $m+Shift+r restart + +#4.12. Automatically putting clients on specific workspaces +#Syntax: +#assign [→] workspace +#Examples: +assign [class="URxvt"] 2 +assign [class="^URxvt$"] 2 +assign [class="^URxvt$"] → 2 +assign [class="^URxvt$"] → work +assign [class="^URxvt$" instance="^irssi$"] → 3 + +#4.13. Automatically starting applications on i3 startup +#Syntax: +#exec [--no-startup-id] command +#exec_always [--no-startup-id] command +#Examples: +exec chromium +exec_always ~/my_script.sh +exec --no-startup-id urxvt + +#4.14. Automatically putting workspaces on specific screens +#Syntax: +#workspace output +#Examples: +workspace 1 output LVDS1 +workspace 5 output VGA1 +workspace "2: vim" output VGA1 + +#4.15. Changing colors +#Syntax: +#colorclass border background text indicator +#Where colorclass can be one of: +#client.focused, client.focused_inactive, client.unfocused, client.urgent +#client.background +#Examples (default colors): +# class border bg text indicator +client.focused #4c7899 #285577 #ffffff #2e9ef4 +client.focused_inactive #333333 #5f676a #ffffff #484e50 +client.unfocused #333333 #222222 #888888 #292d2e +client.urgent #2f343a #900000 #ffffff #900000 + +#4.16. Interprocess communication +#Syntax +#ipc-socket path_to_socket +#Examples: +ipc-socket ~/.i3/i3-ipc.sock + +#4.17. Focus follows mouse +#Syntax: +#focus_follows_mouse +#Example: +focus_follows_mouse no + +#4.18. Popups during fullscreen mode +#Syntax: +#popup_during_fullscreen +#Example: +popup_during_fullscreen smart + +#4.19. Focus wrapping +#Syntax: +#force_focus_wrapping +#Example: +force_focus_wrapping yes + +#4.20. Forcing Xinerama +#Syntax: +#force_xinerama +#Example: +force_xinerama yes + +#4.21. Automatic back-and-forth when switching to the current workspace +#Syntax: +#workspace_auto_back_and_forth +#Example: +workspace_auto_back_and_forth yes + +#4.22. Delaying urgency hint reset on workspace change +#Syntax: +#force_display_urgency_hint ms +#Example: +force_display_urgency_hint 500 ms + +# Chapter 5, Configuring i3bar +#Syntax +#bar { +# # i3bar commands +#} +#Example: +bar { + status_command i3status +} + +#5.1. i3bar command +#Syntax: +#i3bar_command command +#Example: +bar { + i3bar_command /home/user/bin/i3bar +} + +#5.2. Statusline command +#Syntax: +#status_command command +#Example: +bar { + status_command i3status --config ~/.i3status.conf +} + +#5.3. Display mode +#Syntax: +#mode +#hidden_state +#modifier +#Example: +bar { + mode hide + modifier Mod1 + hidden_state hide +} + +#5.4. Bar ID +#Syntax: +#id +#Example: +bar { + id bar-1 +} + +#5.5. Position +#Syntax: +#position +#Example: +bar { + position top +} + +#5.6. Output(s) +#Syntax: +#output +#Example: +# big monitor: everything +bar { + # The display is connected either via HDMI or via DisplayPort + output HDMI2 + output DP2 + status_command i3status +} + +# laptop monitor: bright colors and i3status with less modules. +bar { + output LVDS1 + status_command i3status --config ~/.i3status-small.conf + colors { + background #000000 + statusline #ffffff + } +} + +#5.7. Tray output +#Syntax: +#tray_output +#Example: +# disable system tray +bar { + tray_output none +} + +# show tray icons on the primary monitor +tray_output primary + +# show tray icons on the big monitor +bar { + tray_output HDMI2 +} + +#5.8. Font (same as 4.2) +#Syntax: +#font +#Example: +bar { + font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 + font pango:DejaVu Sans Mono 10 +} + +#5.9. Workspace buttons +#Syntax: +#workspace_buttons +#Example: +bar { + workspace_buttons no +} + +#5.10. Colors +#color sub-commands: +# background +# statusline +# separator +# focused_workspace +# active_workspace +# inactive_workspace +# urgent_workspace +#Syntax: +#colors { +# background +# statusline +# separator +# colorclass +#} +#Example (default colors): +bar { + colors { + background #000000 + statusline #ffffff + separator #666666 + + focused_workspace #4c7899 #285577 #ffffff + active_workspace #333333 #5f676a #ffffff + inactive_workspace #333333 #222222 #888888 + urgent_workspace #2f343a #900000 #ffffff + } +} + +# Chapter 6, List of commands +# command chaining using ; +#bindsym $mod+x move container to workspace 3; workspace 3 +# scope of command changes using square brackets +#Example: +bindsym $mod+x [class="Firefox"] kill + +# same thing, but case-insensitive +bindsym $mod+x [class="(?i)firefox"] kill +#The criteria which are currently implemented are: +#class +#instance +#window_role +#id +#title +#urgent +#con_mark +#con_id +#criteria class, instance, role, title and mark are regular expressions (PCRE). + +#6.1. Executing applications (exec) +#Syntax: +#exec [--no-startup-id] command +#Example: +bindsym $mod+g exec gimp +bindsym $mod+Return exec --no-startup-id urxvt + +#6.2. Splitting containers +#Syntax: +#split +#Example: +bindsym $mod+v split vertical +bindsym $mod+h split horizontal + +#6.3. Manipulating layout +#Syntax: +#layout +#layout toggle [split|all] +#Examples: +bindsym $mod+s layout stacking +bindsym $mod+l layout toggle split +bindsym $mod+w layout tabbed +bindsym $mod+x layout toggle +bindsym $mod+x layout toggle all +bindsym $mod+f fullscreen +bindsym $mod+t floating toggle + +#6.4. Focusing/Moving containers +#Syntax: +#focus +#focus +#focus output <|output> +#move [ px] +#move [absolute] position [[ px] [ px]|center] +# Note that the amount of pixels you can specify for the move command is only +# relevant for floating containers. The default amount is 10 pixels. +#Examples: +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right +bindsym $mod+u focus parent +bindsym $mod+g focus mode_toggle +bindsym $mod+x focus output right +bindsym $mod+x focus output HDMI-2 +bindsym $mod+j move left +bindsym $mod+k move down +bindsym $mod+l move up +bindsym $mod+semicolon move right +bindsym $mod+j move left 20 px 10 px +bindsym $mod+j move left 20 px 10 px +bindsym $mod+c move absolute position center +bindsym $mod+c move absolute position 10 px +bindsym $mod+c move absolute position 10 px 10 px +bindsym $mod+c move absolute position 10 px +bindsym $mod+c move absolute position 10 px 20 px +bindsym $mod+c move absolute position 10 px 20 px center +bindsym $mod+c move absolute position 10 px 30 px 30 px 40 px + +#6.5. Changing (named) workspaces/moving to workspaces +#Syntax: +#workspace +#workspace back_and_forth +#workspace +#workspace number +#move [window|container] [to] workspace +#move [window|container] [to] workspace number +#move [window|container] [to] workspace +#Examples: +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth +bindsym $mod+x move workspace to output right +bindsym $mod+F1 [class="Firefox"] move workspace current + +#6.5.1. Named workspaces +#Workspaces are identified by their name. So, instead of using numbers in the +#workspace command, you can use an arbitrary name: +#Example: +bindsym $mod+1 workspace mail +bindsym $mod+1 workspace 1: mail +bindsym $mod+2 workspace 2: www + +#6.5.2. Renaming workspaces +#Syntax: +#rename workspace to +#rename workspace to +#Examples: +rename workspace 5 to 6 +rename workspace 1 to 1: www +rename workspace 1: www to 10: www +workspace to 2: mail + +#6.6. Moving workspaces to a different screen +# see section 6.7 + +#6.7. Moving containers/workspaces to RandR outputs +#Syntax: +#move container to output <|> +#move workspace to output <|> +Examples: +bindsym $mod+x move workspace to output right +bindsym $mod+x move container to output VGA1 + +#6.8. Resizing containers/windows +#Syntax: +#resize [ px [or ppt]] +#Example: Configuration file, defining a mode for resizing +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +# Enter resize mode +bindsym $mod+r mode "resize" + +#6.9. Jumping to specific windows +#Syntax: +#[class="class"] focus +#[title="title"] focus +#Examples: +bindsym $mod+a [title="VIM"] focus +bindsym $mod+a [class="urxvt"] focus +bindsym $mod+a [class="urxvt" title="VIM"] focus + +#6.10. VIM-like marks (mark/goto) +#Syntax: +#mark identifier +#[con_mark="identifier"] focus +#unmark identifier +#Example (in a terminal): +mark irssi +[con_mark="irssi"] focus +unmark irssi + +#6.11. Changing border style +#Examples: +bindsym $mod+t border normal +bindsym $mod+y border 1pixel +bindsym $mod+u border none + +#6.12. Enabling shared memory logging +#Syntax: +#shmlog +#shmlog +#Examples: +bindsym $mod+x shmlog toggle + +#6.13. Enabling debug logging +#Syntax: +#debuglog +#Examples: +bindsym $mod+x debuglog toggle + +#6.14. Reloading/Restarting/Exiting +#Syntax: +#restart +#reload +#exit +#Examples: +bindsym $mod+Shift+r restart +bindsym $mod+Shift+w reload +bindsym $mod+Shift+e exit + +#6.15. Scratchpad +#Syntax: +#move scratchpad +#scratchpad show +#Examples: +bindsym $mod+Shift+minus move scratchpad +bindsym $mod+minus scratchpad show +bindsym mod4+s [title="^Sup ::"] scratchpad show + +#6.16. i3bar control +#Syntax: +#bar hidden_state hide|show|toggle [] +#bar mode dock|hide|invisible|toggle [] +#Examples: +bindsym $mod+m bar hidden_state toggle +bindsym $mod+n bar mode toggle +bindsym $mod+b bar mode hide bar-1 +bindsym $mod+Shift+b bar mode invisible bar-1