A Note can contain whatever bits of textual information might interest you, and you can store your Notes in as many separate Collections as you would like.
Each Note is stored in its own text file, and each Collection consists of a folder full of Notes. Collections can be stored wherever you would like. Collections can be synced to the cloud, and/or to other devices, using services such as Dropbox and iCloud. You can use any text editor, on any platform, to view and edit your Notes. Notenik formats each text file in a simple, straightforward way that is easily read by humans.
Each Note always has a Title and a Body, but other fields are often added. A Tags field is generally present, and a Link field is also common. Alongside of a simple list of the Notes in a Collection, Notenik always displays an additional outline view, showing the same Notes organized by their Tags.
Notenik offers multiple ways to get Note data out of Notenik and into various alternate formats. These transformation functions include a special templating language, and a special scripting language.
Note that this documentation describes the latest version of the Notenik application, written in Swift, and not the earlier version, written in Java.
Let’s start with some of the Notenik basics.
You’re already reading this information, so obviously I don’t need to tell you how to find this.
But here’s a few other help items that are available, including some that may not be so obvious.
This User Guide is available as a web page from the Notenik site and from the Notenik Help Menu.
But the same content is also available as a Collection of Help Notes, by selecting the corresponding Open Command from Notenik’s Help menu. You may find it a little easier to read and navigate in this form, plus you can practice using Notenik as you read the Guide!
You can choose to store your Notenik Collections anywhere you would like; storing them within Dropbox or iCloud Drive will allow them to be synced to the cloud and to other devices. If you’d like, you can create a folder named Notenik, and then store multiple Collections as subfolders, but that’s not required.
To create a new Collection, select New from the File menu. This action will open up a standard Mac window for selecting a folder. Use the standard New Folder button in the lower left corner of this window to create an empty folder for your new Collection, then select that newly created folder (all within the same window) and hit the Open button.
The next thing you will see is a window allowing you to specify certain attributes for your new Collection.
The Collections Title will be formed from the folder path containing this Collection. Feel free to tweak this if you’d like.
Each Note file is an ordinary text file, and can be opened using any text editor, in addition to being editable within Notenik. Depending on what application you might wish to be the default text editor for your notes, you may wish to pick some special file extension to be used. If you don’t care about this, or this doesn’t make any sense to you, then feel free to just ignore this whole paragraph and leave the Preferred File Extension set to txt.
Next select the fields you would like to be made part of each Note. Every Note must have a Title and a Body, and the Tags and Link fields are commonly used, but feel free to use the checkboxes to select whatever other fields might be useful to you.
When you’re done with this screen, click OK to continue, and you’ll see your first Note!
The Display tab shows you what your Note looks like. Your note is formatted as a web page, and displayed within Notenik using a built-in web browser. If you click on a hyperlink within the display, then the linked page will replace your Note. If you wish to get back to your Note, then click on the Refresh button in the Toolbar. If your Note has a Link value, then click on the Launch Link button in the Toolbar to see the linked page within your default web browser, instead of Notenik’s internal browser. The Edit tab lets you make changes to the Field Values of a Note.
Use the ‘+’ (plus) sign on the Toolbar to clear the Field Values and prepare to Add a new Note.
Use the ‘-’ (minus) sign on the Toolbar to delete the currently selected Note.
Click on the OK button on the Toolbar, or click on the Display tab, to complete and save your latest entries on the Edit tab.
The Note Menu also has equivalent commands, with keyboard shortcuts, to add a New Note or Delete a Note.
You can alter the typeface and font size used on the Display tab by selecting the Display Appearance item under the Format menu, or by clicking on the Display Fonts button on the toolbar. You may then pick a typeface and font from the displayed dropdown menus or, if you’d like, enter the CSS you’d like to be used directly, bypassing the limits of these menus.
You may also alter the font size used on the Edit tab through use of the commands available to you under the View menu.
The first half of the Notenik display shows all the Notes in your current Collection as a simple list, initially sorted by Title. You can navigate through this list using some of the buttons on the Toolbar:
Some of the same navigational commands are available under the Note menu, with handy keyboard shortcuts noted on the right. There you will also find a command to scroll the list so as to bring the currently selected Note into view at the top of the displayed Notes.
The Search field on the Toolbar allows you to search for the entered text, and display the first Note containing this text in any field being searched. After finding the first occurrence, you may use the Find Again command under the Note menu to search for the next Note containing the specified text. The Search function will search each Note’s Title, Link, Tags and Body fields for matching text. Case (upper- or lower-) will be ignored for the purposes of the Search.
Under the Window Menu, you’ll find an entry for the Log window. You can usually ignore the Log, but if Notenik is not behaving as you think it should, a look at the Log window can sometimes help determine what is going on.
This section will tell you the details of how Notenik stores its information on disk.
Each Note is stored as a separate text file, in the UTF-8 format, capable of being read and modified by any text editor, on almost any computer system in the world.
The file name is generally identical to the Note’s title, with the exception of a few occasional tweaks to avoid running afoul of various common operating system limitations.
Any of the following file extensions may be used:
The two preferred extensions are ‘.txt’ (short for text) and ‘.md’ (short for markdown – more on this later).
Use the Text Edit Note command under the Note menu to open the currently displayed Note in your default text editor. When you’re done with your external edits, and have saved the file, use the Reload Note command to see the results of your external edits within Notenik.
Each Note is part of a Collection, and each Collection is stored in its own folder (aka directory). Each Note within a Collection must have its own unique Title.
You can organize your Notes into as many Collections as you would like, and store each Collection wherever you would like.
The Notenik application can open multiple Collections at a time, each in its own window. The Open Recent command under the File menu provides easy access to recently opened Collections.
You may use a command under the File menu to designate the current Collection as your Essential Collection. Once identified, this will be the first Collection opened each time the application launches.
The Save As command under the File menu allows you to save an entire Collection in a new location, with the option to either keep the current location (effectively making a copy) or to delete it (effectively moving the Collection to a new location).
Note that Notenik does not make any assumptions about how you wish to name your Notenik folders. When creating a new Collection, or using Save As to save your current Collection to a new location, Notenik expects you to create and appropriately name a new folder that will contain your Collection. In other words, you should not simply select an existing folder with the expectation that Notenik will then create a subfolder to store your Collection.
Within each Collection folder you will find one file for each Note in the Collection, with the file name based closely on the Note’s title.
In addition to the Note files, the following special files and folders may be found within a Collection folder.
Each Collection folder will contain a special file named ‘- INFO.nnk’. This is a plain text file, in Notenik format, containing some handy metadata about the Collection, such as the last sort sequence set for it. If you sync a Collection to other devices using a service such as iCloud or Dropbox, then this metadata will be synced as well.
Each Collection folder will also contain a special file named ‘- README.txt’. This file simply identifies the folder as a Notenik Collection.
Each Collection folder will normally also contain a ‘template.txt’ or ‘template.md’ file identifying the fields used within the Collection.
A ‘files’ folder will contain any Attachments for the Collection.
a ‘mirror’ folder will contain templates, scripts and css used to mirror the collection to an alternate format (such as HTML).
A ‘reports’ sub-folder may contain a number of Template files and/or Script files.
In addition to the normal Open and Open Recent commands under the File menu, Notenik also has an Open Parent Realm command.
You may invoke this command to specify a folder containing one or more Collections, and/or one or more Script files. Notenik will scan all likely folders within the parent folder, looking for Notenik Collections and Scripts. Notenik will then display these Collections and Script files within a new window, as if they were Notes within a Collection. You may then click on the Launch Link command in the Toolbar to perform the appropriate action: either opening a Collection within Notenik, or preparing a Script file for execution within the Scripter window.
Note that the Tags tab will organize these Collections and Scripts by folder, and also by type of link.
Notenik is a modern, well-mannered Mac application, which means that it does not presume to have free run of your hard drive, roaming wantonly wherever it will.
In other words, to use the official jargon, Notenik is sandboxed.
At the same time, Notenik does not take all the data you have given it and stash it away in some secret location that only Notenik can access because — well, it’s your data. You can store it wherever you like. It’s stored in plain sight. You can see it whenever you want. And if you want to open that data using your favorite text editor, then more power to you. Have at it. Knock yourself out.
These two Notenik traits can sometimes come into conflict, however. If you store your Notenik data in lots of different Collections, and store those Collections in different places, then Notenik may sometimes have trouble getting access to them.
Here’s how this works.
Any Collection folder that you select through the Open command under the File menu will be available to you, because you have explicitly selected it for use by Notenik.
Any Collection folder that you select using the Open Recent command under the File menu will be available to you, because macOS remembers that you previously gave Notenik permission to access that Collection.
If you use the Open Parent Realm command under the File menu to have Notenik search for its Collections and Scripts within a parent folder, then those Collections and Scripts will be available to be opened, because you have explicitly given Notenik permission to access everything within that parent folder.
(Note that you can also achieve these same results by using the macOS FInder to drag a folder and drop it onto the Notenik app icon.)
In general, the rules above will be enough to cover most situations. If they prove too restrictive, though, you can always grant Notenik full disk access in the Security & Privacy pane of System Preferences.
To better support users with existing collections of notes stored in text files, Notenik makes its best effort to recognize and appropriately handle the following variations on the normal Notenik format.
Markdown - The first line of the file contains a Markdown level 1 heading, which is to be used as the Note’s title. The remainder of the file makes up the body. No metadata, and no field labels.
MultiMarkdown - The file may start with metadata, including a title, but there is no explicit label identifying the start of the body; instead, the first blank line indicates the end of the metadata and the start of the body.
Plain Text - The title is taken from the file name, and the entire contents of the file makes up the body. No metadata, and no field labels.
Note that these three formats differ from the normal Notenik format in one or more of the following ways:
While Notenik will create a Note’s file name from its title, Notenik expects the title of the note to be explicitly identified in the first line of the file, as in the following example:
Title: Supported Variations in Text File Formats
Notenik will generally write out a blank line between fields, to aid in readability, which means that the beginning of the body is not triggered by the first blank line.
Notenik will explicitly identify the start of the Note’s body with a body label, as in the following example:
Notenik will generally be able to determine which of these variations is being used based on the contents of the first few lines of the text file.
Notenik will also attempt to respect these variations when modifying an existing Note, keeping each Note in its original format.
Since a Collection of Notes lives on your local storage as a folder full of text files, it can be easily synced to the cloud and/or to other devices via a service such as Dropbox or iCloud. Simply store your Collection somewhere in your Dropbox folder, or in your iCloud Drive folder.
In most note-taking systems, a Note is just a chunk of text that may have a title (often the file name) and might contain some embedded tags.
Notenik is different. Each Note is a set of multiple fields, and different Collections may have different sets of fields to serve different purposes.
Let’s further explore the way fields are used within Notenik.
In its most basic form, a Note consists of a Title and a Body.
A Title consists of a few words telling you what the Note is about.
The Body consists of the text of the Note, containing as many words as you like.
The Tags Field offers another way to organize the Notes within a Collection. Tags may be used to group related notes into categories. One or more tags may be associated with each note, and each tag may contain one or more sub-tags. A period or a slash may be used to separate one level of a tag from the next level, with the period being preferred. A comma or a semi-colon may be used to separate one tag from another, with the comma being preferred.
Click on the Tags tab to see your Notes organized by tags, instead of appearing in a straight List. If a Note has multiple Tags assigned, then it will appear multiple times on the Tags tab, once for each Tag. By adding multiple levels to your Tags, you can effectively organize your Notes into an outline.
Beneath the Collection menu you will find an option to perform a Tags Mass Change. The user will be prompted to specify from tags and to tags, and Notenik will then replace the from tags (in combination, if more than one is specified) with the to tags.
A Link Field within Notenik is intended to hold a URL: a hyperlink to a location on the Web (or to a local file, if you’d prefer to use it that way). You can easily Launch a link from within Notenik by clicking on the Launch Link button in the Toolbar, or by selecting Launch Link under the Note menu, or by using the keyboard shortcut CMD-L.
Adding a Link to a Note doesn’t necessarily reduce the Note to a simple Bookmark, but this is certainly one way to use a Collection of Notes.
Note that if you use a Link to point to a local folder containing another Notenik Collection, then Launching that Link will result in opening the linked Collection within Notenik (so long as you have given Notenik permission to access that folder).
You may use the Set Local Link command under the Note menu to choose a file or folder to be linked; the resulting ‘file:///’ style of URL will then replace any value previously stored in the Link field for the current Note.
Add a Seq Field to a Collection in order to specify a sequence number, revision letter, version number or priority to be associated with each Note.
A Seq field may contain letters, digits and one or more periods (aka decimal points) or hyphens or a dollar sign (’$’).
You may wish to assign a unique Seq value to each Note in a Collection, but Notenik does not require this (in other words, it does allow duplicate Seq values to be assigned to different Notes).
If you’d like to see your Notes listed in sequence by their assigned number, you can use the Sort Menu to change the sequence of the displayed list from Title to Seq + Title. Use the Reverse option to see them in descending sequence.
If you want to insert a new note with a Seq Value already assigned to another Note, then first select the other Note, then use the Increment command under the Note menu to increment the Seq field of the existing note, as well as following notes that might otherwise cause duplicate Seq values.
To add a new Note with the next available Seq value, first select the last note in the list (the one with the highest seq field) and then add a New Note in the normal manner.
Note that field names beginning with “Seq” will be treated as Seq fields for the purpose of sorting when using the Scripting Engine. This will cause numeric fields, for example, to sort into their proper numeric sequence, instead of treating them as alphanumeric fields.
Add an optional Status Field to your Collection, indicating each Note’s degree of completion, and you have a basic To Do List.
Status values are usually selected from the following standard list. Note that each status may be represented by a single digit and/or an associated label. The digits serve to place the values into an approximate life cycle sequence.
The labels may be modified by placing a series of integer + label pairs in the Value area of the relevant template file, with separating punctuation. Such a template line might look something like this:
Status: 1 - Idea; 4 - In Work; 9 - Published;
See Override Default Fields with a Template file for more information on the Notes template file to be modified.
Look under the File menu for an option to Purge Notes that have been Canceled or Completed. You’ll be given the option of discarding the purged Notes, or of copying them to another location.
Add a Date field to a Collection in order to track the date each note was officially published, or a due date for each note. A date may be expressed in any of a number of common formats. It may also be a partial date, such as a year, or a year and a month. It may or may not contain a specific time of day.
Note that the Date field has several helpful editing tools. You can enter a free-form date yourself, or you can use a Calendar widget to pick dates from a Calendar. You can use the Today button to set the date to Today’s date, and you can use the Recurs button to apply the Recurs rule, if one has been supplied.
If you need to export a Collection in a format suitable for sorting by Date, then you may wish to use the Standardize Dates to YMD command under the Collection menu to make sure that all dates are stored in a yyyy-mm-dd format suitable for sorting.
Add a Recurs field to a Collection to cause a Date for a Note to recur on a regular basis.
Use the Recurs button on the Date editing row to apply the rule to the current Date associated with the selected Note.
Specify a recurs rule using normal English, as in the following examples:
Add a Status field, a Seq field, a Date field and a Recurs field to a Collection, and you have all the elements of a personal task management system.
A Collection such as this can use the Date field to track due dates, and/or the Seq field to track priorities. If desired, use the Tags field to group tasks by context and/or by project.
If you use the Close Note option under the Note menu, then you can cause the Due Date to recur (if a Recurs field is available), or the Status field to show the task as Completed, if it is not eligible to recur.
The Sort menu contains two options specific to task tracking. The first option sorts all the Notes in a list by Date and then Seq, while the second option sorts all tasks by Seq and then Date. In both cases, completed tasks sort to the bottom of the list.
And don’t forget the Purge Option under the File menu, which will allow you to purge Cancelled and Completed Notes from a Collection.
Add a Code field to a Collection in order to store a code snippet as part of each Note in that Collection. The code block you enter in a Code field will be formatted on the Display tab enclosed in HTML pre and code tags, so that line breaks will be honored, and the code will be displayed using a monospaced font.
You can specify an Author or an Artist field when using a Collection as some sort of catalog of works by others. For example, I have one Collection that I use to keep track of my favorite Quotations, and the Author field indicates the author of each quotation. I have another Collection where I maintain my thoughts about a series of albums, and use the Artist field to indicate the individual or group responsible for each album.
In either case, you can use Sort Option # 5 (under the Sort menu) to sort a Collection by Author or Artist.
When sorting by Author, the sort will be by last name first; if a Collection contains an Artist field, but no Author field, then the sort will be by Artist, and the word ‘the’ will be ignored when found as the first work in the Artist’s name. (In other words, ‘The Beatles’ will be sorted under ‘B’, not under ‘T’.)
Add a Timestamp field to a Collection in order to generate a timestamp for each Note. Timestamp values are assigned automatically, and are not available for editing within Notenik. Timestamps reflect the original creation date and time for the Note and therefore should never change over the lifecycle of a Note.
Timestamp values will be generated in a “yyyyMMddkkmmss” format, consisting of:
All of this is normalized to Greenwich Mean Time, and formatted without spaces or punctuation.
In general, such a field can be used as a unique identifier for each Note in a Collection.
If you are adding a Timestamp field to an existing Collection, then you should first modify the Collection Preferences to check the box for the Timestamp field, and then execute the Normalize Storage command beneath the Collection menu to set the Timestamp values for the existing Notes.
Timestamps such as these are often used when creating a zettelkasten.
You can use whatever Field Labels you want within a Collection, but there are a few other Field Labels that have some special Notenik logic associated with them.
Author – The author(s) of the Note.
Rating – Your rating of the note, on a scale of one to five.
Type – The type of note. Any values may be used to distinguish between different types of notes within a collection.
Teaser – An excerpt from the note used as a teaser in a list of notes. The teaser may be formatted using Markdown.
I’ve said that, at their most basic, each Note consists of a Title Field and a Body Field. But each Note can actually contain any number of fields.
Each Field in a Note consists of the Field’s Label, followed by a colon and one or more spaces, followed by the Field’s Value.
In other words, something like this:
Title: This is a Sample Note
Field Labels must follow a few rules. A Field Label must always start at the beginning of a line. A Field Label may not consist of more than 48 characters, and may not contain special characters other than dashes and underscores.
The Field Value may be specified on the same line, and/or on one or more following lines.
The Body Field, if present, will always be the last Field in a Note, since all following text will be assumed to be part of the Body (even if it contains strings of text that might otherwise appear to be additional Field Labels).
Each Field Label may be considered to have a proper form (including capitalization, spaces and punctuation), and a common form (the proper form without capitalization, whitespace or punctuation). The common form is considered to be the key identifier for the Field, so that any variations of the Label that include the same letters and digits in the same sequence will be considered equivalent.
By default, Notenik shows only four Fields for a Note: Title, Link, Tags and Body.
When creating a new Collection, you will be presented with the Collection Preferences window automatically, to give you a chance to customize the fields to be used for that new Collection. You may also open the Collection Preferences later in order to add additional fields from the standard list presented in this window.
Just put a check mark next to whichever fields you’d like to use for that particular Collection. Then click on the OK button to save your template with the indicated fields.
The selected fields to be used for a Collection are saved within a file named ‘template.txt’ or ‘template.md’ within a Collection’s folder.
You may also modify this template file manually, using your favorite text editor.
The Note template file is formatted using the normal Notenik format, although the Field Labels specified need not have any accompanying values.
The file extension used for the template file will be used as the file extension for Notes subsequently created within the Collection.
By specifying the value
<longtext> as the value for a field in a template file, the user can indicate that a field is to be treated as a long text field, rather than a one-line text field. A longtext field will provide the user with multiple lines for data entry on the Edit tab, and will honor Markdown syntax when formatting for display on the Display tab.
Following is a sample Note file, showing all of the Fields that Notenik treats as special in some way. Feel free to copy and paste to create a template file, as described in the previous section.
Title: The unique title for this note Author: The author of the Note Date: 2016-12-13 Status: 0 - Suggested Type: The type of note Seq: Rev Letter or Version Number Tags: One or more tags, separated by commas Link: http://notenik.com Rating: 5 Index: Index Term 1; Code: A block of programming code Teaser: A brief sample of the note Body: The substance of the note
Notes can have some special formatting applied to them.
Markdown is a simple syntax for formatting plain text files so that they can be easily read and written by humans, but also can easily be converted into HTML for use on the Web. If you’d like, you can use the Markdown syntax for formatting the body of each note. But it’s not required.
When you view a Note on the Display tab, you will see the Body Field Value converted to HTML using a Markdown parser. If you haven’t used any special Markdown formatting, then the text will simply appear as you entered it.
Notenik allows the user to create a link from one Note to another Note within the same Collection.
You may create such a link directly by specifying the domain ‘https://ntnk.app/’ followed by the title of the Note you are linking to.
For example, here’s a working link to the Overview Note within this Help Collection.
Note that this is coded within the body of the Note using normal Markdown syntax for links. What makes this a note-to-note link is the special URL prefix of ‘https://ntnk.app/’. Links to this domain will be intercepted by Notenik and treated as note-to-note links. The string following this prefix will be treated as either a note Title or, if you Timestamp your Notes, a Timestamp. A link using a Note title will ignore case (upper or lower), spaces and punctuation, so that, for example, a link to the Note titled ‘Timestamp Your Notes’ may be coded as ‘https://ntnk.app/timestamp-your-notes’.
While this method works, and has the advantage of staying within the normal Markdown syntax, it is not the most convenient approach. As an optional alternative, the user may choose to use the wiki-like syntax of enclosing the title of another Note within double square brackets.
In order to enable this option, the user must first check the “Double Bracket Parsing for Inter-Note Links” checkbox on the Collection Preferences pane. Once this option has been enabled for a Collection, then a link to another Note may be coded by simply enclosing the title of the target Note (or its timestamp!) within double square brackets.
For example, here’s a working link to the Overview note using this syntax.
You may also attach any number of files to your Notes. Here’s the way this feature works.
Start by selecting the Note that is to receive the attachments.
Use the Add Attachment item under the Attachments menu in the Toolbar to add an Attachment to your Note. You will then be prompted to select the file to be attached, and then to specify an optional suffix that can be used to distinguish this attachment from other files attached to the same note. After you supply the requested information, Notenik will copy the indicated file to the “files” folder within your Collection. The file will be given a name that starts with the same name as the Note, followed by the specified suffix, and then followed by the original file extension. The original file will remain as-is.
Once a Note has attachments, you may open one of them by selecting it from the same Attachments menu in the Toolbar. The request will then be passed on to the operating system, and the attachment will be opened in whatever application is assigned to files of that type.
If you’d like to delete an Attachment, select the Delete Attachment item under the Note menu. If more than one attachment for that Note exists, then you will be prompted to specify the one you wish to delete. Be aware, though, that when you delete an Attachment, the underlying file in the files folder will be deleted.
If you change the Title of a Note, then any files attached to the Note will be automaticallly renamed to match the new Title for the Note.
If you delete a Note, then its attachments (if any) will be deleted as well.
In case you’re wondering, the association between a Note and its Attachments is based solely on matching file names. In other words, if you wish to delete an attachment by using your operating system to delete the file from the files folder, then that’s perfectly ok with Notenik: the next time you open that Collection, Notenik will have no “memory” of that attachment. By the same token, if you wish to use your OS to place a new attachment in the files folder, with a name matching that of a Note, then Notenik will recognize that new file as an attachment for the Note the next time you open that Collection.
Notenik offers an import function, plus a plethora of ways to get your Notenik data out of Notenik and into various other formats.
There are several different actions you can perform with individual notes.
Copy - Use the Copy command beneath the Edit menu to copy the currently selected Note to the system clipboard.
Cut - Use the Cut command beneath the Edit menu to copy the currently selected Note to the system clipboard, and then delete the selected Note.
Paste - Use the Paste command beneath the Edit menu to paste a copied or cut Note into the same or a different Collection (or into an email, or any other destination capable of receiving text).
Duplicate - Use the Duplicate Note command beneath the Note menu to duplicate the currently selected Note within the same Collection.
Share menu command - Use the Share command beneath the Note menu to share the contents of the selected Note with several different options: share the Note’s body only, or the entire Note; share in plain text format, or in Markdown format, or as an HTML fragment or as an entire HTML document; and copy the result to the system clipboard, or write the result to an output text file.
Share via Toolbar - Use the Share command on the Toolbar to send an entire Note to any of several different destinations (Mail, Message, etc.)
Be aware that the user should be on the Display Tab, and not the Edit tab, in order to perform cut/copy/paste functions since, when on the Edit tab, cut/copy/paste will typically apply to the text within a field, and not to the entire note.
Also be aware that Note Attachments will not be copied or pasted.
You can import and export a Collection in a variety of formats, using commands found under the File menu. Following are the supported formats.
Import/Export in Notenik Format
You can import and export your Notes in the current collection from/to a folder in the same Notenik format.
Import/Export in Tab-Delimited Format
Each Note will be represented as one row/line, and each field will be represented in a separate column. Tabs are used to separate columns. This format is suitable for import into MS Excel, for example.
Import/Export in CSV Format
Each Note will be represented as one row/line, and each field will be represented in a separate column. Commas are used to separate columns. This format is suitable for import into MS Excel, for example.
Export in JSON Format
Each Note will be represented as one JSON object.
Export in OPML Format
Each Note will be represented as an outline object.
When exporting the Notes in a Collection, you will be presented with a few options for the export.
Output Format: Described above.
File extension: Pick from the list or type in a custom extension.
Use Tags Export Prefs? Select ‘Yes’’ if you wish the current Tags Export Prefs to be applied. You may filter the notes to be exported, for any of the output formats (other than the Notenik format), by adjusting the entries in the Tags Export preferences. You may specify one or more Tags to be selected, so that only notes containing those Tags will be exported. You may also suppress one or more Tags, meaning that exported notes will have those Tags removed from the resulting output.
For example, if you have a collection of blog entries stored as a Collection of Notes, and you have multiple blogs to which they are published, you can specify Tags for the relevant blogs for each note, and then select only those Notes when publishing a particular blog (and suppress the Tags for the other blogs).
If you leave the Tags to Select field blank, then all Notes will be exported.
Note that the Tags Export Preferences are global across all Collections.
Split Tags? Select ‘Yes’ if you wish one row to be written for each Tag on each Note. This will result in a special export in which each Note may be written multiple times, once for each Tag in the Note’s Tags field. Notes without any Tags will be written only once, with a blank Tag field. In other cases, the Tag field will contain a single Tag, even if the Tags field contains multiple Tags.
Add Web Extensions? Select ‘Yes’ to add a number of fields that can be useful for generating Web pages.
The careful observer may at some point wonder why Notenik includes both a ‘Save As’ command as well as the ability to Export a Collection in the Notenik format. Are these just two ways of accomplishing the same objective? Well, not quite.
It’s true that both commands will copy your current Collection of Notes to a new location. However, there are some subtle differences between the two.
With ‘Save As’:
With ‘Export to Notenik’:
In summary, these are two different tools, and you should be careful to use whichever one is the best fit for your particular situation.
If you have a Collection of Notes representing Web Bookmarks, then you may wish to use the ‘Favorites’ tag (or ‘Favourites’ for those who prefer the British spelling) to identify the bookmarks you reference most often. You may then use a sub-tag within the ‘Favorites’ tag to organize your favorite bookmarks into categories. Once you’ve identified your Favorites, then you may use the Favorites to HTML command under the File menu to create a Web page containing all your favorite bookmarks, organized under headings representing the categories you have chosen. Notenik will display your favorites in four columns, with a maximum of 32 lines per column. Assuming a reasonable number of favorite bookmarks, these will typically display all of your favorites within a single Web page on your Mac. You may then wish to identify the resulting page as the homepage within all of your Web browsers (Safari, Chrome, etc.).
Note that you can change the Columns per Page, the Rows per Column, and the width of each Column on the Favorites tab of the application Preferences.
Notenik provides a function for merging data from Notes (or other data sources) into a template file in order to create one or more output text files.
The text files created may be of any type, but certainly one of the most useful formats is html, allowing users to generate one or more Web pages from their notes.
See the Merge Template File Spec for complete information on the expected format of a Merge Template file.
Template files can be placed in a folder named ‘reports’ within the Collection folder where the reports are to be used. Each template file should include the word ‘template’ somewhere within its file name.
Once a template file is created, suitably named and placed, it will become available as a report that can be selected from a drop-down (identified with a gear icon) on the Collection’s toolbar.
Selecting a report will then cause the Collection’s notes to be merged into the corresponding template file, creating whatever ouput is identified in the template file.
Two other options appear on the Reports Action drop-down (identified with the gear icon).
Selecting one of these will then cause Notenik to create a reports folder for the collection, if one does not already exist, and then to create a report template containing all of the Collection’s fields in a basic layout. The user may then modify this template in order to further customize the output formatting. Once the user reloads the Collection, those reports will then become available to run.
Notenik can record and play a script file that will execute a series of data transformations. Data can be input from one or more Notenik Collections and/or from tab-delimited or comma-separated files. The input data can be sorted and filtered using any of the fields contained within the data. The data can then be used as input to a Template file, or output to a new tab-delimited or comma-separated file.
See the Merge Script File Spec for a complete description of a Script file.
Place one or more script files within the reports folder for a Collection, and these files will then become available as Reports.
Scripts will be executed within a separate Scripter window. You can open this window directly by selecting it from the Window menu.
The Scripter window can be used for a number of different functions.
Play a script file that already exists.
Start and stop recording of a new script file.
Direct execution of actions to be recorded within a new script file.
In all of these cases, the scripting actions and results will be displayed within the lower portion of the window.
The first five fields at the top of the Scripter window — Module, Action, Modifier, Object and Value — correspond directly to the columns in a Script file. These fields should generally be entered from left to right, since earlier selections will modify the options available in later fields.
The next column, identified with the ‘@’ symbol, allows you to select a local file whose path is to be entered in the Value field.
The final column, labeled “Go” will cause Notenik to try to execute the command that has been entered into the first five fields, and will record the command, if you are currently recording a Script.
Note that there are Script commands that can be entered here that will not be found within the Script file spec, since these commands are provided to allow the recording and playing of Script files, but cannot be recursively executed from within a Script file. For these commands, the Module field is ‘script’. The available Actions are as follows.
open — Use the Modifier field to specify either an input or an output file, and use the Value field to specify the location of the script file to be read or written.
play — After opening an input file, you can execute the play command to play the Script file previously specified.
record — Use this command to begin recording a new Script file after previously opening that file as output.
stop — Use this command to stop recording a script. It is at this point that the executed and recorded commands will be written to disk.
Notenik has the ability to automatically mirror all the Notes within a Collection to an alternate format (usually HTML), typically stored in the same folder.
Here’s the way this works.
Although it’s not essential, it may help if you start by using the Generate Sample Mirror Folder command under the Transform menu. This command will then create a ‘mirror’ folder within your frontmost Collection. This folder will then contain useful subfolders and templates that you can use as a starting point.
To make further modifications, you will need to use your trusty text editor to modify the supplied templates, and/or create new ones.
However it’s created, your Collection will need to contain a subfolder named ‘mirror’ in order to enable mirroring for that Collection.
The ‘mirror’ folder should then contain another folder named ‘templates’.
At a minimum, to enable mirroring, the ‘mirror/templates’ folder should contain one file with both ‘note’ and ‘mirror’ as part of the filename. The contents of this file should conform to the Notenik Merge Template File Spec.
If Notenik finds the subfolders and file identified above within a Collection being opened, then mirroring will be automatically enabled for that Collection.
Whenever you then modify or add a Note within that Collection, mirroring of the Note will happen automatically, in the background, creating whatever alternate format you have specified with your note mirror template file.
In addition to mirroring individual Notes, you can create/refresh index pages for your Collection in two different ways.
A simple straightforward index can be built by supplying a second template file, containing the words ‘index’ and ‘mirror’ as part of the filename.
More complex indexing can be done by creating one or more Merge Script files and placing them within a ‘mirror/scripts’ folder.
Whichever approach you choose, indexing will by default not be done automatically, but only when you explicitly request it from one of the relevant options under the Transform menu. This option can be overridden in the Collection Preferences window for a given Collection, allowing indexing to happen automatically whenever a Note is added or updated.
In all cases, mirroring will be performed in the background, in parallel with other Notenik actions, which has a few implications:
You won’t have to wait for mirroring to be completed before you move on to other tasks within Notenik.
The results of mirroring may not be apparent immediately, but only after a few seconds have passed.
You won’t receive any notification when mirroring has completed, so as not to interrupt any other work you may be doing.
If mirroring does not produce the expected results, you may need to consult the log window to see what might have gone wrong.
Note that many of the individual Notenik functions described above can be combined in order to build websites. Create a Collection, add appropriate fields, create template files, record a script, and you can easily generate a set of HTML files that will work together to present a unified website.
What’s more, whenever you add or change or delete any content, you can rerun your script file(s) to regenerate your new website, with everything updated to reflect the latest content.
The following sections contain useful reference information.
Following are the keyboard shortcuts available within the app. When combined with the CMD key, these keys can be used as handy shortcuts.
A - Select All
C - Copy
E - Open Essential Collection
F - Find
G - Find Again
H - Hide Notenik
I - Increment Date or Seq
J - Reload Note
K - Close Note
L - Launch Link
M - Minimize
N - New Note
O - Open
Q - Quit Notenik
R - View Scripter Window
S - Save Note
T - Text Edit Note
U - Catch Up Daily Tasks
V - Paste
W - Close Window
X - Cut
1 - Sort by Title
2 - Sort by Seq + Title
3 - Sort Tasks by Date
4 - Sort Tasks by Seq
5 - Sort by Author
[ - Prior Note
] - Next Note
→ - Scroll to Selected Note
‘=’ - Increase Edit Font Size
‘-’ - Decrease Edit Font Size
‘,’ - Display Application Preferences
‘;’ - Display Collection Preferences
In the List view, when sorting tasks, the first column contains an ‘X’ to mark items that have been completed. In addition, any tasks bearing today’s date (and not yet completed) will now additionally show a ‘T’ in this same column.
When a Collection contains a date field, it will now be shown on a Note’s display view with the appropriate day of week name.
Restructured the User Guide to make it easier to navigate.
Added an OPML export function.
Added the ability to mirror a Collection of Notes to an alternate format.
Made a few small improvements, focusing on the Calendar displayed when updating a date, and the date recurs logic.
The Collection Preferences window is shown when creating a new Collection, but can also be accessed after a Collection has been created. Previously, changing the preferred file extension after initial creation had no effect, but the file extension for the template file will now be changed to reflect the new preferred extension. Notes already created, however, will retain their existing extensions. This should close Issue # 31.
The new Collection Preferences design now has two tabs, one for a scrollable list of fields, and the other for various other Collection Attributes. OK and Cancel buttons are positioned at the bottom of the window, outside of the tabs. A new file path has been added at the very bottom of the window, showing the file system path to the Collection whose preferences are being modified. This should close Issue # 30.
Made various changes intended to improve performance, especially when opening large collections. See Issue # 28.
Added ellipsis to menu item to indicate that a new window will open before any action occurs. See Issue # 29. Also added a keyboard shortcut of CMD-; (Command semicolon).
Added vertical scrolling to the Collection Prefs window, to make sure all content is always accessible. This resolves Issue # 14.
The entire Edit view is now scrollable, to ensure all fields are accessible, no matter what size the screen or window, and no matter how many fields a Collection has. This resolves Issue # 13.
After updating the font info in the Display Prefs, all current Display panels should now be refreshed immediately to reflect the new choices.
In order to avoid excessive identification of metadata, most special characters (other than hyphens and underscores) will now disqualify a text string preceding a colon from being treated as a field label.
Improved support for opening existing files using MultiMarkdown Metadata; in particular, now looking for triple-dash lines before and after the metadata, and treating those lines appropriately. A line with four periods is also accepted following the metadata.
Fixed a few bugs.
Added an option to export a Collection to a new Notenik Collection; this is intended to be especially useful when opening an existing folder full of text files, not necessarily in the usual Notenik file format, and then exporting them to a new Collection in which the Notenik format is fully normalized.
Notenik is now more liberal in terms of accepting Notes in a wider variety of formats. Plain text notes, Multi-Markdown notes, and Markdown notes will now be accepted, in addition to the defined Notenik format.
Notenik is now more liberal in terms of the sorts of dates it will parse correctly. Specifically, an 8-digit yyyymmdd date, without any punctuation, should now be correctly parsed.
A few more code improvements.
Corrected a bug that could sometimes cause a legitimate note to be misidentified as the collection’s info file.
A note can now be shared in JSON format, and a collection can be exported in JSON.
Spelling will now be checked in the Body field.
The Note menu now contains a Reload Note command, which will reload the currently selected Note from disk. This is useful after using an external editor to modify a Note on disk.
Added a logic check to see if the app completed a successful launch the last time it was run. If not, then the application resets the user preferences to avoid a recurring crash.
Wiki-style links between Notes within a Collection are now supported. Several related pieces of functionality work together to enable this capability.
The Collection Preferences pane now includes a checkbox for “Double Bracket Parsing for Inter-Note Links”. Turning this option on for a particular Collection allows the user to begin adding links between Notes.
Once this option is enabled, the body of a Note may include a link to another Note by enclosing the title of that other Note within double square brackets.
A new Variable Modifier of ‘W’ available in Merge Templates allows these inter-note pointers to be converted to usable links when generating HTML.
Modified to treat the Teaser field as longtext.
Some note-takers start their text files with lines such as the following.
# Note Title #tag Body starts here.
Notenik will now recognize the first line of such a file as containing the Note’s title, and will recognize the second line as containing a tag for the Note.
Also, bracket characters and parentheses preceding a colon will now indicate to Notenik that such text should not be treated as a field label.
A Timestamp field can be used to generate a timestamp for each note, in a “yyyyMMddkkmmss” format, consisting of:
All of this is normalized to Greenwich Mean Time, and formatted without spaces or punctuation.
Down is the default, but you can switch to Ink on the new Markdown tab within the Application Preferences.
Notenik had been resetting the Reverse setting each time a Collection was opened.
App Store testers correctly pointed out that selecting this option for the Help Notes would cause a crash.
You can sometimes end up with empty tags in a collection, as a result of deleting notes or changing tags. Previously these would be included when creating a Favorites page, but they are now suppressed.
The Reload Collection command will hopefully be easier to find beneath the Collection menu.
Based on feedback from a user in Australia, added support for the British spelling of ‘Favourites’.
The Cut, Copy and Paste commands — along with their corresponding keyboard shortcuts — are now enabled on the Edit menu for Notes. After selecting a Note, the Cut or Copy commands may be used to cut/copy the entire note. The note is copied to the clipboard as text, so that it can then be pasted into any application where text is accepted — including, but not limited to, Notenik itself. Be aware that the user should be on the Display Tab, and not the Edit tab, in order to perform these note-based functions since, when on the Edit tab, cut/copy/paste will typically apply to the text within a field, and not to the entire note.
Beneath the Collection menu an option has been added to perform a Tags Mass Change. The user will be prompted to specify from tags and to tags, and Notenik will then replace the from tags (in combination, if more than one is specified) with the to tags.
The Menu command can be found beneath the Note menu. The keyboard shortcut is CMD-L.
The user can now change the Columns per Page, the Rows per Column, and the width of each Column on the Favorites tab of the application Preferences.
When reading input data via the Scripter window, the user may now specify a modifier of ‘notenik-split-tags’ to add a ‘Tag’ field, and then return one row for each tag assigned to each note (or one row with a blank tag, for notes with no tags).
A Template Set command will now honor an operand of ‘++’ and increment the indicated variable by a value of 1.
A note that was being deleted would sometimes be immediately re-added. This has been corrected.
Attachments were being deleted when the parent Note’s title was changed. This has now been corrected.
An option has been added to the Sort menu that will allow the user to reverse the current sequence of the list (from ascending to descending, or vice-versa).
Added a new input format to read a Markdown file and chunk it up into sections, based on its headers. Each resulting row of data will consist of fhe following fields:
Note that the resulting data can be used to generate a Table of Contents for the Markdown file, using an appropriately formatted template.
Folder(s) may now be opened by dragging them onto the Notenik icon in the Finder. Notenik will respond in one of four ways to each Finder item.
The last release inadvertently made Notenik unavailable to Mojave users.
When the user pulls down the Reports Action menu from the Toolbar, the first two items they see will now be:
Selecting one of these will then cause Notenik to create a reports folder for the collection, if one does not already exist, and then to create a report template containing all of the Collection’s fields in a basic layout. The user may then modify this template in order to further customize the output formatting.
Markdown is now used to format all longtext fields as they appear on the Display tab.
Made some internal changes to handle field types in a way that will better lend itself to future growth.
Made a few more minor improvements.
Added code to remind users to rate and review Notenik on the Mac App Store.
Made a number of tweaks to fix bugs and/or improve operation.
A homegrown “good enough” Textile Parser has been added to Notenik. It can be invoked by including a file with a ‘.textile’ file extension when generating HTML output.
When using the Include command within a Scripting Template file to include another file, automatic conversion will now be done when the included file extension differs from the output file extension. In particular, Markdown and Textile documents will be converted to HTML, when appropriate. Note that the Textile parser used is one internal to Notenik, and is at best a “good enough” tool, but one that is far from comprehensive.
Field names beginning with “Seq” will now be treated as Seq fields for the purpose of sorting when using the Scripting Engine. This will cause numeric fields, for example, to sort into their proper numeric sequence, instead of treating them as alphanumeric fields.
Made some improvements in the logic for incrementing the Seq field to properly increment following Notes to prevent overlap.
Fixed a bug that sometimes caused newline characters to be ignored when trying to load a Note from disk.
A dash may now optionally follow the letter O, which will result in the html string produced by the Markdown conversion having opening and closing paragraph tags stripped from the resulting string.
A field name of Artist will now be used as an alternate to Author when sorting by Author. A leading ‘The’ will be ignored, and values will be sorted as if they were all lower case.
By specifying the value <longtext> as the value for a field in a template file, the user can now indicate that a field is to be a long text field, rather than a one-line text field.
The Save As command relies on the user creating a new folder to receive the copied contents of the current Collection. It then deletes the folder in order to take advantage of a native macOS command to copy the existing folder to the new location. However, this logic would allow the user to select an existing folder, containing other contents, and would then delete it. Notenik has been modified to make sure that the requested recipient of a Save As command is actually empty, before copying the old Collection to that (presumed new) location. The program is also now making an additional check to ensure the user doesn’t try to make his entire Desktop folder a Notenik Collection (even if it is empty).
When a Collection (typically, of quotations) has a ‘Work Type’ field, then Notenik will now present a standard, selectable list of options to choose from using what is known as a “Combo Box” control for editing.
Improved the speed of opening a new Collection by optimizing the sorting of Notes as they are loaded into memory.
A few minor bug fixes and minor improvements.
Notenik can now be used to record script files, as well as play them back.
Users can now play a Script file that will run a series of data transformations.
Each Note can have one or more Attachments.
This new Notenik Preferences tab allows the user to specify tags to select and tags to suppress.
Users can now pick from previously identified tags when entering a new one.
Markdown conversion now renders embedded HTML and does a smart typographic conversion.
Occasional problem with erroneous blanks in the ‘X’ column (indicating done or not) is now fixed.
Execution of this command will change all the dates in all the Notes for the current Collection so that they are stored in yyyy-mm-dd format, which can be useful to ensure than an export file sorts correctly on date.
The Split Tags command under the File menu will split the tags for each Note, and write one output row for each Tag for each Note. Notes without tags will be written out only once; Notes with multiple tags will be written out once for each Tag. In addition to the Tags column, a Tag (singular) column will be added to the front of each row, containing one particular Tag for the Note. This export file can be used, for example, to create an index page for each Tag.
Miscellaneous bug fixes and improvements.
Merge Templates may now be created, stored in a reports folder, and then run from a Collection’s Toolbar.
The File Menu now has a new command to export Favorites to HTML. This allows the user to identify favorite bookmarks using the ‘Favorites’ tag and then export those favorites to a four-column Web page.
This is the initial release of Notenik written in Swift.
Notenik source code is available on GitHub.
Notenik also makes use of CoreXLSX to read XLSX files. CoreXLSX is also separately licensed.
If you have questions about Notenik, bug reports, or requests for enhancements, please shoot me a note at firstname.lastname@example.org and I’ll try to get back to you as quickly as I can.