Tree


LICENSE.mdcommits | blame
Makefilecommits | blame
README.mdcommits | blame
aestel/
bin/
man/

README.md

# README.md

__aestel__

A collection of Lua terminal utilities.

## An Aestel?

The aestel project is named for the Old English _æstel_, a wax  
tablet used for recording and preserving knowledge.

__aestel__ is a collection of lightweight, modular utilities for  
terminal-based workflow, productivity, knowledge management, and  
system administration.

## Project Structure

The utilities are ports of the author's shell scripts to Lua. At  
present they include the following scripts.

    browsefilies.lua     Directory browsing and file opening
    launchprogram.lua    Menu-driven program launcher
    setbackground.lua    Background setting utility

The utilities are scripts written in Lua that rely on a shared set  
of Lua modules.

     browse.lua       Browsing directory structure and content.
     colors.lua       Shared ANSI color constants.
     display.lua      Shared terminal output display.
     input.lua        Shared low-level terminal input utilities.
     menu.lua         Rendering and navigating menus.
     opener.lua       Opening files based on MIME type.

- bin/: User-facing scripts (browsefiles, launchprogram, etc.)
- aestel/: Shared Lua modules providing the core UI/navigation primitives
- man/: Manual pages for the utilities

## Scripting Language Dependencies

- Lua 5.4
- LuaFileSystem (lfs)

### Preferred Program Dependencies

Aestel is designed to be modular. The following programs are used  
by default for their alignment with the author's design values  
(written in C, minimal, and Unix-compliant):

- Terminal Emulator: [st](https://st.suckless.org)
- Text Editor: [vis](https://github.com/martanne/vis), and,
- Background Setter: [bgs](https://github.com/Gottox/bgs).

These programs are not strictly required. Users may substitute their  
preferred programs. Note that doing so will require modification of  
the relevant Lua script or module source code.

## Install

Install the libraries, binaries, and manual pages. Note that root  
privileges are not required as the default destination `~/.local/`  
directory.

```
make install
```

## Uninstall

Remove the libraries, binaries, and manual pages.

```
make uninstall
```

## Configuration

Configuration of the user's configuration file for the user's  
interactive shell is required for scripts to exit to the current  
working directory. The author uses the Almquist Shell and places  
the following in `~/.ashrc` file.

```
browsefiles() {
    local target
    target=$(command browsefiles "$@")
    [ -n "$target" ] && [ -d "$target" ] && cd "$target"
}

setbackground() {
    local target
    target=$(command setbackground "$@")
    [ -n "$target" ] && [ -d "$target" ] && cd "$target"
}
```