{"id":50838431,"url":"https://github.com/moxer-mmh/sysdx","last_synced_at":"2026-06-14T05:33:36.495Z","repository":{"id":353431623,"uuid":"1219399425","full_name":"moxer-mmh/sysdx","owner":"moxer-mmh","description":"A systemd unit manager TUI with vim keybinds and theme support","archived":false,"fork":false,"pushed_at":"2026-04-24T18:55:44.000Z","size":4390,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T05:33:33.430Z","etag":null,"topics":["fzf","rust","service-manager","systemd","terminal","tui","vim"],"latest_commit_sha":null,"homepage":"https://aur.archlinux.org/packages/sysdx","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/moxer-mmh.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":"2026-04-23T20:51:24.000Z","updated_at":"2026-04-24T18:48:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/moxer-mmh/sysdx","commit_stats":null,"previous_names":["moxer-mmh/sysdx"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/moxer-mmh/sysdx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moxer-mmh%2Fsysdx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moxer-mmh%2Fsysdx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moxer-mmh%2Fsysdx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moxer-mmh%2Fsysdx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moxer-mmh","download_url":"https://codeload.github.com/moxer-mmh/sysdx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moxer-mmh%2Fsysdx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34310801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["fzf","rust","service-manager","systemd","terminal","tui","vim"],"created_at":"2026-06-14T05:33:33.097Z","updated_at":"2026-06-14T05:33:36.488Z","avatar_url":"https://github.com/moxer-mmh.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sysdx\n\nA terminal UI for managing systemd units. Navigate services with vim keybinds, filter with fuzzy search, and theme it with your own color palette.\n\n## Features\n\n- Two-pane layout: unit list on the left, status and journal output on the right\n- Vim navigation: `j/k`, `g/G`, `ctrl-d/u`, `/` fuzzy filter\n- Type filter — cycle through service / socket / timer / target / mount with `t`\n- Toggle between user and system units with `tab`\n- Action menu: start, stop, restart, enable, disable, reload, mask, unmask\n- Confirmation prompt before destructive actions (stop, disable, mask)\n- Full journal log view per unit with live-tail mode (`f` to toggle)\n- Unit file viewer — `u` to view the unit file via `systemctl cat`\n- Auto-refresh the unit list on a configurable interval\n- Manual refresh with `r`\n- Status bar showing mode-sensitive keybind hints and error messages\n- In-app help overlay with `?`\n- Non-blocking async I/O — systemctl calls never freeze the UI\n- Theme via hex colors in config — ANSI fallback inherits your terminal palette automatically\n- All keybinds rebindable in config\n\n## Install\n\n### Arch Linux (AUR)\n\n```bash\nparu -S sysdx        # or: yay -S sysdx\n```\n\nPre-built binary (no Rust toolchain required):\n```bash\nparu -S sysdx-bin\n```\n\n### cargo\n\n```bash\ncargo install sysdx\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/moxer-mmh/sysdx\ncd sysdx\ncargo build --release\nsudo install -Dm755 target/release/sysdx /usr/local/bin/sysdx\n```\n\n## Usage\n\n```bash\nsysdx              # start with user units (default)\nsysdx --system     # start with system units\nsysdx --help       # show help\nsysdx --version    # show version\n```\n\n## Keybinds\n\n| Key | Action |\n|-----|--------|\n| `j` / `k` | Navigate down / up |\n| `g` / `G` | Go to top / bottom |\n| `ctrl-d` / `ctrl-u` | Half-page down / up |\n| `/` | Open fuzzy filter |\n| `t` | Cycle type filter (service → socket → timer → …) |\n| `enter` | Open action menu |\n| `tab` | Toggle user ↔ system scope |\n| `l` | View journal logs (`f` to toggle live-tail) |\n| `u` | View unit file (`systemctl cat`) |\n| `r` | Refresh unit list |\n| `?` | Show keybind help |\n| `q` | Quit |\n\nAll keybinds are rebindable in `~/.config/sysdx/config.toml`.\n\n## Configuration\n\nCopy the example config to get started:\n\n```bash\nmkdir -p ~/.config/sysdx\ncp /usr/share/doc/sysdx/config.example.toml ~/.config/sysdx/config.toml\n```\n\nOr create it from scratch — any missing key uses the default value.\n\n### `~/.config/sysdx/config.toml`\n\n```toml\n[display]\njournal_lines      = 50     # journal lines in log view\ntick_rate_ms       = 250    # event poll interval (ms)\nshow_description   = true   # show unit description in list\nlist_width_pct     = 40     # left pane width % (20–70)\nauto_refresh_secs  = 0      # auto-refresh interval; 0 = disabled\nconfirm_destructive = true  # confirm before stop/disable/mask\n\n[keybinds]\nmove_down      = \"j\"\nmove_up        = \"k\"\npage_down      = \"ctrl-d\"\npage_up        = \"ctrl-u\"\ngo_top         = \"g\"\ngo_bottom      = \"G\"\nfilter         = \"/\"\ntype_filter    = \"t\"\naction_menu    = \"enter\"\nswitch_scope   = \"tab\"\nopen_logs      = \"l\"\nopen_unit_file = \"u\"\nrefresh        = \"r\"\nhelp           = \"?\"\nquit           = \"q\"\n\n[colors]\n# Hex strings (#rrggbb). Comment out any key to use terminal ANSI fallback.\n# If no colors are set, sysdx inherits your terminal's current palette,\n# so theme managers like wallust work automatically.\nbackground     = \"#0a0a0f\"\nsurface        = \"#1a1a2e\"\nborder         = \"#8844ff\"\nborder_focused = \"#00ff88\"\ntext           = \"#e0e1e5\"\ntext_dim       = \"#b4a7d6\"\nselection_bg   = \"#2a2a40\"\nselection_fg   = \"#ffffff\"\nactive         = \"#00ff88\"\ninactive       = \"#b4a7d6\"\nfailed         = \"#ff0088\"\nfilter_bar     = \"#ffaa00\"\nheader         = \"#8844ff\"\n```\n\n### Theme integration\n\nIf you use a terminal theme manager (wallust, pywal, etc.), you can leave the `[colors]` section empty or remove it entirely. sysdx will use your terminal's ANSI palette, which is already set by your theme manager.\n\nTo set exact hex colors from your palette, copy the values into `[colors]`. This gives pixel-perfect matching regardless of terminal.\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshot-1.png\" alt=\"sysdx system units\" width=\"100%\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshot-2.png\" alt=\"sysdx filtered view\" width=\"100%\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshot-3.png\" alt=\"sysdx status panel\" width=\"100%\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/screenshot-4.png\" alt=\"sysdx catppuccin theme\" width=\"100%\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Contributing\n\nIssues and pull requests are welcome at [github.com/moxer-mmh/sysdx](https://github.com/moxer-mmh/sysdx).\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoxer-mmh%2Fsysdx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoxer-mmh%2Fsysdx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoxer-mmh%2Fsysdx/lists"}