Notes management program written in python pygtk2
Python Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


pnote - a note management program in python - pygtk2


- Easy to take note, contain date time stamp
- Save note into sqlite3 database
- search notes using keyword, understand & (and) or | (or)
- Encrypted fields to store sensitive information
- Multiple sqlite3 database supported
- Various text formatting including inserting Image
- Filter note content or text selection using external command (perl -ne for example)
- Run the note as a script or a selection as a script
- Edit note or text selection as source code using gtksourceview with autoindent, syntax highlight feature etc..
- Gtksourceview standalone for quickly editing code snippet
- History tracking, time calculation for tasks, Navigation based on highlight text and update history
- Undo / Redo
- Save content to a text file - insert from text file
- Toggle read-only / read write mode
- Classify notes by Flags, can edit custom flags and list / search note by flasg - like TODO, URGENT, etc..
- Pop up reminder if it is setup to remind
- Send note as an email, supporting SSL smtp server like gmail
- Check new emails from multiple IMAP servers, support IMAP ssl/tls . Can download and read email in text format
- Manage clipboard text, work like a simple clipboard program
- Fast and memory / cpu efficient.


- Python 2
- PyGTK2 and its dependencies including support for libglade
- PyCrypto


- Tested and working stable in Linux and Windows where pygtk2 is supported

Author: Steve Kieu <>
License: GPL

* Ubuntu Linux:
 - dependencies: apt-get install python-gtk2 python-glade2 python-crypto
 - Download the package and extract it. It wil create a directory called pnote
 - cd pnote
 - Run it using command python

* Other Linuxes - just install the gtk2 and glade binding for python and python-crypto
* Windows - Yeah

- It runs fine provided that you install these python extensions above. Below is the step by step guide which works and tested by me at least.

pnote installation on window

Follow this exactly steps by steps :-). It is Windowz anyway

ok basically need to copy libxm2.dll and rename it to libxml2-2.dll to c:\Python26. The bundle gtk above is a bit big, maybe use the sas version and extract libglade later
So the step is below:

. Install python 2.6 from

. Install gtk runtime for window from

. Get iconv.dll somwhere and copy into gtk dir

. download libglade (tested version 2.6.4-1 from This url has many other up-to-date win32 binaries!

. Exact the libglade-2.0.0.dll and copy to gtk installation dir (c:\Program Files\gtk2-runtime or similar)

. Download libxml2 from  extract it , rename to libxml2-2.dll and copy it to gtk2 runtime dir like above.

. Download three pygtk installation files, pycairo, pygtk, pygobject from Click in the directory and select latest version. pygtk select the glade version.

. Install in order, pygobject, pycairo and pygtk

. Download pycrypto from
/downloads/ and install it

. Download pnote, extract and run inside the dir

The whole thing is that user does not need to edit PATH manually, gtk runtime installer does it, and it is smaller
Only two thing, libglade and libxml need manually copied/renamed. Can write an installer to do it automatically

1. Integrate with ldap for email address lookup
2. Sent/Put to Sent Folder after sending note as email

* Completed above items
1. When click send mail, the dialog asking recipient appear, press Ctrl + f to display the ldap search dialog.
2. Click preference and add in the [data] section a key  sent_folder=IMAP_SERVER/IMAPFOLDER  IMAP_SERVER is the server string or IP defined when run mail setup - IMAPFOLDER is the folder you want to put your sent message in.

Note that the FOLDER might not be the same as it appear on your mail client, example gmail Sent is [Gmail]/Sent Mail - To find out best is to run the IMAP list command and see the output manually. The following python snippet will dothat

import imaplib
imapobj = imaplib.IPMAP4_SSL('your_imap_server_name_or_IP') # remove _SSL if not using SSL
imapobj.login('your email', 'password')


The work team feature - sync note across several work station

Sync algorithm:

* Each note has permision attr to allow: read/write for each user
* Note title can be used across - it must be unique

A sync B
- A read the last time stamp sync from B from lastsync table. Tell B. Initially it is 0 so all notes from B will be pushed.
- B select all notes with lastupdate > from A and gives B list of titles and lastupdate, lastsyncfrom information. Also the deletednotes title as well
- A check all notes with that
  * title and lastupdate newer and my lastupdate < my lastsyncfrom - then pull it.
  *                            if my lastupdate > my lastsyncfrom - conflict might happen - merge question
  * deletednotes then delete it

- A update these notes.
- lastsyncfrom is used to detect conflict and popup the merge dialog. (both update the note with diffrent time)

** UPDATE 20130527

New feature added. You can now to upload the note into webnote and sync the note from webnote. Webnote is my webnote server thus you can take note, search etc... The url is - if anyone is interested to have an account please email me.