Skip to main content

A powerline segment to show an ENV list with extra knobs

Project description

powerline-inject

pypi Supported Python Versions License

powerline-inject is a Powerline segment that shows injections

  • the list of envs but with some extra knobs.

This can be natively done with powerline.segments.common.env.environment if knobs aren't needed:

{
	"segments": 
	{
		"left": 
		[
			{ "function": 
				"powerline.segments.common.env.environment",
				"name": "aws",
				"priority": 20,
				"before": "⩜ ",
				"args": {
					"variable": "SOME_ENV"
				}
			}
		]
	}
}

Two other nifty features that it has are:

  1. The ability to toggle on or off the powerline-inject segment using an environment variable which can easily be mapped to a function in your ~/.bash_profile.
  2. The ability to run additional commands prior to loading

The screenshot below demonstrates this functionality:

Installation

  1. Add the Python package. powerline-inject is available on pypi so you can install it with pip:
pip install --user powerline-inject
  1. Create a user configuration directory.

Once powerline-inject has been installed, we'll need to add it to our powerline shell's theme and colorscheme.

Alter your powerline user config:

If you don't already have a ~/.config/powerline/ folder, create it. Next we'll be copying some of the default powerline configs into this location. Find where powerline is installed by using pip show powerline-status | grep 'Location', then navigate to the config_files/ folder there. We'll be copying config.json, themes/shell/default.json, and colorschemes/shell/default.json to our ~/.config/powerline/ folder, adding the necessary folders to match that original file structure (i.e. adding the themes/ and colorschemes/ folders, etc.

  1. Add powerline-inject to your user config.

Within our user config, we'll need to add the powerline-inject segment to our shell by adding the following lines to our ~/.config/powerline/themes/shell/default.json:

    {
	    "function": "powerline_inject.context",
	    "priority": 30,
	    "args": {"show_env": true,
		     "env_list": ["AWS_PROFILE", "TOKEN_X"]}
    }

Next we'll add the highlighting colors we'll use to our ~/.config/powerline/colorschemes/shell/default.json:

    {
	    "name": "Default",
	    "groups": {
		    "powerline_inject": { "fg": "white", "bg": "brightred", "attrs": [] },
	    }
    }
  1. You may need to reload powerline with powerline-daemon --replace to load the new settings. That's it!

  2. (Optional) By default powerline-inject will render the environment variable if RENDER_POWERLINE_INJECTS is either set to YES or is not set at all. Rather than setting this variable manually, you can create a simple powerline-inject-toggle function by placing the following in your ~/.bash_profile:

        function powerline-injects-toggle() {
            if [[ $RENDER_POWERLINE_INJECTS = "NO" ]]; then
                export RENDER_POWERLINE_INJECTS="YES"
            else
                export RENDER_POWERLINE_INJECTS="NO"
            fi
        }

Used with PROMPT_COMMAND for ENV refresh

You may want to use this with a PROMPT COMMAND that updates the ENVs being checked everytime. As an example aws-test-authentication sets AWS_EPOCH and AWS_PROFILE.

Put this in your ~/.bash_profile

export PROMPT_COMMAND="eval \$(aws-test-authentication); $PROMPT_COMMAND"

You're all set up! Happy coding!

License

Licensed under the Apache License 2.0.
Original fork is at https://github.com/zcmarine/powerkube.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

powerline-inject-0.1.5.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

powerline_inject-0.1.5-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page