| 
					
				 | 
			
			
				@@ -0,0 +1,89 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+title:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+title-meta: Dirnotes README 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+note: run this with pandoc -T "Dirnotes README" -s README.md -t html > README.html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Dirnotes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### SYNOPSIS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The **dirnotes** family of apps allows you to add a descriptive comment to a file. The descriptions are stored in two places: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * in the xattr properties of the file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * in a database located in the user's home directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[The [MacOS](#macos) stores its comments in a similar way.] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The <code>**dirnotes**</code> app is a GUI app, using the Qt5 framework. At startup, it displays the contents of the current directory, and the comments associated with any of the files or directories.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Simple mouse clicks allow you to tunnel down into directories, or rise up the file system.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You can create/edit comments and choose whether the _xattr_ or _database_ version of the comments take priority,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The <code>**dirnotes-tui**</code> is a very similar app, but uses the _curses_ framework to display its activity in a terminal window. This can be handy if you have to work across a network, or if terminal apps are you preference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The <code>**dirnotes-cli**</code> is a command line tool, which may be handy for scripting. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### USAGE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The <code>**dirnotes**</code> program displays usage and keystoke info when you press _F1_. The <code>**dirnotes-tui**</code> program display onscreen usage when you press the 'h' key, or _F1_.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The <code>**dirnotes-cli**</code> program has a man page. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+In short, you navigate <code>**dirnotes**</code> and <code>**dirnotes-tui**</code> by using the up/down arrow keys, <enter> to enter into a directory. The **-tui** version accepts _e_ for edit,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_s_ for sort, _M_ to change between xattr/database priority. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The **<code>dirnotes-cli</code>** has options for _-l_ list and _-c_ create a comment.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Direct Access 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Instead of an API, here is how you can get directly at the underlying comment data. If you intend to use the **dirnotes** apps, try to keep the two versions of the comments in sync. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  * xattr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Use the commands   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        xattr -l [filename]   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+to display the comments/author/date on a file. For example:   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $ xattr -l /etc/fstab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        user.xdg.comment: controls the default mount bindings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        user.xdg.comment.author: patb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        user.xdg.comment.date: 2022-09-29 08:07:42 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The other options on the **xattr** command line tool allow you to write (*xattr -w*) or delete (*xattr -d*) the comments. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  * database 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The comments are stored in an Sqlite3 database, usually located at "~/.dirnotes.db". The database itself is contained within that file, and its schema is this: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+~~~~ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CREATE TABLE dirnotes (name TEXT, date DATETIME, size INTEGER, comment TEXT, comment_date DATETIME, author TEXT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+~~~~ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+field         usage                                                  example   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+------        -------                                                --------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+name          the long filename, using python's os.path.abspath()    /home/patb/projects/dirnotes/README.md  | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+date          the file's modified date                               2020-01-13 09:25:40  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+size          the byte count of the file                             145   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+comment       a utf-8 string                                         the readme for the GIT page   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+comment_date  the date of the comment itself                         2020-10-03 22:30:19  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+author        the system name of the user who created the comment    patb   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The 'date' and 'size' fields reflect the file's modification date and size at the time of the last edit of the file comment, which is also 'comment_date'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### MacOS {#macos} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The **MacOS** inherently supports file comments. The Finder app manages most of the user activity. It handles file comments in a similar manner to **Dirnotes**. Comments are stored in two places: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * in the xattr properties of the file   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ** using a different xattr-tag   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * in a database located in each directory   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ** in the .DS-Store file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The user can examine the file comments by opening the GetInfo dialog, and scrolling down to "Comment" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If the Finder is used to copy/move files, the comments are moved properly to both destinations. If you use the os to copy/move the files, you can ask that the xattr properties get moved, but the .DS-Store file will not be updated. That means the Finder will not see file comments on the destination file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+**MacOS** has AppleScript, by which you can ask the Finder to perform the file copy/move. In this case, the comments are moved properly. 
			 |