GitHub - tw93/Pake: ๐คฑ๐ป Turn any webpage into a desktop app with one command.
Key Points
- 1Pake is a tool that converts any webpage into a lightweight, fast, and feature-rich desktop application for macOS, Windows, and Linux.
- 2Built with Rust Tauri, it offers significant performance advantages and smaller package sizes compared to traditional JS frameworks.
- 3Users can easily create apps via a command-line interface, utilize online building, or download pre-made popular applications, with options for advanced customization.
Pake is an open-source project designed to convert any webpage into a lightweight, fast, and feature-rich desktop application across macOS, Windows, and Linux operating systems. Its core methodology leverages the Rust-based Tauri framework, distinguishing it from traditional JavaScript-based solutions like Electron by utilizing the operating system's native webview (e.g., WebKit on macOS, WebView2 on Windows, WebKitGTK on Linux) rather than bundling an entire browser engine. This architectural choice results in significantly smaller application sizes, typically around 5 megabytes, which is approximately 20 times smaller than comparable Electron packages, and offers superior performance with lower memory consumption.
The project emphasizes ease of use, providing multiple pathways for users. Beginners can access pre-built applications for popular services or utilize an online building tool that requires no local environment setup. Developers are empowered through a Command-Line Interface (CLI) tool, pake-cli, which enables one-command packaging. This CLI allows users to specify the target URL, application name, custom icon paths, window dimensions (e.g., --width 1200 --height 800), and other UI configurations like --hide-title-bar. The CLI automates the compilation process, with subsequent builds being considerably faster after the initial environment setup. For advanced users, the project's source code can be cloned for custom development, style customization, feature enhancements, and inter-process communication.
Pake applications come equipped with a rich set of features enhancing the user experience. These include support for comprehensive keyboard shortcuts for navigation (e.g., โ + [/Ctrl + โ for back, โ + ]/Ctrl + โ for forward), page manipulation (e.g., โ + r/Ctrl + r for refresh, / for zoom in/out), window controls (e.g., โ + w/Ctrl + w to hide window), and utility functions (e.g., โ + L/Ctrl + L to copy current URL, โ + โฅ + I/Ctrl + Shift + I to toggle developer tools). Beyond shortcuts, Pake supports immersive windows, drag-and-drop functionality, custom styling, and ad removal. It also integrates native OS gestures and interactions, such as double-clicking the title bar for fullscreen, Mac-specific trackpad gestures for navigation, and draggable window titles.
For local development, Pake requires Rust (version >=1.85) and Node.js (version >=22). The development workflow involves installing dependencies via pnpm i, running the application in debug mode with pnpm run dev (which allows right-click to open developer tools), and building the final application with pnpm run build. The project structure includes src-tauri for the Rust/Tauri backend, package.json for managing Node.js and pnpm related scripts, and configuration files like rollup.config.js, tsconfig.json, and vitest.config.ts for frontend compilation and testing. Utility scripts like icns2png.py are also part of the repository, aiding in asset preparation.