2020-07-12 14:07:45 +10:00
# cadmus
Shell Scripts to Facilitate Effective Note Taking
2020-07-13 00:11:59 +10:00
2020-07-14 01:40:13 +10:00
## Introduction
2020-07-13 00:22:22 +10:00
2020-07-14 00:04:46 +10:00
Essentially I ~~used to~~ have a dozen shell scripts in `~/bin` that I use to capture notes,
this is an attempt to wrap them into a single script and then have aliases to make them quick to access.
2020-07-14 01:40:13 +10:00
![](./MainMenu.png)
## Philosophy
2020-07-14 07:35:24 +10:00
- ** **< span style = "color:rgb(90,210,90);font-family:Courier New,Courier, monospace,serif;" > cadmus</ span > **** will take the notes directory from the global variable `CADMUS_NOTES_DIR`
- The Actual work will be done by subscripts denoted by `description.bash`
- The subscripts will take the note directory as an argument so they are portable and modular
- The Arguments will be shifted and then all passed down to subfunctions
- I'll just need to be careful that loose arguments aren't dangerous
2020-07-13 00:50:04 +10:00
- Be a Front end to tie together different scripts and tools
- Don't replicate work other people have done.
- Plain Text, Open Source.
2020-07-14 01:02:06 +10:00
- Be Modular
- Pipe in input, output goes to STDOUT
- Leave Aliases and piping to the user
- See [Recommended Aliases ](#recommended-aliases )
2020-07-13 00:22:22 +10:00
2020-07-13 00:11:59 +10:00
## Installation
2020-07-13 00:50:04 +10:00
To install, satisfy [the dependencies ](#Dependencies ) and do something like this:
2020-07-12 22:07:01 +10:00
2020-07-13 00:11:59 +10:00
```bash
cd ~/DotFiles
if [[ -d ".git" ]]; then
echo "Adding Submodule";
2020-07-13 00:22:22 +10:00
git submodule add https://github.com/RyanGreenup/cadmus
2020-07-13 00:11:59 +10:00
else echo "Cloning Repository";
2020-07-13 00:22:22 +10:00
git clone https://github.com/RyanGreenup/cadmus
2020-07-13 00:11:59 +10:00
fi
stow -t $HOME -S cadmus
```
2020-07-12 22:07:01 +10:00
2020-07-13 22:41:08 +10:00
|:warning: WARNING |
| --- |
| Stow is [currently broken][stowIssue] on Arch If you are using Stow 2.3.1-2 downgrade |
2020-07-13 22:40:34 +10:00
> Downgrade with:
> sudo pacman -U https://archive.archlinux.org/packages/s/stow/stow-2.2.2-5-any.pkg.tar.xz
[stowIssue]: https://github.com/aspiers/stow/issues/65
2020-07-13 00:50:04 +10:00
## Usage
2020-07-13 01:45:03 +10:00
2020-07-13 01:34:07 +10:00
It's all Menu driven so just follow the diagram to do what you need.
2020-07-13 01:28:58 +10:00
![Mindmap of Program Flow ](./usage.svg "Diagram of the flow of the script" )
2020-07-13 01:45:03 +10:00
### Assumptions
2020-07-13 23:24:02 +10:00
It is assumed that:
1. notes are:
1. *Markdown* files with a `.md` extension
2. Underneath `~/Notes`
3. Recoll updates it's index on the fly
* `~/Notes` will need to be indexed by *Recoll* so the results will show up.
2. You're going to use [Kitty ](https://sw.kovidgoyal.net/kitty/ )
* You could either change the source or use anoter terminal that supports
calling functions with `--` , e.g. `kitty -- nvim`
2020-07-14 04:26:05 +10:00
3. SSD
* I use an SSD and some scripts are pretty inefficient (like `grep | cut |
xargs find` to avoid creating a variable), I don't know if things like
would work on a HDD.
4. SystemD
2020-07-14 04:31:39 +10:00
* or atleast have `tmpfs` mounted at `/dev/shm` ([See the Arch Wiki: tmpfs][tmpfs]) [^wpdtmpfs]
2020-07-14 19:29:06 +10:00
5. I use [*Fish*] and *Oh My Fish* ([*OMF*]) as my default shell, this means `basename $SHELL` is `fish` for
me and even though this is written in `bash` maybe that could cause issues.
* Try [*Fish*] for a while, it's quite good, when you need to test something
it's easy to temporarily jump back with `exec zsh` .
* This should only matter for `cadmus find` where the use of [*Fish*] mmeans
that results can be highlighted, I cannot get this to work with `bash` or
`zsh` and I don't know why.
* I wonder if this would work for [*nushell*]???
[*nushell*]: https://github.com/nushell/nushell
[*Fish*]: https://fishshell.com/
[*OMF*]: https://github.com/oh-my-fish/oh-my-fish
2020-07-13 01:45:03 +10:00
2020-07-12 22:07:01 +10:00
## Dependencies
2020-07-12 22:08:13 +10:00
- [R ](https://en.wikipedia.org/wiki/R_(programming_language ))
- [highlight ](https://www.archlinux.org/packages/community/x86_64/highlight/ )
2020-07-14 01:02:06 +10:00
- [recode ](https://www.archlinux.org/packages/extra/x86_64/recode/ )
2020-07-12 22:08:13 +10:00
- [node ](https://nodejs.org/en/ )
- [nvim ](https://neovim.io/ )
- [fzf ](https://github.com/junegunn/fzf )
- [code ](https://github.com/lotabout/skim )
- [sk ](https://github.com/lotabout/skim )
- [rg ](https://www.google.com/search?client=firefox-b-d&q=ripgrep+github )
- [perl ](https://wiki.archlinux.org/index.php/Perl )
- [stow ](https://www.google.com/search?client=firefox-b-d&q=gnu+stow )
- [python ](https://www.python.org/download/releases/3.0/ )
2020-07-13 01:40:14 +10:00
- [tmsu ](https://aur.archlinux.org/packages/tmsu/ )< sup > AUR</ sup >
2020-07-12 22:08:13 +10:00
- [ranger ](https://www.archlinux.org/packages/community/any/ranger/ )
2020-07-13 01:40:14 +10:00
- [mdcat ](https://aur.archlinux.org/packages/mdcat/ )< sup > AUR</ sup >
2020-07-13 23:24:02 +10:00
- [Kitty ](https://sw.kovidgoyal.net/kitty/ )
- I've also heard good things about [iterm2 ](https://www.iterm2.com/ )
2020-07-12 22:08:13 +10:00
- [xclip ](https://www.archlinux.org/packages/extra/x86_64/xclip/ )
- [sd ](https://github.com/chmln/sd )
- [fd ](https://github.com/sharkdp/fd )
- [sed ](https://www.gnu.org/software/sed/ )
- [cut ](https://www.gnu.org/software/coreutils/manual/html_node/The-cut-command.html )
- [grep ](https://www.gnu.org/software/grep/ )
- [find ](https://man7.org/linux/man-pages/man1/find.1.html )
- [GNU realpath ](https://www.gnu.org/software/coreutils/manual/html_node/realpath-invocation.html#realpath-invocation )
2020-07-13 00:28:57 +10:00
- [Recoll ](https://www.lesbonscomptes.com/recoll/ )
2020-07-13 00:50:04 +10:00
- [MkDocs ](https://pypi.org/project/mkdocs-material-extensions/ )
- [MkDocs Material Theme ](https://github.com/squidfunk/mkdocs-material )
- [MkDocs Material Extensions ](https://pypi.org/project/mkdocs-material-extensions/ )
2020-07-13 00:52:31 +10:00
- [VNote ](https://github.com/tamlok/vnote )
2020-07-13 00:59:48 +10:00
- [Pandoc ](https://github.com/jgm/pandoc )
2020-07-13 00:28:57 +10:00
2020-07-14 01:02:06 +10:00
## Recommended Aliases
TODO
2020-07-13 00:30:51 +10:00
## Related
- [DNote]
- [TNote]
- [Notable]
[Notable]: https://github.com/notable/notable
[TNote]: https://github.com/tasdikrahman/tnote
[DNote]: https://github.com/dnote
2020-07-14 04:26:05 +10:00
[tmpfs]: https://wiki.archlinux.org/index.php/Tmpfs
2020-07-14 04:32:20 +10:00
[shared_memory]: http://en.wikipedia.org/wiki/Shared_memory
2020-07-14 01:02:06 +10:00
2020-07-14 04:32:20 +10:00
[^wpdtmpfs]: [From Wikipedia][shared_memory] Recent 2.6 Linux kernel builds have started to offer /dev/shm as shared memory in the form of a ramdisk, more specifically as a world-writable directory that is stored in memory with a defined limit in /etc/default/tmpfs. /dev/shm support is completely optional within the kernel config file.