Sticky is a modern Rust + GTK4 desktop productivity app that combines sticky notes, an infinite whiteboard, Pomodoro timers, code snippets, file attachments, and AI-powered meeting summaries.
It is built for students, developers, writers, and productivity-focused users who want a local-first desktop workspace instead of another cloud-first notes app.
Sticky is currently an experimental desktop productivity app.
Core sticky-note and whiteboard features are implemented. AI meeting summaries require an OpenAI API key. Some native desktop-window behaviors, such as edge peeking and magnetic snapping, may vary depending on X11 or Wayland compositor support.
Sticky is a local-first desktop notes app written in Rust using GTK4. It goes beyond basic sticky notes by combining floating notes, an infinite whiteboard, block-based editing, Pomodoro timers, code snippets, file attachments, search, and AI-assisted meeting summaries.
It can be used as a:
- Sticky notes manager
- Infinite whiteboard
- Pomodoro focus tool
- Code snippet organizer
- File attachment board
- Meeting notes and summary assistant
- Visual workspace for ideas, tasks, and study sessions
Create borderless, resizable, color-customizable sticky notes that stay on your desktop.
Expand a note into a full-screen whiteboard with an infinite dot-grid canvas for visual planning, brainstorming, and idea mapping.
Double-click anywhere on the canvas to add different types of blocks:
- Text blocks
- Checklist blocks
- Code snippet blocks
- Pomodoro timer blocks
- File attachment blocks
Connect blocks visually using curved links to build lightweight mind maps and idea flows.
Write simple Markdown-style text and let Sticky render it into clean formatted content.
Export note contents to a standard Markdown file using the native save dialog.
Use the command palette to create templates such as daily planners, meeting notes, bug trackers, Kanban boards, and LaTeX blocks. Apply visual themes such as Pastel, Dark Glass, Terminal, and more.
Export the local SQLite database as a backup, or import an existing backup to restore your notes.
Record meeting audio, transcribe it, and generate AI-powered summaries and action items using OpenAI APIs.
AI features require an
OPENAI_API_KEY.
Use native Linux text-to-speech support to read note content aloud.
Run Sticky quietly in the background and access quick actions, search, and restore options from the tray.
Deleted notes are soft-deleted first, so they can be restored before being permanently removed.
Search across saved notes quickly using the global spotlight-style search.
Use the command palette to quickly add blocks, change colors, trigger actions, or create templates without relying on the mouse.
Download the latest version from the Releases page.
Release builds may include Linux (.deb and .AppImage) and Windows (.msi) assets depending on the version.
Sticky is a native desktop application. Do not use GitHub Packages, npm, or Docker to install it. Download the release asset for your platform.
You need the Rust toolchain and GTK-related development libraries.
Install Rust using rustup.
sudo apt install libgtk-4-dev libadwaita-1-dev libsqlite3-dev speech-dispatcher alsa-utilssudo dnf install gtk4-devel libadwaita-devel sqlite-devel speech-dispatcher alsa-utilssudo pacman -S gtk4 libadwaita sqlite speech-dispatcher alsa-utils⬇ Download Sticky — grab the installer for your platform and double-click to install.
| Platform | Download | Install |
|---|---|---|
| Linux (Ubuntu, Debian, Mint, Pop!_OS) | sticky_X.X.X_amd64.deb |
sudo apt install ./sticky_*.deb |
| Windows | sticky-X.X.X.msi |
Double-click the installer. Done. |
That's it. Launch Sticky from your application menu or Start Menu after installing, or just type sticky in your terminal.
Advanced Linux users: An
.AppImageis also available in releases if you prefer a portable, no-install option. Justchmod +xand run it.
Troubleshooting:
- Duplicate launcher entries: If you see two entries for Sticky in your application menu, it means a stale local desktop file exists from a previous dev install. Fix it with:
rm ~/.local/share/applications/*sticky*.desktop update-desktop-database ~/.local/share/applications 2>/dev/null || true- Icon doesn't update: If you see a generic gear icon instead of the yellow sticky note, run:
sudo gtk-update-icon-cache /usr/share/icons/hicolor
If you want to compile this app yourself or contribute to the project, follow these steps:
cargo install cargo-deb
cargo debThe generated package will be available at:
target/debian/sticky_0.1.0-1_amd64.deb
cargo install cargo-appimage
# Requires 'appimagetool' installed on your system
cargo appimageThe generated AppImage will be at target/appimage/sticky.AppImage.
Known Limitation: Sticky is built primarily as a Linux-first application. Windows support via WiX is experimental and some native window-manager features may behave differently.
This step must be done on a Windows machine. Cross-compiling GTK4 apps for Windows from Linux is not supported.
Prerequisites: Rust, WiX Toolset v3, and GTK4 runtime libraries (via gvsbuild or MSYS2).
cargo install cargo-wix
cargo wixThe generated installer will be at:
target\wix\sticky-0.1.0-x86_64.msi
- Launch Sticky.
- Create a new note from the app or system tray.
- Double-click inside a note to add a block.
- Use the command palette to add checklists, code blocks, timers, templates, or themes.
- Expand a note into whiteboard mode for a larger visual workspace.
- Drag blocks around to organize ideas.
- Connect blocks using mind-map links.
- Use global search to find saved notes.
- Restore deleted notes from the recycle bin if needed.
Sticky can record meeting audio and generate summaries using OpenAI APIs.
To enable AI features, set your API key:
export OPENAI_API_KEY="your_api_key_here"Then use the microphone button in the app to start and stop recording.
Audio transcription and summaries depend on OpenAI API access. Do not use this feature for private or sensitive meetings unless you understand where your data is being sent.
| Shortcut | Action |
|---|---|
Ctrl+Shift+F |
Global search |
Ctrl+K |
Command palette |
Ctrl+B |
Bold selected text |
Ctrl+I |
Italicize selected text |
Sticky stores notes locally in a SQLite database.
| Platform | Storage path |
|---|---|
| Linux | ~/.local/share/sticky/notes.db |
| Windows | %APPDATA%\sticky\notes.db |
Deleted notes are moved to the recycle bin before permanent deletion.
| File | Purpose |
|---|---|
src/main.rs |
App startup, system tray, global search, and database initialization |
src/db.rs |
SQLite data layer for notes, blocks, and links |
src/window.rs |
Sticky note window, controls, whiteboard toggles, and AI flow |
src/canvas.rs |
Canvas rendering, drag-and-drop behavior, and mind-map links |
src/text_block.rs |
Text, checklist, code, timer, and file block widgets |
src/portals.rs |
Flatpak/XDG portal integration |
src/style.css |
GTK styling, animations, and layout |
Sticky/
├── src/
│ ├── main.rs
│ ├── db.rs
│ ├── window.rs
│ ├── canvas.rs
│ ├── text_block.rs
│ ├── portals.rs
│ └── style.css
├── assets/
│ └── sticky.desktop
├── wix/
│ └── main.wxs
├── docs/
│ └── ROADMAP.md
├── install.sh
├── install.ps1
├── Cargo.toml
└── README.md
Planned improvements include:
- Real screenshots and demo GIFs
- More export options
- Better search filters
- More note templates
- More theme presets
- Improved Windows packaging
- Local AI support
- Semantic search
See docs/ROADMAP.md for more details.
Sticky is designed for:
- Students organizing lectures, assignments, and study sessions
- Developers saving snippets, tasks, and project notes
- Writers mapping ideas visually
- Productivity users who prefer local-first desktop tools
- Anyone who wants sticky notes and a whiteboard in one app
- Rust
- GTK4
- gtk-rs
- SQLite
- libadwaita
- OpenAI APIs
- WiX for Windows installer generation
- cargo-deb for Debian package generation
MIT
Sticky is built with GTK4. In GTK4, setting window coordinates (x, y) or requesting a window to "skip taskbar" or "keep above" is strictly forbidden by modern Wayland protocols. Therefore:
- Notes cannot be programmatically restored to exact pixel coordinates.
- Skip taskbar / Keep above may not work depending on your compositor.