Skip to content

Add Linux scaffold and PipeWire documentation with ZoomitForMac bundles - #50

Open
Barki Mustapha (devops2626) wants to merge 32 commits into
microsoft:mainfrom
devops2626:main
Open

Add Linux scaffold and PipeWire documentation with ZoomitForMac bundles#50
Barki Mustapha (devops2626) wants to merge 32 commits into
microsoft:mainfrom
devops2626:main

Conversation

@devops2626

Copy link
Copy Markdown

No description provided.

Linux scaffold: platform-agnostic core + detailed PipeWire capture skeleton
Copilot AI lite review requested due to automatic review settings August 13, 2026 06:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a Linux port “scaffold” (Rust workspace + core/capture abstractions) and accompanying documentation that analyzes the existing macOS architecture and outlines a PipeWire/Skia-based Linux roadmap, plus agent/config bundles to support that work.

Changes:

  • Add linux/ Rust workspace with zoomit-core (modes + annotations) and zoomit-capture (capture trait + stub backends).
  • Add architecture/roadmap/investigation docs for PipeWire capture and Skia/tiny-skia rendering.
  • Add README pointers and repo-local Codex/Claude agent configuration scaffolding.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
README.md Adds fork note linking to new architecture/roadmap docs.
linux/README.md Documents Linux workspace layout, build commands, and PipeWire approach.
linux/Cargo.toml Introduces Linux Rust workspace members.
linux/.gitignore Ignores Linux workspace build artifacts and lockfile.
linux/linux-core/Cargo.toml Defines zoomit-core crate and serde dependency.
linux/linux-core/src/lib.rs Exposes core modules and re-exports types.
linux/linux-core/src/mode.rs Adds mode FSM and coordinator + unit tests.
linux/linux-core/src/annotation.rs Adds annotation model + store + unit tests.
linux/linux-capture/Cargo.toml Defines zoomit-capture crate with optional PipeWire feature deps.
linux/linux-capture/src/lib.rs Wires capture modules and public re-exports.
linux/linux-capture/src/traits.rs Defines ScreenCapture trait and CaptureError.
linux/linux-capture/src/frame.rs Adds captured frame representation and pixel format enum.
linux/linux-capture/src/portal.rs Adds Portal/PipeWire backend skeleton + tests.
linux/linux-capture/src/x11.rs Adds X11 capture placeholder backend.
ARCHITECTURE.md Summarizes macOS architecture and cross-platform path (PipeWire/Skia).
docs/LINUX_ROADMAP.md Defines phased plan and recommended stack for Linux port.
docs/PIPEWIRE_INVESTIGATION.md Captures PipeWire/portal investigation notes and references.
docs/SKIA_INVESTIGATION.md Captures Skia/tiny-skia investigation and recommendation.
docs/ISSUES.md Provides planned issue templates for the Linux roadmap.
.codex/config.toml Adds repo-local Codex CLI + MCP baseline configuration.
.codex/AGENTS.md Documents Codex multi-agent setup and skill locations.
.codex/agents/explorer.toml Adds explorer agent configuration.
.codex/agents/reviewer.toml Adds reviewer agent configuration.
.codex/agents/docs-researcher.toml Adds docs-researcher agent configuration.
.agents/skills/ZoomitForMac/SKILL.md Adds Codex-facing repo skill content.
.agents/skills/ZoomitForMac/agents/openai.yaml Registers the repo skill for the OpenAI agent interface.
.claude/skills/ZoomitForMac/SKILL.md Adds Claude-facing repo skill content.
.claude/identity.json Adds suggested Claude identity baseline.
.claude/homunculus/instincts/inherited/ZoomitForMac-instincts.yaml Adds inherited “instincts” derived from repo analysis.
.claude/ecc-tools.json Adds ECC tools metadata and managed-file inventory.
Suppressed comments (2)

.agents/skills/ZoomitForMac/SKILL.md:137

  • The “Preferred import/export style” examples are TypeScript, but this repository is Swift + Rust. Consider replacing these snippets with Rust (or Swift) examples to avoid confusing guidance.
*Preferred import style*

```typescript
// Use relative imports
import { Button } from '../components/Button'
import { useAuth } from './hooks/useAuth'

Preferred export style

// Use named exports
export function calculateTotal() { ... }
export const TAX_RATE = 0.1
export interface Order { ... }
**.claude/skills/ZoomitForMac/SKILL.md:137**
* The “Preferred import/export style” examples are TypeScript, but this repository is Swift + Rust. Consider replacing these snippets with Rust (or Swift) examples to avoid confusing guidance.

Preferred import style

// Use relative imports
import { Button } from '../components/Button'
import { useAuth } from './hooks/useAuth'

Preferred export style

// Use named exports
export function calculateTotal() { ... }
export const TAX_RATE = 0.1
export interface Order { ... }
</details>



---

💡 <a href="/microsoft/ZoomitForMac/new/main?filename=.github/skills/code-review/SKILL.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add a `code-review` agent skill</a> or configure MCP servers for context-aware, tailored reviews. <a href="https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review#mcp-servers-and-agent-skills" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn more in the docs.</a>

Comment on lines +38 to +43
#[derive(Debug, Default)]
pub struct ModeCoordinator {
mode: AppMode,
}

impl ModeCoordinator {
Comment on lines +1 to +20
[package]
name = "zoomit-capture"
version = "0.1.0"
edition = "2021"
description = "Screen capture backends for ZoomIt Linux (PipeWire + portal, X11 fallback)"
license = "MIT"

[dependencies]
zoomit-core = { path = "../linux-core" }
thiserror = "1"
async-trait = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync"], optional = true }
# Optional real backends – enable with features
ashpd = { version = "0.9", optional = true }
# pipewire = { version = "0.8", optional = true } # enable when integrating real PipeWire

[features]
default = []
# Enable for real portal + PipeWire (requires libpipewire, xdg-desktop-portal at runtime)
pipewire = ["dep:ashpd", "dep:tokio"]
Comment on lines +9 to +10
pub use mode::{AppMode, AppCommand};
pub use annotation::{Annotation, AnnotationTool, AnnotationColor, AnnotationStyle};
Comment on lines +106 to +115
### Language: Rust

### Naming Conventions

| Element | Convention |
|---------|------------|
| Files | camelCase |
| Functions | camelCase |
| Classes | PascalCase |
| Constants | SCREAMING_SNAKE_CASE |
Comment on lines +106 to +115
### Language: Rust

### Naming Conventions

| Element | Convention |
|---------|------------|
| Files | camelCase |
| Functions | camelCase |
| Classes | PascalCase |
| Constants | SCREAMING_SNAKE_CASE |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants