small README cleanup
[bash-notes.git] / README.md
1 # bash notes
2
3 ## a simple note taking script written in bash
4
5 I've found myself in need of a simple way to take notes, and since the other solutions available didn't meet my needs, I've decided to write my own script.
6
7 It's a simple (enough) bash script, the only dependance (yet) is [jq](https://stedolan.github.io/jq/).
8
9 here's all the functions that are now available:
10
11 ```bash
12 -h | --help : This help text
13 -p | --plain : Output is in plain text (without this option the output is colored)
14 -l | --list : List existing notes
15 -a | --add "<title>" : Add new note
16 -m | --modify <note> : Modify note
17 -d | --delete [<note> | all] : Delete note
18 -v | --version : Print version
19 --userconf : Export User config file
20 ```
21
22 All the basic functionalities are present and working, it probably needs some polishing and some testing, so if you want to give it a try, let me know what you think.
23
24 ### Settings
25
26 When you first run it, notes.sh will create all the files it needs to operate.
27 By default the directory will be populated in `~/.local/share/bash-notes`.
28
29 If you want to modify the predefined settings, you can export a user configuration file by running
30
31 ```notes.sh --userconf```
32
33 And you'll have all your settings in `~/.config/bash-notes.rc`. This file will be sourced everytime you run the script.
34
35 You can change all these settings:
36
37 ```bash
38 # Binaries to use
39 JQ=/usr/bin/jq
40 EDITOR=/usr/bin/vim
41 TERMINAL=/usr/bin/alacritty
42 # add options for your terminal. Remember to add the last option to execute
43 # your editor program, otherwise the script will fail.
44 # see example in the addnote function
45 TERM_OPTS="--class notes --title notes -e "
46
47 # base directory for program files
48 BASEDIR=~/.local/share/bash-notes
49 # notes database in json format
50 DB=${BASEDIR}/db.json
51 # directory containing the actual notes
52 NOTESDIR=${BASEDIR}/notes
53 ```
54
55 Most are pretty self explanatory, the only one that might need clarification is `TERM_OPTS` which is used to set the terminal window that will run the editor while writing the note.
56
57 Special attention is needed when specifying the options, in my case, using [alacritty](https://github.com/alacritty/alacritty), the option that allows to run some software in the newly created window is `-e`, so I need to specify this as the last option.
58
59 ### Functionalities
60
61 bash-notes can:
62
63 * write a new note `--add "Your note title"` or in short `-a "Your note title"`
64 * modify an existing note `--edit [note ID]`, short version `-e [note ID]`
65 * delete a note `--delete [note ID]`, or `-d [note ID]`
66 * delete all notes `--delete all`, or `-d all`
67 * list existing notes `--list` or `-l` in short
68
69 The *note id* is assigned when the note is created, and that's how you refer to the note in the program.
70
71 The `--plain` or `-p` option in short, dictates how the output from the script is formatted, here's a sample listing of all the notes:
72
73 ```bash
74 notes.sh -l
75 listing all notes
76
77 [ID] [TITLE] [CREATED]
78 [1] ciao nota 25/03/2023 18:53 +0100CET
79 [2] hello there 25/03/2023 19:02 +0100CET
80 ```
81
82 And here's the same listing with the plain option:
83
84 ```bash
85 notes.sh -pl
86 1 - ciao nota - 25/03/2023 18:53 +0100CET
87 2 - hello there - 25/03/2023 19:02 +0100CET
88 ```
89
90 It's just a proof of concept at the moment, but the idea is to use a more interesting output maybe using markup, and strip it down in plain mode. After all is still a work in progress.
91 The plain option must precede all other options or it won't work. I'll try and fix this behaviour in the future.
92
93 I'd love to implement some kind of searching functionality, but I'll have to look into that.
94
95 ### Installing
96
97 Simply copy the script in your $PATH and make it executable, something like this should work:
98
99 ```bash
100 mv notes.sh ~/bin/
101 chmod 755 ~/bin/notes.sh
102 ```
103
104 Adapt to your needs as you see fit.
105
106 ### Vision
107
108 Ok, maybe vision is a bit of a stretch, but I've written this script to use it in my daily workflow with [rofi](https://github.com/davatorium/rofi) and [i3wm](https://github.com/i3/i3). I'll adapt the way it works to better suit this need of mine.
109
110 There are of course things I'd love to add, but my main goal is for it to work the way I planned to use it.
111
112 ### TO DO
113
114 * add a way to search the notes
115 * add a way to display a note without running vim
116 * markdown?
117 - maybe implement an export feature that builds the html file from the note
118 * write a bash completion script to enable autocomplete in the shell
119 * other ideas may come [...]
120
121 ### Contributing
122
123 It'd mean so much to receive some feedback, patches if you feel like contributing, I'm not expecting much as this is a personal project, but feel free to interact as much as you want.
124
125 ### Mantainer
126
127 * [danix](https://danix.xyz) - it's just me, really...
128
129 ### LICENSE
130
131 > bash-notes © 2023 by danix is licensed under CC BY-NC 4.0. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/