a wiki based on you folder structure
Introduction
inFolder is a personal wiki, working as an invisible additional layer to your existing file system.
inFolder allows you to use your folder hierarchy to organize files, web resources and informal notes.
One of the difficulties people gets involved into in the digital age is information organization.
Yet the simpler - and overlooked - method is instantly available: a well organized folder/directory structure on your disk.
Along the years I optimized the hierarchy of the directories where everything I do (digitally) is stored.
Unfortunately, however, browsing a directory structure - even a well optimized one - can be frustrating, if you end up in some areas you forgot about.
What is really needed is a way to document your data, and navigate your data, browsing your digital life in a less frustrating way.
This is the field of Personal Information Management http://en.wikipedia.org/wiki/Personal_Information_Management , but here I'm concentrating more on the aspect of information collection / documentation, rather than on other aspects as appointments, reminders etc
A perfect way to navigate along a hierarchy exists - and it is the Wiki http://en.wikipedia.org/wiki/Wiki With a wiki you move along pages containing text, images, links to files, ... and hyperlinks to other pages: the perfect way to create a well-documented structure.
In particular, the personal wiki (which is defined as a wiki maintained primarily for personal use. Personal wikis allow people to organize information on their desktop or mobile computing devices in a manner similar to community wikis.)
Features
This program is a personal wiki.
It is a graphical text editor used to maintain a collection of pages, whose content is created by the user, but whose hierarchical structure is dictated by the directory structure.
New pages can easily be added at the same level of the current page as new nodes
The important thing to mention now is that the pages are text files, thus allowing for transparent reading / modification / export outside the program.
The page content is stored in the text file using a variant of Markdown (http://en.wikipedia.org/wiki/Markdown see below: Wiki Syntax), but - unlike most of personal wikis - it is not necessary to know it, since editing and viewing are done in a single view mode.
Each page can contain basic formatting: header lines, bold, italic, underline, verbatim, strikethrough, highlight,
and images (imported by file or taken by the user as a snapshot with an internal command).
Pages can be individually customized in their default properties: background, font, header and link colors, font type and size; the settings can be recursively applied to a whole subtree.
Advanced formatting is provided with the support of outlining capabilities: the text sections under a given header ("sections") can be opened/closed, it is possible to show just sections up to a given depth, move them up/down, or change their depth. The open/closed status of each section is remembered for the next time the user returns to the page.
Page saving is performed automatically as soon as the user leaves the page, and encryption is optionally provided on a per-page basis.
Hyperlinks can be inserted: to other pages, to webpages (calling the browser), to directories (calling the file browser) or to any generic document, which is opened by the applications predefined in the system.
Additionally, a plugin is provided to insert directly LaTeX equations.
At the top of the page a link is always present, allowing by clicking it to launch the filebrowser in the current directory.
At the left of the page, a list of children nodes is provided, allowing to visit them in turn: this provides the basic navigation mode. The user can provide different icons for the children nodes.
Each children node is color-coded with a timebox, whose color is based on the modify time, allowing to recognize which node is newer and which is older. The box can be a full square if the node contains an inFolder file, a small square if somewhere under that node there are inFolder files, or empty if there arent any in the whole subtree. By right clicking on the timebox the time can be modified, or an icon for the children node can be set.
A file list window can be activated by a hotkey, where files in the current directory are listed and comments can be displayed. Comments can be added or deleted. Double-clicking on a file in the file list window, if the file extension is recognized, launches the associated application.
Navigation is further improved by the use of user-defineable quickjump buttons in the toolbar.
If the user moves folders around containing inFolder information, this information is preserved and it will be perfectly read by the program, when navigating to the new folder location. Of course links to the previous location from other pages become 'broken', so an utility is provided to find any broken links that are left around.
The linking of node to node creates in brief time a complex network:
- nodes have default children nodes i.e. the subfolders of the current node
- nodes can add links to different nodes
- multiple nodes can belong to the same cluster of nodes created with the add node command
All the connection info if memorized and can be displayed graphically if the user has installed the Graphviz package. It is possible to display a panel showing the nearest nodes and their connections, selectively open/close them by control-click, and navigate there by clicking them.
You can perform a basic search in the current page, and you can also perform a very fast search on all your wiki pages. This search allows clauses are separated by <and>'s, can start with <not> and contain <or>'s. If in the system is available the powerful Recoll utility (http://www.lesbonscomptes.com/recoll/ ), it is possible to search for file content also.
A tag system is present that allows the user to navigate in a more direct way to pages which have been pre-tagged .
Pages are stored in the directories themselves, as long as the user browse at or below a pre-defined home directory: browsing above that level is allowed, but no files are saved.
A page is simply a plain textfile with wiki formatting. At each directory where a page is added, a .inF file is created. This file is a compressed package (.tgz) containing the plain text page (or pages) for the current directory, and all the additional images linked by the node pages.
If the user requires it, the file can be encrypted if the gpg program is available. It encrypts the single file, but in so doing prevents the whole subtree being explored by the inFolder program. All pages that require encryption under a common encrypted root share the same password.
If the user deletes all text from the page, the .inF file itself is deleted, thus preventing pollution of the directory structure
Pages can be printed/exported to html and pdf.
Due to all the work you put into this increasingly large network, it's paramount to ensure you a good backup system. So all your network is saved periodically (after the GFS backup scheme http://en.wikipedia.org/wiki/Backup_rotation_scheme#Grandfather-father-son ). You will have therefore 7 daily, 4 weekly, 12 monthly backups, plus one more each year. The program allows you to open, in parallel to the page you are editing, the same page - if existent - in any old backup, to compare, copy&paste.
Wiki syntax
Formatting, links and images inserting, can also be accomplished directly by using the following syntax:
'''
1) Headings are created by using an appropriate amount of "=" characters:
= = = = = = header1 = = = = = =
= = = = = header2 = = = = =
= = = = header3 = = = =
= = = header4 = = =
= = header5 = =
(no space between the "="'s, here it is used to avoid having it read as header)
2) Links to another page like this:
[[iconsets]] => links to page in current node namespace
[[/Users/fred/test1/.inFolder.localnode1]] => links to additional node
[[/Users/fred/test1/pdffile.pdf]] => links to a file for which a helper app is defined
[[file:/Users/fred/anotherfile.pdf]] => the same
[[http://www.google.com]] => links to a website
[[http://www.google.com]] => (without [[ ]]): the same
for all the links, the syntax [[foo|bar]] links to "foo" but display "bar"
3) Markup, beginning and ending a region with marks:
**bold**, //italic//, __underline__, ''verbatim'', ~~strike through~~, ^^highlight^^
(To render a whole block as verbatim the first and last line of the block should contain 3 quotes and no other characters)
4) Images:
{{.inFolder.n.gif}}
The filename for an image can either be absolute or relative. If relative it is looked for in the same directory
as where the text source of the current page is.
'''
.inF package content
in the .inF file, at the minimum, you have the main page, named .inFolder
If additional nodes are created in that subspace with the 'add node' command, they are named .inFolder.<name>_<i>
Images are named .inFolder.<i>.gif
Equations are named .inFolder.eq<i>.gif
.inF file content:
.inFolder (required): the page text
.inFolder.name_1 ... .inFolder.name_n (optional): additional nodes
.infolder.1.gif ... .inFolder.n.gif (optional): images
.inFolder.eq1.gif ... .inFolder.eqn.gif (optional): equations
.inFolder.eq1.tex ... .inFolder.eqn.tex (optional): ... and their latex source
pageproperties.cfg (optional): format properties of current page
.outlinestatus (optional): status of the folded outlines
filescomments.txt (optional): comments on files
OSs supported
Linux, OSX
Install
Check requirements
in Linux we rely on an environment supporting xdg-mime and xdg-open (desktop-independent tools for configuring the default applications of a user): currently KDE, GNOME, Xfce support it.
* python http://www.python.org/
* tkinter http://wiki.python.org/moin/TkInter (the standard GUI, if you have python installed you should already have it)
* ImageMagick http://www.imagemagick.org (software suite to create, edit, compose, or convert bitmap images)
ALSO SUGGESTED:
* ttk (strongly suggested, to be able to use the file panel) http://pypi.python.org/pypi/pyttk
* latex (A high-quality typesetting system: for equation insert only) http://www.latex-project.org/
* gpg (The GNU project's complete and free implementation of the OpenPGP encryption standard: for page encryption only) http://www.gnupg.org/
* graphviz (for node network display) http://www.graphviz.org
* to print / export: ebook-convert (part of calibre http://calibre-ebook.com/ or the couple of programs html2ps http://user.it.uu.se/~jan/html2psug.html and ps2pdf (part of the Ghostscript suite) http://www.ghostscript.com/
* to search for file content: recoll http://www.lesbonscomptes.com/recoll/
Download
Download from the Sourceforge page http://sourceforge.net/projects/infolder/
Fedora example
sudo yum install tkinter ImageMagick makes it already usable. To achieve its full potential:
sudo yum install gnupg graphviz ghostscript scrot html2ps recoll texlive-latex texlive-latex-bin dvipng
Ubuntu example
sudo apt-get install python-tk
sudo apt-get install graphviz imagemagick scrot html2ps ghostscript
Unpack & run it
Unpack it:
tar zxvf inFolderv2.02.tgz (change accordingly to exact file name)
Enter the directory just created:
cd v2.02 (change accordingly to exact directory name)
Install:
sudo ./install.py
Run
sudo inFolder
Modify quickjumps in config.py, and the variable homedir in inFolderinit.py
(the files are located in the install directory, by default /usr/local/inFolder)
Check helper applications in config.py: these work for me, check if they work for you.
COPYRIGHT
2011-2014 Alessandro Magni magni@inrim.it
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE