Moved software projects into their own pages

This commit is contained in:
Nathan Fisher 2022-04-14 12:34:49 -04:00
parent c9742f7143
commit 1dbb770c47
11 changed files with 513 additions and 24 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
public/
capsule.tar

View file

@ -9,7 +9,7 @@
minute: 11,
second: 00,
)),
tags: ["announcements", "vostok", "programming", "rust"],
tags: ["announcements", "vostok", "zond", "programming", "rust"],
)
---
## Some Glasnost

View file

@ -1,10 +1,20 @@
(
title: "Vostok to Zond",
summary: Some("I've renamed Vostok to Zond to avoid trampling someone else's namespace"),
published: None,
tags: ["zond", "programming"],
summary: Some("I\'ve renamed Vostok to Zond to avoid trampling someone else\'s namespace"),
published: Some((
year: 2022,
month: 4,
day: 2,
hour: 22,
minute: 35,
second: 47,
)),
tags: [
"zond",
"programming",
],
)
---
I became aware earlier today of a previous project using the name "Vostok", and as I don't particularly like the idea of tram=pling someone else's namespace I went ahead and renamed the project to "Zond". The Soviet Zond program entailed a series of automated flights which explored the near planets and the moon, culminating in several lunar orbital missions including one with several live organisms on board. I think it's a fitting, still "spacey" name. Bonus - it's also two characters shorter.
Other than this change, I've saved the generated commpletions in the `data` subdirectory of the source repo, as they will only ever need to be regenerated if and when the Cli is changed. As such I also put their generation behind a feature gate.
Other than this change, I've saved the generated commpletions in the `data` subdirectory of the source repo, as they will only ever need to be regenerated if and when the Cli is changed. As such I also put their generation behind a feature gate.

View file

@ -9,25 +9,9 @@
minute: 25,
second: 15,
)),
tags: [],
tags: ["software"],
)
---
Welcome to my capsule. I'm a recovering jack of all trades trying to focus more on software development and music while attempting to stop collecting more hobbies.
{% posts %}
## Gemini related projects I develop
### GemView
GemView is a browser widget for the smolweb written in Rust and Gtk4. It aims to be for the smolweb what webkit2-gtk is for the large web. Currently it supports Gemini, Gopher, Finger and data url's and will open other url schemes in the system default. Some features of gemini are yet to be implemented, most notably handling input requests, client certificates and Tofu.
=> https://codeberg.org/jeangnie/gemview GemView repository on Codeberg
### Eva
The Eva browser (as in ExtraVehicular Activity, or Spacewalk) is a Gemini browser built around GemView. It aims to be extremely attractive, relatively simple and nocely featured, with a focus on providing a more polished experience than many of it's counterparts.
=> https://codeberg.org/jeang3nie/eva Eva repository on Codeberg
## Non Gemini projects I develop
### Gfret
Gfret is a graphical (and cli) tool for creating a fretboard layout template used in the construction of musical instruments such as guitar, bass, or mandolin. It is written in Rust and uses a gtk4 interface.
=> https://codeberg.org/jeang3nie/gfret Gfret repository on Codeberg
### Zterm
Zterm (pronounced Zed-Term, you heathens) is a terminal emulator written in Zig using gtk3 and vte. It features tabs, split panes and a simple yet highly configurable interface.
=> https://codeberg.org/jeang3nie/zterm Zterm repository on Codeberg
=> software Some software I develop

93
content/software/eva.gmi Normal file
View file

