/fish-configuration

My Literate Fish shell configuration, written in Org Mode

Fish Configuration

This repository contains my Literate configuration for the Fish Shell, a non-POSIX-compliant shell made primarily for interactive use. The configuration file config.org is written in Org Mode, an Emacs major mode that allows interleaving prose and code within a single file.

The configuration can be “extracted” by running M-x org-babel-tangle in Emacs from within the file. This command will take the code blocks from within the config and write it to their corresponding files, relative to the current directory.

However, because my configuration refers to many things which are only present on my machine, you are undoubtedly better off copying individual code blocks into your own config, or simply taking inspiration from the structure.

Configuration Overview

Here is an overview of the configuration, extracted from the headlines of the Org file:

  • Preprocessor constants, which leverage Org’s noweb syntax to interpolate values into code blocks
  • Startup code, including plugin initialization, setting Fish greeting, and Vi bindings
  • Sourcing of other config files and external files, most of which are created by tangling this configuration
  • Shell aliases, such as for ls and nvim
  • Functions for system introspection, like getting the current battery percentage, and speaker volume
  • Convenience functions for launching desktop applications
  • Desktop utility functions, such as reading/writing to the clipboard and programmatically typing on the keyboard
  • Miscellaneous shell setups, including setups for managing school courses, creating/running one-off scripts, managing notes across my filesystem, and handling encrypted files
  • Setting environment variables
  • Configuring plugins

Please refer to the specific sections in the config.org file for detailed implementation and code examples.