https://github.com/dstushar7/sticky-notes
Minimalist sticky notes app built in Python using PyQt6
https://github.com/dstushar7/sticky-notes
desktop-app linux pyqt6 python qt6 snap sticky-notes
Last synced: 16 days ago
JSON representation
Minimalist sticky notes app built in Python using PyQt6
- Host: GitHub
- URL: https://github.com/dstushar7/sticky-notes
- Owner: dstushar7
- License: mit
- Created: 2025-10-13T08:02:29.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-05-16T20:27:10.000Z (27 days ago)
- Last Synced: 2026-05-16T22:32:01.097Z (27 days ago)
- Topics: desktop-app, linux, pyqt6, python, qt6, snap, sticky-notes
- Language: Python
- Homepage: https://github.com/dstushar7/sticky-notes
- Size: 1.3 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐๏ธ Sticky Notes




A desktop **Sticky Notes** app for Linux, built with **Python** and **PyQt6** โ frameless, glass-styled, outrageously pretty, and featherweight (~26 MB installed).
Jot down thoughts, ideas, and reminders right on your desktop with rich text, 7 color themes, and a one-click collapse-to-pill UI.
Notes save locally and are restored exactly where you left them between sessions.
---
## ๐ Features
- ๐๏ธ Create multiple sticky notes effortlessly via the `+` button or tray menu
- ๐ท๏ธ **Editable note titles** โ click the title pill to rename; a smart default auto-fills from the first body line until you set a custom name
- ๐พ Auto-saves note content, title, position, size, theme, and last-edited time every 5 seconds
- ๐จ **7 color themes** โ Yellow, Green, Pink, Purple, Blue, Gray, Charcoal
- โ๏ธ **Rich text formatting** โ Bold (`Ctrl+B`), Italic (`Ctrl+I`), Underline (`Ctrl+U`), Strikethrough (`Ctrl+Shift+S`)
- ๐ **Bullet lists with nested sublists** โ Toggle with `Ctrl+Shift+L`; `Tab` indents to a sublist (style cycles โโโโโ ), `Shift+Tab` outdents; `Enter` continues, `Shift+Enter` breaks out
- ๐ช **Collapse / expand** โ double-click anywhere on the title bar outside the title to collapse a note to just its header
- ๐ฑ๏ธ **Resizable from all 8 edges and corners** โ no OS chrome needed
- ๐งฉ System tray integration with a **Show Note โถ** submenu listing open notes, sorted by most recently edited
- ๐๏ธ "Show All Notes" support to bring all notes to the front
- ๐ **Launch on system startup** โ on by default for new installs; toggle in Settings to disable. The app auto-launches quietly to your tray on login, restores your saved notes, and never pops a blank window at you when there's nothing to show
- ๐ข Packaged as a **Snap app** for easy Linux installation
---
## โ๏ธ Installation
### ๐งฉ Option 1 โ From the Snap Store (Recommended)
```bash
sudo snap install stickynotes-dabobroto
```
---
### ๐ป Option 2 โ Run from Source (Development Mode)
1. Clone the repository:
```bash
git clone https://github.com/dstushar7/sticky-notes.git
cd sticky-notes
```
2. Create a virtual environment and install dependencies:
```bash
python3 -m venv stickyenv
source stickyenv/bin/activate
pip install -r requirements.txt
```
3. Run the app:
```bash
python3 run_stickynotes.py
```
---
## ๐ Usage
Once launched, a sticky notes icon appears in your **system tray**.
Right-click the tray icon to:
- ๐ **New Note** โ creates a note in the default Yellow theme
- ๐๏ธ **Show All Notes** โ brings every note to the front
- ๐ **Show Note โถ** โ submenu listing each open note by title, most recently edited first; click an entry to jump straight to that note
- โ๏ธ **Settings** โ toggle "Launch on system startup"
- โน๏ธ **About Sticky Notes** โ version, license, source links, and contact
- โ **Quit the Application**
### Inside each note
| Action | How |
|--------|-----|
| **New note (same color)** | Click the `+` button in the title bar |
| **Rename note** | Click the title text in the title bar; press Enter to commit, Escape to cancel, or click away |
| **Color / delete** | Click the `โขโขโข` button โ options panel |
| **Bold** | `Ctrl+B` |
| **Italic** | `Ctrl+I` |
| **Underline** | `Ctrl+U` |
| **Strikethrough** | `Ctrl+Shift+S` |
| **Bullet list on/off** | `Ctrl+Shift+L` |
| **Continue list item** | `Enter` |
| **Break out of list** | `Shift+Enter` |
| **Indent (sublist)** | `Tab` while in a list |
| **Outdent** | `Shift+Tab` while in a list |
| **Collapse / expand** | Double-click the title bar outside the title (disabled while collapsed) |
| **Drag window** | Click and drag the title bar outside the title |
| **Resize window** | Drag any edge or corner (16 px grab zone) |
---
## ๐ช UI Overview
Each note is a frameless, rounded-corner window with a drop shadow. The
`+` / `โขโขโข` buttons render as floating glass chips on top of the title
bar; the title itself is a click-to-edit pill, and the empty space
between is the drag / collapse target.
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [+] โญ Title โฎ drag area [โขโขโข] โ โ title bar (theme color)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Your note text hereโฆ โ โ text area (body color)
โ โ
โ [B] [I] [U] [S] [โฃ] โ โ format bar (theme color)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
Clicking `โขโขโข` opens a floating options panel:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ก ๐ข ๐ฉท ๐ฃ ๐ต โฌ โฌ โ โ color swatches (circle buttons)
โ ๐ Delete Note โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
## ๐งฑ Project Structure
```
sticky-notes/
โ
โโโ snap/
โ โโโ snapcraft.yaml # Snap packaging configuration
โ
โโโ stickynotes/ # Main Python package
โ โโโ __init__.py
โ โโโ config.py # App constants, THEMES dict, sizing constants
โ โโโ note_window.py # NoteTextEdit, EditableTitleLabel, DragHandle, TitleBar, FormatBar, OptionsPanel, StickyNote, AboutDialog, SettingsDialog
โ โโโ widgets.py # FloatingButton โ reusable glass-pill push button
โ โโโ tray_manager.py # Tray icon, note lifecycle, dynamic "Show Note" submenu
โ โโโ autostart.py # XDG autostart entry management
โ โโโ utils.py # Icon creation, get_theme(), apply_theme_to_window()
โ
โโโ run_stickynotes.py # Entry script to launch the app
โโโ requirements.txt # Dependency list
โโโ .gitignore
โโโ LICENSE
โโโ README.md
```
---
## ๐งฉ Requirements
- ๐ Python **3.10+**
- ๐ช PyQt6 **6.5+**
```bash
pip install -r requirements.txt
```
---
## โจ๏ธ Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+B` | Bold |
| `Ctrl+I` | Italic |
| `Ctrl+U` | Underline |
| `Ctrl+Shift+S` | Strikethrough |
| `Ctrl+Shift+L` | Toggle bullet list |
| `Tab` | Indent (sublist) inside a list |
| `Shift+Tab` | Outdent inside a list |
| `Ctrl+Z` | Undo |
| `Ctrl+Y` | Redo |
| `Ctrl+A` | Select all |
All formatting actions are also available via the **bottom toolbar** on each note: `B` `I` `U` `S` `โข`. Buttons highlight when the cursor is in already-formatted text.
---
## ๐จ Themes
| Name | Background | Title Bar |
|------|-----------|-----------|
| Yellow *(default)* | `#FFF176` | `#F9E44A` |
| Green | `#B5EBBF` | `#8FD9A0` |
| Pink | `#F9B8C6` | `#F48FAA` |
| Purple | `#D8B8F9` | `#BC8FF5` |
| Blue | `#B3E5FC` | `#80D0F5` |
| Gray | `#E0E0E0` | `#BDBDBD` |
| Charcoal | `#4A4A4A` | `#333333` |
Charcoal uses light text (`#f0f0f0`); all other themes use dark text (`#1a1a1a`).
---
## ๐งฐ Technologies Used
- **[Python 3.10+](https://www.python.org/)**
- **[PyQt6](https://www.riverbankcomputing.com/software/pyqt/)** for GUI
- **[Snapcraft](https://snapcraft.io/)** for packaging and distribution
---
## ๐ ๏ธ Local Development
```bash
git checkout -b feature/your-feature
# make changes
git add .
git commit -m "feat: describe your change"
git push origin feature/your-feature
# open a pull request
```
---
## ๐ License
This project is licensed under the **MIT License**.
See the [LICENSE](./LICENSE) file for details.
> License ยฉ 2025 **Tushar D. (@dstushar7)** โ Open for community contributions.
---
## ๐จโ๐ป Author
**Tushar D. (@dstushar7)**
๐ [GitHub Profile](https://github.com/dstushar7)
---
**Feedback and pull requests are always welcome โ let's build together!**