@ -0,0 +1,93 @@
(
title: "Eva",
summary: Some("A nice graphical browser for the smol internet"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 15,
minute: 39,
second: 12,
)),
tags: [
"software",
"eva",
"rust",
"gtk",
],
)
---
## Introduction
Eva is a gemini protocol browser written in Rust using the gtk+ toolkit. Eva is focused on delivering a simple yet powerful interface and clear, readable and beautiful page rendering. It has no designs on being the most fully featured Gemini browser, but instead wants to be the most polished native Gtk+ Gemini client that stays out of the user's way.
Eva's gemtext rendering has been designed to be clean yet visually appealing, using modern css styling to visually separate elements such as block quotes and preformatted sections, using colored cards with rounded edges and box shadows. The default color scheme has been chosen to provide great readability, while giving the user a great deal of control over appearance.
Eva is currently alpha quality software and is under heavy development. Some features are not yet implemented and there may be bugs. However, rest assured that when Eva sees an official release it will be a polished user experience.
## Features
* tabbed interface
* bookmarks
* user configurable keyboard shortcuts
* user controlled styling
* back-forward list
### Gemini protocol
* Render gmi pages
* Display text
* Display images
* View gemtext source
* Send user input
* Downloads
* Save content
### Gopher protocol
* Render gophermaps
* Display text
* Display images
* Downloads
* Save content
### Finger protocol
### Data url's
* Display text
* Render gemtext
* Display images
* Save content
## Keybindings
> Note: See KEYS.md for information on changing keybindings
| Key | Action |
| ------------- | ----------------- |
| Ctrl/T | New tab |
| Ctrl/N | New window |
| Ctrl/W | Close tab |
| Ctrl/Q | Close window |
| Ctrl/R | Reload page |
| Alt/Home | Go to homepage |
| Alt/Left | Go back |
| Alt/Right | Go next |
| Ctrl/PageDown | Next tab |
| Ctrl/PageUp | Previous tab |
| Alt/[1-9] | nth tab |
| Ctrl/Shift/O | Open bookmarks |
| Ctrl/D | Bookmark page |
| Ctrl/H | Open History |
| Ctrl/S | Save Page |
| Ctrl/Shift/P | Open preferences |
| Ctrl/Shift/A | Open about dialog |
## Installing
### Arch Linux
Install the eva-browser package from the aur. Alternatively, beginning with the 0.3.0 release, releases on Codeberg and Github include an Arch PKGBUILD file.
### FreeBSD
Beginning with the 0.3.0 release, there is a binary package for FreeBSD 13 and the x86_64 architecture included in the releases on Codeberg and Github.
### All others
See the Building section below.
## Building
> Note: Some kind of Unix is assumed for the following directions. The code is designed to be cross platform and -may- run on MacOs and Windows, but both are untested.
Make sure that you have all gtk+ version 4 libraries and headers installed.
```
# clone the source
git clone https://codeberg.org/jeang3nie/eva.git
cd eva
cargo build --release
# To gather all release files into target/dist
cargo xtask dist
```

View file

@ -0,0 +1,64 @@
(
title: "Gemview",
summary: Some("A browser widget in gtk4 for the smol internet"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 16,
minute: 0,
second: 51,
)),
tags: [
"software",
"gemview",
"rust",
"gtk",
],
)
---
## Introduction
GemView is a gemini protocol browser widget for gtk+ (version 4) implemented in Rust.
## Features
* Browse and render gemini gemtext content
* Display plain text over gemini
* Display images over gemini
* Display text and images from `data://` url's
* Browse and render gopher maps, plain text and images over gopher
* Display finger protocol content
* Browse local files and directories via 'file://' url's
* Open http(s) links in a *normal* browser
* User customizable fonts
* User customizable colors (via CSS)
* Back/forward list
## Usage
Cargo.toml
```
[dependencies]
gemview = 0.2.0
[dependencies.gtk]
version = "~0.4"
package = "gtk4"
```
Rust source code
```Rust
use gemview::GemView;
use gtk::prelude::*;
fn main() {
let browser = GemView::default();
let scroller = gtk::builders::ScrolledWindowBuilder::new()
.child(&browser)
.hexpand(true)
.vexpand(true)
.build();
let window = gtk::builders::WindowBuilder::new()
.child(&scroller)
.title("GemView")
.build()
window.show();
browser.visit("gemini://gemini.circumlunar.space");
}
```

104
content/software/gfret.gmi Normal file
View file

