{"id":31389851,"url":"https://github.com/mikashell/mika-shell","last_synced_at":"2026-05-18T03:05:13.132Z","repository":{"id":315406792,"uuid":"1059341948","full_name":"MikaShell/mika-shell","owner":"MikaShell","description":"Build your own Linux desktop shell using modern web front-end technologies.","archived":false,"fork":false,"pushed_at":"2025-09-27T08:09:48.000Z","size":528,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-27T10:08:30.692Z","etag":null,"topics":["linux-desktop","rice","web","webkitgtk"],"latest_commit_sha":null,"homepage":"https://mikashell.github.io/website/","language":"Zig","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/MikaShell.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":"2025-09-18T10:11:33.000Z","updated_at":"2025-09-27T08:08:15.000Z","dependencies_parsed_at":"2025-09-18T12:58:15.865Z","dependency_job_id":"34180871-d920-4a37-8df6-cd6397516293","html_url":"https://github.com/MikaShell/mika-shell","commit_stats":null,"previous_names":["mikashell/mika-shell"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/MikaShell/mika-shell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MikaShell%2Fmika-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MikaShell%2Fmika-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MikaShell%2Fmika-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MikaShell%2Fmika-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MikaShell","download_url":"https://codeload.github.com/MikaShell/mika-shell/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MikaShell%2Fmika-shell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277450956,"owners_count":25819972,"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","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"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":["linux-desktop","rice","web","webkitgtk"],"created_at":"2025-09-29T00:47:30.197Z","updated_at":"2026-05-18T03:05:13.106Z","avatar_url":"https://github.com/MikaShell.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MikaShell\n\n[English](README.md) | [简体中文](README.zh-CN.md)\n\n**MikaShell** is a tool for building desktop components using web technologies in a Wayland desktop environment. It is inspired by the [Astal/Ags project](https://github.com/aylur/astal).\n\n## Table of Contents\n\n- [MikaShell](#mikashell)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n    - [Modules](#modules)\n      - [Todo](#todo)\n  - [Getting Started](#getting-started)\n    - [Dependencies](#dependencies)\n    - [Launching](#launching)\n    - [Tutorial](#tutorial)\n  - [Configuration](#configuration)\n\n---\n\n## Features\n\nYou can create components such as bars, docks, and launchers using HTML or any web front-end framework.\n\nMikaShell implements backend functionalities that handle desktop interactions, such as notifications, system tray, and other features that native browsers can't provide. These backend interfaces are exposed to the frontend, allowing you to call them directly in HTML or JavaScript.\n\n---\n\n### Modules\n\nmika-shell exposes modules to `window.mikaShell`. You can install them via npm:\n\n```bash\n# The core module is required for type hinting, even if you don't install it directly.\nnpm install -D @mika-shell/core\n# Some modules are implemented by mika-shell itself, such as Hyprland in the extra package.\nnpm install @mika-shell/extra\n```\n\nBelow is a list of modules that are currently implemented or partially implemented:\n\n| Module         | Description                                         | Status                   |\n| -------------- | --------------------------------------------------- | ------------------------ |\n| `apps`         | Get list of installed applications; launch them     | ✅ Implemented            |\n| `dock`         | Display app icons; build a dock                     | ✅ Implemented            |\n| `icon`         | Access installed system icons                       | ✅ Implemented            |\n| `layer/window` | Create and control layers or windows                | ✅ Implemented            |\n| `libinput`     | Capture mouse/keyboard input (requires permissions) | ✅ Implemented            |\n| `monitor`      | Get information about connected monitors            | ✅ Implemented            |\n| `notifd`       | Access notification system                          | ✅ Implemented            |\n| `os`           | Get system and user information                     | ✅ Implemented            |\n| `tray`         | Build a system tray                                 | ✅ Implemented            |\n| `network`      | NetworkManager-related APIs                         | ⚠️ Partially Implemented |\n\n#### Todo\n\n- [ ] powerprofile\n- [ ] bluetooth\n- [ ] pam\n- [ ] locksession\n- [~] network\n  - [ ] Event handling\n- [ ] mpris\n- [ ] battery\n- [ ] cava\n- [ ] wireplumber\n- [ ] wayland\n\n---\n\n## Getting Started\n\n### Dependencies\n\nYou can refer to [this section](https://github.com/MikaShell/mika-shell/blob/db1586e803b8df7f093aacb772c419162adf8408/.github/workflows/build.yaml#L18C11-L18C13) to see required packages for Ubuntu. In general, you only need to install packages starting with `lib`.\n\n---\n\n### Launching\n\nYou can download a prebuilt binary from the [Releases page](https://github.com/MikaShell/mika-shell/releases/), or build it from source.\nThe `mika-shell-debug` version provides more verbose logging for debugging purposes.\n\nFor Nix users, you can launch it with:\n\n```bash\nnix run github:MikaShell/mika-shell#packages.x86_64-linux.default -- daemon\n```\n\nRun `mika-shell daemon` to start the service. The first time it runs, it will generate default configuration files in `~/.config/mika-shell`.\nIf everything works properly, you should see a bar appear at the top of your screen.\n\n---\n\n### Tutorial\n\nPlease check out [Website](https://mikashell.github.io/) and [Example](https://github.com/MikaShell/mika-shell/tree/main/example)!\n\nAdditionally, here is my configuration that you can use directly or refer to: [Mikami](https://github.com/HumXC/mikami)\n\n---\n\n## Configuration\n\nConfiguration and resource files are stored by default in `$HOME/.config/mika-shell/`.\nYou can override this with the `-c` command line flag or the `MIKASHELL_CONFIG_DIR` environment variable.\nThe main configuration file is `mika-shell.json`, and other frontend resource files are located in the same directory.\n\n```jsonc\n{\n    \"name\": \"Example\",\n    \"description\": \"This is an example mika-shell configuration file\",\n    \"pages\": [\n        // Declare frontend pages here. The `name` must be unique.\n        // You can check the current list of pages using the `mika-shell pages` command.\n        // The `path` points to the frontend page.\n        {\n            \"name\": \"index\",\n            \"description\": \"This is the main page\",\n            \"path\": \"/index.html\" // or '/'\n        },\n        {\n            \"name\": \"tray\",\n            \"path\": \"/#/tray\"\n        },\n        {\n            \"name\": \"bongocat\",\n            \"path\": \"/bongocat.html\"\n        }\n    ],\n    // Pages listed in the `startup` array will open automatically when MikaShell launches.\n    \"startup\": [\"bar\", \"bongocat\"]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikashell%2Fmika-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikashell%2Fmika-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikashell%2Fmika-shell/lists"}