All Projects → bbugyi200 → Funky

bbugyi200 / Funky

Licence: mit
Funky takes shell functions to the next level by making them easier to define, more flexible, and more interactive.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
bash
514 projects

Projects that are alternatives of or similar to Funky

Geo
🌎 A Bash utility for easy wan, lan, router, dns, mac address, and geolocation output, with clean stdout for piping
Stars: ✭ 225 (-48.16%)
Mutual labels:  terminal, zsh
Ohmyzsh
🙃 A delightful community-driven (with 1900+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
Stars: ✭ 138,057 (+31710.37%)
Mutual labels:  terminal, zsh
Spaceship Prompt
🚀⭐ A Zsh prompt for Astronauts
Stars: ✭ 15,748 (+3528.57%)
Mutual labels:  terminal, zsh
Nord Terminal App
An arctic, north-bluish clean and elegant Terminal.app color theme.
Stars: ✭ 198 (-54.38%)
Mutual labels:  terminal, zsh
Nord Dircolors
An arctic, north-bluish clean and elegant dircolors theme.
Stars: ✭ 328 (-24.42%)
Mutual labels:  terminal, zsh
Nord Xresources
An arctic, north-bluish clean and elegant Xresources color theme.
Stars: ✭ 210 (-51.61%)
Mutual labels:  terminal, zsh
Dracula Theme
🧛🏻‍♂️ One theme. All platforms.
Stars: ✭ 17,480 (+3927.65%)
Mutual labels:  terminal, zsh
Zsh Vi Mode
💻 A better and friendly vi(vim) mode plugin for ZSH.
Stars: ✭ 181 (-58.29%)
Mutual labels:  terminal, zsh
Caporal.js
A full-featured framework for building command line applications (cli) with node.js
Stars: ✭ 3,279 (+655.53%)
Mutual labels:  terminal, zsh
Nord Gnome Terminal
An arctic, north-bluish clean and elegant GNOME Terminal color theme.
Stars: ✭ 258 (-40.55%)
Mutual labels:  terminal, zsh
Termux Style
Simple script to change color-schemes and fonts for Termux.
Stars: ✭ 400 (-7.83%)
Mutual labels:  terminal, zsh
Dstask
Single binary terminal-based TODO manager with git-based sync + markdown notes per task
Stars: ✭ 431 (-0.69%)
Mutual labels:  terminal, zsh
Zoxide
A smarter cd command. Supports all major shells.
Stars: ✭ 4,422 (+918.89%)
Mutual labels:  terminal, zsh
Black Void Zsh
🔮 Awesome, Customable Zsh Starter Kit 🌠🌠
Stars: ✭ 206 (-52.53%)
Mutual labels:  terminal, zsh
Bashhub Server
Private cloud shell history. Open source server for bashhub https://github.com/rcaloras/bashhub-client
Stars: ✭ 189 (-56.45%)
Mutual labels:  terminal, zsh
Nord Alacritty
An arctic, north-bluish clean and elegant Alacritty color scheme.
Stars: ✭ 238 (-45.16%)
Mutual labels:  terminal, zsh
Dotfiles
~/.dotfiles
Stars: ✭ 177 (-59.22%)
Mutual labels:  terminal, zsh
Powerlevel9k
Powerlevel9k was a tool for building a beautiful and highly functional CLI, customized for you. P9k had a substantial impact on CLI UX, and its legacy is now continued by P10k.
Stars: ✭ 13,268 (+2957.14%)
Mutual labels:  terminal, zsh
cdc
☣️ Shell plugin for zsh/bash that allows you to cd to subdirectories of user-defined directories from anywhere, without editing CDPATH.
Stars: ✭ 17 (-96.08%)
Mutual labels:  zsh, function
Cw
The best way to tail AWS CloudWatch Logs from your terminal
Stars: ✭ 368 (-15.21%)
Mutual labels:  terminal, zsh

funky Tweet

Funky takes shell functions to the next level by making them easier to define, more flexible, and more interactive.

Build Status codecov License: MIT

demo

Table of Contents

Usage

Funks are manipulated using the funky and gfunky commands. These commands have the same user interface, which is specified in the Command-line Interface section. The difference between the two commands is treated in the Local vs Global section.

Local vs Global

Local funks are stored using a hidden database file that is located in the same directory where the funk was created. These can be manipulated using the action command options described above. Once created, a local funk can be used just like any other command or normal funk---as long as you have activated the provided shell extension (see Additional Install Steps) and are inside of the directory where the local funk was originally defined.

Global funks, on the other hand, are stored in your home directory (/home/<user>) and can be used from any directory. Local funks can be used to override global funk definitions.

Local and global funks can be manipulated (created, removed, edited, renamed, etc.) by using the funky and gfunky commands, respectively.

Funk Definition Shortcuts

Normally when defining a funk, the provided raw definition (the final contents of the temp file) is inserted directly into the generated function definition. However, funky does try to make some alterations to the original funk definition when doing so is convenient. These funky definition shortcuts can make defining funks faster:

Special cd Funks

A funk definition of the form @./relative/path/to/directory will be automatically changed to

cd /absolute/path/to/directory/"[email protected]" || return 1

Simulate Shell Variables

A funk definition of the form "Some string here..." will be automatically changed to

echo "Some string here..." "[email protected]"

This allows you to use funks to simulate shell variables via command substitution.

The "[email protected]" Special Parameter

This project originally used aliases. The decision to migrate to shell functions was made based on the fact that shell functions are far more capable than aliases. Moreover, there is very little benefit to using aliases over shell functions.

With that said, actual aliases do have one appeal over shell functions. When you use an alias, any arguments that you pass to it are automatically passed to the command definition (at runtime, aliases are just substituted with their definitions). For the purpose of emulating this behavior when it would typically be desired, a funk defined using a single-line command definition that does NOT already contain argument variables (e.g. does not contain $0, $1, ..., $9, $*, or [email protected]) will automatically have the "[email protected]" special parameter appended to its definition. This allows for the same automatic argument handling that you would expect from an alias.

See the official Bash docs for more information on Bash's special parameters.

Installation

Using pip to Install

To install funky, run this command in your terminal:

$ pip install pyfunky

This is the preferred method to install funky, as it will always install the most recent stable release.

If you don't have pip installed, this Python installation guide can guide you through the process.

Building from Source

You can either clone the public repository:

$ git clone git://github.com/bbugyi200/funky

Or download the tarball:

$ curl  -OL https://github.com/bbugyi200/funky/tarball/master

Once you have a copy of the source, you can install funky by running:

make install

Additional Installation Steps

For the best experience, funky needs to be integrated into your shell environment using the provided shell script.

A shell script by the name of funky.sh should have been copied to

$XDG_DATA_HOME/funky/funky.sh

during the installation process (it can also be found here). You can integrate funky into your shell by sourcing the funky.sh script into your shell's configuration file. Assuming the script was copied to ~/.local/share/funky/funky.sh (its default location), for example, you would add the following line to your .zshrc OR bashrc:

[ -f ~/.local/share/funky/funky.sh ] && source ~/.local/share/funky/funky.sh

If you install funky with root permissions, the funky.sh script will instead be installed to /usr/share/funky/funky.sh.

Similar Projects

  • desk - A lightweight workspace manager for the shell
  • smartcd - Alter your bash (or zsh) environment as you cd

Contributions

Pull requests are welcome. See CONTRIBUTING.md for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].