Terminal-based note-taking app for computer science students
Project description
OpenPad
█▀▀█ █▀▀█ █▀▀▀ █▀▀▄ █▀▀█ █▀▀█ █▀▀▄
█ █ █▀▀▀ █▀▀▀ █ █ █▀▀▀ █▀▀█ █ █
▀▀▀▀ ▀ ▀▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀▀▀▀
A terminal-based note-taking application designed for computer science students. Write and organize your programming notes, lecture materials, and code snippets in Markdown - all from the comfort of your terminal.
Current Version: 1.2 (2026-04-19)
Features
- Folder Organization - Organize notes into folders for different subjects (Databases, Linux, Java, etc.)
- Notes Sorted by Creation Date - Notes inside folders are now sorted by their creation date for easier chronological navigation
- Markdown Support - Write notes in Markdown with headers, lists, code blocks, and more
- Syntax Highlighting - Code blocks in your notes support syntax highlighting for 20+ languages
- 12 Built-in Themes - Choose from popular themes like Tokyo Night, Catppuccin, Gruvbox, Nord, and more
- Full-Text Search - Instantly search across all your notes by title or content
- Auto-Save - Your changes are saved automatically as you type
- Google Calendar Integration - View your calendar and click on any date to see events for that day
- Lightweight - Built with Python and Textual, runs in any terminal with true color support
- Secure Publishing -
.gitignoreis preconfigured to exclude credentials and Python cache files
Requirements
- Python 3.10 or higher - Required for the modern type annotations used in the code
- Terminal with true color support - Most modern terminals (iTerm2, Windows Terminal, Alacritty, GNOME Terminal) support this
- Operating System - Linux, macOS, or Windows (via WSL or Windows Terminal)
To check your Python version:
python3 --version
Windows Users
OpenPad works great on Windows! You have two main options:
1. Windows Terminal (Native)
- Install Windows Terminal from the Microsoft Store (recommended)
- Install Python 3.10+ from python.org
- Open Windows Terminal and run the installation steps as shown above
- Run the app with
python main.py
2. WSL (Windows Subsystem for Linux)
- Install WSL and a Linux distribution (e.g., Ubuntu)
- Open your WSL terminal
- Follow the Linux installation steps above
- Run the app with
python3 main.py
Tips:
- For best appearance, use Windows Terminal or a modern terminal emulator with true color support
- If you see color or layout issues, try resizing your terminal or using a different font
- If you have both
pythonandpython3installed, use the one that matches your Python 3.10+ installation
Installation
-
Clone or download this repository
git clone <your-repo-url> cd openpad-full
-
Install dependencies
pip install -r requirements.txt
-
Run OpenPad
python main.py
Key Bindings
| Key | Action |
|---|---|
←/→/↑/↓ |
Navigate calendar and notes |
| Mouse click (calendar) | Select a date in the calendar |
n |
Create a new note |
ctrl+n |
Create a new folder |
e |
Toggle edit mode (edit/view) |
Security & Publishing
Your .gitignore is set up to exclude sensitive files:
credentials.json(API keys)__pycache__/,*.pyc(Python cache).env,.vscode/,.DS_Store,Thumbs.db
This ensures you can safely publish your repository without exposing secrets or unnecessary files.
Calendar Integration
OpenPad integrates with Google Calendar. You can:
- Open the calendar modal (
ctrl+cor via menu) - Click any date to view events for that day
- Use arrow keys to navigate months and days
Your Google API credentials are stored in credentials.json (excluded from git).
| d | Delete the selected note |
| ctrl+f | Search all notes |
| ctrl+t | Open theme picker |
| escape | Exit edit mode (switch to view mode) |
| q | Quit OpenPad |
Getting Started
Creating Your First Note
- Press
nto create a new note - Enter a name for your note (e.g., "Python Basics")
- The note opens in edit mode - start typing!
Writing Markdown Notes
OpenPad supports standard Markdown syntax. Here are some examples:
# Heading 1
## Heading 2
- Bullet point 1
- Bullet point 2
1. Numbered item 1
2. Numbered item 2
**Bold text** and *italic text*
Inline code: `print("Hello World")`
Code block with syntax highlighting:
```python
def greet(name):
return f"Hello, {name}!"
print(greet("Student"))
### Organizing Notes into Folders
1. Press `ctrl+n` to create a new folder
2. Enter a folder name (e.g., "DataStructures", "Algorithms", "WebDev")
3. Select the folder in the sidebar, then press `n` to create a note inside it
### Searching Notes
1. Press `ctrl+f` to open the search modal
2. Type your search query
3. Results show matching notes with content snippets
4. Press `enter` to open a selected note
### Changing Themes
1. Press `ctrl+t` to open the theme picker
2. Use `up/down` arrow keys to navigate
3. Press `enter` to select a theme
4. Press `escape` to cancel
Your theme preference is saved automatically and persists between sessions.
## Data Storage
Your notes and settings are stored in your home directory:
| File/Directory | Description |
|------------------------|--------------------------------------------------|
| `~/.openpad/notes/` | Your notes (Markdown files organized in folders) |
| `~/.openpad/meta.json` | User preferences (selected theme) |
### Sample Notes
On first run, OpenPad creates sample notes to help you get started:
- **Database/** - Lesson I, Lesson II, Lesson III
- **Linux/** - Commands
- **Java/** - Lesson I through IV
Feel free to delete or modify these!
## Available Themes
| Theme | Description |
|----------------------|-------------------------------|
| opencode | OpenCode's default dark theme |
| tokyonight | Deep blue/purple nights |
| everforest | Warm green forest tones |
| ayu | Orange & teal on deep dark |
| catppuccin | Soft pastel dark |
| catppuccin-macchiato | Darker catppuccin variant |
| gruvbox | Retro warm brown & yellow |
| kanagawa | Japanese ink-inspired blues |
| nord | Arctic cold blue-grey |
| matrix | Hacker green on black |
| one-dark | Atom One Dark |
## For Computer Science Students
OpenPad is designed with CS students in mind:
- **Lecture Notes** - Create folders for each course (e.g., "CS101", "DataStructures", "OperatingSystems")
- **Code References** - Store code snippets with syntax highlighting
- **Quick Access** - Search lets you find that one command or concept instantly
- **Markdown** - Practice writing documentation in Markdown - a skill you'll use professionally
- **Lightweight** - No electron bloat, runs in tmux/screen if needed
- **Portable** - Your notes are just Markdown files - open them in any editor
### Example Use Cases
- **Database Class**: Store SQL queries, schema designs, and normalization notes
- **Linux Administration**: Keep a cheat sheet of common commands
- **Programming Languages**: Document syntax, common patterns, and gotchas
- **Algorithms**: Write pseudocode and analyze time complexity
## Troubleshooting
### Terminal Colors Look Wrong
Ensure your terminal supports true color (24-bit). Most modern terminals do by default. If colors look washed out or incorrect:
```bash
# Check if your terminal reports true color support
echo $TERM
# Should show: xterm-256color or similar
Permission Errors
If you encounter permission errors when saving notes:
ls -la ~/.openpad/
# Check that the directory is owned by your user
Python Version Error
If you see a syntax error, check your Python version:
python3 --version
# Must be 3.10 or higher
To upgrade Python on Ubuntu/Debian:
sudo apt update
sudo apt install python3.11
License
MIT License - Feel free to use, modify, and distribute as needed.
Built with Textual - a TUI framework for Python.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openpad-1.0.0.tar.gz.
File metadata
- Download URL: openpad-1.0.0.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24155f4c589c28a4742dbb414f5f7de661e5706b4a1ef94b971b5d47e44bcf12
|
|
| MD5 |
17911a7976100118d61338208538c443
|
|
| BLAKE2b-256 |
69d096dd235da9b0080362f8ba4cf57b4e1432ef339c5260a63ef1ebb9eb9ab6
|
File details
Details for the file openpad-1.0.0-py3-none-any.whl.
File metadata
- Download URL: openpad-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ffb325b520b1b60729d1cebaf2fc83e96aa15a45fe11575f2f53ea025d44a02
|
|
| MD5 |
9369f03b5b3ca60ec5b9376a1226d91a
|
|
| BLAKE2b-256 |
9142b808694ee1a318a06dab2bbb030d189170503021393a70a6d7e9f5989525
|