#!/linuxSucks/How I manage my gemini capsule
Feb 13, 2021One thing I like of Gemini/Capsule is that is simple and no need to render the file to another format, because is just plain text is easy to work with.
Here is my simple script to work with my capsule, nothing fancy, let’s say is simple and is working just fine for what I want to do.
First here is a example of my capsule file structure
├── index.gmi
├── gmi-capsules
│ └── index.gmi
├── gmi-crafts
│ ├── gemini-and-html.gmi
│ ├── gemini-capsule.gmi
│ ├── gemini-markup.gmi
│ ├── genimi-and-html.gmi
│ ├── index.gmi
│ ├── microlog-dmenu.gmi
│ └── setup-agate-server.gmi
├── images
│ ├── dwm-arch-linux.png
│ ├── dwm-debian.png
│ ├── dwm.png
│ ├── dwm-void-linux.png
│ ├── gemini-html.png
│ ├── i3wm-a.png
│ └── xmonad.png
├── linux
│ ├── chntpw.gmi
│ ├── dmenu.gmi
│ ├── dwm.gmi
│ ├── git-server.gmi
│ ├── index.gmi
│ ├── tg-telegram.gmi
│ └── xmonad.gmi
├── microlog
│ └── index.gmi
└── notes
├── bootable-linux-usb-drive.gmi
├── cifs.gmi
├── crontab.gmi
├── datetimectl.gmi
├── epr-epub-reader.gmi
├── index.gmi
└── network-manager.gmi
The capsule has six folders in each there is a index.gmi file, that is the index in each section of the capsule that has all the links to each post in that section. Out of all the folders there is a index.gmi this one is the index for the whole capsule.
The Script
At the beginning I did everything manually, create the file post then add the link in the index and blablabla… So because I’m lazy, i create a little scrip to do that for me!
Here is the script
#!/bin/sh
### DMENU
font="-fn Noto-13"
feed="$(printf "%s" | dmenu $font -b -p ' New Post (notes/linux/gmi-crafts) : ')" || exit 1
### TERMINAL
terminal="st"
### GEMINI CAPSULE
gmi_path="$HOME/Documents/websites/gemini/"
linkName="$(echo $feed | awk -F"/" '{print $2}')"
folder="$(echo $feed | awk -F"/" '{print $1}')"
postName="$(echo $linkName | sed -e 's/-/ /g' -e 's/\b\(.\)/\u\1/g')"
sed -i "15i \=\>\ $linkName.gmi $(date +'%b %d') - $postName" $gmi_path/$folder/index.gmi &&
touch $gmi_path/$feed.gmi &&
### OPEN FILE
exec $terminal -e vim $gmi_path/$feed.gmi || notify-send " Huston we have a problem!!! "
- gmi_path - This is the full path of where the capsule lives
- linkName - This sed command takes the name of the short name of the post, latter will be insert in the index of the section
- folder - This sed command takes the first part of the post name that is the folder of the section
- postName - This sed command will remove all the dashes or other non letters for the short name
- sed -i - This sed command will insert the link in the index of the section
- touch - will create the new files
- exec $terminal - will open the created file in vim
What the script does
I call the script with a keybinding (i use a window manager) and pip it into dmenu
The first part of the script has dmenu stuff and a variable for my terminal of choice
When i want to create a new entry, i have to follow this structure for this to work, it will be like
foldername/name-of-the-new-entry
In my case will be like
gmi-crafs/gemini-capulse
Note the dashes in the files names and folders, the extension of the file will added automatically
Notes
Problems with the scrip, ok I don’t see them like a real problem, but the scrip will fail is the folder does no exist or if the file exist already