21 votes

First release of my native Markdown notes app, Notementum (v0.1.0)

Screenshot

I posted a few days ago about a notes app I was working on called Notementum, and I'm happy to show you the first release (0.1.0). Installation instructions are available on the Github repo: https://github.com/IvanFon/notementum

There's still lots of things I'd like to add, both big and small, and definitely a few bugs here and there, but I've been going for too long without sharing it, and I find it's best to release as early as you can to start getting feedback, and perfect it later.

One things that's missing is documentation. I'd like to start on this soon, but I'm probably not going to share this anywhere other than Tildes just yet, so this comment will do for now :)

Right now, the app only runs on Linux. I'd like to add Windows support, and it almost works, the problem is that WebKit2Gtk, the embedded web view I use to show note previews, doesn't support Windows. I'm going to explore some other options in the future, whether that's figuring out how to compile it, or allowing other preview methods (user's web browser, PDF, etc.).

The app is also very much in alpha, so you shouldn't use this for anything important, there may be bugs that can cause you to lose some of your data. If you do use this for anything, make sure you backup your notes database.

If you want to use it, here's a wall of text on usage:

Usage

The notes database is located at ~/.notes.db. When you launch the app, it'll load it, or automatically create it if it doesn't exist. I'd eventually like to allow choosing different locations, but it's hard coded for now.

The interface is fairly simple. The leftmost sidebar displays a list of notebooks, and the "middlebar" displays a list of notes. Selecting a notebook will display the notes within it in the notes list. Selecting a note will open it in the editor, which is to the right.

To create a new note, press Escape to focus on the searchbar above the notes list, and start typing a title. If no existing notes are found, press enter, and a note will be created with the title you entered.

To rename a note, double-click on it in the notes list.

The editor has a toolbar with 4 buttons, from left-to-right:

  • Toggle between editor and preview (shortcut: Ctrl+E)
  • Assign the current note's notebook
  • Add an attachment
  • Delete the current note

The green circle all the way to the right turns into a loading indicator when you have unsaved changes. Once you stop typing for a few seconds, your changes will be saved, and it'll switch back into a green circle.

Notebooks

Notebooks aren't created directly, they're based on what notebooks your notes are assigned to. This means that, to create a notebook, assign it to a note. To delete a notebook, just delete all the notes contained within it, or assign them to a different notebook.

Clicking on the notebook toolbar button brings up this dialog. To create a new notebook, double click on <New notebook> and type in a name.

Attachments

The notes database also stores attachments. This means that the entirety your notes can be contained in your database. Clicking on the attachment toolbar button brings up this dialog. The toolbar allows you to upload an attachment or delete it respectively. Pressing Insert Selected will insert the image at your cursor in the editor (![](image.png)).

Theme

The screenshots show the app with my desktop Gtk theme, Arc Dark. On your desktop, it'll use whatever your theme is. It should look good with any Gtk theme, but at some point I may bundle Arc Dark with it.

The note preview currently has it's colours hard coded to look good with Arc Dark, so it may look a bit off on other themes. I'll try to sort that out at some point.

Planned features
  • load/save database to/from different path
  • Windows support
  • note exports
  • database encryption
  • changing syntax highlighting theme
  • note tags
  • full-text search
  • proper documentation
  • more keyboard shortcuts
  • integrated sync
    • although you should already be able to use Git, Synthing, Dropbox, etc.
  • Vim mode for editor
    • maybe somehow embed a terminal to allow using vim/emacs/whatever
Boring technical stuff

The app was made with Python and Gtk+ 3. I've done this before and I really enjoy the development experience, especially with Glade to design the interface. There are still some Gtk features that I should really be using to make things simpler (GtkApplication, actions, and accelerators) that I'll be adding later.

The database uses sqlite 3. This is convenient, as it allows for storing everything in one file, and will make fast searches easier in the future. Attachments are stored as base64 directly in the database. This makes it easy to have all your notes be contained entirely in the one database, but I may have to think about a more efficient method in the future.

Markdown rendering is done using mistletoe, which has been great to use. Syntax highlighting and MathJax renderers were already available, so it was just a matter of combining both and adding custom image loading from the database, which was very easy. Mistletoe has a very easy to use API, so this was no problem.

For LaTeX math rendering, I'm using MathJax. It supports pretty much everything, which is nice, but it can take a while to load. I'm currently loading it from a CDN in a <script> tag, so I'm hoping once I load it from a local file it'll be a bit faster. If not, I may have to find another solution.

Like I said, the app still has a few bugs that need to be fixed. If you find any problems, it would be great if you could leave a comment here or open a Github issue (or if you have any feature requests).

2 comments

  1. gpl
    (edited )
    Link
    I have been wanting something like this for a while to help me write quick documentation notes for projects I’m working on. I’ll try it out on Monday and see how smoothly it goes. Looks really...

    I have been wanting something like this for a while to help me write quick documentation notes for projects I’m working on. I’ll try it out on Monday and see how smoothly it goes. Looks really good from what you’ve described though.

    EDIT: @what I tried installing this today, but when running I get an error:

    pkg_resources.DistributionNotFound: The 'PyGObject' distribution was not found and is required by notementum
    

    I double checked and made sure I had python-gobject installed, which I did. Not sure what might be causing this. I cloned the AUR package, built it, and installed with pacman.

    3 votes
  2. [2]
    Comment deleted by author
    Link
    1. what
      Link Parent
      Thanks! I have a pretty long list of features to add and bugs to fix, but I think I’ll try to sort out Windows support sooner rather than later.

      Thanks! I have a pretty long list of features to add and bugs to fix, but I think I’ll try to sort out Windows support sooner rather than later.

      2 votes