Skip to content

XPhyro/scripts

Repository files navigation

GitHub Codeberg CodeFactor GitHub Build Workflow Status GitHub Analyse Workflow Status GitHub Spell Workflow Status

scripts

This repository holds a collection of over 500 scripts, utilities and libraries for Unix-like operating systems, OBS plugins and browser extensions, written in the following languages:

  • Awk
  • Bash
  • C
  • C++
  • execline
  • Go
  • JavaScript
  • POSIX Shell
  • Perl
  • Python
  • Rust

Installation

To install for your user:

git submodule update --init --recursive
make install

To install system-wide (recommended):

git submodule update --init --recursive
sudo make install

You may change the installation directory by setting $PREFIX.

If you would like to use the provided wrapper scripts, add $PREFIX/bin/wrapper to your $PATH with higher priority than the locations of the wrapped scripts. Some scripts also require $PREFIX/share/scripts/include to be in your path.

Uninstallation

If you installed for your user:

make uninstall

If you installed system-wide:

sudo make uninstall

You do not need to re-set $PREFIX while uninstalling.

If you altered your $PATH, you may also wish to undo it.

Usage

See man COMMAND, COMMAND -h or COMMAND --help. Simple programs/scripts do not have man pages or help dialogues, either infer usage from their names, or see the source code.

Notable Scripts and Utilities

  • afgrep: Like grep -F, but supports alignment and offset.
  • bspwm-autokblayout: Automatically switch between keyboard layouts for different windows in bspwm.
  • bspwmpad: Dynamic scratch pads for bspwm.
  • cast: Cast data between different data types.
  • clplog: Log clipboard history.
  • clplogynk: Use rofi to yank an element from the clipboard history.
  • contexec: Continuously execute a file every time it is modified.
  • eln: Batch edit or create symlinks.
  • expandpath: Like wordexp, but only expands ~.
  • ffmw: ffmpeg wrapper for common actions.
  • fmaps: Map standard input per given key-value pairs.
  • kdialog: Wrapper for KDE's kdialog to trick applications into using lf as the file picker.
  • latexd: Basically latexmk but more minimal.
  • mapexec: Open standard input in $EDITOR and execute commands against all, modified, unmodified or wiped lines synchronously or asynchronously. Basically batch, but more versatile.
  • maptouch: Map touchscreen and stylus devices to the touch-enabled display. Best used in .xinitrc or as a udev rule.
  • mkparent: Create the parent directories of a path.
  • neomuttpick: Use kdialog to pick attachments in neomutt.
  • notiflog: Log notifications on the dbus interface org.freedesktop.Notifications. Supports incognito and blacklisting.
  • numsh: A NumPy-like interface for the shell.
  • rgb24togray: Convert RGB24 pixels to greyscale with selectable algorithms.
  • scratchpad: Take and manage notes with vim and dmenu. Can be used with dwmpad or bspwmpad.
  • selfl: Select a file or directory with $MENU.
  • shufr: Like shuf -r, but supports outputting unique sequences of tuples.
  • std::unordered_map: Wrapper for std::unordered_map<std::string, std::string> for shells.
  • std::vector: Wrapper for std::vector<std::string> for shells.
  • stest: Filter a list of files by properties. This is a superset of the stest included with suckless' dmenu.
  • sumsize: Sum human readable or raw sizes.
  • tglapp: Toggle an application on/off based on hash codes. Originally written for toggling applications with the same hotkey via sxhkd.
  • unexpandpath: Undo expandpath.
  • wordexp: Perform word expansion like a POSIX shell.
  • xins: Like xargs but for standard input.

Environment Variables

Some scripts use optional or mandatory environment variables for applications. Assign either bspwmpad or dwmpad to $PAD, rofi -dmenu or dmenu to $MENU, and the respective application will be used. Other used variables include: $BROWSER, $EDITOR, $OPENER, $PAGER, $SHELL, $TERMINAL, $VPN, $_BROWSER. Some scripts will not respect these as they use application-specific options, such as rofi -font or st -d.

In all shell scripts, if you set $SHELL_VERBOSE to greater than 0, set -x is executed and all executed commands are printed to standard error.

Caveats

  • Some scripts assume that some of the other scripts are in your $PATH.
  • In some scripts, GNU extensions like sed -i or strcasestr are used.
  • Some scripts were written with only Linux in mind, although they may be compatible with other Unixes and Unix-likes, or may be ported with minimal modification.
  • All scripts/programs are only tested on Linux.
  • C and C++ code are only tested with the latest release of GCC. Most programs are compatible with any POSIX/ISO-conforming compilers but some use non-standard GNU/LLVM extensions.

Contributing

Please see CONTRIBUTING.md.

License

Unless otherwise stated, all software found in this repository are licensed under the MIT License. See the LICENSE file for details.

Star History

Star History Chart