{"id":37178342,"url":"https://github.com/mlflexer/resurrect.wezterm","last_synced_at":"2026-01-14T20:47:01.658Z","repository":{"id":250559496,"uuid":"825938245","full_name":"MLFlexer/resurrect.wezterm","owner":"MLFlexer","description":"A plugin to restore windows, tabs and panes for Wezterm inspired by tmux-resurrect","archived":false,"fork":false,"pushed_at":"2025-07-04T14:24:04.000Z","size":355,"stargazers_count":215,"open_issues_count":26,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-27T18:36:56.789Z","etag":null,"topics":["layout","panes","plugin","restore","resurrect","resurrection","save","session","state","tabs","tmux","tmux-resurrect","wezterm","wezterm-plugin","windows","workspace"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MLFlexer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-08T19:48:17.000Z","updated_at":"2025-09-22T20:11:57.000Z","dependencies_parsed_at":"2024-09-07T09:37:28.369Z","dependency_job_id":"556fbeae-1242-4715-9ec2-94b1c804e623","html_url":"https://github.com/MLFlexer/resurrect.wezterm","commit_stats":null,"previous_names":["mlflexer/resurrect.wezterm"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/MLFlexer/resurrect.wezterm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MLFlexer%2Fresurrect.wezterm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MLFlexer%2Fresurrect.wezterm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MLFlexer%2Fresurrect.wezterm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MLFlexer%2Fresurrect.wezterm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MLFlexer","download_url":"https://codeload.github.com/MLFlexer/resurrect.wezterm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MLFlexer%2Fresurrect.wezterm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["layout","panes","plugin","restore","resurrect","resurrection","save","session","state","tabs","tmux","tmux-resurrect","wezterm","wezterm-plugin","windows","workspace"],"created_at":"2026-01-14T20:47:00.970Z","updated_at":"2026-01-14T20:47:01.648Z","avatar_url":"https://github.com/MLFlexer.png","language":"Lua","readme":"# resurrect.wezterm\n\nResurrect your terminal environment!⚰️ A plugin to save the state of your windows, tabs and panes. Inspired by [tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect) and [tmux-continuum](https://github.com/tmux-plugins/tmux-continuum).\n\n![Screencastfrom2024-07-2918-50-57-ezgif com-resize](https://github.com/user-attachments/assets/640aefea-793c-486d-9579-1a9c8bb4c1fa)\n\n## Features\n\n- Restore your windows, tabs and panes with the layout and text from a saved state.\n- Restore shell output from a saved session.\n- Save the state of your current window, with every window, tab and pane state stored in a `json` file.\n- Restore the save from a `json` file.\n- Re-attach to remote domains (e.g. SSH, SSHMUX, WSL, Docker, ect.).\n- Optionally enable encryption and decryption of the saved state.\n\n## Setup example\n\n1. Require the plugin:\n\n```lua\nlocal wezterm = require(\"wezterm\")\nlocal resurrect = wezterm.plugin.require(\"https://github.com/MLFlexer/resurrect.wezterm\")\n```\n\n2. Saving workspace, window and/or tab state based on name and title:\n\n```lua\nlocal resurrect = wezterm.plugin.require(\"https://github.com/MLFlexer/resurrect.wezterm\")\n\nconfig.keys = {\n  -- ...\n  {\n    key = \"w\",\n    mods = \"ALT\",\n    action = wezterm.action_callback(function(win, pane)\n        resurrect.state_manager.save_state(resurrect.workspace_state.get_workspace_state())\n      end),\n  },\n  {\n    key = \"W\",\n    mods = \"ALT\",\n    action = resurrect.window_state.save_window_action(),\n  },\n  {\n    key = \"T\",\n    mods = \"ALT\",\n    action = resurrect.tab_state.save_tab_action(),\n  },\n  {\n    key = \"s\",\n    mods = \"ALT\",\n    action = wezterm.action_callback(function(win, pane)\n        resurrect.state_manager.save_state(resurrect.workspace_state.get_workspace_state())\n        resurrect.window_state.save_window_action()\n      end),\n  },\n}\n```\n\n3. Loading workspace or window state via. fuzzy finder:\n\n```lua\nlocal resurrect = wezterm.plugin.require(\"https://github.com/MLFlexer/resurrect.wezterm\")\n\nconfig.keys = {\n  -- ...\n  {\n    key = \"r\",\n    mods = \"ALT\",\n    action = wezterm.action_callback(function(win, pane)\n      resurrect.fuzzy_loader.fuzzy_load(win, pane, function(id, label)\n        local type = string.match(id, \"^([^/]+)\") -- match before '/'\n        id = string.match(id, \"([^/]+)$\") -- match after '/'\n        id = string.match(id, \"(.+)%..+$\") -- remove file extention\n        local opts = {\n          relative = true,\n          restore_text = true,\n          on_pane_restore = resurrect.tab_state.default_on_pane_restore,\n        }\n        if type == \"workspace\" then\n          local state = resurrect.state_manager.load_state(id, \"workspace\")\n          resurrect.workspace_state.restore_workspace(state, opts)\n        elseif type == \"window\" then\n          local state = resurrect.state_manager.load_state(id, \"window\")\n          resurrect.window_state.restore_window(pane:window(), state, opts)\n        elseif type == \"tab\" then\n          local state = resurrect.state_manager.load_state(id, \"tab\")\n          resurrect.tab_state.restore_tab(pane:tab(), state, opts)\n        end\n      end)\n    end),\n  },\n}\n```\n\n4. Optional, enable encryption (recommended):\n   You can optionally configure the plugin to encrypt and decrypt the saved state. [age](https://github.com/FiloSottile/age) is the default encryption provider. [Rage](https://github.com/str4d/rage) and [GnuPG](https://gnupg.org/) encryption are also supported.\n\n4.1. Install `age` and generate a key with:\n\n```sh\n$ age-keygen -o key.txt\nPublic key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p\n```\n\n\u003e [!NOTE]\n\u003e If you prefer to use [GnuPG](https://gnupg.org/), generate a key pair: `gpg --full-generate-key`. Get the public key with `gpg --armor --export your_email@example.com`.\n\u003e The private key is your email or key ID associated with the gpg key.\n\n4.2. Enable encryption in your Wezterm config:\n\n```lua\nlocal resurrect = wezterm.plugin.require(\"https://github.com/MLFlexer/resurrect.wezterm\")\nresurrect.state_manager.set_encryption({\n  enable = true,\n  method = \"age\" -- \"age\" is the default encryption method, but you can also specify \"rage\" or \"gpg\"\n  private_key = \"/path/to/private/key.txt\", -- if using \"gpg\", you can omit this\n  public_key = \"age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p\",\n})\n```\n\n\u003e [!WARNING]\n\u003e FOR WINDOWS USERS\n\u003e\n\u003e Due to Windows limitations with `stdin`, errors cannot be returned from the `encrypt` function.\n\n\u003e [!TIP]\n\u003e If the encryption provider is not found in your PATH (common issue for GUI apps on Mac OS), you can specify the absolute path to the executable.\n\u003e e.g. `method = \"/opt/homebrew/bin/age\"`\n\nAlternate implementations are possible by providing your own `encrypt` and `decrypt` functions:\n\n```lua\nresurrect.state_manager.set_encryption({\n  enable = true,\n  private_key = \"/path/to/private/key.txt\",\n  public_key = \"public_key\",\n  encrypt = function(file_path, lines)\n    -- substitute for your encryption command\n    local cmd = string.format(\n      \"%s -r %s -o %s\",\n      pub.encryption.method,\n      pub.encryption.public_key,\n      file_path:gsub(\" \", \"\\\\ \")\n    )\n\n    local success, output = execute_cmd_with_stdin(cmd, lines)\n    if not success then\n      error(\"Encryption failed:\" .. output)\n    end\n  end,\n  decrypt = function(file_path)\n    -- substitute for your decryption command\n    local cmd = { pub.encryption.method, \"-d\", \"-i\", pub.encryption.private_key, file_path }\n\n    local success, stdout, stderr = wezterm.run_child_process(cmd)\n    if not success then\n      error(\"Decryption failed: \" .. stderr)\n    end\n\n    return stdout\n  end,\n})\n```\n\nIf you wish to share a non-documented way of encrypting your files or think something is missing, then please make a PR or file an issue.\n\n## How do I use it?\n\nI use the builtin `resurrect.state_manager.periodic_save()` to save my workspaces every 15 minutes.\nThis ensures that if I close Wezterm, then I can restore my session state to a state which is at most 15 minutes old.\n\nI also use it to restore the state of my workspaces. As I use the plugin [smart_workspace_switcher.wezterm](https://github.com/MLFlexer/smart_workspace_switcher.wezterm),\nto change workspaces whenever I change \"project\" (git repository).\nI have added the following to my configuration to be able to do this whenever I change workspaces:\n\n```lua\n-- loads the state whenever I create a new workspace\nwezterm.on(\"smart_workspace_switcher.workspace_switcher.created\", function(window, path, label)\n  local workspace_state = resurrect.workspace_state\n\n  workspace_state.restore_workspace(resurrect.state_manager.load_state(label, \"workspace\"), {\n    window = window,\n    relative = true,\n    restore_text = true,\n    on_pane_restore = resurrect.tab_state.default_on_pane_restore,\n  })\nend)\n\n-- Saves the state whenever I select a workspace\nwezterm.on(\"smart_workspace_switcher.workspace_switcher.selected\", function(window, path, label)\n  local workspace_state = resurrect.workspace_state\n  resurrect.state_manager.save_state(workspace_state.get_workspace_state())\nend)\n```\n\nYou can checkout my configuration [here](https://github.com/MLFlexer/.dotfiles/tree/main/home-manager/config/wezterm).\n\n## Configuration\n\n### Periodic saving of state\n\n`resurrect.state_manager.periodic_save(opts?)` will save the workspace state every 15 minutes by default.\nYou can add the `opts` table to change the behaviour. It exposes the following options:\n\n```lua\n---@param opts? { interval_seconds: integer?, save_workspaces: boolean?, save_windows: boolean?, save_tabs: boolean? }\n```\n\n`interval_seconds` will save the state every time the supplied number of seconds has surpassed.\n`save_workspaces` will save workspaces if true otherwise not.\n`save_windows` will save windows if true otherwise not.\n`save_tabs` will save tabs if true otherwise not.\n\n### Resurrecting on startup\n\nYou can resume from where you left off by resurrecting on startup with\nthe following addition to your config:\n\n```lua\nwezterm.on(\"gui-startup\", resurrect.state_manager.resurrect_on_gui_startup)\n```\n\nThis will read a file which has been written by the\n`resurrect.state_manager.write_current_state(\"workspace name\", \"workspace\")` function.\n\n\u003e [!NOTE]\n\u003e For this to work, you must include a way to write the current workspace,\n\u003e be it via. the `resurrect.state_manager.periodic_save` event or when changing workspaces.\n\n### Limiting the amount of output lines saved for a pane\n\n`resurrect.state_manager.set_max_nlines(number)` will limit each pane to save\nat most `number` lines to the state.\nThis can improve performance when saving and loading state.\n\n### save_state options\n\n`resurrect.state_manager.save_state(state, opt_name?)` takes an optional string argument,\nwhich will rename the file to the name of the string.\n\n### restore_opts\n\nOptions for restoring state:\n\n```lua\n{spawn_in_workspace: boolean?, -- Restores in the workspace\nrelative: boolean?, -- Use relative size when restoring panes\nabsolute: boolean?, -- Use absolute size when restoring panes\nclose_open_tabs: boolean?, -- Closes all tabs which are open in the window, only restored tabs are left\nclose_open_panes: boolean?, -- Closes all panes which are open in the tab, only keeping the panes to be restored\npane: Pane?, -- Restore in this window\ntab: MuxTab?, -- Restore in this window\nwindow: MuxWindow, -- Restore in this window\nresize_window: boolean?, -- Resizes the window, default: true\non_pane_restore: fun(pane_tree: pane_tree)} -- Function to restore panes, use resurrect.tab_state.default_on_pane_restore\n```\n\n#### Windows not resizing correctly\n\nSome users has had problems with `window_decorations` and `window_padding`\nconfiguration options, which caused issues when resizing, see [comment](https://github.com/MLFlexer/resurrect.wezterm/issues/72#issuecomment-2582912347).\nTo avoid this, set the `resize_window` to false.\n\n### Restoring into the current window\n\nTo restore a window state into the current window use the `restore_window`\nfunction with `restore_opts` containing the window and `close_open_tabs` like so:\n\n```lua\nlocal opts = {\n  close_open_tabs = true,\n  window = pane:window(),\n  on_pane_restore = resurrect.tab_state.default_on_pane_restore,\n  relative = true,\n  restore_text = true,\n}\nresurrect.window_state.restore_window(pane:window(), state, opts)\n```\n\nThis will restore the state into the passed window and additionally close all\nthe tabs in the window, such that only the restored tabs are visible after restoring.\n\n### fuzzy_load opts\n\nthe `resurrect.fuzzy_loader.fuzzy_load(window, pane, callback, opts?)` function takes an\noptional `opts` argument, which has the following types:\n\n```lua\n---@alias fmt_fun fun(label: string): string\n---@alias fuzzy_load_opts {\n  title: string, -- dialog title, default: \"Load state\"\n  description: string, -- description, default: \"Select State to Load and press Enter = accept, Esc = cancel, / = filter\"\n  fuzzy_description: string, -- description in fyzzy search mode, default: \"Search State to Load: \"\n  is_fuzzy: boolean, -- enter directly in fuzzy mode, default: true\n  ignore_workspaces: boolean, -- does not show workspaces, default: false\n  ignore_tabs: boolean, -- does not show tabs, default: false\n  ignore_windows: boolean, -- does not show windows, default: false\n  fmt_window: fmt_fun, -- format function for window state name (wezterm.format)\n  fmt_workspace: fmt_fun, -- format function for workspace state name\n  fmt_tab: fmt_fun, -- format function for tab state name\n  fmt_date: fmt_fun, -- format function for date\n  show_state_with_date: boolean, -- show last update of the state file, default: false\n  date_format: string, -- date formatting, default: \"%d-%m-%Y %H:%M:%S\"\n  ignore_screen_width: boolean, -- whether or not to shrink the list if the window is too narrow, default: true\n  name_truncature: string, -- when state name is truncated, this string replaces the truncation\n  min_filename_size: number -- minimum size of state name in case of truncation\n}\n```\n\nThis is used to format labels, ignore saved state, change the title and change the behaviour of the fuzzy finder.\n\n### Change the directory to store the saved state\n\n```lua\nresurrect.state_manager.change_state_save_dir(\"/some/other/directory\")\n```\n\n\u003e [!WARNING]\n\u003e FOR WINDOWS USERS\n\u003e\n\u003e You must ensure that there is write access to the directory where the state is stored,\n\u003e as such it is suggested that you set your own state directory like so:\n\u003e\n\u003e ```lua\n\u003e -- Set some directory where Wezterm has write access\n\u003e resurrect.state_manager.change_state_save_dir(\"C:\\\\Users\\\\\u003cuser\u003e\\\\Desktop\\\\state\\\\\")\n\u003e ```\n\n### Events\n\nThis plugin emits the following events that you can use for your own callback functions:\n\n- `resurrect.error(err)`\n- `resurrect.file_io.decrypt.finished(file_path)`\n- `resurrect.file_io.decrypt.start(file_path)`\n- `resurrect.file_io.encrypt.finished(file_path)`\n- `resurrect.file_io.encrypt.start(file_path)`\n- `resurrect.file_io.sanitize_json.finished(data)`\n- `resurrect.file_io.sanitize_json.start(data)`\n- `resurrect.fuzzy_loader.fuzzy_load.finished(window, pane)`\n- `resurrect.fuzzy_loader.fuzzy_load.start(window, pane)`\n- `resurrect.state_manager.delete_state.finished(file_path)`\n- `resurrect.state_manager.delete_state.start(file_path)`\n- `resurrect.state_manager.load_state.finished(name, type)`\n- `resurrect.state_manager.load_state.start(name, type)`\n- `resurrect.state_manager.periodic_save.start(opts)`\n- `resurrect.state_manager.periodic_save.finished(opts)`\n- `resurrect.file_io.write_state.finished(file_path, event_type)`\n- `resurrect.file_io.write_state.start(file_path, event_type)`\n- `resurrect.tab_state.restore_tab.finished`\n- `resurrect.tab_state.restore_tab.start`\n- `resurrect.window_state.restore_window.finished`\n- `resurrect.window_state.restore_window.start`\n- `resurrect.workspace_state.restore_workspace.finished`\n- `resurrect.workspace_state.restore_workspace.start`\n\nExample: sending a toast notification when specified events occur, but suppress on `periodic_save()`:\n\n```lua\nlocal resurrect_event_listeners = {\n  \"resurrect.error\",\n  \"resurrect.state_manager.save_state.finished\",\n}\nlocal is_periodic_save = false\nwezterm.on(\"resurrect.periodic_save\", function()\n  is_periodic_save = true\nend)\nfor _, event in ipairs(resurrect_event_listeners) do\n  wezterm.on(event, function(...)\n    if event == \"resurrect.state_manager.save_state.finished\" and is_periodic_save then\n      is_periodic_save = false\n      return\n    end\n    local args = { ... }\n    local msg = event\n    for _, v in ipairs(args) do\n      msg = msg .. \" \" .. tostring(v)\n    end\n    wezterm.gui.gui_windows()[1]:toast_notification(\"Wezterm - resurrect\", msg, nil, 4000)\n  end)\nend\n```\n\n## State files\n\nState files are json files, which will be decoded into lua tables.\nThis can be used to create your own layout files which can then be loaded.\nHere is an example of a json file:\n\n```json\n{\n   \"window_states\":[\n      {\n         \"size\":{\n            \"cols\":191,\n            \"dpi\":96,\n            \"pixel_height\":1000,\n            \"pixel_width\":1910,\n            \"rows\":50\n         },\n         \"tabs\":[\n            {\n               \"is_active\":true,\n               \"pane_tree\":{\n                  \"cwd\":\"/home/user/\",\n                  \"domain\": \"SSHMUX:domain\",\n                  \"height\":50,\n                  \"index\":0,\n                  \"is_active\":true,\n                  \"is_zoomed\":false,\n                  \"left\":0,\n                  \"pixel_height\":1000,\n                  \"pixel_width\":1910,\n                  \"process\":\"/bin/bash\", -- value is empty if attached to a remote domain\n                  \"text\":\"Some text\", -- not saved if attached to a remote domain, see https://github.com/MLFlexer/resurrect.wezterm/issues/41\n                  \"top\":0,\n                  \"width\":191\n               },\n               \"title\":\"tab_title\"\n            }\n         ],\n         \"title\":\"window_title\"\n      }\n   ],\n   \"workspace\":\"workspace_name\"\n}\n```\n\n### Delete a saved state file via. fuzzy finder\n\nYou can use the fuzzy finder to delete a saved state file by adding a keybind to your config:\n\n```lua\nlocal resurrect = wezterm.plugin.require(\"https://github.com/MLFlexer/resurrect.wezterm\")\n\nconfig.keys = {\n  -- ...\n  {\n    key = \"d\",\n    mods = \"ALT\",\n    action = wezterm.action_callback(function(win, pane)\n      resurrect.fuzzy_loader.fuzzy_load(win, pane, function(id)\n          resurrect.state_manager.delete_state(id)\n        end,\n        {\n          title = \"Delete State\",\n          description = \"Select State to Delete and press Enter = accept, Esc = cancel, / = filter\",\n          fuzzy_description = \"Search State to Delete: \",\n          is_fuzzy = true,\n        })\n    end),\n  },\n}\n```\n\n## Augmenting the command palette\n\nIf you would like to add entries in your Wezterm command palette for renaming and switching workspaces:\n\n```lua\nlocal workspace_switcher = wezterm.plugin.require(\"https://github.com/MLFlexer/smart_workspace_switcher.wezterm\")\n\nwezterm.on(\"augment-command-palette\", function(window, pane)\n  local workspace_state = resurrect.workspace_state\n  return {\n    {\n      brief = \"Window | Workspace: Switch Workspace\",\n      icon = \"md_briefcase_arrow_up_down\",\n      action = workspace_switcher.switch_workspace(),\n    },\n    {\n      brief = \"Window | Workspace: Rename Workspace\",\n      icon = \"md_briefcase_edit\",\n      action = wezterm.action.PromptInputLine({\n        description = \"Enter new name for workspace\",\n        action = wezterm.action_callback(function(window, pane, line)\n          if line then\n            wezterm.mux.rename_workspace(wezterm.mux.get_active_workspace(), line)\n            resurrect.state_manager.save_state(workspace_state.get_workspace_state())\n          end\n        end),\n      }),\n    },\n  }\nend)\n```\n\n## FAQ\n\n### Pane CWD is not correct on Windows\n\nIf your pane CWD is incorrect then it might be a problem with the shell\nintegration and OSC 7. See [Wezterm documentation](https://wezfurlong.org/wezterm/shell-integration.html).\n\n### How do I keep my plugins up to date?\n\n#### Manually\n\nWezterm git clones your plugins into a plugin directory.\nEnter `wezterm.plugin.list()` in the Wezterm Debug Overlay (`Ctrl + Shift + L`)\nto see where they are stored. You can then update them individually using git pull.\n\n#### Automatically\n\nAdd `wezterm.plugin.update_all()` to your Wezterm config.\n\n## Contributions\n\nSuggestions, Issues and PRs are welcome!\nThe features currently implemented are the ones I use the most, but your\nworkflow might differ. As such, if you have any proposals on how to improve\nthe plugin, then please feel free to make an issue or even better a PR!\n\n### Technical details\n\nRestoring of the panes are done via. the `pane_tree` file,\nwhich has functions to work on a binary-like-tree of the panes.\nEach node in the pane_tree represents a possible split pane.\nIf the pane has a `bottom` and/or `right` child, then the pane is split.\nIf you have any questions to the implementation,\nthen I suggest you read the code or open an issue and I will try to clarify.\nImprovements to this section is also very much welcome.\n\n## Disclaimer\n\nIf you don't setup encryption then the state of your terminal is saved as\nplaintext json files. Please be aware that the plugin will by default write the\noutput of the shell among other things, which could contain secrets or other\nvulnerable data. If you do not want to store this as plaintext, then please use\nthe provided documentation for encrypting state.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlflexer%2Fresurrect.wezterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlflexer%2Fresurrect.wezterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlflexer%2Fresurrect.wezterm/lists"}