@ -0,0 +1,104 @@
(
title: "Gfret",
summary: Some("A tool for luthiers"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 15,
minute: 39,
second: 54,
)),
tags: [
"software",
"gfret",
"lutherie",
"rust",
"gtk",
],
)
---
## Introduction
Gfret renders an svg image template of a fretboard for a stringed instrument. It has a Gtk interface as well as a command line interface and can produce templates for instruments ranging from a piccolo mandolin to an upright bass. Multiscale designs are also supported. Currently, all measurements are expressed in metric units only.
## Getting Gfret
Gfret is distributed primarily in source form. The main repo is at codeberg.org) with a mirror at github.com. Releases are recommended.
=> https://aur.archlinux.org/packages/eva-browser Codeberg repo
=> https://github.com/nfisher1226/gfret Github mirror
## Usage
Gfret can be used from the command line or using the Gtk+ interface.
## Running the command line interface
```
gfret-cli
Output an svg without running the interface
USAGE:
gfret cli [OPTIONS] [OUTPUT]
ARGS:
<OUTPUT> Name of the output file [default: output.svg]
OPTIONS:
-b, --bridge <BRIDGE>
Bridge spacing [default: 56]
-c, --count <COUNT>
Total fret count [default: 24]
-e, --external <EXTERN>
Open output file in external program [default: inkscape]
-h, --help
Print help information
-l, --left
Multiscale fretboard reversed (left handed)
-m, --multi <MULTI>
Creates a multiscale fretboard with <MULTI> as the treble scale. [default: 610]
-n, --nut <NUT>
Nut width [default: 43]
-o, --output <OUTPUT>
Name of the output file [default: output.svg]
-p, --perpendicular <PERPENDICULAR>
Set which fret is perpendicular to the centerline [default: 8]
-s, --scale <SCALE>
Scale length in mm [default: 648]
```
## Running the gui
Calling the program by invoking gfret without any arguments will run the Gtk interface. Additionally, a .desktop file and icon are included, and can be used for launching the program from desktop menus or creating shortcuts.
## Keybindings
```
| Key | Action |
| ------------ | ----------------------------- |
| Ctrl/S | save file |
| Ctrl/Shift/S | save file as |
| Ctrl/E | open with an external program |
| Ctrl/O | load a template from file |
| Ctrl/Shift/P | open the `preferences` dialog |
| Ctrl/A | open the `about` dialog |
| Ctrl/Q | quit the program |
```
## Templates
Along with the svg output, Gfret will save the specifications used to generate the rendering in a Toml file with it's name corresponding to the name of the svg file. These templates can be loaded later, either as an argument when invoking the program, in which case the output will be immediately generated, or else loaded from the Gui interface for further editing. This is useful for sharing a common scale among multiple designs to use as a starting point.
## Configuration
On Unix systems the default configuration directory is ~/.config/gfret. Gfret will maintain a configuration file here in Toml format.
> Note: The graphical interface has a preferences dialog and will take care of maintaining the preferences file for you. There will be no need to edit this file by hand in normal use.
## Building
You will need a Rust toolchain installed, including cargo. Gtk+4x is also required.
```
cargo build --release
```
If desired, a release distribution can then be generated which will include the binary, svg and png icons, Unix man pages, XDG .desktop file and shell completions.
```
cargo xtask dist
```
## Roadmap
* For the gui, it would be nice to save state and allow loading specs from and saving to templates. **partial implementation 4/7/21** | **completed 5/5/21**
* Port to Gtk4 **completed 12/21**
* Support changing from metric to imperial measurements **completed 12/21**
* Support left handed multiscale fretboards **completed 12/21**
* Orient left handed output with bass strings on top **completed 1/22**

View file

@ -0,0 +1,21 @@
(
title: "Software",
summary: Some("Software projects developed here"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 16,
minute: 29,
second: 5,
)),
tags: ["software"],
)
---
### Gemini related projects I develop
=> eva.gmi The Eva browser for the smol internet
=> gemview.gmi Gemview - a browser widget in gtk4 for the smol internet
=> zond.gmi Zond - a static gemini capsule generator
### Non Gemini projects I develop
=> gfret.gmi Gfret - a tool for luthiers
=> zterm.gmi Zterm - a terminal emulator with tabs and panes

33
content/software/zond.gmi Normal file
View file

