{"id":15626386,"url":"https://github.com/dj95/zjstatus","last_synced_at":"2025-05-15T15:04:40.756Z","repository":{"id":191808617,"uuid":"685187099","full_name":"dj95/zjstatus","owner":"dj95","description":"A configurable statusbar plugin for zellij","archived":false,"fork":false,"pushed_at":"2025-05-05T09:05:12.000Z","size":2694,"stargazers_count":630,"open_issues_count":10,"forks_count":15,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-14T22:11:43.419Z","etag":null,"topics":["rust","status-bar","terminal-multiplexer","zellij","zellij-plugin"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/dj95.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2023-08-30T17:37:02.000Z","updated_at":"2025-05-14T19:19:46.000Z","dependencies_parsed_at":"2024-02-04T10:50:10.234Z","dependency_job_id":"2f0e156a-c73e-4889-8751-57b93da4abb8","html_url":"https://github.com/dj95/zjstatus","commit_stats":{"total_commits":253,"total_committers":5,"mean_commits":50.6,"dds":0.03952569169960474,"last_synced_commit":"c74e310c35fb7ec6b59a1c73720db4d6d8e236a1"},"previous_names":["dj95/zjstatus"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dj95%2Fzjstatus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dj95%2Fzjstatus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dj95%2Fzjstatus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dj95%2Fzjstatus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dj95","download_url":"https://codeload.github.com/dj95/zjstatus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254364270,"owners_count":22058878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["rust","status-bar","terminal-multiplexer","zellij","zellij-plugin"],"created_at":"2024-10-03T10:12:16.276Z","updated_at":"2025-05-15T15:04:40.729Z","avatar_url":"https://github.com/dj95.png","language":"Rust","funding_links":[],"categories":["rust","Rust"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003ezjstatus \u0026 zjframes\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A configurable and themable statusbar for zellij.\n  \u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/dj95/zjstatus/actions/workflows/lint.yml\"\u003e\n    \u003cimg alt=\"clippy check\" src=\"https://github.com/dj95/zjstatus/actions/workflows/lint.yml/badge.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/dj95/zjstatus/releases\"\u003e\n    \u003cimg alt=\"latest version\" src=\"https://img.shields.io/github/v/tag/dj95/zjstatus.svg?sort=semver\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/dj95/zjstatus/wiki\"\u003e\n    \u003cimg alt=\"GitHub Wiki\" src=\"https://img.shields.io/badge/documentation-wiki-wiki?logo=github\"\u003e\n  \u003c/a\u003e\n\n  \u003cbr\u003e\u003cbr\u003e\n  The goal of this statusbar is to provide a highly customizable and extensible statusbar for zellij. Single\n  modules can be formatted separately. Due to the widget structure new modules can be created with ease.\n\n  As an addition, this repsitory contains *zjframes* which can be used to toggle pane frames based on different\n  conditions even without loading *zjstatus*, e.g. when using the default status bars.\n\u003c/p\u003e\n\n![Screenshot of the statusbar](./assets/demo.png)\n\n### [👉 Check out and share your awesome configs in the community showcase!](https://github.com/dj95/zjstatus/discussions/44)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eExamples\u003c/h3\u003e\u003c/summary\u003e\n\u003cb\u003e\u003ca href=\"./examples/tmux.kdl\"\u003etmux style\u003c/a\u003e\u003c/b\u003e\n\u003cimg src=\"./examples/tmux.png\" alt=\"tmux style bar\" /\u003e\n\u003cbr\u003e\n\u003cb\u003e\u003ca href=\"./examples/simple.kdl\"\u003esimple style\u003c/a\u003e\u003c/b\u003e\n\u003cimg src=\"./examples/simple.png\" alt=\"simple style bar\" /\u003e\n\u003cbr\u003e\n\u003cb\u003e\u003ca href=\"./examples/slanted.kdl\"\u003eslanted style\u003c/a\u003e\u003c/b\u003e\n\u003cimg src=\"./examples/slanted.png\" alt=\"slanted style bar\" /\u003e\n\u003cbr\u003e\n\u003cb\u003e\u003ca href=\"./examples/swap-layouts.kdl\"\u003eexample for swapping layouts with zjstatus\u003c/a\u003e\u003c/b\u003e\n\u003cimg src=\"./examples/swap-layouts.png\" alt=\"example for swapping layouts with zjstatus\" /\u003e\n\u003cbr\u003e\n\u003cb\u003e\u003ca href=\"./examples/compact.kdl\"\u003ecompact style (thanks to @segaja)\u003c/a\u003e\u003c/b\u003e\n\u003cimg src=\"./examples/compact.png\" alt=\"compact style bar\" /\u003e\n\u003cbr\u003e\n\u003cb\u003e\u003ca href=\"./examples/conky.kdl\"\u003econky status (thanks to @benzwt)\u003c/a\u003e\u003c/b\u003e\n\u003ca href=\"./examples/conky.conf\"\u003econky.conf\u003c/a\u003e\n\u003cimg src=\"./examples/conky.png\" alt=\"conky status\" /\u003e\n\u003cbr\u003e\n\u003cb\u003eDemo GIF\u003c/b\u003e\n\u003cimg src=\"./assets/demo.gif\" alt=\"Demo GIF of zellij with zjstatus\" /\u003e\n\u003c/details\u003e\n\n## 🚀 Installation\n\n\u003e [!TIP]\n\u003e For more detailed instructions, check out the [wiki](https://github.com/dj95/zjstatus/wiki/1-%E2%80%90-Installation)!\n\nDownload the latest binary in the github releases. Place it somewhere, zellij is able to access it. Then the\nplugin can be included by referencing it in a layout file, e.g. the default layout one, or the config file.\n\nIn contrast to *zjstatus*, *zjframes* should only be used in the `load_plugins` option of the *config.kdl*\nfrom zellij, as it should only be loaded in the background. For more details, please follow the [documentation](https://github.com/dj95/zjstatus/wiki/6---zjframes)\n\nYou could also refer to the plugin guide from zellij, after downloading the binary: [https://zellij.dev/documentation/plugin-loading](https://zellij.dev/documentation/plugin-loading)\n\nPlease ensure, that the configuration is correct.\n\n\u003e [!IMPORTANT]\n\u003e In case you experience any crashes or issues, please in the first step try to clear the cache! (`$HOME/.cache/zellij/` for Linux, `$HOME/Library/Caches/org.Zellij-Contributors.Zellij/` on macOS)\n\nSometimes, especially when updating plugins, it might come to caching issues, which can be resolved by clearing it. Please keep in\nmind, that it will also clear the cache for running sessions and revokes granted permissions for plugins.\n\n## ❄️ Installation with nix flake\n\nAdd this repository to your inputs and then with the following overlay to your packages.\nThen you are able to install and refer to it with `pkgs.zjstatus`. When templating the\nconfig file, you can use `${pkgs.zjstatus}/bin/zjstatus.wasm` as the path. `${pkgs.zjstatus}/bin/zjframes.wasm`\nis also available in case you only want to use *zjframes*.\n\n```nix\n  inputs = {\n    # ...\n\n    zjstatus = {\n      url = \"github:dj95/zjstatus\";\n    };\n  };\n\n\n  # define the outputs of this flake - especially the home configurations\n  outputs = { self, nixpkgs, zjstatus, ... }@inputs:\n  let\n    inherit (inputs.nixpkgs.lib) attrValues;\n\n    overlays = with inputs; [\n      # ...\n      (final: prev: {\n        zjstatus = zjstatus.packages.${prev.system}.default;\n      })\n    ];\n```\n\n## ⚙️ Configuration\n\nFor configuring, please follow the [documentation](https://github.com/dj95/zjstatus/wiki/3-%E2%80%90-Configuration).\n\n## 🏎️ Quick Start for zjstatus\n\nPlace the following configuration in your default layout file, e.g. `~/.config/zellij/layouts/default.kdl`. Right after starting zellij, it will prompt for permissions, that needs to be granted in order for zjstatus to work. Simply navigate to the pane or click on it and press `y`. This must be repeated on updates. For more details on permissions, please visit the [wiki](https://github.com/dj95/zjstatus/wiki/2-%E2%80%90-Permissions).\n\n\u003e [!IMPORTANT]\n\u003e Downloading zjstatus as file and using `file:~/path/to/zjstatus.wasm` is recommend, even if the quickstart includes the https location.\n\n\u003e [!IMPORTANT]\n\u003e Using zjstatus involves creating new layouts and overriding the default one. This will lead to swap layouts not working, when they are not configured correctly. Please follow [this documentation](https://github.com/dj95/zjstatus/wiki/3-%E2%80%90-Configuration#swap-layouts) for getting swap layouts back to work, if you need them.\n\n\u003e [!IMPORTANT]\n\u003e If you want to hide borders, please remove the `hide_frame_for_single_pane` option or set it to `false`. Otherwise zjstatus will toggle frame borders even if the are hidden in zellijs config!\n\n```javascript\nlayout {\n    default_tab_template {\n        children\n        pane size=1 borderless=true {\n            plugin location=\"https://github.com/dj95/zjstatus/releases/latest/download/zjstatus.wasm\" {\n                format_left   \"{mode} #[fg=#89B4FA,bold]{session}\"\n                format_center \"{tabs}\"\n                format_right  \"{command_git_branch} {datetime}\"\n                format_space  \"\"\n\n                border_enabled  \"false\"\n                border_char     \"─\"\n                border_format   \"#[fg=#6C7086]{char}\"\n                border_position \"top\"\n\n                hide_frame_for_single_pane \"true\"\n\n                mode_normal  \"#[bg=blue] \"\n                mode_tmux    \"#[bg=#ffc387] \"\n\n                tab_normal   \"#[fg=#6C7086] {name} \"\n                tab_active   \"#[fg=#9399B2,bold,italic] {name} \"\n\n                command_git_branch_command     \"git rev-parse --abbrev-ref HEAD\"\n                command_git_branch_format      \"#[fg=blue] {stdout} \"\n                command_git_branch_interval    \"10\"\n                command_git_branch_rendermode  \"static\"\n\n                datetime        \"#[fg=#6C7086,bold] {format} \"\n                datetime_format \"%A, %d %b %Y %H:%M\"\n                datetime_timezone \"Europe/Berlin\"\n            }\n        }\n    }\n}\n```\n\n## 🏎️ Quickstart for zjframes\n\nAdd the following to the *config.kdl* or add the plugin to `load_plugins`, if you already load other plugins in the background.\nDouble check if the configuration matches your expectations. Then restart zellij.\n\n\u003e [!IMPORTANT]\n\u003e Downloading zjframes as file and using `file:~/path/to/zjframes.wasm` is recommend, even if the quickstart includes the https location.\n\n```javascript\n// Plugins to load in the background when a new session starts\nload_plugins {\n    \"https://github.com/dj95/zjstatus/releases/latest/download/zjframes.wasm\" {\n        hide_frame_for_single_pane       \"true\"\n        hide_frame_except_for_search     \"true\"\n        hide_frame_except_for_scroll     \"true\"\n        hide_frame_except_for_fullscreen \"true\"\n    }\n}\n```\n\n## 🧱 Widgets\n\nThe documentation for the widgets can be found in the [wiki](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets).\n\nThe following widgets are available:\n\n- [command](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#command)\n- [datetime](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#datetime)\n- [mode](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#mode)\n- [notifications](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#notifications)\n- [pipe](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#pipe)\n- [session](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#session)\n- [swap layout](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#swap-layout)\n- [tabs](https://github.com/dj95/zjstatus/wiki/4-%E2%80%90-Widgets#tabs)\n\n## 🚧 Development\n\nMake sure you have rust and the `wasm32-wasi` target installed. If using nix, you could utilize the nix-shell\nin this repo for obtaining `cargo` and `rustup`. Then you'll only need to add the target with\n`rustup target add wasm32-wasi`.\n\nWith the toolchain, simply build `zjstatus` with `cargo build`. Then you are able to run the example configuration\nwith `zellij -l plugin-dev-workspace.kdl` from the root of the repository.\n\n## 🤝 Contributing\n\nIf you are missing features or find some annoying bugs please feel free to submit an issue or a bugfix within a pull request :)\n\n## 📝 License\n\n© 2024 Daniel Jankowski\n\nThis project is licensed under the MIT license.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdj95%2Fzjstatus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdj95%2Fzjstatus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdj95%2Fzjstatus/lists"}