175 lines
4.4 KiB
Markdown
175 lines
4.4 KiB
Markdown
# Advanced Usage
|
|
|
|
Customize Pake apps with style modifications, JavaScript injection, and container communication.
|
|
|
|
## Style Customization
|
|
|
|
Remove ads or customize appearance by modifying CSS.
|
|
|
|
**Quick Process:**
|
|
|
|
1. Run `pnpm run dev` for development
|
|
2. Use DevTools to find elements to modify
|
|
3. Edit `src-tauri/src/inject/style.js`:
|
|
|
|
```javascript
|
|
const css = `
|
|
.ads-banner { display: none !important; }
|
|
.header { background: #1a1a1a !important; }
|
|
`;
|
|
```
|
|
|
|
## JavaScript Injection
|
|
|
|
Add custom functionality like keyboard shortcuts.
|
|
|
|
**Implementation:**
|
|
|
|
1. Edit `src-tauri/src/inject/event.js`
|
|
2. Add event listeners:
|
|
|
|
```javascript
|
|
document.addEventListener("keydown", (e) => {
|
|
if (e.ctrlKey && e.key === "k") {
|
|
// Custom action
|
|
}
|
|
});
|
|
```
|
|
|
|
## Container Communication
|
|
|
|
Send messages between web content and Pake container.
|
|
|
|
**Web Side (JavaScript):**
|
|
|
|
```javascript
|
|
window.__TAURI__.invoke("handle_scroll", {
|
|
scrollY: window.scrollY,
|
|
scrollX: window.scrollX,
|
|
});
|
|
```
|
|
|
|
**Container Side (Rust):**
|
|
|
|
```rust
|
|
#[tauri::command]
|
|
fn handle_scroll(scroll_y: f64, scroll_x: f64) {
|
|
println!("Scroll: {}, {}", scroll_x, scroll_y);
|
|
}
|
|
```
|
|
|
|
## Window Configuration
|
|
|
|
Configure window properties in `pake.json`:
|
|
|
|
```json
|
|
{
|
|
"windows": {
|
|
"width": 1200,
|
|
"height": 780,
|
|
"fullscreen": false,
|
|
"resizable": true
|
|
},
|
|
"hideTitleBar": true
|
|
}
|
|
```
|
|
|
|
## Static File Packaging
|
|
|
|
Package local HTML/CSS/JS files:
|
|
|
|
```bash
|
|
pake ./my-app/index.html --name my-static-app --use-local-file
|
|
```
|
|
|
|
Requirements: Pake CLI >= 3.0.0
|
|
|
|
## Project Structure
|
|
|
|
Understanding Pake's codebase structure will help you navigate and contribute effectively:
|
|
|
|
```tree
|
|
├── bin/ # CLI source code (TypeScript)
|
|
│ ├── builders/ # Platform-specific builders
|
|
│ ├── helpers/ # Utility functions
|
|
│ └── options/ # CLI option processing
|
|
├── docs/ # Project documentation
|
|
├── src-tauri/ # Tauri application core
|
|
│ ├── src/
|
|
│ │ ├── app/ # Core modules (window, tray, shortcuts)
|
|
│ │ ├── inject/ # Web page injection logic
|
|
│ │ └── lib.rs # Application entry point
|
|
│ ├── icons/ # macOS icons (.icns)
|
|
│ ├── png/ # Windows/Linux icons (.ico, .png)
|
|
│ ├── pake.json # App configuration
|
|
│ └── tauri.*.conf.json # Platform-specific configs
|
|
├── scripts/ # Build and utility scripts
|
|
└── tests/ # Test suites
|
|
```
|
|
|
|
### Key Components
|
|
|
|
- **CLI Tool** (`bin/`): TypeScript-based command interface for packaging apps
|
|
- **Tauri App** (`src-tauri/`): Rust-based desktop framework
|
|
- **Injection System** (`src-tauri/src/inject/`): Custom CSS/JS injection for webpages
|
|
- **Configuration**: Multi-platform app settings and build configurations
|
|
|
|
## Development Workflow
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js ≥22.0.0 (recommended LTS, older versions ≥16.0.0 may work)
|
|
- Rust ≥1.89.0 (recommended stable, older versions ≥1.78.0 may work)
|
|
- Platform-specific build tools:
|
|
- **macOS**: Xcode Command Line Tools (`xcode-select --install`)
|
|
- **Windows**: Visual Studio Build Tools with MSVC
|
|
- **Linux**: `build-essential`, `libwebkit2gtk`, system dependencies
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/tw93/Pake.git
|
|
cd Pake
|
|
|
|
# Install dependencies
|
|
pnpm install
|
|
|
|
# Start development
|
|
pnpm run dev
|
|
```
|
|
|
|
### Development Commands
|
|
|
|
1. **CLI Changes**: Edit files in `bin/`, then run `pnpm run cli:build`
|
|
2. **Core App Changes**: Edit files in `src-tauri/src/`, then run `pnpm run dev`
|
|
3. **Injection Logic**: Modify files in `src-tauri/src/inject/` for web customizations
|
|
4. **Testing**: Run `pnpm test` for comprehensive validation
|
|
|
|
- **Dev mode**: `pnpm run dev` (hot reload)
|
|
- **Build**: `pnpm run build`
|
|
- **Debug build**: `pnpm run build:debug`
|
|
- **CLI build**: `pnpm run cli:build`
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
# Run all tests (unit + integration + builder)
|
|
pnpm test
|
|
|
|
# Build CLI for testing
|
|
pnpm run cli:build
|
|
```
|
|
|
|
### Common Build Issues
|
|
|
|
- **Rust compilation errors**: Run `cargo clean` in `src-tauri/` directory
|
|
- **Node dependency issues**: Delete `node_modules` and run `pnpm install`
|
|
- **Permission errors on macOS**: Run `sudo xcode-select --reset`
|
|
|
|
## Links
|
|
|
|
- [CLI Documentation](cli-usage.md)
|
|
- [CLI Testing Guide](cli-testing.md)
|
|
- [GitHub Discussions](https://github.com/tw93/Pake/discussions)
|