@ -0,0 +1,33 @@
(
title: "Zond",
summary: Some("A static Gemini capsule generrator in Rust"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 15,
minute: 39,
second: 20,
)),
tags: [
"software",
"zond",
"rust",
"cli",
],
)
---
Zond (Russian: Зонд, lit.'probe') was the name given to two distinct series of Soviet robotic spacecraft launched between 1964 and 1970. The first series, based on the 3MV planetary probe, was intended to gather information about nearby planets. The second series of test spacecraft was intended as a precursor to remote-controlled robotic circumlunar loop flights, using a stripped-down variant of Soyuz spacecraft, consisting of the service and descent modules, but lacking the orbital module. Two tortoises and other lifeforms aboard Zond 5 were the first terrestrial organisms to travel around the Moon and return to Earth.
In this context, Zond is a static gemini capsule generator. Think static site generator like Hugo or Jekyll but for [Project Gemini](https://gemini.circumlunar.space).
## Building
```
cargo build --release
```
If desired, a release distribution can then be generated which includes Unix man pages and shell completions for bash, fish, powershell and zsh.
```sh
cargo xtask dist
```
## Usage
For full usage information, see the documents in the `doc/` subdirectory of the source repository.

View file

@ -0,0 +1,97 @@
(
title: "Zterm",
summary: Some("A terminal emulator in gtk with split panes and tabs"),
published: Some((
year: 2022,
month: 4,
day: 14,
hour: 15,
minute: 39,
second: 36,
)),
tags: [
"terminal",
"software",
"zterm",
"zig",
"gtk",
],
)
---
## Introduction
Zterm (pronounced `Zed-Term`) is a simple terminal emulator using Vte and Gtk+ written using the [Zig](https://ziglang.org/) programming language. Some useful features of Zterm are:
* Multiple terminals can be open in tabs and panes within a single tab
* Configurable keybindings
* Comprehensive theming options
* Control over colors used
* Choice of backgrounds - solid color, transparent, image or gradient
* Simple and small graphical interface taking up less screen space than other similarly functional terminals
## Installing
* Arch Linux and derivatives - Zterm is in the aur
* FreeBSD - A binary tarball is provided for the latest release of FreeBSD (at the time of release) on the releases page over at codeberg.org.
Other Linux distros or operating systems will have to build from source, see Building.
=> https://aur.archlinux.org/packages/zterm/ Zterm aur package
=> https://codeberg.org/jeang3nie/zterm/releases Releases on Codeberg
## Building
You will need the Zig compiler, version 0.9.0, available from ziglang.org. You will also need the Gtk-3.x and vte libraries plus development headers installed on your system.
=> https://ziglang.org
Zterm is built using the Zigmod) package manager for Zig.
=> https://github.com/nektro/zigmod Zogmod
```
zigmod ci
zig build -Drelease-safe=true
```
This will place the executable in zig-out/bin and the icon and .desktop file in the appropriate subdirectories of zig-out/share. To Install somewhere else, one can simple set the prefix like so.
```
zig build -Drelease-safe=true --prefix /some/directory
```
The data directory can also be adjusted if necessary. For instance, if one wanted to install Zterm in their home directory, with the executable in ~/bin and the data files in ~/.local/share, it can be done like so.
```
zig build -Drelease-safe=true --prefix $HOME -Ddatadir=".local/share"
```
Assuming one has ~/bin in their $PATH, this should be sufficent to add a menu entry and icon in most modern `Unix` desktop environments, without needing root permissions.
## Keyboard Shortcuts
The following table gives the default keybindings. If any customization is desired, see configuration.
```
| Shortcut | Action |
| ---------------- | ------ |
| Ctrl/Shift/T | New Tab |
| Ctrl/Shift/Enter | New Pane |
| Alt/R | Change Pane Orientation |
| Alt/[1-9] | Goto [num] Tab |
| Alt/UpArrow | Previous Tab |
| Ctrl/PageUp | Previous Tab |
| Alt/DownArrow | Next Tab |
| Ctrl/PageDown | Next Tab |
| Alt/RightArrow | Next Pane |
| Alt/LeftArrow | Previous Pane |
| Ctrl/Shift/Q | Quit |
```
## Command line options
```
Usage: zterm [-h] [-e <COMMAND>] [-t <TITLE>] [-w <DIR>]
Flags:
-h, --help Display this help and exit.
-e, --command <COMMAND> Command and args to execute.
-t, --title <TITLE> Defines the window title.
-w, --working-directory <DIR> Set the terminal's working directory.
```
## Configuration
Zterm uses the nestedtext) human readable data format to store it's configuration. The main program options may be edited with the preferences dialog without editing any files. However, at this time the only way to change the default keybindings is by editing the file ~/.config/zterm/keys.nt. The file will be auto-generated if it does not exist. All configuration options set via the preferences dialog will take effect immediately. Any changes to the keys.nt file will require a restart to take effect.
=> https://nestedtext.org/en/latest/ NestedText format
## Roadmap
* Preferences dialog [done]
* Finish implementing all preferences [wip]
* Background image [done]
* Background gradient
* Expose charset settings [todo]
* User editable keybindings [done]
* Dialog to set keybindings [todo]
* Set tab title based on running program / current directory [todo]
* change from GtkBox widget to more flexible GtkPaned [todo]
* change build to utilize only zig build system [done]

82
public/software/eva.gmi Normal file
View file

@ -0,0 +1,82 @@
# Eva
### 2022-04-14
## Introduction
Eva is a gemini protocol browser written in Rust using the gtk+ toolkit. Eva is focused on delivering a simple yet powerful interface and clear, readable and beautiful page rendering. It has no designs on being the most fully featured Gemini browser, but instead wants to be the most polished native Gtk+ Gemini client that stays out of the user's way.
Eva's gemtext rendering has been designed to be clean yet visually appealing, using modern css styling to visually separate elements such as block quotes and preformatted sections, using colored cards with rounded edges and box shadows. The default color scheme has been chosen to provide great readability, while giving the user a great deal of control over appearance.
Eva is currently alpha quality software and is under heavy development. Some features are not yet implemented and there may be bugs. However, rest assured that when Eva sees an official release it will be a polished user experience.
## Features
* tabbed interface
* bookmarks
* user configurable keyboard shortcuts
* user controlled styling
* back-forward list
### Gemini protocol
* Render gmi pages
* Display text
* Display images
* View gemtext source
* Send user input
* Downloads
* Save content
### Gopher protocol
* Render gophermaps
* Display text
* Display images
* Downloads
* Save content
### Finger protocol
### Data url's
* Display text
* Render gemtext
* Display images
* Save content
## Keybindings
> Note: See KEYS.md for information on changing keybindings
```
| Key | Action |
| ------------- | ----------------- |
| Ctrl/T | New tab |
| Ctrl/N | New window |
| Ctrl/W | Close tab |
| Ctrl/Q | Close window |
| Ctrl/R | Reload page |
| Alt/Home | Go to homepage |
| Alt/Left | Go back |
| Alt/Right | Go next |
| Ctrl/PageDown | Next tab |
| Ctrl/PageUp | Previous tab |
| Alt/[1-9] | nth tab |
| Ctrl/Shift/O | Open bookmarks |
| Ctrl/D | Bookmark page |
| Ctrl/H | Open History |
| Ctrl/S | Save Page |
| Ctrl/Shift/P | Open preferences |
| Ctrl/Shift/A | Open about dialog |
```
## Installing
### Arch Linux
Install the eva-browser package from the aur. Alternatively, beginning with the 0.3.0 release, releases on Codeberg and Github include an Arch PKGBUILD file.
### FreeBSD
Beginning with the 0.3.0 release, there is a binary package for FreeBSD 13 and the x86_64 architecture included in the releases on Codeberg and Github.
### All others
See the Building section below.
## Building
> Note: Some kind of Unix is assumed for the following directions. The code is designed to be cross platform and -may- run on MacOs and Windows, but both are untested.
Make sure that you have all gtk+ version 4 libraries and headers installed.
```
# clone the source
git clone https://codeberg.org/jeang3nie/eva.git
cd eva
cargo build --release
# To gather all release files into target/dist
cargo xtask dist
```
=> .. Home
All content for this site is released under the CC BY-SA license.
© 2022 by Nathan Fisher
=> mailto:jeang3nie@hitchhiker-linux.org Contact