iterm2 2.22__tar.gz → 2.24__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. {iterm2-2.22 → iterm2-2.24}/PKG-INFO +1 -1
  2. {iterm2-2.22 → iterm2-2.24}/iterm2/__init__.py +2 -0
  3. {iterm2-2.22 → iterm2-2.24}/iterm2/_version.py +1 -1
  4. {iterm2-2.22 → iterm2-2.24}/iterm2/api_pb2.py +34 -34
  5. {iterm2-2.22 → iterm2-2.24}/iterm2/api_pb2.pyi +35 -4
  6. {iterm2-2.22 → iterm2-2.24}/iterm2/capabilities.py +11 -0
  7. {iterm2-2.22 → iterm2-2.24}/iterm2/rpc.py +22 -8
  8. {iterm2-2.22 → iterm2-2.24}/iterm2/tab.py +87 -1
  9. iterm2-2.24/iterm2/tabgroup.py +131 -0
  10. {iterm2-2.22 → iterm2-2.24}/iterm2/window.py +83 -9
  11. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/PKG-INFO +1 -1
  12. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/SOURCES.txt +1 -0
  13. {iterm2-2.22 → iterm2-2.24}/MANIFEST.in +0 -0
  14. {iterm2-2.22 → iterm2-2.24}/README.rst +0 -0
  15. {iterm2-2.22 → iterm2-2.24}/iterm2/alert.py +0 -0
  16. {iterm2-2.22 → iterm2-2.24}/iterm2/app.py +0 -0
  17. {iterm2-2.22 → iterm2-2.24}/iterm2/arrangement.py +0 -0
  18. {iterm2-2.22 → iterm2-2.24}/iterm2/auth.py +0 -0
  19. {iterm2-2.22 → iterm2-2.24}/iterm2/binding.py +0 -0
  20. {iterm2-2.22 → iterm2-2.24}/iterm2/broadcast.py +0 -0
  21. {iterm2-2.22 → iterm2-2.24}/iterm2/color.py +0 -0
  22. {iterm2-2.22 → iterm2-2.24}/iterm2/colorpresets.py +0 -0
  23. {iterm2-2.22 → iterm2-2.24}/iterm2/connection.py +0 -0
  24. {iterm2-2.22 → iterm2-2.24}/iterm2/customcontrol.py +0 -0
  25. {iterm2-2.22 → iterm2-2.24}/iterm2/filepanel.py +0 -0
  26. {iterm2-2.22 → iterm2-2.24}/iterm2/focus.py +0 -0
  27. {iterm2-2.22 → iterm2-2.24}/iterm2/keyboard.py +0 -0
  28. {iterm2-2.22 → iterm2-2.24}/iterm2/lifecycle.py +0 -0
  29. {iterm2-2.22 → iterm2-2.24}/iterm2/mainmenu.py +0 -0
  30. {iterm2-2.22 → iterm2-2.24}/iterm2/notifications.py +0 -0
  31. {iterm2-2.22 → iterm2-2.24}/iterm2/preferences.py +0 -0
  32. {iterm2-2.22 → iterm2-2.24}/iterm2/profile.py +0 -0
  33. {iterm2-2.22 → iterm2-2.24}/iterm2/prompt.py +0 -0
  34. {iterm2-2.22 → iterm2-2.24}/iterm2/py.typed +0 -0
  35. {iterm2-2.22 → iterm2-2.24}/iterm2/registration.py +0 -0
  36. {iterm2-2.22 → iterm2-2.24}/iterm2/screen.py +0 -0
  37. {iterm2-2.22 → iterm2-2.24}/iterm2/selection.py +0 -0
  38. {iterm2-2.22 → iterm2-2.24}/iterm2/session.py +0 -0
  39. {iterm2-2.22 → iterm2-2.24}/iterm2/statusbar.py +0 -0
  40. {iterm2-2.22 → iterm2-2.24}/iterm2/tmux.py +0 -0
  41. {iterm2-2.22 → iterm2-2.24}/iterm2/tool.py +0 -0
  42. {iterm2-2.22 → iterm2-2.24}/iterm2/transaction.py +0 -0
  43. {iterm2-2.22 → iterm2-2.24}/iterm2/triggers.py +0 -0
  44. {iterm2-2.22 → iterm2-2.24}/iterm2/util.py +0 -0
  45. {iterm2-2.22 → iterm2-2.24}/iterm2/variables.py +0 -0
  46. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/dependency_links.txt +0 -0
  47. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/not-zip-safe +0 -0
  48. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/requires.txt +0 -0
  49. {iterm2-2.22 → iterm2-2.24}/iterm2.egg-info/top_level.txt +0 -0
  50. {iterm2-2.22 → iterm2-2.24}/setup.cfg +0 -0
  51. {iterm2-2.22 → iterm2-2.24}/setup.py +0 -0
  52. {iterm2-2.22 → iterm2-2.24}/tests/test_binding.py +0 -0
  53. {iterm2-2.22 → iterm2-2.24}/tests/test_color.py +0 -0
  54. {iterm2-2.22 → iterm2-2.24}/tests/test_triggers.py +0 -0
  55. {iterm2-2.22 → iterm2-2.24}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iterm2
3
- Version: 2.22
3
+ Version: 2.24
4
4
  Summary: Python interface to iTerm2's scripting API
5
5
  Home-page: http://github.com/gnachman/iTerm2
6
6
  Author: George Nachman
@@ -68,6 +68,8 @@ from iterm2.transaction import Transaction
68
68
 
69
69
  from iterm2.tab import Tab, NavigationDirection
70
70
 
71
+ from iterm2.tabgroup import TabGroup
72
+
71
73
  from iterm2.tmux import (
72
74
  TmuxException, TmuxConnection, async_get_tmux_connections,
73
75
  async_get_tmux_connection_by_connection_id)
@@ -1,2 +1,2 @@
1
1
  """Gives the module version."""
2
- __version__ = "2.22"
2
+ __version__ = "2.24"
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
15
 
16
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tapi.proto\x12\x06iterm2\"\x93\x11\n\x17\x43lientOriginatedMessage\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x36\n\x12get_buffer_request\x18\x64 \x01(\x0b\x32\x18.iterm2.GetBufferRequestH\x00\x12\x36\n\x12get_prompt_request\x18\x65 \x01(\x0b\x32\x18.iterm2.GetPromptRequestH\x00\x12\x39\n\x13transaction_request\x18\x66 \x01(\x0b\x32\x1a.iterm2.TransactionRequestH\x00\x12;\n\x14notification_request\x18g \x01(\x0b\x32\x1b.iterm2.NotificationRequestH\x00\x12<\n\x15register_tool_request\x18h \x01(\x0b\x32\x1b.iterm2.RegisterToolRequestH\x00\x12I\n\x1cset_profile_property_request\x18i \x01(\x0b\x32!.iterm2.SetProfilePropertyRequestH\x00\x12<\n\x15list_sessions_request\x18j \x01(\x0b\x32\x1b.iterm2.ListSessionsRequestH\x00\x12\x34\n\x11send_text_request\x18k \x01(\x0b\x32\x17.iterm2.SendTextRequestH\x00\x12\x36\n\x12\x63reate_tab_request\x18l \x01(\x0b\x32\x18.iterm2.CreateTabRequestH\x00\x12\x36\n\x12split_pane_request\x18m \x01(\x0b\x32\x18.iterm2.SplitPaneRequestH\x00\x12I\n\x1cget_profile_property_request\x18n \x01(\x0b\x32!.iterm2.GetProfilePropertyRequestH\x00\x12:\n\x14set_property_request\x18o \x01(\x0b\x32\x1a.iterm2.SetPropertyRequestH\x00\x12:\n\x14get_property_request\x18p \x01(\x0b\x32\x1a.iterm2.GetPropertyRequestH\x00\x12/\n\x0einject_request\x18q \x01(\x0b\x32\x15.iterm2.InjectRequestH\x00\x12\x33\n\x10\x61\x63tivate_request\x18r \x01(\x0b\x32\x17.iterm2.ActivateRequestH\x00\x12\x33\n\x10variable_request\x18s \x01(\x0b\x32\x17.iterm2.VariableRequestH\x00\x12\x44\n\x19saved_arrangement_request\x18t \x01(\x0b\x32\x1f.iterm2.SavedArrangementRequestH\x00\x12-\n\rfocus_request\x18u \x01(\x0b\x32\x14.iterm2.FocusRequestH\x00\x12<\n\x15list_profiles_request\x18v \x01(\x0b\x32\x1b.iterm2.ListProfilesRequestH\x00\x12X\n$server_originated_rpc_result_request\x18w \x01(\x0b\x32(.iterm2.ServerOriginatedRPCResultRequestH\x00\x12@\n\x17restart_session_request\x18x \x01(\x0b\x32\x1d.iterm2.RestartSessionRequestH\x00\x12\x34\n\x11menu_item_request\x18y \x01(\x0b\x32\x17.iterm2.MenuItemRequestH\x00\x12=\n\x16set_tab_layout_request\x18z \x01(\x0b\x32\x1b.iterm2.SetTabLayoutRequestH\x00\x12K\n\x1dget_broadcast_domains_request\x18{ \x01(\x0b\x32\".iterm2.GetBroadcastDomainsRequestH\x00\x12+\n\x0ctmux_request\x18| \x01(\x0b\x32\x13.iterm2.TmuxRequestH\x00\x12:\n\x14reorder_tabs_request\x18} \x01(\x0b\x32\x1a.iterm2.ReorderTabsRequestH\x00\x12\x39\n\x13preferences_request\x18~ \x01(\x0b\x32\x1a.iterm2.PreferencesRequestH\x00\x12:\n\x14\x63olor_preset_request\x18\x7f \x01(\x0b\x32\x1a.iterm2.ColorPresetRequestH\x00\x12\x36\n\x11selection_request\x18\x80\x01 \x01(\x0b\x32\x18.iterm2.SelectionRequestH\x00\x12J\n\x1cstatus_bar_component_request\x18\x81\x01 \x01(\x0b\x32!.iterm2.StatusBarComponentRequestH\x00\x12L\n\x1dset_broadcast_domains_request\x18\x82\x01 \x01(\x0b\x32\".iterm2.SetBroadcastDomainsRequestH\x00\x12.\n\rclose_request\x18\x83\x01 \x01(\x0b\x32\x14.iterm2.CloseRequestH\x00\x12\x41\n\x17invoke_function_request\x18\x84\x01 \x01(\x0b\x32\x1d.iterm2.InvokeFunctionRequestH\x00\x12;\n\x14list_prompts_request\x18\x85\x01 \x01(\x0b\x32\x1a.iterm2.ListPromptsRequestH\x00\x12\x38\n\x12screenshot_request\x18\x86\x01 \x01(\x0b\x32\x19.iterm2.ScreenshotRequestH\x00\x42\x0c\n\nsubmessage\"\x99\x12\n\x17ServerOriginatedMessage\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x38\n\x13get_buffer_response\x18\x64 \x01(\x0b\x32\x19.iterm2.GetBufferResponseH\x00\x12\x38\n\x13get_prompt_response\x18\x65 \x01(\x0b\x32\x19.iterm2.GetPromptResponseH\x00\x12;\n\x14transaction_response\x18\x66 \x01(\x0b\x32\x1b.iterm2.TransactionResponseH\x00\x12=\n\x15notification_response\x18g \x01(\x0b\x32\x1c.iterm2.NotificationResponseH\x00\x12>\n\x16register_tool_response\x18h \x01(\x0b\x32\x1c.iterm2.RegisterToolResponseH\x00\x12K\n\x1dset_profile_property_response\x18i \x01(\x0b\x32\".iterm2.SetProfilePropertyResponseH\x00\x12>\n\x16list_sessions_response\x18j \x01(\x0b\x32\x1c.iterm2.ListSessionsResponseH\x00\x12\x36\n\x12send_text_response\x18k \x01(\x0b\x32\x18.iterm2.SendTextResponseH\x00\x12\x38\n\x13\x63reate_tab_response\x18l \x01(\x0b\x32\x19.iterm2.CreateTabResponseH\x00\x12\x38\n\x13split_pane_response\x18m \x01(\x0b\x32\x19.iterm2.SplitPaneResponseH\x00\x12K\n\x1dget_profile_property_response\x18n \x01(\x0b\x32\".iterm2.GetProfilePropertyResponseH\x00\x12<\n\x15set_property_response\x18o \x01(\x0b\x32\x1b.iterm2.SetPropertyResponseH\x00\x12<\n\x15get_property_response\x18p \x01(\x0b\x32\x1b.iterm2.GetPropertyResponseH\x00\x12\x31\n\x0finject_response\x18q \x01(\x0b\x32\x16.iterm2.InjectResponseH\x00\x12\x35\n\x11\x61\x63tivate_response\x18r \x01(\x0b\x32\x18.iterm2.ActivateResponseH\x00\x12\x35\n\x11variable_response\x18s \x01(\x0b\x32\x18.iterm2.VariableResponseH\x00\x12\x46\n\x1asaved_arrangement_response\x18t \x01(\x0b\x32 .iterm2.SavedArrangementResponseH\x00\x12/\n\x0e\x66ocus_response\x18u \x01(\x0b\x32\x15.iterm2.FocusResponseH\x00\x12>\n\x16list_profiles_response\x18v \x01(\x0b\x32\x1c.iterm2.ListProfilesResponseH\x00\x12Z\n%server_originated_rpc_result_response\x18w \x01(\x0b\x32).iterm2.ServerOriginatedRPCResultResponseH\x00\x12\x42\n\x18restart_session_response\x18x \x01(\x0b\x32\x1e.iterm2.RestartSessionResponseH\x00\x12\x36\n\x12menu_item_response\x18y \x01(\x0b\x32\x18.iterm2.MenuItemResponseH\x00\x12?\n\x17set_tab_layout_response\x18z \x01(\x0b\x32\x1c.iterm2.SetTabLayoutResponseH\x00\x12M\n\x1eget_broadcast_domains_response\x18{ \x01(\x0b\x32#.iterm2.GetBroadcastDomainsResponseH\x00\x12-\n\rtmux_response\x18| \x01(\x0b\x32\x14.iterm2.TmuxResponseH\x00\x12<\n\x15reorder_tabs_response\x18} \x01(\x0b\x32\x1b.iterm2.ReorderTabsResponseH\x00\x12;\n\x14preferences_response\x18~ \x01(\x0b\x32\x1b.iterm2.PreferencesResponseH\x00\x12<\n\x15\x63olor_preset_response\x18\x7f \x01(\x0b\x32\x1b.iterm2.ColorPresetResponseH\x00\x12\x38\n\x12selection_response\x18\x80\x01 \x01(\x0b\x32\x19.iterm2.SelectionResponseH\x00\x12L\n\x1dstatus_bar_component_response\x18\x81\x01 \x01(\x0b\x32\".iterm2.StatusBarComponentResponseH\x00\x12N\n\x1eset_broadcast_domains_response\x18\x82\x01 \x01(\x0b\x32#.iterm2.SetBroadcastDomainsResponseH\x00\x12\x30\n\x0e\x63lose_response\x18\x83\x01 \x01(\x0b\x32\x15.iterm2.CloseResponseH\x00\x12\x43\n\x18invoke_function_response\x18\x84\x01 \x01(\x0b\x32\x1e.iterm2.InvokeFunctionResponseH\x00\x12=\n\x15list_prompts_response\x18\x85\x01 \x01(\x0b\x32\x1b.iterm2.ListPromptsResponseH\x00\x12:\n\x13screenshot_response\x18\x86\x01 \x01(\x0b\x32\x1a.iterm2.ScreenshotResponseH\x00\x12-\n\x0cnotification\x18\xe8\x07 \x01(\x0b\x32\x14.iterm2.NotificationH\x00\x42\x0c\n\nsubmessage\"\xcf\x03\n\x15InvokeFunctionRequest\x12\x30\n\x03tab\x18\x01 \x01(\x0b\x32!.iterm2.InvokeFunctionRequest.TabH\x00\x12\x38\n\x07session\x18\x02 \x01(\x0b\x32%.iterm2.InvokeFunctionRequest.SessionH\x00\x12\x36\n\x06window\x18\x03 \x01(\x0b\x32$.iterm2.InvokeFunctionRequest.WindowH\x00\x12\x30\n\x03\x61pp\x18\x04 \x01(\x0b\x32!.iterm2.InvokeFunctionRequest.AppH\x00\x12\x36\n\x06method\x18\x07 \x01(\x0b\x32$.iterm2.InvokeFunctionRequest.MethodH\x00\x12\x12\n\ninvocation\x18\x05 \x01(\t\x12\x13\n\x07timeout\x18\x06 \x01(\x01:\x02-1\x1a\x15\n\x03Tab\x12\x0e\n\x06tab_id\x18\x01 \x01(\t\x1a\x1d\n\x07Session\x12\x12\n\nsession_id\x18\x01 \x01(\t\x1a\x1b\n\x06Window\x12\x11\n\twindow_id\x18\x01 \x01(\t\x1a\x05\n\x03\x41pp\x1a\x1a\n\x06Method\x12\x10\n\x08receiver\x18\x01 \x01(\tB\t\n\x07\x63ontext\"\xd9\x02\n\x16InvokeFunctionResponse\x12\x35\n\x05\x65rror\x18\x01 \x01(\x0b\x32$.iterm2.InvokeFunctionResponse.ErrorH\x00\x12\x39\n\x07success\x18\x02 \x01(\x0b\x32&.iterm2.InvokeFunctionResponse.SuccessH\x00\x1aT\n\x05\x45rror\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.iterm2.InvokeFunctionResponse.Status\x12\x14\n\x0c\x65rror_reason\x18\x02 \x01(\t\x1a\x1e\n\x07Success\x12\x13\n\x0bjson_result\x18\x01 \x01(\t\"H\n\x06Status\x12\x0b\n\x07TIMEOUT\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\x12\x0e\n\nINVALID_ID\x10\x04\x42\r\n\x0b\x64isposition\"\xad\x02\n\x0c\x43loseRequest\x12.\n\x04tabs\x18\x01 \x01(\x0b\x32\x1e.iterm2.CloseRequest.CloseTabsH\x00\x12\x36\n\x08sessions\x18\x02 \x01(\x0b\x32\".iterm2.CloseRequest.CloseSessionsH\x00\x12\x34\n\x07windows\x18\x03 \x01(\x0b\x32!.iterm2.CloseRequest.CloseWindowsH\x00\x12\r\n\x05\x66orce\x18\x04 \x01(\x08\x1a\x1c\n\tCloseTabs\x12\x0f\n\x07tab_ids\x18\x01 \x03(\t\x1a$\n\rCloseSessions\x12\x13\n\x0bsession_ids\x18\x01 \x03(\t\x1a\"\n\x0c\x43loseWindows\x12\x12\n\nwindow_ids\x18\x01 \x03(\tB\x08\n\x06target\"s\n\rCloseResponse\x12.\n\x08statuses\x18\x01 \x03(\x0e\x32\x1c.iterm2.CloseResponse.Status\"2\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x11\n\rUSER_DECLINED\x10\x02\"P\n\x1aSetBroadcastDomainsRequest\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"\xc7\x01\n\x1bSetBroadcastDomainsResponse\x12:\n\x06status\x18\x01 \x01(\x0e\x32*.iterm2.SetBroadcastDomainsResponse.Status\"l\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\"\n\x1e\x42ROADCAST_DOMAINS_NOT_DISJOINT\x10\x02\x12\x1f\n\x1bSESSIONS_NOT_IN_SAME_WINDOW\x10\x03\"\xce\x01\n\x19StatusBarComponentRequest\x12\x45\n\x0copen_popover\x18\x01 \x01(\x0b\x32-.iterm2.StatusBarComponentRequest.OpenPopoverH\x00\x12\x12\n\nidentifier\x18\x02 \x01(\t\x1aK\n\x0bOpenPopover\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0c\n\x04html\x18\x02 \x01(\t\x12\x1a\n\x04size\x18\x03 \x01(\x0b\x32\x0c.iterm2.SizeB\t\n\x07request\"\xaf\x01\n\x1aStatusBarComponentResponse\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.StatusBarComponentResponse.Status\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x16\n\x12INVALID_IDENTIFIER\x10\x03\"]\n\x12WindowedCoordRange\x12\'\n\x0b\x63oord_range\x18\x01 \x01(\x0b\x32\x12.iterm2.CoordRange\x12\x1e\n\x07\x63olumns\x18\x02 \x01(\x0b\x32\r.iterm2.Range\"\x8a\x01\n\x0cSubSelection\x12\x38\n\x14windowed_coord_range\x18\x01 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\x12-\n\x0eselection_mode\x18\x02 \x01(\x0e\x32\x15.iterm2.SelectionMode\x12\x11\n\tconnected\x18\x03 \x01(\x08\"9\n\tSelection\x12,\n\x0esub_selections\x18\x01 \x03(\x0b\x32\x14.iterm2.SubSelection\"\xb7\x02\n\x10SelectionRequest\x12M\n\x15get_selection_request\x18\x01 \x01(\x0b\x32,.iterm2.SelectionRequest.GetSelectionRequestH\x00\x12M\n\x15set_selection_request\x18\x02 \x01(\x0b\x32,.iterm2.SelectionRequest.SetSelectionRequestH\x00\x1a)\n\x13GetSelectionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x1aO\n\x13SetSelectionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12$\n\tselection\x18\x02 \x01(\x0b\x32\x11.iterm2.SelectionB\t\n\x07request\"\x9c\x03\n\x11SelectionResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.SelectionResponse.Status\x12P\n\x16get_selection_response\x18\x02 \x01(\x0b\x32..iterm2.SelectionResponse.GetSelectionResponseH\x00\x12P\n\x16set_selection_response\x18\x03 \x01(\x0b\x32..iterm2.SelectionResponse.SetSelectionResponseH\x00\x1a<\n\x14GetSelectionResponse\x12$\n\tselection\x18\x02 \x01(\x0b\x32\x11.iterm2.Selection\x1a\x16\n\x14SetSelectionResponse\"O\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x13\n\x0fINVALID_SESSION\x10\x01\x12\x11\n\rINVALID_RANGE\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\x42\n\n\x08response\"\xc5\x01\n\x12\x43olorPresetRequest\x12>\n\x0clist_presets\x18\x01 \x01(\x0b\x32&.iterm2.ColorPresetRequest.ListPresetsH\x00\x12:\n\nget_preset\x18\x02 \x01(\x0b\x32$.iterm2.ColorPresetRequest.GetPresetH\x00\x1a\r\n\x0bListPresets\x1a\x19\n\tGetPreset\x12\x0c\n\x04name\x18\x01 \x01(\tB\t\n\x07request\"\xf4\x03\n\x13\x43olorPresetResponse\x12?\n\x0clist_presets\x18\x01 \x01(\x0b\x32\'.iterm2.ColorPresetResponse.ListPresetsH\x00\x12;\n\nget_preset\x18\x02 \x01(\x0b\x32%.iterm2.ColorPresetResponse.GetPresetH\x00\x12\x32\n\x06status\x18\x03 \x01(\x0e\x32\".iterm2.ColorPresetResponse.Status\x1a\x1b\n\x0bListPresets\x12\x0c\n\x04name\x18\x01 \x03(\t\x1a\xc2\x01\n\tGetPreset\x12J\n\x0e\x63olor_settings\x18\x01 \x03(\x0b\x32\x32.iterm2.ColorPresetResponse.GetPreset.ColorSetting\x1ai\n\x0c\x43olorSetting\x12\x0b\n\x03red\x18\x01 \x01(\x02\x12\r\n\x05green\x18\x02 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x13\n\x0b\x63olor_space\x18\x05 \x01(\t\x12\x0b\n\x03key\x18\x06 \x01(\t\"=\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x14\n\x10PRESET_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x42\n\n\x08response\"\xcb\x04\n\x12PreferencesRequest\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".iterm2.PreferencesRequest.Request\x1a\xfe\x03\n\x07Request\x12R\n\x16set_preference_request\x18\x01 \x01(\x0b\x32\x30.iterm2.PreferencesRequest.Request.SetPreferenceH\x00\x12R\n\x16get_preference_request\x18\x02 \x01(\x0b\x32\x30.iterm2.PreferencesRequest.Request.GetPreferenceH\x00\x12[\n\x1bset_default_profile_request\x18\x03 \x01(\x0b\x32\x34.iterm2.PreferencesRequest.Request.SetDefaultProfileH\x00\x12[\n\x1bget_default_profile_request\x18\x04 \x01(\x0b\x32\x34.iterm2.PreferencesRequest.Request.GetDefaultProfileH\x00\x1a\x30\n\rSetPreference\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\x1a\x1c\n\rGetPreference\x12\x0b\n\x03key\x18\x01 \x01(\t\x1a!\n\x11SetDefaultProfile\x12\x0c\n\x04guid\x18\x01 \x01(\t\x1a\x13\n\x11GetDefaultProfileB\t\n\x07request\"\xbf\x07\n\x13PreferencesResponse\x12\x33\n\x07results\x18\x01 \x03(\x0b\x32\".iterm2.PreferencesResponse.Result\x1a\xf2\x06\n\x06Result\x12U\n\x14unrecognized_request\x18\x01 \x01(\x0b\x32\x35.iterm2.PreferencesResponse.Result.UnrecognizedResultH\x00\x12W\n\x15set_preference_result\x18\x02 \x01(\x0b\x32\x36.iterm2.PreferencesResponse.Result.SetPreferenceResultH\x00\x12W\n\x15get_preference_result\x18\x03 \x01(\x0b\x32\x36.iterm2.PreferencesResponse.Result.GetPreferenceResultH\x00\x12`\n\x1aset_default_profile_result\x18\x04 \x01(\x0b\x32:.iterm2.PreferencesResponse.Result.SetDefaultProfileResultH\x00\x12`\n\x1aget_default_profile_result\x18\x05 \x01(\x0b\x32:.iterm2.PreferencesResponse.Result.GetDefaultProfileResultH\x00\x1a\x97\x01\n\x13SetPreferenceResult\x12M\n\x06status\x18\x01 \x01(\x0e\x32=.iterm2.PreferencesResponse.Result.SetPreferenceResult.Status\"1\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0c\n\x08\x42\x41\x44_JSON\x10\x01\x12\x11\n\rINVALID_VALUE\x10\x02\x1a)\n\x13GetPreferenceResult\x12\x12\n\njson_value\x18\x01 \x01(\t\x1a\x8c\x01\n\x17SetDefaultProfileResult\x12Q\n\x06status\x18\x01 \x01(\x0e\x32\x41.iterm2.PreferencesResponse.Result.SetDefaultProfileResult.Status\"\x1e\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0c\n\x08\x42\x41\x44_GUID\x10\x01\x1a\x14\n\x12UnrecognizedResult\x1a\'\n\x17GetDefaultProfileResult\x12\x0c\n\x04guid\x18\x01 \x01(\tB\x08\n\x06result\"\x82\x01\n\x12ReorderTabsRequest\x12:\n\x0b\x61ssignments\x18\x03 \x03(\x0b\x32%.iterm2.ReorderTabsRequest.Assignment\x1a\x30\n\nAssignment\x12\x11\n\twindow_id\x18\x01 \x01(\t\x12\x0f\n\x07tab_ids\x18\x02 \x03(\t\"\x9e\x01\n\x13ReorderTabsResponse\x12\x32\n\x06status\x18\x04 \x01(\x0e\x32\".iterm2.ReorderTabsResponse.Status\"S\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x16\n\x12INVALID_ASSIGNMENT\x10\x01\x12\x15\n\x11INVALID_WINDOW_ID\x10\x02\x12\x12\n\x0eINVALID_TAB_ID\x10\x03\"\xe3\x03\n\x0bTmuxRequest\x12?\n\x10list_connections\x18\x01 \x01(\x0b\x32#.iterm2.TmuxRequest.ListConnectionsH\x00\x12\x37\n\x0csend_command\x18\x02 \x01(\x0b\x32\x1f.iterm2.TmuxRequest.SendCommandH\x00\x12\x42\n\x12set_window_visible\x18\x03 \x01(\x0b\x32$.iterm2.TmuxRequest.SetWindowVisibleH\x00\x12\x39\n\rcreate_window\x18\x04 \x01(\x0b\x32 .iterm2.TmuxRequest.CreateWindowH\x00\x1a\x11\n\x0fListConnections\x1a\x35\n\x0bSendCommand\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x1aM\n\x10SetWindowVisible\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x0f\n\x07visible\x18\x03 \x01(\x08\x1a\x37\n\x0c\x43reateWindow\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x10\n\x08\x61\x66\x66inity\x18\x02 \x01(\tB\t\n\x07payload\"\x89\x05\n\x0cTmuxResponse\x12@\n\x10list_connections\x18\x01 \x01(\x0b\x32$.iterm2.TmuxResponse.ListConnectionsH\x00\x12\x38\n\x0csend_command\x18\x02 \x01(\x0b\x32 .iterm2.TmuxResponse.SendCommandH\x00\x12\x43\n\x12set_window_visible\x18\x03 \x01(\x0b\x32%.iterm2.TmuxResponse.SetWindowVisibleH\x00\x12:\n\rcreate_window\x18\x05 \x01(\x0b\x32!.iterm2.TmuxResponse.CreateWindowH\x00\x12+\n\x06status\x18\x04 \x01(\x0e\x32\x1b.iterm2.TmuxResponse.Status\x1a\x97\x01\n\x0fListConnections\x12\x44\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32/.iterm2.TmuxResponse.ListConnections.Connection\x1a>\n\nConnection\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x19\n\x11owning_session_id\x18\x02 \x01(\t\x1a\x1d\n\x0bSendCommand\x12\x0e\n\x06output\x18\x01 \x01(\t\x1a\x12\n\x10SetWindowVisible\x1a\x1e\n\x0c\x43reateWindow\x12\x0e\n\x06tab_id\x18\x01 \x01(\t\"W\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x19\n\x15INVALID_CONNECTION_ID\x10\x02\x12\x15\n\x11INVALID_WINDOW_ID\x10\x03\x42\t\n\x07payload\"\x1c\n\x1aGetBroadcastDomainsRequest\"&\n\x0f\x42roadcastDomain\x12\x13\n\x0bsession_ids\x18\x01 \x03(\t\"Q\n\x1bGetBroadcastDomainsResponse\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"J\n\x13SetTabLayoutRequest\x12#\n\x04root\x18\x01 \x01(\x0b\x32\x15.iterm2.SplitTreeNode\x12\x0e\n\x06tab_id\x18\x02 \x01(\t\"\x8f\x01\n\x14SetTabLayoutResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.SetTabLayoutResponse.Status\"B\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0e\n\nBAD_TAB_ID\x10\x01\x12\x0e\n\nWRONG_TREE\x10\x02\x12\x10\n\x0cINVALID_SIZE\x10\x03\"9\n\x0fMenuItemRequest\x12\x12\n\nidentifier\x18\x01 \x01(\t\x12\x12\n\nquery_only\x18\x02 \x01(\x08\"\x99\x01\n\x10MenuItemResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.MenuItemResponse.Status\x12\x0f\n\x07\x63hecked\x18\x02 \x01(\x08\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08\"2\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x42\x41\x44_IDENTIFIER\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\"C\n\x15RestartSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0eonly_if_exited\x18\x02 \x01(\x08\"\x95\x01\n\x16RestartSessionResponse\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.iterm2.RestartSessionResponse.Status\"D\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x1b\n\x17SESSION_NOT_RESTARTABLE\x10\x02\"p\n ServerOriginatedRPCResultRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x18\n\x0ejson_exception\x18\x02 \x01(\tH\x00\x12\x14\n\njson_value\x18\x03 \x01(\tH\x00\x42\x08\n\x06result\"#\n!ServerOriginatedRPCResultResponse\"8\n\x13ListProfilesRequest\x12\x12\n\nproperties\x18\x01 \x03(\t\x12\r\n\x05guids\x18\x02 \x03(\t\"\x86\x01\n\x14ListProfilesResponse\x12\x36\n\x08profiles\x18\x01 \x03(\x0b\x32$.iterm2.ListProfilesResponse.Profile\x1a\x36\n\x07Profile\x12+\n\nproperties\x18\x01 \x03(\x0b\x32\x17.iterm2.ProfileProperty\"\x0e\n\x0c\x46ocusRequest\"H\n\rFocusResponse\x12\x37\n\rnotifications\x18\x01 \x03(\x0b\x32 .iterm2.FocusChangedNotification\"\x9d\x01\n\x17SavedArrangementRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32&.iterm2.SavedArrangementRequest.Action\x12\x11\n\twindow_id\x18\x03 \x01(\t\")\n\x06\x41\x63tion\x12\x0b\n\x07RESTORE\x10\x00\x12\x08\n\x04SAVE\x10\x01\x12\x08\n\x04LIST\x10\x02\"\xbc\x01\n\x18SavedArrangementResponse\x12\x37\n\x06status\x18\x01 \x01(\x0e\x32\'.iterm2.SavedArrangementResponse.Status\x12\r\n\x05names\x18\x02 \x03(\t\"X\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x19\n\x15\x41RRANGEMENT_NOT_FOUND\x10\x01\x12\x14\n\x10WINDOW_NOT_FOUND\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\"\xc1\x01\n\x0fVariableRequest\x12\x14\n\nsession_id\x18\x01 \x01(\tH\x00\x12\x10\n\x06tab_id\x18\x04 \x01(\tH\x00\x12\r\n\x03\x61pp\x18\x05 \x01(\x08H\x00\x12\x13\n\twindow_id\x18\x06 \x01(\tH\x00\x12(\n\x03set\x18\x02 \x03(\x0b\x32\x1b.iterm2.VariableRequest.Set\x12\x0b\n\x03get\x18\x03 \x03(\t\x1a\"\n\x03Set\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\tB\x07\n\x05scope\"\xe5\x01\n\x10VariableResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.VariableResponse.Status\x12\x0e\n\x06values\x18\x02 \x03(\t\"\x8f\x01\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x10\n\x0cINVALID_NAME\x10\x02\x12\x11\n\rMISSING_SCOPE\x10\x03\x12\x11\n\rTAB_NOT_FOUND\x10\x04\x12\x18\n\x14MULTI_GET_DISALLOWED\x10\x05\x12\x14\n\x10WINDOW_NOT_FOUND\x10\x06\"\x96\x02\n\x0f\x41\x63tivateRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x10\n\x06tab_id\x18\x02 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x03 \x01(\tH\x00\x12\x1a\n\x12order_window_front\x18\x04 \x01(\x08\x12\x12\n\nselect_tab\x18\x05 \x01(\x08\x12\x16\n\x0eselect_session\x18\x06 \x01(\x08\x12\x31\n\x0c\x61\x63tivate_app\x18\x07 \x01(\x0b\x32\x1b.iterm2.ActivateRequest.App\x1a=\n\x03\x41pp\x12\x19\n\x11raise_all_windows\x18\x01 \x01(\x08\x12\x1b\n\x13ignoring_other_apps\x18\x02 \x01(\x08\x42\x0c\n\nidentifier\"}\n\x10\x41\x63tivateResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.ActivateResponse.Status\"8\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x42\x41\x44_IDENTIFIER\x10\x01\x12\x12\n\x0eINVALID_OPTION\x10\x02\"1\n\rInjectRequest\x12\x12\n\nsession_id\x18\x01 \x03(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"h\n\x0eInjectResponse\x12-\n\x06status\x18\x01 \x03(\x0e\x32\x1d.iterm2.InjectResponse.Status\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\"[\n\x12GetPropertyRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x03 \x01(\tH\x00\x12\x0c\n\x04name\x18\x02 \x01(\tB\x0c\n\nidentifier\"\x9a\x01\n\x13GetPropertyResponse\x12\x32\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.GetPropertyResponse.Status\x12\x12\n\njson_value\x18\x02 \x01(\t\";\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11UNRECOGNIZED_NAME\x10\x01\x12\x12\n\x0eINVALID_TARGET\x10\x02\"o\n\x12SetPropertyRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x05 \x01(\tH\x00\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\njson_value\x18\x04 \x01(\tB\x0c\n\nidentifier\"\xc3\x01\n\x13SetPropertyResponse\x12\x32\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.SetPropertyResponse.Status\"x\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11UNRECOGNIZED_NAME\x10\x01\x12\x11\n\rINVALID_VALUE\x10\x02\x12\x12\n\x0eINVALID_TARGET\x10\x03\x12\x0c\n\x08\x44\x45\x46\x45RRED\x10\x04\x12\x0e\n\nIMPOSSIBLE\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06\"\xd8\x01\n\x13RegisterToolRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nidentifier\x18\x02 \x01(\t\x12+\n\x1creveal_if_already_registered\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x46\n\ttool_type\x18\x03 \x01(\x0e\x32$.iterm2.RegisterToolRequest.ToolType:\rWEB_VIEW_TOOL\x12\x0b\n\x03URL\x18\x04 \x01(\t\"\x1d\n\x08ToolType\x12\x11\n\rWEB_VIEW_TOOL\x10\x01\"\xdf\x0c\n\x16RPCRegistrationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x46\n\targuments\x18\x02 \x03(\x0b\x32\x33.iterm2.RPCRegistrationRequest.RPCArgumentSignature\x12<\n\x08\x64\x65\x66\x61ults\x18\x04 \x03(\x0b\x32*.iterm2.RPCRegistrationRequest.RPCArgument\x12\x0f\n\x07timeout\x18\x03 \x01(\x02\x12:\n\x04role\x18\x05 \x01(\x0e\x32#.iterm2.RPCRegistrationRequest.Role:\x07GENERIC\x12Y\n\x18session_title_attributes\x18\x07 \x01(\x0b\x32\x35.iterm2.RPCRegistrationRequest.SessionTitleAttributesH\x00\x12\x66\n\x1fstatus_bar_component_attributes\x18\x08 \x01(\x0b\x32;.iterm2.RPCRegistrationRequest.StatusBarComponentAttributesH\x00\x12W\n\x17\x63ontext_menu_attributes\x18\t \x01(\x0b\x32\x34.iterm2.RPCRegistrationRequest.ContextMenuAttributesH\x00\x12\x18\n\x0c\x64isplay_name\x18\x06 \x01(\tB\x02\x18\x01\x1a$\n\x14RPCArgumentSignature\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a)\n\x0bRPCArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x1aI\n\x16SessionTitleAttributes\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x19\n\x11unique_identifier\x18\x06 \x01(\t\x1a\xd9\x05\n\x1cStatusBarComponentAttributes\x12\x19\n\x11short_description\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65tailed_description\x18\x02 \x01(\t\x12O\n\x05knobs\x18\x03 \x03(\x0b\x32@.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Knob\x12\x10\n\x08\x65xemplar\x18\x04 \x01(\t\x12\x16\n\x0eupdate_cadence\x18\x05 \x01(\x02\x12\x19\n\x11unique_identifier\x18\x06 \x01(\t\x12O\n\x05icons\x18\x07 \x03(\x0b\x32@.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Icon\x12^\n\x06\x66ormat\x18\x08 \x01(\x0e\x32\x42.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Format:\nPLAIN_TEXT\x1a\xef\x01\n\x04Knob\x12\x0c\n\x04name\x18\x01 \x01(\t\x12S\n\x04type\x18\x02 \x01(\x0e\x32\x45.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Knob.Type\x12\x13\n\x0bplaceholder\x18\x03 \x01(\t\x12\x1a\n\x12json_default_value\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x05 \x01(\t\"F\n\x04Type\x12\x0c\n\x08\x43heckbox\x10\x01\x12\n\n\x06String\x10\x02\x12\x19\n\x15PositiveFloatingPoint\x10\x03\x12\t\n\x05\x43olor\x10\x04\x1a#\n\x04Icon\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05scale\x18\x02 \x01(\x02\"\"\n\x06\x46ormat\x12\x0e\n\nPLAIN_TEXT\x10\x00\x12\x08\n\x04HTML\x10\x01\x1aH\n\x15\x43ontextMenuAttributes\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x19\n\x11unique_identifier\x18\x02 \x01(\t\"R\n\x04Role\x12\x0b\n\x07GENERIC\x10\x01\x12\x11\n\rSESSION_TITLE\x10\x02\x12\x18\n\x14STATUS_BAR_COMPONENT\x10\x03\x12\x10\n\x0c\x43ONTEXT_MENU\x10\x04\x42\x18\n\x16RoleSpecificAttributes\"\x8b\x01\n\x14RegisterToolResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.RegisterToolResponse.Status\">\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11REQUEST_MALFORMED\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\"\xbe\x01\n\x10KeystrokePattern\x12-\n\x12required_modifiers\x18\x01 \x03(\x0e\x32\x11.iterm2.Modifiers\x12.\n\x13\x66orbidden_modifiers\x18\x02 \x03(\x0e\x32\x11.iterm2.Modifiers\x12\x10\n\x08keycodes\x18\x03 \x03(\x05\x12\x12\n\ncharacters\x18\x04 \x03(\t\x12%\n\x1d\x63haracters_ignoring_modifiers\x18\x05 \x03(\t\"e\n\x17KeystrokeMonitorRequest\x12\x38\n\x12patterns_to_ignore\x18\x01 \x03(\x0b\x32\x18.iterm2.KeystrokePatternB\x02\x18\x01\x12\x10\n\x08\x61\x64vanced\x18\x02 \x01(\x08\"N\n\x16KeystrokeFilterRequest\x12\x34\n\x12patterns_to_ignore\x18\x01 \x03(\x0b\x32\x18.iterm2.KeystrokePattern\"`\n\x16VariableMonitorRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x05scope\x18\x02 \x01(\x0e\x32\x15.iterm2.VariableScope\x12\x12\n\nidentifier\x18\x03 \x01(\t\"$\n\x14ProfileChangeRequest\x12\x0c\n\x04guid\x18\x01 \x01(\t\"@\n\x14PromptMonitorRequest\x12(\n\x05modes\x18\x01 \x03(\x0e\x32\x19.iterm2.PromptMonitorMode\"\x8d\x04\n\x13NotificationRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x11\n\tsubscribe\x18\x02 \x01(\x08\x12\x33\n\x11notification_type\x18\x03 \x01(\x0e\x32\x18.iterm2.NotificationType\x12\x42\n\x18rpc_registration_request\x18\x04 \x01(\x0b\x32\x1e.iterm2.RPCRegistrationRequestH\x00\x12\x44\n\x19keystroke_monitor_request\x18\x05 \x01(\x0b\x32\x1f.iterm2.KeystrokeMonitorRequestH\x00\x12\x42\n\x18variable_monitor_request\x18\x06 \x01(\x0b\x32\x1e.iterm2.VariableMonitorRequestH\x00\x12>\n\x16profile_change_request\x18\x07 \x01(\x0b\x32\x1c.iterm2.ProfileChangeRequestH\x00\x12\x42\n\x18keystroke_filter_request\x18\x08 \x01(\x0b\x32\x1e.iterm2.KeystrokeFilterRequestH\x00\x12>\n\x16prompt_monitor_request\x18\t \x01(\x0b\x32\x1c.iterm2.PromptMonitorRequestH\x00\x42\x0b\n\targuments\"\xf5\x01\n\x14NotificationResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.NotificationResponse.Status\"\xa7\x01\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x12\n\x0eNOT_SUBSCRIBED\x10\x03\x12\x16\n\x12\x41LREADY_SUBSCRIBED\x10\x04\x12#\n\x1f\x44UPLICATE_SERVER_ORIGINATED_RPC\x10\x05\x12\x16\n\x12INVALID_IDENTIFIER\x10\x06\"\xca\x07\n\x0cNotification\x12=\n\x16keystroke_notification\x18\x01 \x01(\x0b\x32\x1d.iterm2.KeystrokeNotification\x12\x44\n\x1ascreen_update_notification\x18\x02 \x01(\x0b\x32 .iterm2.ScreenUpdateNotification\x12\x37\n\x13prompt_notification\x18\x03 \x01(\x0b\x32\x1a.iterm2.PromptNotification\x12L\n\x1clocation_change_notification\x18\x04 \x01(\x0b\x32\".iterm2.LocationChangeNotificationB\x02\x18\x01\x12U\n#custom_escape_sequence_notification\x18\x05 \x01(\x0b\x32(.iterm2.CustomEscapeSequenceNotification\x12@\n\x18new_session_notification\x18\x06 \x01(\x0b\x32\x1e.iterm2.NewSessionNotification\x12L\n\x1eterminate_session_notification\x18\x07 \x01(\x0b\x32$.iterm2.TerminateSessionNotification\x12\x46\n\x1blayout_changed_notification\x18\x08 \x01(\x0b\x32!.iterm2.LayoutChangedNotification\x12\x44\n\x1a\x66ocus_changed_notification\x18\t \x01(\x0b\x32 .iterm2.FocusChangedNotification\x12S\n\"server_originated_rpc_notification\x18\n \x01(\x0b\x32\'.iterm2.ServerOriginatedRPCNotification\x12N\n\x19\x62roadcast_domains_changed\x18\x0b \x01(\x0b\x32+.iterm2.BroadcastDomainsChangedNotification\x12J\n\x1dvariable_changed_notification\x18\x0c \x01(\x0b\x32#.iterm2.VariableChangedNotification\x12H\n\x1cprofile_changed_notification\x18\r \x01(\x0b\x32\".iterm2.ProfileChangedNotification\"*\n\x1aProfileChangedNotification\x12\x0c\n\x04guid\x18\x01 \x01(\t\"}\n\x1bVariableChangedNotification\x12$\n\x05scope\x18\x01 \x01(\x0e\x32\x15.iterm2.VariableScope\x12\x12\n\nidentifier\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x16\n\x0ejson_new_value\x18\x04 \x01(\t\"Y\n#BroadcastDomainsChangedNotification\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"\x90\x01\n\x13ServerOriginatedRPC\x12\x0c\n\x04name\x18\x02 \x01(\t\x12:\n\targuments\x18\x03 \x03(\x0b\x32\'.iterm2.ServerOriginatedRPC.RPCArgument\x1a/\n\x0bRPCArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\"_\n\x1fServerOriginatedRPCNotification\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12(\n\x03rpc\x18\x02 \x01(\x0b\x32\x1b.iterm2.ServerOriginatedRPC\"\x85\x02\n\x15KeystrokeNotification\x12\x12\n\ncharacters\x18\x01 \x01(\t\x12#\n\x1b\x63haractersIgnoringModifiers\x18\x02 \x01(\t\x12$\n\tmodifiers\x18\x03 \x03(\x0e\x32\x11.iterm2.Modifiers\x12\x0f\n\x07keyCode\x18\x04 \x01(\x05\x12\x0f\n\x07session\x18\x05 \x01(\t\x12\x34\n\x06\x61\x63tion\x18\x06 \x01(\x0e\x32$.iterm2.KeystrokeNotification.Action\"5\n\x06\x41\x63tion\x12\x0c\n\x08KEY_DOWN\x10\x00\x12\n\n\x06KEY_UP\x10\x01\x12\x11\n\rFLAGS_CHANGED\x10\x02\"+\n\x18ScreenUpdateNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\"Z\n\x18PromptNotificationPrompt\x12\x13\n\x0bplaceholder\x18\x01 \x01(\t\x12)\n\x06prompt\x18\x02 \x01(\x0b\x32\x19.iterm2.GetPromptResponse\"1\n\x1ePromptNotificationCommandStart\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\".\n\x1cPromptNotificationCommandEnd\x12\x0e\n\x06status\x18\x01 \x01(\x05\"\xfa\x01\n\x12PromptNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x32\n\x06prompt\x18\x02 \x01(\x0b\x32 .iterm2.PromptNotificationPromptH\x00\x12?\n\rcommand_start\x18\x03 \x01(\x0b\x32&.iterm2.PromptNotificationCommandStartH\x00\x12;\n\x0b\x63ommand_end\x18\x04 \x01(\x0b\x32$.iterm2.PromptNotificationCommandEndH\x00\x12\x18\n\x10unique_prompt_id\x18\x05 \x01(\tB\x07\n\x05\x65vent\"f\n\x1aLocationChangeNotification\x12\x11\n\thost_name\x18\x01 \x01(\t\x12\x11\n\tuser_name\x18\x02 \x01(\t\x12\x11\n\tdirectory\x18\x03 \x01(\t\x12\x0f\n\x07session\x18\x04 \x01(\t\"]\n CustomEscapeSequenceNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x17\n\x0fsender_identity\x18\x02 \x01(\t\x12\x0f\n\x07payload\x18\x03 \x01(\t\",\n\x16NewSessionNotification\x12\x12\n\nsession_id\x18\x01 \x01(\t\"\x84\x03\n\x18\x46ocusChangedNotification\x12\x1c\n\x12\x61pplication_active\x18\x01 \x01(\x08H\x00\x12\x39\n\x06window\x18\x02 \x01(\x0b\x32\'.iterm2.FocusChangedNotification.WindowH\x00\x12\x16\n\x0cselected_tab\x18\x03 \x01(\tH\x00\x12\x11\n\x07session\x18\x04 \x01(\tH\x00\x1a\xda\x01\n\x06Window\x12K\n\rwindow_status\x18\x01 \x01(\x0e\x32\x34.iterm2.FocusChangedNotification.Window.WindowStatus\x12\x11\n\twindow_id\x18\x02 \x01(\t\"p\n\x0cWindowStatus\x12\x1e\n\x1aTERMINAL_WINDOW_BECAME_KEY\x10\x00\x12\x1e\n\x1aTERMINAL_WINDOW_IS_CURRENT\x10\x01\x12 \n\x1cTERMINAL_WINDOW_RESIGNED_KEY\x10\x02\x42\x07\n\x05\x65vent\"2\n\x1cTerminateSessionNotification\x12\x12\n\nsession_id\x18\x01 \x01(\t\"Y\n\x19LayoutChangedNotification\x12<\n\x16list_sessions_response\x18\x01 \x01(\x0b\x32\x1c.iterm2.ListSessionsResponse\"b\n\x10GetBufferRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12%\n\nline_range\x18\x02 \x01(\x0b\x32\x11.iterm2.LineRange\x12\x16\n\x0einclude_styles\x18\x03 \x01(\x08\"\xe8\x02\n\x11GetBufferResponse\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.GetBufferResponse.Status:\x02OK\x12 \n\x05range\x18\x02 \x01(\x0b\x32\r.iterm2.RangeB\x02\x18\x01\x12&\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x14.iterm2.LineContents\x12\x1d\n\x06\x63ursor\x18\x04 \x01(\x0b\x32\r.iterm2.Coord\x12\"\n\x16num_lines_above_screen\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x38\n\x14windowed_coord_range\x18\x06 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x16\n\x12INVALID_LINE_RANGE\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\"$\n\x11ScreenshotRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\"\xac\x01\n\x12ScreenshotResponse\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32!.iterm2.ScreenshotResponse.Status:\x02OK\x12\x0b\n\x03png\x18\x02 \x01(\x0c\"R\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\"=\n\x10GetPromptRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x18\n\x10unique_prompt_id\x18\x02 \x01(\t\"\x93\x04\n\x11GetPromptResponse\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.GetPromptResponse.Status:\x02OK\x12(\n\x0cprompt_range\x18\x02 \x01(\x0b\x32\x12.iterm2.CoordRange\x12)\n\rcommand_range\x18\x03 \x01(\x0b\x32\x12.iterm2.CoordRange\x12(\n\x0coutput_range\x18\x04 \x01(\x0b\x32\x12.iterm2.CoordRange\x12\x19\n\x11working_directory\x18\x05 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x06 \x01(\t\x12\x35\n\x0cprompt_state\x18\x07 \x01(\x0e\x32\x1f.iterm2.GetPromptResponse.State\x12\x13\n\x0b\x65xit_status\x18\t \x01(\r\x12\x18\n\x10unique_prompt_id\x18\n \x01(\t\x12.\n\x12\x65xcluded_subranges\x18\x0b \x03(\x0b\x32\x12.iterm2.CoordRange\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x16\n\x12PROMPT_UNAVAILABLE\x10\x03\"/\n\x05State\x12\x0b\n\x07\x45\x44ITING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\x0c\n\x08\x46INISHED\x10\x02\"V\n\x12ListPromptsRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x17\n\x0f\x66irst_unique_id\x18\x02 \x01(\t\x12\x16\n\x0elast_unique_id\x18\x03 \x01(\t\"\x90\x01\n\x13ListPromptsResponse\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.ListPromptsResponse.Status:\x02OK\x12\x18\n\x10unique_prompt_id\x18\x02 \x03(\t\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\":\n\x19GetProfilePropertyRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\"2\n\x0fProfileProperty\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\"\xd3\x01\n\x1aGetProfilePropertyResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.GetProfilePropertyResponse.Status:\x02OK\x12+\n\nproperties\x18\x03 \x03(\x0b\x32\x17.iterm2.ProfileProperty\"I\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\t\n\x05\x45RROR\x10\x03\"\xa7\x02\n\x19SetProfilePropertyRequest\x12\x11\n\x07session\x18\x01 \x01(\tH\x00\x12?\n\tguid_list\x18\x02 \x01(\x0b\x32*.iterm2.SetProfilePropertyRequest.GuidListH\x00\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x12\n\njson_value\x18\x04 \x01(\t\x12\x41\n\x0b\x61ssignments\x18\x05 \x03(\x0b\x32,.iterm2.SetProfilePropertyRequest.Assignment\x1a\x19\n\x08GuidList\x12\r\n\x05guids\x18\x01 \x03(\t\x1a-\n\nAssignment\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\tB\x08\n\x06target\"\xa9\x01\n\x1aSetProfilePropertyResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.SetProfilePropertyResponse.Status:\x02OK\"L\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x0c\n\x08\x42\x41\x44_GUID\x10\x03\"#\n\x12TransactionRequest\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x08\"\x8f\x01\n\x13TransactionResponse\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.TransactionResponse.Status:\x02OK\"@\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0eNO_TRANSACTION\x10\x01\x12\x1a\n\x16\x41LREADY_IN_TRANSACTION\x10\x02\"{\n\tLineRange\x12\x1c\n\x14screen_contents_only\x18\x01 \x01(\x08\x12\x16\n\x0etrailing_lines\x18\x02 \x01(\x05\x12\x38\n\x14windowed_coord_range\x18\x03 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\")\n\x05Range\x12\x10\n\x08location\x18\x01 \x01(\x03\x12\x0e\n\x06length\x18\x02 \x01(\x03\"F\n\nCoordRange\x12\x1c\n\x05start\x18\x01 \x01(\x0b\x32\r.iterm2.Coord\x12\x1a\n\x03\x65nd\x18\x02 \x01(\x0b\x32\r.iterm2.Coord\"\x1d\n\x05\x43oord\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x03\"4\n\x08RGBColor\x12\x0b\n\x03red\x18\x01 \x01(\r\x12\r\n\x05green\x18\x02 \x01(\r\x12\x0c\n\x04\x62lue\x18\x03 \x01(\r\"&\n\x03URL\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nidentifier\x18\x02 \x01(\t\"\xe1\x04\n\tCellStyle\x12\x14\n\nfgStandard\x18\x01 \x01(\rH\x00\x12-\n\x0b\x66gAlternate\x18\x02 \x01(\x0e\x32\x16.iterm2.AlternateColorH\x00\x12!\n\x05\x66gRgb\x18\x03 \x01(\x0b\x32\x10.iterm2.RGBColorH\x00\x12\x1f\n\x15\x66gAlternatePlacementX\x18\x04 \x01(\rH\x00\x12\x14\n\nbgStandard\x18\x05 \x01(\rH\x01\x12-\n\x0b\x62gAlternate\x18\x06 \x01(\x0e\x32\x16.iterm2.AlternateColorH\x01\x12!\n\x05\x62gRgb\x18\x07 \x01(\x0b\x32\x10.iterm2.RGBColorH\x01\x12\x1f\n\x15\x62gAlternatePlacementY\x18\x08 \x01(\rH\x01\x12\x0c\n\x04\x62old\x18\t \x01(\x08\x12\r\n\x05\x66\x61int\x18\n \x01(\x08\x12\x0e\n\x06italic\x18\x0b \x01(\x08\x12\r\n\x05\x62link\x18\x0c \x01(\x08\x12\x11\n\tunderline\x18\r \x01(\x08\x12\x15\n\rstrikethrough\x18\x0e \x01(\x08\x12\x11\n\tinvisible\x18\x0f \x01(\x08\x12\x0f\n\x07inverse\x18\x10 \x01(\x08\x12\x0f\n\x07guarded\x18\x11 \x01(\x08\x12+\n\x05image\x18\x12 \x01(\x0e\x32\x1c.iterm2.ImagePlaceholderType\x12(\n\x0eunderlineColor\x18\x13 \x01(\x0b\x32\x10.iterm2.RGBColor\x12\x0f\n\x07\x62lockID\x18\x14 \x01(\t\x12\x18\n\x03url\x18\x15 \x01(\x0b\x32\x0b.iterm2.URL\x12\x0f\n\x07repeats\x18\x16 \x01(\rB\t\n\x07\x66gColorB\t\n\x07\x62gColor\"\x8d\x02\n\x0cLineContents\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x37\n\x14\x63ode_points_per_cell\x18\x02 \x03(\x0b\x32\x19.iterm2.CodePointsPerCell\x12N\n\x0c\x63ontinuation\x18\x03 \x01(\x0e\x32!.iterm2.LineContents.Continuation:\x15\x43ONTINUATION_HARD_EOL\x12 \n\x05style\x18\x04 \x03(\x0b\x32\x11.iterm2.CellStyle\"D\n\x0c\x43ontinuation\x12\x19\n\x15\x43ONTINUATION_HARD_EOL\x10\x01\x12\x19\n\x15\x43ONTINUATION_SOFT_EOL\x10\x02\"@\n\x11\x43odePointsPerCell\x12\x1a\n\x0fnum_code_points\x18\x01 \x01(\x05:\x01\x31\x12\x0f\n\x07repeats\x18\x02 \x01(\x05\"\x15\n\x13ListSessionsRequest\"L\n\x0fSendTextRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x1a\n\x12suppress_broadcast\x18\x03 \x01(\x08\"l\n\x10SendTextResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.SendTextResponse.Status\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\"%\n\x04Size\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"B\n\x05\x46rame\x12\x1d\n\x06origin\x18\x01 \x01(\x0b\x32\r.iterm2.Point\x12\x1a\n\x04size\x18\x02 \x01(\x0b\x32\x0c.iterm2.Size\"y\n\x0eSessionSummary\x12\x19\n\x11unique_identifier\x18\x01 \x01(\t\x12\x1c\n\x05\x66rame\x18\x02 \x01(\x0b\x32\r.iterm2.Frame\x12\x1f\n\tgrid_size\x18\x03 \x01(\x0b\x32\x0c.iterm2.Size\x12\r\n\x05title\x18\x04 \x01(\t\"\xc1\x01\n\rSplitTreeNode\x12\x10\n\x08vertical\x18\x01 \x01(\x08\x12\x32\n\x05links\x18\x02 \x03(\x0b\x32#.iterm2.SplitTreeNode.SplitTreeLink\x1aj\n\rSplitTreeLink\x12)\n\x07session\x18\x01 \x01(\x0b\x32\x16.iterm2.SessionSummaryH\x00\x12%\n\x04node\x18\x02 \x01(\x0b\x32\x15.iterm2.SplitTreeNodeH\x00\x42\x07\n\x05\x63hild\"\x9d\x03\n\x14ListSessionsResponse\x12\x34\n\x07windows\x18\x01 \x03(\x0b\x32#.iterm2.ListSessionsResponse.Window\x12/\n\x0f\x62uried_sessions\x18\x02 \x03(\x0b\x32\x16.iterm2.SessionSummary\x1ay\n\x06Window\x12.\n\x04tabs\x18\x01 \x03(\x0b\x32 .iterm2.ListSessionsResponse.Tab\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x1c\n\x05\x66rame\x18\x03 \x01(\x0b\x32\r.iterm2.Frame\x12\x0e\n\x06number\x18\x04 \x01(\x05\x1a\xa2\x01\n\x03Tab\x12#\n\x04root\x18\x03 \x01(\x0b\x32\x15.iterm2.SplitTreeNode\x12\x0e\n\x06tab_id\x18\x02 \x01(\t\x12\x16\n\x0etmux_window_id\x18\x04 \x01(\t\x12\x1a\n\x12tmux_connection_id\x18\x05 \x01(\t\x12\x32\n\x12minimized_sessions\x18\x06 \x03(\x0b\x32\x16.iterm2.SessionSummary\"\xb3\x01\n\x10\x43reateTabRequest\x12\x14\n\x0cprofile_name\x18\x01 \x01(\t\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x11\n\ttab_index\x18\x03 \x01(\r\x12\x13\n\x07\x63ommand\x18\x04 \x01(\tB\x02\x18\x01\x12:\n\x19\x63ustom_profile_properties\x18\x05 \x03(\x0b\x32\x17.iterm2.ProfileProperty\x12\x12\n\nselect_tab\x18\x06 \x01(\x08\"\xf0\x01\n\x11\x43reateTabResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.CreateTabResponse.Status\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x0e\n\x06tab_id\x18\x03 \x01(\x05\x12\x12\n\nsession_id\x18\x04 \x01(\t\"r\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x18\n\x14INVALID_PROFILE_NAME\x10\x01\x12\x15\n\x11INVALID_WINDOW_ID\x10\x02\x12\x15\n\x11INVALID_TAB_INDEX\x10\x03\x12\x18\n\x14MISSING_SUBSTITUTION\x10\x04\"\xfe\x01\n\x10SplitPaneRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12@\n\x0fsplit_direction\x18\x02 \x01(\x0e\x32\'.iterm2.SplitPaneRequest.SplitDirection\x12\x15\n\x06\x62\x65\x66ore\x18\x03 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0cprofile_name\x18\x04 \x01(\t\x12:\n\x19\x63ustom_profile_properties\x18\x05 \x03(\x0b\x32\x17.iterm2.ProfileProperty\".\n\x0eSplitDirection\x12\x0c\n\x08VERTICAL\x10\x00\x12\x0e\n\nHORIZONTAL\x10\x01\"\xd5\x01\n\x11SplitPaneResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.SplitPaneResponse.Status\x12\x12\n\nsession_id\x18\x02 \x03(\t\"z\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x18\n\x14INVALID_PROFILE_NAME\x10\x02\x12\x10\n\x0c\x43\x41NNOT_SPLIT\x10\x03\x12%\n!MALFORMED_CUSTOM_PROFILE_PROPERTY\x10\x04*V\n\rSelectionMode\x12\r\n\tCHARACTER\x10\x00\x12\x08\n\x04WORD\x10\x01\x12\x08\n\x04LINE\x10\x02\x12\t\n\x05SMART\x10\x03\x12\x07\n\x03\x42OX\x10\x04\x12\x0e\n\nWHOLE_LINE\x10\x05*\xb4\x03\n\x10NotificationType\x12\x17\n\x13NOTIFY_ON_KEYSTROKE\x10\x01\x12\x1b\n\x17NOTIFY_ON_SCREEN_UPDATE\x10\x02\x12\x14\n\x10NOTIFY_ON_PROMPT\x10\x03\x12!\n\x19NOTIFY_ON_LOCATION_CHANGE\x10\x04\x1a\x02\x08\x01\x12$\n NOTIFY_ON_CUSTOM_ESCAPE_SEQUENCE\x10\x05\x12\x1d\n\x19NOTIFY_ON_VARIABLE_CHANGE\x10\x0c\x12\x14\n\x10KEYSTROKE_FILTER\x10\x0e\x12\x19\n\x15NOTIFY_ON_NEW_SESSION\x10\x06\x12\x1f\n\x1bNOTIFY_ON_TERMINATE_SESSION\x10\x07\x12\x1b\n\x17NOTIFY_ON_LAYOUT_CHANGE\x10\x08\x12\x1a\n\x16NOTIFY_ON_FOCUS_CHANGE\x10\t\x12#\n\x1fNOTIFY_ON_SERVER_ORIGINATED_RPC\x10\n\x12\x1e\n\x1aNOTIFY_ON_BROADCAST_CHANGE\x10\x0b\x12\x1c\n\x18NOTIFY_ON_PROFILE_CHANGE\x10\r*V\n\tModifiers\x12\x0b\n\x07\x43ONTROL\x10\x01\x12\n\n\x06OPTION\x10\x02\x12\x0b\n\x07\x43OMMAND\x10\x03\x12\t\n\x05SHIFT\x10\x04\x12\x0c\n\x08\x46UNCTION\x10\x05\x12\n\n\x06NUMPAD\x10\x06*:\n\rVariableScope\x12\x0b\n\x07SESSION\x10\x01\x12\x07\n\x03TAB\x10\x02\x12\n\n\x06WINDOW\x10\x03\x12\x07\n\x03\x41PP\x10\x04*C\n\x11PromptMonitorMode\x12\n\n\x06PROMPT\x10\x01\x12\x11\n\rCOMMAND_START\x10\x02\x12\x0f\n\x0b\x43OMMAND_END\x10\x03*G\n\x0e\x41lternateColor\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x14\n\x10REVERSED_DEFAULT\x10\x03\x12\x12\n\x0eSYSTEM_MESSAGE\x10\x04*7\n\x14ImagePlaceholderType\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06ITERM2\x10\x01\x12\t\n\x05KITTY\x10\x02\x42\x06\xa2\x02\x03ITM')
16
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tapi.proto\x12\x06iterm2\"\x93\x11\n\x17\x43lientOriginatedMessage\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x36\n\x12get_buffer_request\x18\x64 \x01(\x0b\x32\x18.iterm2.GetBufferRequestH\x00\x12\x36\n\x12get_prompt_request\x18\x65 \x01(\x0b\x32\x18.iterm2.GetPromptRequestH\x00\x12\x39\n\x13transaction_request\x18\x66 \x01(\x0b\x32\x1a.iterm2.TransactionRequestH\x00\x12;\n\x14notification_request\x18g \x01(\x0b\x32\x1b.iterm2.NotificationRequestH\x00\x12<\n\x15register_tool_request\x18h \x01(\x0b\x32\x1b.iterm2.RegisterToolRequestH\x00\x12I\n\x1cset_profile_property_request\x18i \x01(\x0b\x32!.iterm2.SetProfilePropertyRequestH\x00\x12<\n\x15list_sessions_request\x18j \x01(\x0b\x32\x1b.iterm2.ListSessionsRequestH\x00\x12\x34\n\x11send_text_request\x18k \x01(\x0b\x32\x17.iterm2.SendTextRequestH\x00\x12\x36\n\x12\x63reate_tab_request\x18l \x01(\x0b\x32\x18.iterm2.CreateTabRequestH\x00\x12\x36\n\x12split_pane_request\x18m \x01(\x0b\x32\x18.iterm2.SplitPaneRequestH\x00\x12I\n\x1cget_profile_property_request\x18n \x01(\x0b\x32!.iterm2.GetProfilePropertyRequestH\x00\x12:\n\x14set_property_request\x18o \x01(\x0b\x32\x1a.iterm2.SetPropertyRequestH\x00\x12:\n\x14get_property_request\x18p \x01(\x0b\x32\x1a.iterm2.GetPropertyRequestH\x00\x12/\n\x0einject_request\x18q \x01(\x0b\x32\x15.iterm2.InjectRequestH\x00\x12\x33\n\x10\x61\x63tivate_request\x18r \x01(\x0b\x32\x17.iterm2.ActivateRequestH\x00\x12\x33\n\x10variable_request\x18s \x01(\x0b\x32\x17.iterm2.VariableRequestH\x00\x12\x44\n\x19saved_arrangement_request\x18t \x01(\x0b\x32\x1f.iterm2.SavedArrangementRequestH\x00\x12-\n\rfocus_request\x18u \x01(\x0b\x32\x14.iterm2.FocusRequestH\x00\x12<\n\x15list_profiles_request\x18v \x01(\x0b\x32\x1b.iterm2.ListProfilesRequestH\x00\x12X\n$server_originated_rpc_result_request\x18w \x01(\x0b\x32(.iterm2.ServerOriginatedRPCResultRequestH\x00\x12@\n\x17restart_session_request\x18x \x01(\x0b\x32\x1d.iterm2.RestartSessionRequestH\x00\x12\x34\n\x11menu_item_request\x18y \x01(\x0b\x32\x17.iterm2.MenuItemRequestH\x00\x12=\n\x16set_tab_layout_request\x18z \x01(\x0b\x32\x1b.iterm2.SetTabLayoutRequestH\x00\x12K\n\x1dget_broadcast_domains_request\x18{ \x01(\x0b\x32\".iterm2.GetBroadcastDomainsRequestH\x00\x12+\n\x0ctmux_request\x18| \x01(\x0b\x32\x13.iterm2.TmuxRequestH\x00\x12:\n\x14reorder_tabs_request\x18} \x01(\x0b\x32\x1a.iterm2.ReorderTabsRequestH\x00\x12\x39\n\x13preferences_request\x18~ \x01(\x0b\x32\x1a.iterm2.PreferencesRequestH\x00\x12:\n\x14\x63olor_preset_request\x18\x7f \x01(\x0b\x32\x1a.iterm2.ColorPresetRequestH\x00\x12\x36\n\x11selection_request\x18\x80\x01 \x01(\x0b\x32\x18.iterm2.SelectionRequestH\x00\x12J\n\x1cstatus_bar_component_request\x18\x81\x01 \x01(\x0b\x32!.iterm2.StatusBarComponentRequestH\x00\x12L\n\x1dset_broadcast_domains_request\x18\x82\x01 \x01(\x0b\x32\".iterm2.SetBroadcastDomainsRequestH\x00\x12.\n\rclose_request\x18\x83\x01 \x01(\x0b\x32\x14.iterm2.CloseRequestH\x00\x12\x41\n\x17invoke_function_request\x18\x84\x01 \x01(\x0b\x32\x1d.iterm2.InvokeFunctionRequestH\x00\x12;\n\x14list_prompts_request\x18\x85\x01 \x01(\x0b\x32\x1a.iterm2.ListPromptsRequestH\x00\x12\x38\n\x12screenshot_request\x18\x86\x01 \x01(\x0b\x32\x19.iterm2.ScreenshotRequestH\x00\x42\x0c\n\nsubmessage\"\x99\x12\n\x17ServerOriginatedMessage\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0f\n\x05\x65rror\x18\x02 \x01(\tH\x00\x12\x38\n\x13get_buffer_response\x18\x64 \x01(\x0b\x32\x19.iterm2.GetBufferResponseH\x00\x12\x38\n\x13get_prompt_response\x18\x65 \x01(\x0b\x32\x19.iterm2.GetPromptResponseH\x00\x12;\n\x14transaction_response\x18\x66 \x01(\x0b\x32\x1b.iterm2.TransactionResponseH\x00\x12=\n\x15notification_response\x18g \x01(\x0b\x32\x1c.iterm2.NotificationResponseH\x00\x12>\n\x16register_tool_response\x18h \x01(\x0b\x32\x1c.iterm2.RegisterToolResponseH\x00\x12K\n\x1dset_profile_property_response\x18i \x01(\x0b\x32\".iterm2.SetProfilePropertyResponseH\x00\x12>\n\x16list_sessions_response\x18j \x01(\x0b\x32\x1c.iterm2.ListSessionsResponseH\x00\x12\x36\n\x12send_text_response\x18k \x01(\x0b\x32\x18.iterm2.SendTextResponseH\x00\x12\x38\n\x13\x63reate_tab_response\x18l \x01(\x0b\x32\x19.iterm2.CreateTabResponseH\x00\x12\x38\n\x13split_pane_response\x18m \x01(\x0b\x32\x19.iterm2.SplitPaneResponseH\x00\x12K\n\x1dget_profile_property_response\x18n \x01(\x0b\x32\".iterm2.GetProfilePropertyResponseH\x00\x12<\n\x15set_property_response\x18o \x01(\x0b\x32\x1b.iterm2.SetPropertyResponseH\x00\x12<\n\x15get_property_response\x18p \x01(\x0b\x32\x1b.iterm2.GetPropertyResponseH\x00\x12\x31\n\x0finject_response\x18q \x01(\x0b\x32\x16.iterm2.InjectResponseH\x00\x12\x35\n\x11\x61\x63tivate_response\x18r \x01(\x0b\x32\x18.iterm2.ActivateResponseH\x00\x12\x35\n\x11variable_response\x18s \x01(\x0b\x32\x18.iterm2.VariableResponseH\x00\x12\x46\n\x1asaved_arrangement_response\x18t \x01(\x0b\x32 .iterm2.SavedArrangementResponseH\x00\x12/\n\x0e\x66ocus_response\x18u \x01(\x0b\x32\x15.iterm2.FocusResponseH\x00\x12>\n\x16list_profiles_response\x18v \x01(\x0b\x32\x1c.iterm2.ListProfilesResponseH\x00\x12Z\n%server_originated_rpc_result_response\x18w \x01(\x0b\x32).iterm2.ServerOriginatedRPCResultResponseH\x00\x12\x42\n\x18restart_session_response\x18x \x01(\x0b\x32\x1e.iterm2.RestartSessionResponseH\x00\x12\x36\n\x12menu_item_response\x18y \x01(\x0b\x32\x18.iterm2.MenuItemResponseH\x00\x12?\n\x17set_tab_layout_response\x18z \x01(\x0b\x32\x1c.iterm2.SetTabLayoutResponseH\x00\x12M\n\x1eget_broadcast_domains_response\x18{ \x01(\x0b\x32#.iterm2.GetBroadcastDomainsResponseH\x00\x12-\n\rtmux_response\x18| \x01(\x0b\x32\x14.iterm2.TmuxResponseH\x00\x12<\n\x15reorder_tabs_response\x18} \x01(\x0b\x32\x1b.iterm2.ReorderTabsResponseH\x00\x12;\n\x14preferences_response\x18~ \x01(\x0b\x32\x1b.iterm2.PreferencesResponseH\x00\x12<\n\x15\x63olor_preset_response\x18\x7f \x01(\x0b\x32\x1b.iterm2.ColorPresetResponseH\x00\x12\x38\n\x12selection_response\x18\x80\x01 \x01(\x0b\x32\x19.iterm2.SelectionResponseH\x00\x12L\n\x1dstatus_bar_component_response\x18\x81\x01 \x01(\x0b\x32\".iterm2.StatusBarComponentResponseH\x00\x12N\n\x1eset_broadcast_domains_response\x18\x82\x01 \x01(\x0b\x32#.iterm2.SetBroadcastDomainsResponseH\x00\x12\x30\n\x0e\x63lose_response\x18\x83\x01 \x01(\x0b\x32\x15.iterm2.CloseResponseH\x00\x12\x43\n\x18invoke_function_response\x18\x84\x01 \x01(\x0b\x32\x1e.iterm2.InvokeFunctionResponseH\x00\x12=\n\x15list_prompts_response\x18\x85\x01 \x01(\x0b\x32\x1b.iterm2.ListPromptsResponseH\x00\x12:\n\x13screenshot_response\x18\x86\x01 \x01(\x0b\x32\x1a.iterm2.ScreenshotResponseH\x00\x12-\n\x0cnotification\x18\xe8\x07 \x01(\x0b\x32\x14.iterm2.NotificationH\x00\x42\x0c\n\nsubmessage\"\xcf\x03\n\x15InvokeFunctionRequest\x12\x30\n\x03tab\x18\x01 \x01(\x0b\x32!.iterm2.InvokeFunctionRequest.TabH\x00\x12\x38\n\x07session\x18\x02 \x01(\x0b\x32%.iterm2.InvokeFunctionRequest.SessionH\x00\x12\x36\n\x06window\x18\x03 \x01(\x0b\x32$.iterm2.InvokeFunctionRequest.WindowH\x00\x12\x30\n\x03\x61pp\x18\x04 \x01(\x0b\x32!.iterm2.InvokeFunctionRequest.AppH\x00\x12\x36\n\x06method\x18\x07 \x01(\x0b\x32$.iterm2.InvokeFunctionRequest.MethodH\x00\x12\x12\n\ninvocation\x18\x05 \x01(\t\x12\x13\n\x07timeout\x18\x06 \x01(\x01:\x02-1\x1a\x15\n\x03Tab\x12\x0e\n\x06tab_id\x18\x01 \x01(\t\x1a\x1d\n\x07Session\x12\x12\n\nsession_id\x18\x01 \x01(\t\x1a\x1b\n\x06Window\x12\x11\n\twindow_id\x18\x01 \x01(\t\x1a\x05\n\x03\x41pp\x1a\x1a\n\x06Method\x12\x10\n\x08receiver\x18\x01 \x01(\tB\t\n\x07\x63ontext\"\xd9\x02\n\x16InvokeFunctionResponse\x12\x35\n\x05\x65rror\x18\x01 \x01(\x0b\x32$.iterm2.InvokeFunctionResponse.ErrorH\x00\x12\x39\n\x07success\x18\x02 \x01(\x0b\x32&.iterm2.InvokeFunctionResponse.SuccessH\x00\x1aT\n\x05\x45rror\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.iterm2.InvokeFunctionResponse.Status\x12\x14\n\x0c\x65rror_reason\x18\x02 \x01(\t\x1a\x1e\n\x07Success\x12\x13\n\x0bjson_result\x18\x01 \x01(\t\"H\n\x06Status\x12\x0b\n\x07TIMEOUT\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\x12\x0e\n\nINVALID_ID\x10\x04\x42\r\n\x0b\x64isposition\"\xad\x02\n\x0c\x43loseRequest\x12.\n\x04tabs\x18\x01 \x01(\x0b\x32\x1e.iterm2.CloseRequest.CloseTabsH\x00\x12\x36\n\x08sessions\x18\x02 \x01(\x0b\x32\".iterm2.CloseRequest.CloseSessionsH\x00\x12\x34\n\x07windows\x18\x03 \x01(\x0b\x32!.iterm2.CloseRequest.CloseWindowsH\x00\x12\r\n\x05\x66orce\x18\x04 \x01(\x08\x1a\x1c\n\tCloseTabs\x12\x0f\n\x07tab_ids\x18\x01 \x03(\t\x1a$\n\rCloseSessions\x12\x13\n\x0bsession_ids\x18\x01 \x03(\t\x1a\"\n\x0c\x43loseWindows\x12\x12\n\nwindow_ids\x18\x01 \x03(\tB\x08\n\x06target\"s\n\rCloseResponse\x12.\n\x08statuses\x18\x01 \x03(\x0e\x32\x1c.iterm2.CloseResponse.Status\"2\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x11\n\rUSER_DECLINED\x10\x02\"P\n\x1aSetBroadcastDomainsRequest\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"\xc7\x01\n\x1bSetBroadcastDomainsResponse\x12:\n\x06status\x18\x01 \x01(\x0e\x32*.iterm2.SetBroadcastDomainsResponse.Status\"l\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\"\n\x1e\x42ROADCAST_DOMAINS_NOT_DISJOINT\x10\x02\x12\x1f\n\x1bSESSIONS_NOT_IN_SAME_WINDOW\x10\x03\"\xce\x01\n\x19StatusBarComponentRequest\x12\x45\n\x0copen_popover\x18\x01 \x01(\x0b\x32-.iterm2.StatusBarComponentRequest.OpenPopoverH\x00\x12\x12\n\nidentifier\x18\x02 \x01(\t\x1aK\n\x0bOpenPopover\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0c\n\x04html\x18\x02 \x01(\t\x12\x1a\n\x04size\x18\x03 \x01(\x0b\x32\x0c.iterm2.SizeB\t\n\x07request\"\xaf\x01\n\x1aStatusBarComponentResponse\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.StatusBarComponentResponse.Status\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x16\n\x12INVALID_IDENTIFIER\x10\x03\"]\n\x12WindowedCoordRange\x12\'\n\x0b\x63oord_range\x18\x01 \x01(\x0b\x32\x12.iterm2.CoordRange\x12\x1e\n\x07\x63olumns\x18\x02 \x01(\x0b\x32\r.iterm2.Range\"\x8a\x01\n\x0cSubSelection\x12\x38\n\x14windowed_coord_range\x18\x01 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\x12-\n\x0eselection_mode\x18\x02 \x01(\x0e\x32\x15.iterm2.SelectionMode\x12\x11\n\tconnected\x18\x03 \x01(\x08\"9\n\tSelection\x12,\n\x0esub_selections\x18\x01 \x03(\x0b\x32\x14.iterm2.SubSelection\"\xb7\x02\n\x10SelectionRequest\x12M\n\x15get_selection_request\x18\x01 \x01(\x0b\x32,.iterm2.SelectionRequest.GetSelectionRequestH\x00\x12M\n\x15set_selection_request\x18\x02 \x01(\x0b\x32,.iterm2.SelectionRequest.SetSelectionRequestH\x00\x1a)\n\x13GetSelectionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x1aO\n\x13SetSelectionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12$\n\tselection\x18\x02 \x01(\x0b\x32\x11.iterm2.SelectionB\t\n\x07request\"\x9c\x03\n\x11SelectionResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.SelectionResponse.Status\x12P\n\x16get_selection_response\x18\x02 \x01(\x0b\x32..iterm2.SelectionResponse.GetSelectionResponseH\x00\x12P\n\x16set_selection_response\x18\x03 \x01(\x0b\x32..iterm2.SelectionResponse.SetSelectionResponseH\x00\x1a<\n\x14GetSelectionResponse\x12$\n\tselection\x18\x02 \x01(\x0b\x32\x11.iterm2.Selection\x1a\x16\n\x14SetSelectionResponse\"O\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x13\n\x0fINVALID_SESSION\x10\x01\x12\x11\n\rINVALID_RANGE\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\x42\n\n\x08response\"\xc5\x01\n\x12\x43olorPresetRequest\x12>\n\x0clist_presets\x18\x01 \x01(\x0b\x32&.iterm2.ColorPresetRequest.ListPresetsH\x00\x12:\n\nget_preset\x18\x02 \x01(\x0b\x32$.iterm2.ColorPresetRequest.GetPresetH\x00\x1a\r\n\x0bListPresets\x1a\x19\n\tGetPreset\x12\x0c\n\x04name\x18\x01 \x01(\tB\t\n\x07request\"\xf4\x03\n\x13\x43olorPresetResponse\x12?\n\x0clist_presets\x18\x01 \x01(\x0b\x32\'.iterm2.ColorPresetResponse.ListPresetsH\x00\x12;\n\nget_preset\x18\x02 \x01(\x0b\x32%.iterm2.ColorPresetResponse.GetPresetH\x00\x12\x32\n\x06status\x18\x03 \x01(\x0e\x32\".iterm2.ColorPresetResponse.Status\x1a\x1b\n\x0bListPresets\x12\x0c\n\x04name\x18\x01 \x03(\t\x1a\xc2\x01\n\tGetPreset\x12J\n\x0e\x63olor_settings\x18\x01 \x03(\x0b\x32\x32.iterm2.ColorPresetResponse.GetPreset.ColorSetting\x1ai\n\x0c\x43olorSetting\x12\x0b\n\x03red\x18\x01 \x01(\x02\x12\r\n\x05green\x18\x02 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x13\n\x0b\x63olor_space\x18\x05 \x01(\t\x12\x0b\n\x03key\x18\x06 \x01(\t\"=\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x14\n\x10PRESET_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x42\n\n\x08response\"\xcb\x04\n\x12PreferencesRequest\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".iterm2.PreferencesRequest.Request\x1a\xfe\x03\n\x07Request\x12R\n\x16set_preference_request\x18\x01 \x01(\x0b\x32\x30.iterm2.PreferencesRequest.Request.SetPreferenceH\x00\x12R\n\x16get_preference_request\x18\x02 \x01(\x0b\x32\x30.iterm2.PreferencesRequest.Request.GetPreferenceH\x00\x12[\n\x1bset_default_profile_request\x18\x03 \x01(\x0b\x32\x34.iterm2.PreferencesRequest.Request.SetDefaultProfileH\x00\x12[\n\x1bget_default_profile_request\x18\x04 \x01(\x0b\x32\x34.iterm2.PreferencesRequest.Request.GetDefaultProfileH\x00\x1a\x30\n\rSetPreference\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\x1a\x1c\n\rGetPreference\x12\x0b\n\x03key\x18\x01 \x01(\t\x1a!\n\x11SetDefaultProfile\x12\x0c\n\x04guid\x18\x01 \x01(\t\x1a\x13\n\x11GetDefaultProfileB\t\n\x07request\"\xbf\x07\n\x13PreferencesResponse\x12\x33\n\x07results\x18\x01 \x03(\x0b\x32\".iterm2.PreferencesResponse.Result\x1a\xf2\x06\n\x06Result\x12U\n\x14unrecognized_request\x18\x01 \x01(\x0b\x32\x35.iterm2.PreferencesResponse.Result.UnrecognizedResultH\x00\x12W\n\x15set_preference_result\x18\x02 \x01(\x0b\x32\x36.iterm2.PreferencesResponse.Result.SetPreferenceResultH\x00\x12W\n\x15get_preference_result\x18\x03 \x01(\x0b\x32\x36.iterm2.PreferencesResponse.Result.GetPreferenceResultH\x00\x12`\n\x1aset_default_profile_result\x18\x04 \x01(\x0b\x32:.iterm2.PreferencesResponse.Result.SetDefaultProfileResultH\x00\x12`\n\x1aget_default_profile_result\x18\x05 \x01(\x0b\x32:.iterm2.PreferencesResponse.Result.GetDefaultProfileResultH\x00\x1a\x97\x01\n\x13SetPreferenceResult\x12M\n\x06status\x18\x01 \x01(\x0e\x32=.iterm2.PreferencesResponse.Result.SetPreferenceResult.Status\"1\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0c\n\x08\x42\x41\x44_JSON\x10\x01\x12\x11\n\rINVALID_VALUE\x10\x02\x1a)\n\x13GetPreferenceResult\x12\x12\n\njson_value\x18\x01 \x01(\t\x1a\x8c\x01\n\x17SetDefaultProfileResult\x12Q\n\x06status\x18\x01 \x01(\x0e\x32\x41.iterm2.PreferencesResponse.Result.SetDefaultProfileResult.Status\"\x1e\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0c\n\x08\x42\x41\x44_GUID\x10\x01\x1a\x14\n\x12UnrecognizedResult\x1a\'\n\x17GetDefaultProfileResult\x12\x0c\n\x04guid\x18\x01 \x01(\tB\x08\n\x06result\"\x82\x01\n\x12ReorderTabsRequest\x12:\n\x0b\x61ssignments\x18\x03 \x03(\x0b\x32%.iterm2.ReorderTabsRequest.Assignment\x1a\x30\n\nAssignment\x12\x11\n\twindow_id\x18\x01 \x01(\t\x12\x0f\n\x07tab_ids\x18\x02 \x03(\t\"\x9e\x01\n\x13ReorderTabsResponse\x12\x32\n\x06status\x18\x04 \x01(\x0e\x32\".iterm2.ReorderTabsResponse.Status\"S\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x16\n\x12INVALID_ASSIGNMENT\x10\x01\x12\x15\n\x11INVALID_WINDOW_ID\x10\x02\x12\x12\n\x0eINVALID_TAB_ID\x10\x03\"\xe3\x03\n\x0bTmuxRequest\x12?\n\x10list_connections\x18\x01 \x01(\x0b\x32#.iterm2.TmuxRequest.ListConnectionsH\x00\x12\x37\n\x0csend_command\x18\x02 \x01(\x0b\x32\x1f.iterm2.TmuxRequest.SendCommandH\x00\x12\x42\n\x12set_window_visible\x18\x03 \x01(\x0b\x32$.iterm2.TmuxRequest.SetWindowVisibleH\x00\x12\x39\n\rcreate_window\x18\x04 \x01(\x0b\x32 .iterm2.TmuxRequest.CreateWindowH\x00\x1a\x11\n\x0fListConnections\x1a\x35\n\x0bSendCommand\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x1aM\n\x10SetWindowVisible\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x0f\n\x07visible\x18\x03 \x01(\x08\x1a\x37\n\x0c\x43reateWindow\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x10\n\x08\x61\x66\x66inity\x18\x02 \x01(\tB\t\n\x07payload\"\x89\x05\n\x0cTmuxResponse\x12@\n\x10list_connections\x18\x01 \x01(\x0b\x32$.iterm2.TmuxResponse.ListConnectionsH\x00\x12\x38\n\x0csend_command\x18\x02 \x01(\x0b\x32 .iterm2.TmuxResponse.SendCommandH\x00\x12\x43\n\x12set_window_visible\x18\x03 \x01(\x0b\x32%.iterm2.TmuxResponse.SetWindowVisibleH\x00\x12:\n\rcreate_window\x18\x05 \x01(\x0b\x32!.iterm2.TmuxResponse.CreateWindowH\x00\x12+\n\x06status\x18\x04 \x01(\x0e\x32\x1b.iterm2.TmuxResponse.Status\x1a\x97\x01\n\x0fListConnections\x12\x44\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32/.iterm2.TmuxResponse.ListConnections.Connection\x1a>\n\nConnection\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x19\n\x11owning_session_id\x18\x02 \x01(\t\x1a\x1d\n\x0bSendCommand\x12\x0e\n\x06output\x18\x01 \x01(\t\x1a\x12\n\x10SetWindowVisible\x1a\x1e\n\x0c\x43reateWindow\x12\x0e\n\x06tab_id\x18\x01 \x01(\t\"W\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x19\n\x15INVALID_CONNECTION_ID\x10\x02\x12\x15\n\x11INVALID_WINDOW_ID\x10\x03\x42\t\n\x07payload\"\x1c\n\x1aGetBroadcastDomainsRequest\"&\n\x0f\x42roadcastDomain\x12\x13\n\x0bsession_ids\x18\x01 \x03(\t\"Q\n\x1bGetBroadcastDomainsResponse\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"J\n\x13SetTabLayoutRequest\x12#\n\x04root\x18\x01 \x01(\x0b\x32\x15.iterm2.SplitTreeNode\x12\x0e\n\x06tab_id\x18\x02 \x01(\t\"\x8f\x01\n\x14SetTabLayoutResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.SetTabLayoutResponse.Status\"B\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x0e\n\nBAD_TAB_ID\x10\x01\x12\x0e\n\nWRONG_TREE\x10\x02\x12\x10\n\x0cINVALID_SIZE\x10\x03\"9\n\x0fMenuItemRequest\x12\x12\n\nidentifier\x18\x01 \x01(\t\x12\x12\n\nquery_only\x18\x02 \x01(\x08\"\x99\x01\n\x10MenuItemResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.MenuItemResponse.Status\x12\x0f\n\x07\x63hecked\x18\x02 \x01(\x08\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08\"2\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x42\x41\x44_IDENTIFIER\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\"C\n\x15RestartSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0eonly_if_exited\x18\x02 \x01(\x08\"\x95\x01\n\x16RestartSessionResponse\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.iterm2.RestartSessionResponse.Status\"D\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x1b\n\x17SESSION_NOT_RESTARTABLE\x10\x02\"p\n ServerOriginatedRPCResultRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x18\n\x0ejson_exception\x18\x02 \x01(\tH\x00\x12\x14\n\njson_value\x18\x03 \x01(\tH\x00\x42\x08\n\x06result\"#\n!ServerOriginatedRPCResultResponse\"8\n\x13ListProfilesRequest\x12\x12\n\nproperties\x18\x01 \x03(\t\x12\r\n\x05guids\x18\x02 \x03(\t\"\x86\x01\n\x14ListProfilesResponse\x12\x36\n\x08profiles\x18\x01 \x03(\x0b\x32$.iterm2.ListProfilesResponse.Profile\x1a\x36\n\x07Profile\x12+\n\nproperties\x18\x01 \x03(\x0b\x32\x17.iterm2.ProfileProperty\"\x0e\n\x0c\x46ocusRequest\"H\n\rFocusResponse\x12\x37\n\rnotifications\x18\x01 \x03(\x0b\x32 .iterm2.FocusChangedNotification\"\x9d\x01\n\x17SavedArrangementRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32&.iterm2.SavedArrangementRequest.Action\x12\x11\n\twindow_id\x18\x03 \x01(\t\")\n\x06\x41\x63tion\x12\x0b\n\x07RESTORE\x10\x00\x12\x08\n\x04SAVE\x10\x01\x12\x08\n\x04LIST\x10\x02\"\xbc\x01\n\x18SavedArrangementResponse\x12\x37\n\x06status\x18\x01 \x01(\x0e\x32\'.iterm2.SavedArrangementResponse.Status\x12\r\n\x05names\x18\x02 \x03(\t\"X\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x19\n\x15\x41RRANGEMENT_NOT_FOUND\x10\x01\x12\x14\n\x10WINDOW_NOT_FOUND\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\"\xc1\x01\n\x0fVariableRequest\x12\x14\n\nsession_id\x18\x01 \x01(\tH\x00\x12\x10\n\x06tab_id\x18\x04 \x01(\tH\x00\x12\r\n\x03\x61pp\x18\x05 \x01(\x08H\x00\x12\x13\n\twindow_id\x18\x06 \x01(\tH\x00\x12(\n\x03set\x18\x02 \x03(\x0b\x32\x1b.iterm2.VariableRequest.Set\x12\x0b\n\x03get\x18\x03 \x03(\t\x1a\"\n\x03Set\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\tB\x07\n\x05scope\"\xe5\x01\n\x10VariableResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.VariableResponse.Status\x12\x0e\n\x06values\x18\x02 \x03(\t\"\x8f\x01\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x10\n\x0cINVALID_NAME\x10\x02\x12\x11\n\rMISSING_SCOPE\x10\x03\x12\x11\n\rTAB_NOT_FOUND\x10\x04\x12\x18\n\x14MULTI_GET_DISALLOWED\x10\x05\x12\x14\n\x10WINDOW_NOT_FOUND\x10\x06\"\x96\x02\n\x0f\x41\x63tivateRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x10\n\x06tab_id\x18\x02 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x03 \x01(\tH\x00\x12\x1a\n\x12order_window_front\x18\x04 \x01(\x08\x12\x12\n\nselect_tab\x18\x05 \x01(\x08\x12\x16\n\x0eselect_session\x18\x06 \x01(\x08\x12\x31\n\x0c\x61\x63tivate_app\x18\x07 \x01(\x0b\x32\x1b.iterm2.ActivateRequest.App\x1a=\n\x03\x41pp\x12\x19\n\x11raise_all_windows\x18\x01 \x01(\x08\x12\x1b\n\x13ignoring_other_apps\x18\x02 \x01(\x08\x42\x0c\n\nidentifier\"}\n\x10\x41\x63tivateResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.ActivateResponse.Status\"8\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x42\x41\x44_IDENTIFIER\x10\x01\x12\x12\n\x0eINVALID_OPTION\x10\x02\"1\n\rInjectRequest\x12\x12\n\nsession_id\x18\x01 \x03(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"h\n\x0eInjectResponse\x12-\n\x06status\x18\x01 \x03(\x0e\x32\x1d.iterm2.InjectResponse.Status\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\"[\n\x12GetPropertyRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x03 \x01(\tH\x00\x12\x0c\n\x04name\x18\x02 \x01(\tB\x0c\n\nidentifier\"\x9a\x01\n\x13GetPropertyResponse\x12\x32\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.GetPropertyResponse.Status\x12\x12\n\njson_value\x18\x02 \x01(\t\";\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11UNRECOGNIZED_NAME\x10\x01\x12\x12\n\x0eINVALID_TARGET\x10\x02\"o\n\x12SetPropertyRequest\x12\x13\n\twindow_id\x18\x01 \x01(\tH\x00\x12\x14\n\nsession_id\x18\x05 \x01(\tH\x00\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\njson_value\x18\x04 \x01(\tB\x0c\n\nidentifier\"\xc3\x01\n\x13SetPropertyResponse\x12\x32\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.SetPropertyResponse.Status\"x\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11UNRECOGNIZED_NAME\x10\x01\x12\x11\n\rINVALID_VALUE\x10\x02\x12\x12\n\x0eINVALID_TARGET\x10\x03\x12\x0c\n\x08\x44\x45\x46\x45RRED\x10\x04\x12\x0e\n\nIMPOSSIBLE\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06\"\xd8\x01\n\x13RegisterToolRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nidentifier\x18\x02 \x01(\t\x12+\n\x1creveal_if_already_registered\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x46\n\ttool_type\x18\x03 \x01(\x0e\x32$.iterm2.RegisterToolRequest.ToolType:\rWEB_VIEW_TOOL\x12\x0b\n\x03URL\x18\x04 \x01(\t\"\x1d\n\x08ToolType\x12\x11\n\rWEB_VIEW_TOOL\x10\x01\"\xdf\x0c\n\x16RPCRegistrationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x46\n\targuments\x18\x02 \x03(\x0b\x32\x33.iterm2.RPCRegistrationRequest.RPCArgumentSignature\x12<\n\x08\x64\x65\x66\x61ults\x18\x04 \x03(\x0b\x32*.iterm2.RPCRegistrationRequest.RPCArgument\x12\x0f\n\x07timeout\x18\x03 \x01(\x02\x12:\n\x04role\x18\x05 \x01(\x0e\x32#.iterm2.RPCRegistrationRequest.Role:\x07GENERIC\x12Y\n\x18session_title_attributes\x18\x07 \x01(\x0b\x32\x35.iterm2.RPCRegistrationRequest.SessionTitleAttributesH\x00\x12\x66\n\x1fstatus_bar_component_attributes\x18\x08 \x01(\x0b\x32;.iterm2.RPCRegistrationRequest.StatusBarComponentAttributesH\x00\x12W\n\x17\x63ontext_menu_attributes\x18\t \x01(\x0b\x32\x34.iterm2.RPCRegistrationRequest.ContextMenuAttributesH\x00\x12\x18\n\x0c\x64isplay_name\x18\x06 \x01(\tB\x02\x18\x01\x1a$\n\x14RPCArgumentSignature\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a)\n\x0bRPCArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x1aI\n\x16SessionTitleAttributes\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x19\n\x11unique_identifier\x18\x06 \x01(\t\x1a\xd9\x05\n\x1cStatusBarComponentAttributes\x12\x19\n\x11short_description\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65tailed_description\x18\x02 \x01(\t\x12O\n\x05knobs\x18\x03 \x03(\x0b\x32@.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Knob\x12\x10\n\x08\x65xemplar\x18\x04 \x01(\t\x12\x16\n\x0eupdate_cadence\x18\x05 \x01(\x02\x12\x19\n\x11unique_identifier\x18\x06 \x01(\t\x12O\n\x05icons\x18\x07 \x03(\x0b\x32@.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Icon\x12^\n\x06\x66ormat\x18\x08 \x01(\x0e\x32\x42.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Format:\nPLAIN_TEXT\x1a\xef\x01\n\x04Knob\x12\x0c\n\x04name\x18\x01 \x01(\t\x12S\n\x04type\x18\x02 \x01(\x0e\x32\x45.iterm2.RPCRegistrationRequest.StatusBarComponentAttributes.Knob.Type\x12\x13\n\x0bplaceholder\x18\x03 \x01(\t\x12\x1a\n\x12json_default_value\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x05 \x01(\t\"F\n\x04Type\x12\x0c\n\x08\x43heckbox\x10\x01\x12\n\n\x06String\x10\x02\x12\x19\n\x15PositiveFloatingPoint\x10\x03\x12\t\n\x05\x43olor\x10\x04\x1a#\n\x04Icon\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05scale\x18\x02 \x01(\x02\"\"\n\x06\x46ormat\x12\x0e\n\nPLAIN_TEXT\x10\x00\x12\x08\n\x04HTML\x10\x01\x1aH\n\x15\x43ontextMenuAttributes\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x19\n\x11unique_identifier\x18\x02 \x01(\t\"R\n\x04Role\x12\x0b\n\x07GENERIC\x10\x01\x12\x11\n\rSESSION_TITLE\x10\x02\x12\x18\n\x14STATUS_BAR_COMPONENT\x10\x03\x12\x10\n\x0c\x43ONTEXT_MENU\x10\x04\x42\x18\n\x16RoleSpecificAttributes\"\x8b\x01\n\x14RegisterToolResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.RegisterToolResponse.Status\">\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11REQUEST_MALFORMED\x10\x01\x12\x15\n\x11PERMISSION_DENIED\x10\x02\"\xbe\x01\n\x10KeystrokePattern\x12-\n\x12required_modifiers\x18\x01 \x03(\x0e\x32\x11.iterm2.Modifiers\x12.\n\x13\x66orbidden_modifiers\x18\x02 \x03(\x0e\x32\x11.iterm2.Modifiers\x12\x10\n\x08keycodes\x18\x03 \x03(\x05\x12\x12\n\ncharacters\x18\x04 \x03(\t\x12%\n\x1d\x63haracters_ignoring_modifiers\x18\x05 \x03(\t\"e\n\x17KeystrokeMonitorRequest\x12\x38\n\x12patterns_to_ignore\x18\x01 \x03(\x0b\x32\x18.iterm2.KeystrokePatternB\x02\x18\x01\x12\x10\n\x08\x61\x64vanced\x18\x02 \x01(\x08\"N\n\x16KeystrokeFilterRequest\x12\x34\n\x12patterns_to_ignore\x18\x01 \x03(\x0b\x32\x18.iterm2.KeystrokePattern\"`\n\x16VariableMonitorRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x05scope\x18\x02 \x01(\x0e\x32\x15.iterm2.VariableScope\x12\x12\n\nidentifier\x18\x03 \x01(\t\"$\n\x14ProfileChangeRequest\x12\x0c\n\x04guid\x18\x01 \x01(\t\"@\n\x14PromptMonitorRequest\x12(\n\x05modes\x18\x01 \x03(\x0e\x32\x19.iterm2.PromptMonitorMode\"\x8d\x04\n\x13NotificationRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x11\n\tsubscribe\x18\x02 \x01(\x08\x12\x33\n\x11notification_type\x18\x03 \x01(\x0e\x32\x18.iterm2.NotificationType\x12\x42\n\x18rpc_registration_request\x18\x04 \x01(\x0b\x32\x1e.iterm2.RPCRegistrationRequestH\x00\x12\x44\n\x19keystroke_monitor_request\x18\x05 \x01(\x0b\x32\x1f.iterm2.KeystrokeMonitorRequestH\x00\x12\x42\n\x18variable_monitor_request\x18\x06 \x01(\x0b\x32\x1e.iterm2.VariableMonitorRequestH\x00\x12>\n\x16profile_change_request\x18\x07 \x01(\x0b\x32\x1c.iterm2.ProfileChangeRequestH\x00\x12\x42\n\x18keystroke_filter_request\x18\x08 \x01(\x0b\x32\x1e.iterm2.KeystrokeFilterRequestH\x00\x12>\n\x16prompt_monitor_request\x18\t \x01(\x0b\x32\x1c.iterm2.PromptMonitorRequestH\x00\x42\x0b\n\targuments\"\xf5\x01\n\x14NotificationResponse\x12\x33\n\x06status\x18\x01 \x01(\x0e\x32#.iterm2.NotificationResponse.Status\"\xa7\x01\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x12\n\x0eNOT_SUBSCRIBED\x10\x03\x12\x16\n\x12\x41LREADY_SUBSCRIBED\x10\x04\x12#\n\x1f\x44UPLICATE_SERVER_ORIGINATED_RPC\x10\x05\x12\x16\n\x12INVALID_IDENTIFIER\x10\x06\"\xca\x07\n\x0cNotification\x12=\n\x16keystroke_notification\x18\x01 \x01(\x0b\x32\x1d.iterm2.KeystrokeNotification\x12\x44\n\x1ascreen_update_notification\x18\x02 \x01(\x0b\x32 .iterm2.ScreenUpdateNotification\x12\x37\n\x13prompt_notification\x18\x03 \x01(\x0b\x32\x1a.iterm2.PromptNotification\x12L\n\x1clocation_change_notification\x18\x04 \x01(\x0b\x32\".iterm2.LocationChangeNotificationB\x02\x18\x01\x12U\n#custom_escape_sequence_notification\x18\x05 \x01(\x0b\x32(.iterm2.CustomEscapeSequenceNotification\x12@\n\x18new_session_notification\x18\x06 \x01(\x0b\x32\x1e.iterm2.NewSessionNotification\x12L\n\x1eterminate_session_notification\x18\x07 \x01(\x0b\x32$.iterm2.TerminateSessionNotification\x12\x46\n\x1blayout_changed_notification\x18\x08 \x01(\x0b\x32!.iterm2.LayoutChangedNotification\x12\x44\n\x1a\x66ocus_changed_notification\x18\t \x01(\x0b\x32 .iterm2.FocusChangedNotification\x12S\n\"server_originated_rpc_notification\x18\n \x01(\x0b\x32\'.iterm2.ServerOriginatedRPCNotification\x12N\n\x19\x62roadcast_domains_changed\x18\x0b \x01(\x0b\x32+.iterm2.BroadcastDomainsChangedNotification\x12J\n\x1dvariable_changed_notification\x18\x0c \x01(\x0b\x32#.iterm2.VariableChangedNotification\x12H\n\x1cprofile_changed_notification\x18\r \x01(\x0b\x32\".iterm2.ProfileChangedNotification\"*\n\x1aProfileChangedNotification\x12\x0c\n\x04guid\x18\x01 \x01(\t\"}\n\x1bVariableChangedNotification\x12$\n\x05scope\x18\x01 \x01(\x0e\x32\x15.iterm2.VariableScope\x12\x12\n\nidentifier\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x16\n\x0ejson_new_value\x18\x04 \x01(\t\"Y\n#BroadcastDomainsChangedNotification\x12\x32\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32\x17.iterm2.BroadcastDomain\"\x90\x01\n\x13ServerOriginatedRPC\x12\x0c\n\x04name\x18\x02 \x01(\t\x12:\n\targuments\x18\x03 \x03(\x0b\x32\'.iterm2.ServerOriginatedRPC.RPCArgument\x1a/\n\x0bRPCArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\"_\n\x1fServerOriginatedRPCNotification\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12(\n\x03rpc\x18\x02 \x01(\x0b\x32\x1b.iterm2.ServerOriginatedRPC\"\x85\x02\n\x15KeystrokeNotification\x12\x12\n\ncharacters\x18\x01 \x01(\t\x12#\n\x1b\x63haractersIgnoringModifiers\x18\x02 \x01(\t\x12$\n\tmodifiers\x18\x03 \x03(\x0e\x32\x11.iterm2.Modifiers\x12\x0f\n\x07keyCode\x18\x04 \x01(\x05\x12\x0f\n\x07session\x18\x05 \x01(\t\x12\x34\n\x06\x61\x63tion\x18\x06 \x01(\x0e\x32$.iterm2.KeystrokeNotification.Action\"5\n\x06\x41\x63tion\x12\x0c\n\x08KEY_DOWN\x10\x00\x12\n\n\x06KEY_UP\x10\x01\x12\x11\n\rFLAGS_CHANGED\x10\x02\"+\n\x18ScreenUpdateNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\"Z\n\x18PromptNotificationPrompt\x12\x13\n\x0bplaceholder\x18\x01 \x01(\t\x12)\n\x06prompt\x18\x02 \x01(\x0b\x32\x19.iterm2.GetPromptResponse\"1\n\x1ePromptNotificationCommandStart\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\".\n\x1cPromptNotificationCommandEnd\x12\x0e\n\x06status\x18\x01 \x01(\x05\"\xfa\x01\n\x12PromptNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x32\n\x06prompt\x18\x02 \x01(\x0b\x32 .iterm2.PromptNotificationPromptH\x00\x12?\n\rcommand_start\x18\x03 \x01(\x0b\x32&.iterm2.PromptNotificationCommandStartH\x00\x12;\n\x0b\x63ommand_end\x18\x04 \x01(\x0b\x32$.iterm2.PromptNotificationCommandEndH\x00\x12\x18\n\x10unique_prompt_id\x18\x05 \x01(\tB\x07\n\x05\x65vent\"f\n\x1aLocationChangeNotification\x12\x11\n\thost_name\x18\x01 \x01(\t\x12\x11\n\tuser_name\x18\x02 \x01(\t\x12\x11\n\tdirectory\x18\x03 \x01(\t\x12\x0f\n\x07session\x18\x04 \x01(\t\"]\n CustomEscapeSequenceNotification\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x17\n\x0fsender_identity\x18\x02 \x01(\t\x12\x0f\n\x07payload\x18\x03 \x01(\t\",\n\x16NewSessionNotification\x12\x12\n\nsession_id\x18\x01 \x01(\t\"\x84\x03\n\x18\x46ocusChangedNotification\x12\x1c\n\x12\x61pplication_active\x18\x01 \x01(\x08H\x00\x12\x39\n\x06window\x18\x02 \x01(\x0b\x32\'.iterm2.FocusChangedNotification.WindowH\x00\x12\x16\n\x0cselected_tab\x18\x03 \x01(\tH\x00\x12\x11\n\x07session\x18\x04 \x01(\tH\x00\x1a\xda\x01\n\x06Window\x12K\n\rwindow_status\x18\x01 \x01(\x0e\x32\x34.iterm2.FocusChangedNotification.Window.WindowStatus\x12\x11\n\twindow_id\x18\x02 \x01(\t\"p\n\x0cWindowStatus\x12\x1e\n\x1aTERMINAL_WINDOW_BECAME_KEY\x10\x00\x12\x1e\n\x1aTERMINAL_WINDOW_IS_CURRENT\x10\x01\x12 \n\x1cTERMINAL_WINDOW_RESIGNED_KEY\x10\x02\x42\x07\n\x05\x65vent\"2\n\x1cTerminateSessionNotification\x12\x12\n\nsession_id\x18\x01 \x01(\t\"Y\n\x19LayoutChangedNotification\x12<\n\x16list_sessions_response\x18\x01 \x01(\x0b\x32\x1c.iterm2.ListSessionsResponse\"b\n\x10GetBufferRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12%\n\nline_range\x18\x02 \x01(\x0b\x32\x11.iterm2.LineRange\x12\x16\n\x0einclude_styles\x18\x03 \x01(\x08\"\xe8\x02\n\x11GetBufferResponse\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.GetBufferResponse.Status:\x02OK\x12 \n\x05range\x18\x02 \x01(\x0b\x32\r.iterm2.RangeB\x02\x18\x01\x12&\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x14.iterm2.LineContents\x12\x1d\n\x06\x63ursor\x18\x04 \x01(\x0b\x32\r.iterm2.Coord\x12\"\n\x16num_lines_above_screen\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x38\n\x14windowed_coord_range\x18\x06 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x16\n\x12INVALID_LINE_RANGE\x10\x02\x12\x15\n\x11REQUEST_MALFORMED\x10\x03\"$\n\x11ScreenshotRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\"\xac\x01\n\x12ScreenshotResponse\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32!.iterm2.ScreenshotResponse.Status:\x02OK\x12\x0b\n\x03png\x18\x02 \x01(\x0c\"R\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\"=\n\x10GetPromptRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x18\n\x10unique_prompt_id\x18\x02 \x01(\t\"\x93\x04\n\x11GetPromptResponse\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.GetPromptResponse.Status:\x02OK\x12(\n\x0cprompt_range\x18\x02 \x01(\x0b\x32\x12.iterm2.CoordRange\x12)\n\rcommand_range\x18\x03 \x01(\x0b\x32\x12.iterm2.CoordRange\x12(\n\x0coutput_range\x18\x04 \x01(\x0b\x32\x12.iterm2.CoordRange\x12\x19\n\x11working_directory\x18\x05 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x06 \x01(\t\x12\x35\n\x0cprompt_state\x18\x07 \x01(\x0e\x32\x1f.iterm2.GetPromptResponse.State\x12\x13\n\x0b\x65xit_status\x18\t \x01(\r\x12\x18\n\x10unique_prompt_id\x18\n \x01(\t\x12.\n\x12\x65xcluded_subranges\x18\x0b \x03(\x0b\x32\x12.iterm2.CoordRange\"V\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x16\n\x12PROMPT_UNAVAILABLE\x10\x03\"/\n\x05State\x12\x0b\n\x07\x45\x44ITING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\x0c\n\x08\x46INISHED\x10\x02\"V\n\x12ListPromptsRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x17\n\x0f\x66irst_unique_id\x18\x02 \x01(\t\x12\x16\n\x0elast_unique_id\x18\x03 \x01(\t\"\x90\x01\n\x13ListPromptsResponse\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.ListPromptsResponse.Status:\x02OK\x12\x18\n\x10unique_prompt_id\x18\x02 \x03(\t\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\":\n\x19GetProfilePropertyRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\"2\n\x0fProfileProperty\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\t\"\xd3\x01\n\x1aGetProfilePropertyResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.GetProfilePropertyResponse.Status:\x02OK\x12+\n\nproperties\x18\x03 \x03(\x0b\x32\x17.iterm2.ProfileProperty\"I\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\t\n\x05\x45RROR\x10\x03\"\xa7\x02\n\x19SetProfilePropertyRequest\x12\x11\n\x07session\x18\x01 \x01(\tH\x00\x12?\n\tguid_list\x18\x02 \x01(\x0b\x32*.iterm2.SetProfilePropertyRequest.GuidListH\x00\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x12\n\njson_value\x18\x04 \x01(\t\x12\x41\n\x0b\x61ssignments\x18\x05 \x03(\x0b\x32,.iterm2.SetProfilePropertyRequest.Assignment\x1a\x19\n\x08GuidList\x12\r\n\x05guids\x18\x01 \x03(\t\x1a-\n\nAssignment\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\njson_value\x18\x02 \x01(\tB\x08\n\x06target\"\xa9\x01\n\x1aSetProfilePropertyResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32).iterm2.SetProfilePropertyResponse.Status:\x02OK\"L\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x15\n\x11REQUEST_MALFORMED\x10\x02\x12\x0c\n\x08\x42\x41\x44_GUID\x10\x03\"#\n\x12TransactionRequest\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x08\"\x8f\x01\n\x13TransactionResponse\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\".iterm2.TransactionResponse.Status:\x02OK\"@\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0eNO_TRANSACTION\x10\x01\x12\x1a\n\x16\x41LREADY_IN_TRANSACTION\x10\x02\"{\n\tLineRange\x12\x1c\n\x14screen_contents_only\x18\x01 \x01(\x08\x12\x16\n\x0etrailing_lines\x18\x02 \x01(\x05\x12\x38\n\x14windowed_coord_range\x18\x03 \x01(\x0b\x32\x1a.iterm2.WindowedCoordRange\")\n\x05Range\x12\x10\n\x08location\x18\x01 \x01(\x03\x12\x0e\n\x06length\x18\x02 \x01(\x03\"F\n\nCoordRange\x12\x1c\n\x05start\x18\x01 \x01(\x0b\x32\r.iterm2.Coord\x12\x1a\n\x03\x65nd\x18\x02 \x01(\x0b\x32\r.iterm2.Coord\"\x1d\n\x05\x43oord\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x03\"4\n\x08RGBColor\x12\x0b\n\x03red\x18\x01 \x01(\r\x12\r\n\x05green\x18\x02 \x01(\r\x12\x0c\n\x04\x62lue\x18\x03 \x01(\r\"&\n\x03URL\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nidentifier\x18\x02 \x01(\t\"\xe1\x04\n\tCellStyle\x12\x14\n\nfgStandard\x18\x01 \x01(\rH\x00\x12-\n\x0b\x66gAlternate\x18\x02 \x01(\x0e\x32\x16.iterm2.AlternateColorH\x00\x12!\n\x05\x66gRgb\x18\x03 \x01(\x0b\x32\x10.iterm2.RGBColorH\x00\x12\x1f\n\x15\x66gAlternatePlacementX\x18\x04 \x01(\rH\x00\x12\x14\n\nbgStandard\x18\x05 \x01(\rH\x01\x12-\n\x0b\x62gAlternate\x18\x06 \x01(\x0e\x32\x16.iterm2.AlternateColorH\x01\x12!\n\x05\x62gRgb\x18\x07 \x01(\x0b\x32\x10.iterm2.RGBColorH\x01\x12\x1f\n\x15\x62gAlternatePlacementY\x18\x08 \x01(\rH\x01\x12\x0c\n\x04\x62old\x18\t \x01(\x08\x12\r\n\x05\x66\x61int\x18\n \x01(\x08\x12\x0e\n\x06italic\x18\x0b \x01(\x08\x12\r\n\x05\x62link\x18\x0c \x01(\x08\x12\x11\n\tunderline\x18\r \x01(\x08\x12\x15\n\rstrikethrough\x18\x0e \x01(\x08\x12\x11\n\tinvisible\x18\x0f \x01(\x08\x12\x0f\n\x07inverse\x18\x10 \x01(\x08\x12\x0f\n\x07guarded\x18\x11 \x01(\x08\x12+\n\x05image\x18\x12 \x01(\x0e\x32\x1c.iterm2.ImagePlaceholderType\x12(\n\x0eunderlineColor\x18\x13 \x01(\x0b\x32\x10.iterm2.RGBColor\x12\x0f\n\x07\x62lockID\x18\x14 \x01(\t\x12\x18\n\x03url\x18\x15 \x01(\x0b\x32\x0b.iterm2.URL\x12\x0f\n\x07repeats\x18\x16 \x01(\rB\t\n\x07\x66gColorB\t\n\x07\x62gColor\"\x8d\x02\n\x0cLineContents\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x37\n\x14\x63ode_points_per_cell\x18\x02 \x03(\x0b\x32\x19.iterm2.CodePointsPerCell\x12N\n\x0c\x63ontinuation\x18\x03 \x01(\x0e\x32!.iterm2.LineContents.Continuation:\x15\x43ONTINUATION_HARD_EOL\x12 \n\x05style\x18\x04 \x03(\x0b\x32\x11.iterm2.CellStyle\"D\n\x0c\x43ontinuation\x12\x19\n\x15\x43ONTINUATION_HARD_EOL\x10\x01\x12\x19\n\x15\x43ONTINUATION_SOFT_EOL\x10\x02\"@\n\x11\x43odePointsPerCell\x12\x1a\n\x0fnum_code_points\x18\x01 \x01(\x05:\x01\x31\x12\x0f\n\x07repeats\x18\x02 \x01(\x05\"\x15\n\x13ListSessionsRequest\"L\n\x0fSendTextRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x1a\n\x12suppress_broadcast\x18\x03 \x01(\x08\"l\n\x10SendTextResponse\x12/\n\x06status\x18\x01 \x01(\x0e\x32\x1f.iterm2.SendTextResponse.Status\"\'\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\"%\n\x04Size\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"B\n\x05\x46rame\x12\x1d\n\x06origin\x18\x01 \x01(\x0b\x32\r.iterm2.Point\x12\x1a\n\x04size\x18\x02 \x01(\x0b\x32\x0c.iterm2.Size\"y\n\x0eSessionSummary\x12\x19\n\x11unique_identifier\x18\x01 \x01(\t\x12\x1c\n\x05\x66rame\x18\x02 \x01(\x0b\x32\r.iterm2.Frame\x12\x1f\n\tgrid_size\x18\x03 \x01(\x0b\x32\x0c.iterm2.Size\x12\r\n\x05title\x18\x04 \x01(\t\"\xc1\x01\n\rSplitTreeNode\x12\x10\n\x08vertical\x18\x01 \x01(\x08\x12\x32\n\x05links\x18\x02 \x03(\x0b\x32#.iterm2.SplitTreeNode.SplitTreeLink\x1aj\n\rSplitTreeLink\x12)\n\x07session\x18\x01 \x01(\x0b\x32\x16.iterm2.SessionSummaryH\x00\x12%\n\x04node\x18\x02 \x01(\x0b\x32\x15.iterm2.SplitTreeNodeH\x00\x42\x07\n\x05\x63hild\"\xb6\x04\n\x14ListSessionsResponse\x12\x34\n\x07windows\x18\x01 \x03(\x0b\x32#.iterm2.ListSessionsResponse.Window\x12/\n\x0f\x62uried_sessions\x18\x02 \x03(\x0b\x32\x16.iterm2.SessionSummary\x1a\x92\x01\n\x06Window\x12.\n\x04tabs\x18\x01 \x03(\x0b\x32 .iterm2.ListSessionsResponse.Tab\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x1c\n\x05\x66rame\x18\x03 \x01(\x0b\x32\r.iterm2.Frame\x12\x0e\n\x06number\x18\x04 \x01(\x05\x12\x17\n\x0fselected_tab_id\x18\x05 \x01(\t\x1a\xa1\x02\n\x03Tab\x12#\n\x04root\x18\x03 \x01(\x0b\x32\x15.iterm2.SplitTreeNode\x12\x0e\n\x06tab_id\x18\x02 \x01(\t\x12\x16\n\x0etmux_window_id\x18\x04 \x01(\t\x12\x1a\n\x12tmux_connection_id\x18\x05 \x01(\t\x12\x32\n\x12minimized_sessions\x18\x06 \x03(\x0b\x32\x16.iterm2.SessionSummary\x12\x19\n\x11\x61\x63tive_session_id\x18\x07 \x01(\t\x12\x14\n\x0ctab_group_id\x18\x08 \x01(\t\x12\x16\n\x0etab_group_name\x18\t \x01(\t\x12\x17\n\x0ftab_group_color\x18\n \x01(\t\x12\x1b\n\x13tab_group_collapsed\x18\x0b \x01(\x08\"\xb3\x01\n\x10\x43reateTabRequest\x12\x14\n\x0cprofile_name\x18\x01 \x01(\t\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x11\n\ttab_index\x18\x03 \x01(\r\x12\x13\n\x07\x63ommand\x18\x04 \x01(\tB\x02\x18\x01\x12:\n\x19\x63ustom_profile_properties\x18\x05 \x03(\x0b\x32\x17.iterm2.ProfileProperty\x12\x12\n\nselect_tab\x18\x06 \x01(\x08\"\xf0\x01\n\x11\x43reateTabResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.CreateTabResponse.Status\x12\x11\n\twindow_id\x18\x02 \x01(\t\x12\x0e\n\x06tab_id\x18\x03 \x01(\x05\x12\x12\n\nsession_id\x18\x04 \x01(\t\"r\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x18\n\x14INVALID_PROFILE_NAME\x10\x01\x12\x15\n\x11INVALID_WINDOW_ID\x10\x02\x12\x15\n\x11INVALID_TAB_INDEX\x10\x03\x12\x18\n\x14MISSING_SUBSTITUTION\x10\x04\"\xfe\x01\n\x10SplitPaneRequest\x12\x0f\n\x07session\x18\x01 \x01(\t\x12@\n\x0fsplit_direction\x18\x02 \x01(\x0e\x32\'.iterm2.SplitPaneRequest.SplitDirection\x12\x15\n\x06\x62\x65\x66ore\x18\x03 \x01(\x08:\x05\x66\x61lse\x12\x14\n\x0cprofile_name\x18\x04 \x01(\t\x12:\n\x19\x63ustom_profile_properties\x18\x05 \x03(\x0b\x32\x17.iterm2.ProfileProperty\".\n\x0eSplitDirection\x12\x0c\n\x08VERTICAL\x10\x00\x12\x0e\n\nHORIZONTAL\x10\x01\"\xd5\x01\n\x11SplitPaneResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32 .iterm2.SplitPaneResponse.Status\x12\x12\n\nsession_id\x18\x02 \x03(\t\"z\n\x06Status\x12\x06\n\x02OK\x10\x00\x12\x15\n\x11SESSION_NOT_FOUND\x10\x01\x12\x18\n\x14INVALID_PROFILE_NAME\x10\x02\x12\x10\n\x0c\x43\x41NNOT_SPLIT\x10\x03\x12%\n!MALFORMED_CUSTOM_PROFILE_PROPERTY\x10\x04*V\n\rSelectionMode\x12\r\n\tCHARACTER\x10\x00\x12\x08\n\x04WORD\x10\x01\x12\x08\n\x04LINE\x10\x02\x12\t\n\x05SMART\x10\x03\x12\x07\n\x03\x42OX\x10\x04\x12\x0e\n\nWHOLE_LINE\x10\x05*\xb4\x03\n\x10NotificationType\x12\x17\n\x13NOTIFY_ON_KEYSTROKE\x10\x01\x12\x1b\n\x17NOTIFY_ON_SCREEN_UPDATE\x10\x02\x12\x14\n\x10NOTIFY_ON_PROMPT\x10\x03\x12!\n\x19NOTIFY_ON_LOCATION_CHANGE\x10\x04\x1a\x02\x08\x01\x12$\n NOTIFY_ON_CUSTOM_ESCAPE_SEQUENCE\x10\x05\x12\x1d\n\x19NOTIFY_ON_VARIABLE_CHANGE\x10\x0c\x12\x14\n\x10KEYSTROKE_FILTER\x10\x0e\x12\x19\n\x15NOTIFY_ON_NEW_SESSION\x10\x06\x12\x1f\n\x1bNOTIFY_ON_TERMINATE_SESSION\x10\x07\x12\x1b\n\x17NOTIFY_ON_LAYOUT_CHANGE\x10\x08\x12\x1a\n\x16NOTIFY_ON_FOCUS_CHANGE\x10\t\x12#\n\x1fNOTIFY_ON_SERVER_ORIGINATED_RPC\x10\n\x12\x1e\n\x1aNOTIFY_ON_BROADCAST_CHANGE\x10\x0b\x12\x1c\n\x18NOTIFY_ON_PROFILE_CHANGE\x10\r*V\n\tModifiers\x12\x0b\n\x07\x43ONTROL\x10\x01\x12\n\n\x06OPTION\x10\x02\x12\x0b\n\x07\x43OMMAND\x10\x03\x12\t\n\x05SHIFT\x10\x04\x12\x0c\n\x08\x46UNCTION\x10\x05\x12\n\n\x06NUMPAD\x10\x06*:\n\rVariableScope\x12\x0b\n\x07SESSION\x10\x01\x12\x07\n\x03TAB\x10\x02\x12\n\n\x06WINDOW\x10\x03\x12\x07\n\x03\x41PP\x10\x04*C\n\x11PromptMonitorMode\x12\n\n\x06PROMPT\x10\x01\x12\x11\n\rCOMMAND_START\x10\x02\x12\x0f\n\x0b\x43OMMAND_END\x10\x03*G\n\x0e\x41lternateColor\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x14\n\x10REVERSED_DEFAULT\x10\x03\x12\x12\n\x0eSYSTEM_MESSAGE\x10\x04*7\n\x14ImagePlaceholderType\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06ITERM2\x10\x01\x12\t\n\x05KITTY\x10\x02\x42\x06\xa2\x02\x03ITM')
17
17
 
18
18
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
19
19
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'api_pb2', globals())
@@ -35,20 +35,20 @@ if _descriptor._USE_C_DESCRIPTORS == False:
35
35
  _GETBUFFERRESPONSE.fields_by_name['num_lines_above_screen']._serialized_options = b'\030\001'
36
36
  _CREATETABREQUEST.fields_by_name['command']._options = None
37
37
  _CREATETABREQUEST.fields_by_name['command']._serialized_options = b'\030\001'
38
- _SELECTIONMODE._serialized_start=26464
39
- _SELECTIONMODE._serialized_end=26550
40
- _NOTIFICATIONTYPE._serialized_start=26553
41
- _NOTIFICATIONTYPE._serialized_end=26989
42
- _MODIFIERS._serialized_start=26991
43
- _MODIFIERS._serialized_end=27077
44
- _VARIABLESCOPE._serialized_start=27079
45
- _VARIABLESCOPE._serialized_end=27137
46
- _PROMPTMONITORMODE._serialized_start=27139
47
- _PROMPTMONITORMODE._serialized_end=27206
48
- _ALTERNATECOLOR._serialized_start=27208
49
- _ALTERNATECOLOR._serialized_end=27279
50
- _IMAGEPLACEHOLDERTYPE._serialized_start=27281
51
- _IMAGEPLACEHOLDERTYPE._serialized_end=27336
38
+ _SELECTIONMODE._serialized_start=26617
39
+ _SELECTIONMODE._serialized_end=26703
40
+ _NOTIFICATIONTYPE._serialized_start=26706
41
+ _NOTIFICATIONTYPE._serialized_end=27142
42
+ _MODIFIERS._serialized_start=27144
43
+ _MODIFIERS._serialized_end=27230
44
+ _VARIABLESCOPE._serialized_start=27232
45
+ _VARIABLESCOPE._serialized_end=27290
46
+ _PROMPTMONITORMODE._serialized_start=27292
47
+ _PROMPTMONITORMODE._serialized_end=27359
48
+ _ALTERNATECOLOR._serialized_start=27361
49
+ _ALTERNATECOLOR._serialized_end=27432
50
+ _IMAGEPLACEHOLDERTYPE._serialized_start=27434
51
+ _IMAGEPLACEHOLDERTYPE._serialized_end=27489
52
52
  _CLIENTORIGINATEDMESSAGE._serialized_start=22
53
53
  _CLIENTORIGINATEDMESSAGE._serialized_end=2217
54
54
  _SERVERORIGINATEDMESSAGE._serialized_start=2220
@@ -460,23 +460,23 @@ if _descriptor._USE_C_DESCRIPTORS == False:
460
460
  _SPLITTREENODE_SPLITTREELINK._serialized_start=25042
461
461
  _SPLITTREENODE_SPLITTREELINK._serialized_end=25148
462
462
  _LISTSESSIONSRESPONSE._serialized_start=25151
463
- _LISTSESSIONSRESPONSE._serialized_end=25564
464
- _LISTSESSIONSRESPONSE_WINDOW._serialized_start=25278
465
- _LISTSESSIONSRESPONSE_WINDOW._serialized_end=25399
466
- _LISTSESSIONSRESPONSE_TAB._serialized_start=25402
467
- _LISTSESSIONSRESPONSE_TAB._serialized_end=25564
468
- _CREATETABREQUEST._serialized_start=25567
469
- _CREATETABREQUEST._serialized_end=25746
470
- _CREATETABRESPONSE._serialized_start=25749
471
- _CREATETABRESPONSE._serialized_end=25989
472
- _CREATETABRESPONSE_STATUS._serialized_start=25875
473
- _CREATETABRESPONSE_STATUS._serialized_end=25989
474
- _SPLITPANEREQUEST._serialized_start=25992
475
- _SPLITPANEREQUEST._serialized_end=26246
476
- _SPLITPANEREQUEST_SPLITDIRECTION._serialized_start=26200
477
- _SPLITPANEREQUEST_SPLITDIRECTION._serialized_end=26246
478
- _SPLITPANERESPONSE._serialized_start=26249
479
- _SPLITPANERESPONSE._serialized_end=26462
480
- _SPLITPANERESPONSE_STATUS._serialized_start=26340
481
- _SPLITPANERESPONSE_STATUS._serialized_end=26462
463
+ _LISTSESSIONSRESPONSE._serialized_end=25717
464
+ _LISTSESSIONSRESPONSE_WINDOW._serialized_start=25279
465
+ _LISTSESSIONSRESPONSE_WINDOW._serialized_end=25425
466
+ _LISTSESSIONSRESPONSE_TAB._serialized_start=25428
467
+ _LISTSESSIONSRESPONSE_TAB._serialized_end=25717
468
+ _CREATETABREQUEST._serialized_start=25720
469
+ _CREATETABREQUEST._serialized_end=25899
470
+ _CREATETABRESPONSE._serialized_start=25902
471
+ _CREATETABRESPONSE._serialized_end=26142
472
+ _CREATETABRESPONSE_STATUS._serialized_start=26028
473
+ _CREATETABRESPONSE_STATUS._serialized_end=26142
474
+ _SPLITPANEREQUEST._serialized_start=26145
475
+ _SPLITPANEREQUEST._serialized_end=26399
476
+ _SPLITPANEREQUEST_SPLITDIRECTION._serialized_start=26353
477
+ _SPLITPANEREQUEST_SPLITDIRECTION._serialized_end=26399
478
+ _SPLITPANERESPONSE._serialized_start=26402
479
+ _SPLITPANERESPONSE._serialized_end=26615
480
+ _SPLITPANERESPONSE_STATUS._serialized_start=26493
481
+ _SPLITPANERESPONSE_STATUS._serialized_end=26615
482
482
  # @@protoc_insertion_point(module_scope)
@@ -5450,8 +5450,13 @@ class ListSessionsResponse(_message.Message):
5450
5450
  WINDOW_ID_FIELD_NUMBER: _builtins.int
5451
5451
  FRAME_FIELD_NUMBER: _builtins.int
5452
5452
  NUMBER_FIELD_NUMBER: _builtins.int
5453
+ SELECTED_TAB_ID_FIELD_NUMBER: _builtins.int
5453
5454
  window_id: _builtins.str
5454
5455
  number: _builtins.int
5456
+ selected_tab_id: _builtins.str
5457
+ """uniqueId of the selected tab, so clients can determine the current tab
5458
+ without waiting for a focus notification. Added in protocol 1.18.
5459
+ """
5455
5460
  @_builtins.property
5456
5461
  def tabs(self) -> _containers.RepeatedCompositeFieldContainer[Global___ListSessionsResponse.Tab]: ...
5457
5462
  @_builtins.property
@@ -5463,10 +5468,11 @@ class ListSessionsResponse(_message.Message):
5463
5468
  window_id: _builtins.str | None = ...,
5464
5469
  frame: Global___Frame | None = ...,
5465
5470
  number: _builtins.int | None = ...,
5471
+ selected_tab_id: _builtins.str | None = ...,
5466
5472
  ) -> None: ...
5467
- _HasFieldArgType: _TypeAlias = _typing.Literal["frame", b"frame", "number", b"number", "window_id", b"window_id"] # noqa: Y015
5473
+ _HasFieldArgType: _TypeAlias = _typing.Literal["frame", b"frame", "number", b"number", "selected_tab_id", b"selected_tab_id", "window_id", b"window_id"] # noqa: Y015
5468
5474
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
5469
- _ClearFieldArgType: _TypeAlias = _typing.Literal["frame", b"frame", "number", b"number", "tabs", b"tabs", "window_id", b"window_id"] # noqa: Y015
5475
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["frame", b"frame", "number", b"number", "selected_tab_id", b"selected_tab_id", "tabs", b"tabs", "window_id", b"window_id"] # noqa: Y015
5470
5476
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
5471
5477
  def WhichOneof(self, oneof_group: _Never) -> None: ...
5472
5478
 
@@ -5479,9 +5485,29 @@ class ListSessionsResponse(_message.Message):
5479
5485
  TMUX_WINDOW_ID_FIELD_NUMBER: _builtins.int
5480
5486
  TMUX_CONNECTION_ID_FIELD_NUMBER: _builtins.int
5481
5487
  MINIMIZED_SESSIONS_FIELD_NUMBER: _builtins.int
5488
+ ACTIVE_SESSION_ID_FIELD_NUMBER: _builtins.int
5489
+ TAB_GROUP_ID_FIELD_NUMBER: _builtins.int
5490
+ TAB_GROUP_NAME_FIELD_NUMBER: _builtins.int
5491
+ TAB_GROUP_COLOR_FIELD_NUMBER: _builtins.int
5492
+ TAB_GROUP_COLLAPSED_FIELD_NUMBER: _builtins.int
5482
5493
  tab_id: _builtins.str
5483
5494
  tmux_window_id: _builtins.str
5484
5495
  tmux_connection_id: _builtins.str
5496
+ active_session_id: _builtins.str
5497
+ """guid of the tab's active session, so clients can determine the current
5498
+ session without waiting for a focus notification. Added in protocol 1.18.
5499
+ """
5500
+ tab_group_id: _builtins.str
5501
+ """Tab group membership. A tab group's identity is a UUID that rides on each
5502
+ member tab (there is no central registry); all members of a group carry
5503
+ the same name/color/collapsed values. tab_group_id is unset when the tab
5504
+ belongs to no group; the other three are meaningful only when it is set.
5505
+ The color is a hex string as produced by -[NSColor hexStringPreservingColorSpace]
5506
+ ("#rrggbb" for sRGB, "p3#rrggbbrrggbb" for Display P3). Added in protocol 1.19.
5507
+ """
5508
+ tab_group_name: _builtins.str
5509
+ tab_group_color: _builtins.str
5510
+ tab_group_collapsed: _builtins.bool
5485
5511
  @_builtins.property
5486
5512
  def root(self) -> Global___SplitTreeNode: ...
5487
5513
  @_builtins.property
@@ -5494,10 +5520,15 @@ class ListSessionsResponse(_message.Message):
5494
5520
  tmux_window_id: _builtins.str | None = ...,
5495
5521
  tmux_connection_id: _builtins.str | None = ...,
5496
5522
  minimized_sessions: _abc.Iterable[Global___SessionSummary] | None = ...,
5523
+ active_session_id: _builtins.str | None = ...,
5524
+ tab_group_id: _builtins.str | None = ...,
5525
+ tab_group_name: _builtins.str | None = ...,
5526
+ tab_group_color: _builtins.str | None = ...,
5527
+ tab_group_collapsed: _builtins.bool | None = ...,
5497
5528
  ) -> None: ...
5498
- _HasFieldArgType: _TypeAlias = _typing.Literal["root", b"root", "tab_id", b"tab_id", "tmux_connection_id", b"tmux_connection_id", "tmux_window_id", b"tmux_window_id"] # noqa: Y015
5529
+ _HasFieldArgType: _TypeAlias = _typing.Literal["active_session_id", b"active_session_id", "root", b"root", "tab_group_collapsed", b"tab_group_collapsed", "tab_group_color", b"tab_group_color", "tab_group_id", b"tab_group_id", "tab_group_name", b"tab_group_name", "tab_id", b"tab_id", "tmux_connection_id", b"tmux_connection_id", "tmux_window_id", b"tmux_window_id"] # noqa: Y015
5499
5530
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
5500
- _ClearFieldArgType: _TypeAlias = _typing.Literal["minimized_sessions", b"minimized_sessions", "root", b"root", "tab_id", b"tab_id", "tmux_connection_id", b"tmux_connection_id", "tmux_window_id", b"tmux_window_id"] # noqa: Y015
5531
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["active_session_id", b"active_session_id", "minimized_sessions", b"minimized_sessions", "root", b"root", "tab_group_collapsed", b"tab_group_collapsed", "tab_group_color", b"tab_group_color", "tab_group_id", b"tab_group_id", "tab_group_name", b"tab_group_name", "tab_id", b"tab_id", "tmux_connection_id", b"tmux_connection_id", "tmux_window_id", b"tmux_window_id"] # noqa: Y015
5501
5532
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
5502
5533
  def WhichOneof(self, oneof_group: _Never) -> None: ...
5503
5534
 
@@ -227,3 +227,14 @@ def check_supports_screenshot(connection):
227
227
  raise AppVersionTooOld(
228
228
  "This version of iTerm2 is too old to capture screenshots via " +
229
229
  "the Python API. You should upgrade to run this script.")
230
+
231
+ def supports_tab_groups(connection):
232
+ """Can you discover and modify tab groups?"""
233
+ min_ver = (1, 19)
234
+ return ge(connection.iterm2_protocol_version, min_ver)
235
+
236
+ def check_supports_tab_groups(connection):
237
+ if not supports_tab_groups(connection):
238
+ raise AppVersionTooOld(
239
+ "This version of iTerm2 is too old to control tab groups via " +
240
+ "the Python API. You should upgrade to run this script.")
@@ -865,14 +865,8 @@ async def async_invoke_function(
865
865
  return await _async_call(connection, request)
866
866
 
867
867
 
868
- async def async_invoke_method(connection, receiver, invocation, timeout):
869
- """Convenience wrapper around async_invoke_function for methods."""
870
- assert receiver
871
- response = await iterm2.rpc.async_invoke_function(
872
- connection,
873
- invocation,
874
- receiver=receiver,
875
- timeout=timeout)
868
+ def _invocation_result(response):
869
+ """Unwraps an invoke-function response, raising RPCException on error."""
876
870
  which = response.invoke_function_response.WhichOneof('disposition')
877
871
  if which == 'error':
878
872
  if (response.invoke_function_response.error.status ==
@@ -884,6 +878,26 @@ async def async_invoke_method(connection, receiver, invocation, timeout):
884
878
  response.invoke_function_response.error.error_reason))
885
879
  return json.loads(response.invoke_function_response.success.json_result)
886
880
 
881
+
882
+ async def async_invoke_method(connection, receiver, invocation, timeout):
883
+ """Convenience wrapper around async_invoke_function for methods."""
884
+ assert receiver
885
+ response = await iterm2.rpc.async_invoke_function(
886
+ connection,
887
+ invocation,
888
+ receiver=receiver,
889
+ timeout=timeout)
890
+ return _invocation_result(response)
891
+
892
+
893
+ async def async_invoke_app_function(connection, invocation, timeout=-1):
894
+ """Convenience wrapper for invoking an app-scope (receiver-less) function."""
895
+ response = await iterm2.rpc.async_invoke_function(
896
+ connection,
897
+ invocation,
898
+ timeout=timeout)
899
+ return _invocation_result(response)
900
+
887
901
  # Private --------------------------------------------------------------------
888
902
 
889
903
 
@@ -6,8 +6,10 @@ import typing
6
6
 
7
7
  import iterm2.api_pb2
8
8
  import iterm2.capabilities
9
+ import iterm2.color
9
10
  import iterm2.rpc
10
11
  import iterm2.session
12
+ import iterm2.tabgroup
11
13
  import iterm2.util
12
14
 
13
15
 
@@ -51,7 +53,11 @@ class Tab:
51
53
  root,
52
54
  tmux_window_id=None,
53
55
  tmux_connection_id=None,
54
- minimized_sessions=[]):
56
+ minimized_sessions=[],
57
+ tab_group_id=None,
58
+ tab_group_name=None,
59
+ tab_group_color=None,
60
+ tab_group_collapsed=False):
55
61
  self.connection = connection
56
62
  self.__tab_id = tab_id
57
63
  self.__root = root
@@ -59,6 +65,10 @@ class Tab:
59
65
  self.__tmux_window_id = tmux_window_id
60
66
  self.__tmux_connection_id = tmux_connection_id
61
67
  self.__minimized_sessions = list(minimized_sessions)
68
+ self.__tab_group_id = tab_group_id
69
+ self.__tab_group_name = tab_group_name
70
+ self.__tab_group_color = tab_group_color
71
+ self.__tab_group_collapsed = tab_group_collapsed
62
72
  # pylint: enable=too-many-arguments
63
73
 
64
74
  def __repr__(self):
@@ -76,6 +86,12 @@ class Tab:
76
86
  """Copies state from another tab into this one."""
77
87
  self.__root = other.root
78
88
  self.__minimized_sessions = list(other.minimized_sessions)
89
+ # pylint: disable=protected-access
90
+ self.__tab_group_id = other._Tab__tab_group_id
91
+ self.__tab_group_name = other._Tab__tab_group_name
92
+ self.__tab_group_color = other._Tab__tab_group_color
93
+ self.__tab_group_collapsed = other._Tab__tab_group_collapsed
94
+ # pylint: enable=protected-access
79
95
 
80
96
  def update_session(self, session):
81
97
  """Replaces references to a session."""
@@ -93,6 +109,28 @@ class Tab:
93
109
  assert self.__class__.delegate
94
110
  return self.__class__.delegate.tab_delegate_get_window(self)
95
111
 
112
+ @property
113
+ def tab_group(self) -> typing.Optional['iterm2.tabgroup.TabGroup']:
114
+ """
115
+ The tab group this tab belongs to, or `None` if it is not in a group.
116
+
117
+ A tab group is a named, colored collection of adjacent tabs. Its members
118
+ are always kept consecutive in the tab bar; iTerm2 reorders tabs as
119
+ needed to maintain that invariant.
120
+
121
+ :returns: A :class:`~iterm2.tabgroup.TabGroup` or `None`.
122
+ """
123
+ if not self.__tab_group_id:
124
+ return None
125
+ color = iterm2.color.Color.from_hex(self.__tab_group_color) if (
126
+ self.__tab_group_color) else None
127
+ return iterm2.tabgroup.TabGroup(
128
+ self.connection,
129
+ self.__tab_group_id,
130
+ self.__tab_group_name or "",
131
+ color,
132
+ self.__tab_group_collapsed)
133
+
96
134
  @property
97
135
  def tmux_connection_id(self):
98
136
  """Returns the connection ID."""
@@ -380,3 +418,51 @@ class Tab:
380
418
  raise iterm2.rpc.RPCException(
381
419
  "No such window {}".format(window_id))
382
420
  return window
421
+
422
+ async def async_add_to_tab_group(
423
+ self, group: 'iterm2.tabgroup.TabGroup') -> None:
424
+ """
425
+ Adds this tab to an existing tab group.
426
+
427
+ If the tab already belonged to a different group, it is moved out of
428
+ that group and into this one. iTerm2 reorders tabs so the group's
429
+ members remain consecutive.
430
+
431
+ The group must be in the same window as this tab.
432
+
433
+ :param group: The :class:`~iterm2.tabgroup.TabGroup` to join.
434
+
435
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong (for
436
+ example, if the group is not in this tab's window).
437
+ """
438
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
439
+ window = self.window
440
+ if window is None:
441
+ raise iterm2.rpc.RPCException(
442
+ "Tab {} is not in a window".format(self.tab_id))
443
+ invocation = iterm2.util.invocation_string(
444
+ "iterm2.add_tab_to_group",
445
+ {"tab_id": self.tab_id, "group_id": group.group_id})
446
+ await iterm2.rpc.async_invoke_method(
447
+ self.connection, window.window_id, invocation, -1)
448
+
449
+ async def async_remove_from_tab_group(self) -> None:
450
+ """
451
+ Removes this tab from its tab group, if any.
452
+
453
+ iTerm2 moves the tab out of the group so the remaining members stay
454
+ consecutive. If the tab was the group's only member, the group is
455
+ dissolved. This is a no-op if the tab is not in a group.
456
+
457
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong.
458
+ """
459
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
460
+ window = self.window
461
+ if window is None:
462
+ raise iterm2.rpc.RPCException(
463
+ "Tab {} is not in a window".format(self.tab_id))
464
+ invocation = iterm2.util.invocation_string(
465
+ "iterm2.remove_tab_from_group",
466
+ {"tab_id": self.tab_id})
467
+ await iterm2.rpc.async_invoke_method(
468
+ self.connection, window.window_id, invocation, -1)
@@ -0,0 +1,131 @@
1
+ """Provides a class that represents an iTerm2 tab group."""
2
+ import typing
3
+
4
+ import iterm2.capabilities
5
+ import iterm2.color
6
+ import iterm2.rpc
7
+ import iterm2.util
8
+
9
+
10
+ class TabGroup:
11
+ """Represents a tab group.
12
+
13
+ A tab group is a named, colored collection of adjacent tabs in a window.
14
+ Its members are always kept consecutive in the tab bar: iTerm2 reorders
15
+ tabs as needed to maintain that invariant when membership changes.
16
+
17
+ Don't create this yourself. Instead, get one from :attr:`iterm2.Tab.tab_group`
18
+ or :attr:`iterm2.Window.tab_groups`, or create one with
19
+ :meth:`iterm2.Window.async_create_tab_group`.
20
+
21
+ The `name`, `color`, and `collapsed` values reflect the state at the time
22
+ this object was fetched. After a mutation, re-fetch the app to observe the
23
+ updated state.
24
+ """
25
+
26
+ def __init__(
27
+ self,
28
+ connection,
29
+ group_id: str,
30
+ name: str,
31
+ color: typing.Optional[iterm2.color.Color],
32
+ collapsed: bool):
33
+ self.connection = connection
34
+ self.__group_id = group_id
35
+ self.__name = name
36
+ self.__color = color
37
+ self.__collapsed = collapsed
38
+
39
+ def __repr__(self):
40
+ return "<TabGroup id=%s name=%s>" % (self.__group_id, repr(self.__name))
41
+
42
+ def __eq__(self, other):
43
+ if not isinstance(other, TabGroup):
44
+ return NotImplemented
45
+ return self.__group_id == other.group_id
46
+
47
+ def __hash__(self):
48
+ return hash(self.__group_id)
49
+
50
+ @property
51
+ def group_id(self) -> str:
52
+ """
53
+ A tab group's unique identifier.
54
+
55
+ The identity is stable: it travels with the group's tabs, even if they
56
+ are dragged to another window.
57
+
58
+ :returns: The group's identifier, a string.
59
+ """
60
+ return self.__group_id
61
+
62
+ @property
63
+ def name(self) -> str:
64
+ """
65
+ :returns: The group's name, as shown in its tab-bar chip.
66
+ """
67
+ return self.__name
68
+
69
+ @property
70
+ def color(self) -> typing.Optional[iterm2.color.Color]:
71
+ """
72
+ :returns: The group's color, or `None` if it has none.
73
+ """
74
+ return self.__color
75
+
76
+ @property
77
+ def collapsed(self) -> bool:
78
+ """
79
+ :returns: Whether the group is collapsed (its members hidden in the tab
80
+ bar).
81
+ """
82
+ return self.__collapsed
83
+
84
+ async def async_set_name(self, name: str) -> None:
85
+ """
86
+ Renames the group. The new name applies to every member tab.
87
+
88
+ :param name: The new name.
89
+
90
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong.
91
+ """
92
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
93
+ invocation = iterm2.util.invocation_string(
94
+ "iterm2.set_tab_group_name",
95
+ {"group_id": self.__group_id, "name": name})
96
+ await iterm2.rpc.async_invoke_app_function(self.connection, invocation)
97
+
98
+ async def async_set_color(self, color: iterm2.color.Color) -> None:
99
+ """
100
+ Changes the group's color. The new color applies to every member tab.
101
+
102
+ :param color: The new color.
103
+
104
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong.
105
+ """
106
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
107
+ invocation = iterm2.util.invocation_string(
108
+ "iterm2.set_tab_group_color",
109
+ {"group_id": self.__group_id, "color": color.hex})
110
+ await iterm2.rpc.async_invoke_app_function(self.connection, invocation)
111
+
112
+ async def async_set_collapsed(self, collapsed: bool) -> bool:
113
+ """
114
+ Collapses or expands the group.
115
+
116
+ Collapsing hides the group's members in the tab bar. It can be refused
117
+ when the group comprises the entire window (there would be no tab left
118
+ to select), in which case this returns `False`.
119
+
120
+ :param collapsed: `True` to collapse, `False` to expand.
121
+
122
+ :returns: The group's collapsed state after the change.
123
+
124
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong.
125
+ """
126
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
127
+ invocation = iterm2.util.invocation_string(
128
+ "iterm2.set_tab_group_collapsed",
129
+ {"group_id": self.__group_id, "collapsed": 1 if collapsed else 0})
130
+ return await iterm2.rpc.async_invoke_app_function(
131
+ self.connection, invocation)
@@ -5,11 +5,14 @@ import typing
5
5
 
6
6
  import iterm2.api_pb2
7
7
  import iterm2.arrangement
8
+ import iterm2.capabilities
9
+ import iterm2.color
8
10
  import iterm2.connection
9
11
  import iterm2.profile
10
12
  import iterm2.rpc
11
13
  import iterm2.session
12
14
  import iterm2.tab
15
+ import iterm2.tabgroup
13
16
  import iterm2.transaction
14
17
  import iterm2.util
15
18
 
@@ -149,24 +152,40 @@ class Window:
149
152
  minimized_sessions = [
150
153
  iterm2.session.Session(connection, None, summary)
151
154
  for summary in (tab.minimized_sessions or [])]
152
- tabs.append(
153
- iterm2.tab.Tab(
154
- connection,
155
- tab.tab_id,
156
- root,
157
- tmux_window_id,
158
- tab.tmux_connection_id,
159
- minimized_sessions))
155
+ new_tab = iterm2.tab.Tab(
156
+ connection,
157
+ tab.tab_id,
158
+ root,
159
+ tmux_window_id,
160
+ tab.tmux_connection_id,
161
+ minimized_sessions,
162
+ tab.tab_group_id if tab.HasField("tab_group_id") else None,
163
+ tab.tab_group_name if tab.HasField("tab_group_name") else None,
164
+ tab.tab_group_color if tab.HasField("tab_group_color") else None,
165
+ tab.tab_group_collapsed if tab.HasField(
166
+ "tab_group_collapsed") else None)
167
+ # protocol 1.18+ reports the active session here, so current_session
168
+ # is correct straight from a list-sessions refresh without waiting
169
+ # for a focus notification. Older servers leave it unset.
170
+ if tab.HasField("active_session_id"):
171
+ new_tab.active_session_id = tab.active_session_id
172
+ tabs.append(new_tab)
160
173
 
161
174
  if not tabs:
162
175
  return None
163
176
 
164
- return iterm2.window.Window(
177
+ new_window = iterm2.window.Window(
165
178
  connection,
166
179
  window.window_id,
167
180
  tabs,
168
181
  window.frame,
169
182
  window.number)
183
+ # protocol 1.18+ reports the selected tab here, so current_tab is
184
+ # correct straight from a list-sessions refresh without waiting for a
185
+ # focus notification. Older servers leave it unset.
186
+ if window.HasField("selected_tab_id"):
187
+ new_window.selected_tab_id = window.selected_tab_id
188
+ return new_window
170
189
 
171
190
  # pylint: disable=too-many-arguments
172
191
  def __init__(self, connection, window_id, tabs, frame, number):
@@ -255,6 +274,61 @@ class Window:
255
274
  self.connection,
256
275
  assignments=[(self.window_id, tab_ids)])
257
276
 
277
+ @property
278
+ def tab_groups(self) -> typing.List[iterm2.tabgroup.TabGroup]:
279
+ """
280
+ The distinct tab groups in this window, in tab order.
281
+
282
+ A tab group is a named, colored collection of adjacent tabs.
283
+
284
+ :returns: A list of :class:`~iterm2.tabgroup.TabGroup`.
285
+ """
286
+ result: typing.List[iterm2.tabgroup.TabGroup] = []
287
+ seen: typing.Set[str] = set()
288
+ for tab in self.__tabs:
289
+ group = tab.tab_group
290
+ if group is None or group.group_id in seen:
291
+ continue
292
+ seen.add(group.group_id)
293
+ result.append(group)
294
+ return result
295
+
296
+ async def async_create_tab_group(
297
+ self,
298
+ name: str,
299
+ tabs: typing.List[iterm2.tab.Tab],
300
+ color: typing.Optional[iterm2.color.Color] = None) -> (
301
+ iterm2.tabgroup.TabGroup):
302
+ """
303
+ Creates a new tab group from the given tabs.
304
+
305
+ All tabs must belong to this window. A tab already in another group is
306
+ moved into the new one. iTerm2 reorders tabs so the new group's members
307
+ are consecutive.
308
+
309
+ :param name: The name for the new group.
310
+ :param tabs: The tabs to place in the group. Must be non-empty and all
311
+ in this window.
312
+ :param color: The group's color, or `None` to have iTerm2 pick one.
313
+
314
+ :returns: The newly created :class:`~iterm2.tabgroup.TabGroup`. Its
315
+ `color` is `None` when iTerm2 picked one automatically; re-fetch the
316
+ app to observe the assigned color.
317
+
318
+ :throws: :class:`~iterm2.rpc.RPCException` if something goes wrong (for
319
+ example, if a tab is not in this window).
320
+ """
321
+ iterm2.capabilities.check_supports_tab_groups(self.connection)
322
+ invocation = iterm2.util.invocation_string(
323
+ "iterm2.create_tab_group",
324
+ {"tab_ids": list(map(lambda tab: tab.tab_id, tabs)),
325
+ "name": name,
326
+ "color": color.hex if color else ""})
327
+ group_id = await iterm2.rpc.async_invoke_method(
328
+ self.connection, self.__window_id, invocation, -1)
329
+ return iterm2.tabgroup.TabGroup(
330
+ self.connection, group_id, name, color, False)
331
+
258
332
  @property
259
333
  def current_tab(self) -> typing.Optional[iterm2.tab.Tab]:
260
334
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iterm2
3
- Version: 2.22
3
+ Version: 2.24
4
4
  Summary: Python interface to iTerm2's scripting API
5
5
  Home-page: http://github.com/gnachman/iTerm2
6
6
  Author: George Nachman
@@ -33,6 +33,7 @@ iterm2/selection.py
33
33
  iterm2/session.py
34
34
  iterm2/statusbar.py
35
35
  iterm2/tab.py
36
+ iterm2/tabgroup.py
36
37
  iterm2/tmux.py
37
38
  iterm2/tool.py
38
39
  iterm2/transaction.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes