Skip to content

dstushar7/sticky-notes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

100 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ—’๏ธ Sticky Notes

Python PyQt6 License: MIT Installed size

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)

sudo snap install stickynotes-dabobroto

๐Ÿ’ป Option 2 โ€“ Run from Source (Development Mode)

  1. Clone the repository:

    git clone https://github.com/dstushar7/sticky-notes.git
    cd sticky-notes
  2. Create a virtual environment and install dependencies:

    python3 -m venv stickyenv
    source stickyenv/bin/activate
    pip install -r requirements.txt
  3. Run the app:

    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+
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


๐Ÿ› ๏ธ Local Development

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 file for details.

License ยฉ 2025 Tushar D. (@dstushar7) โ€” Open for community contributions.


๐Ÿ‘จโ€๐Ÿ’ป Author

Tushar D. (@dstushar7)
๐Ÿ”— GitHub Profile


Feedback and pull requests are always welcome โ€” let's build together!

About

Minimalist sticky notes app built in Python using PyQt6

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors