[project] name = "hypruse" version = "0.11.0" description = "Computer use for Hyprland: semantic desktop state over IPC plus vision and native Wayland input, in one MCP server" readme = "README.md" requires-python = ">=3.11" license = "MIT" license-files = ["LICENSE"] authors = [{ name = "Ilyas Khallouki", email = "khalloukielias@gmail.com" }] keywords = ["hyprland", "mcp", "wayland", "computer-use", "automation", "ai-agents", "claude"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: X11 Applications", "Intended Audience :: Developers", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Desktop Environment :: Window Managers", "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = ["mcp>=1.2,<2"] [project.urls] Homepage = "https://github.com/IlyasKhallouki/hypruse" Issues = "https://github.com/IlyasKhallouki/hypruse/issues" [project.scripts] hypruse = "hypruse.cli:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/hypruse"] # the Agent Skill ships inside the package, so `hypruse skill install` always # describes the verbs the installed binary has [tool.hatch.build.targets.wheel.force-include] "skills/hypruse" = "hypruse/skill" [tool.hatch.build.targets.sdist] include = [ "/src/hypruse", "/skills/hypruse", "/tests", "/server.json", "/README.md", "/LICENSE", "/CHANGELOG.md", "/ARCHITECTURE.md", "/CONTRIBUTING.md", ] [dependency-groups] dev = ["pytest>=8", "ruff>=0.6"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.pytest.ini_options] testpaths = ["tests"] markers = ["e2e: needs a live Hyprland session"] addopts = "-m 'not e2e'"