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 status segment addon for showing ENV with 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"
				}
			}
		]
	}
}

Couple knobs featured that powerline-inject 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 show only a symbol when the variables holds value. (SECRET KEYS, TOKENS, etc.)
  3. Multiple different highlighter profiles for your ENV lists.

The screenshot below demonstrates this functionality:

screenshot

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": "red", "attrs": [] },
			"powerline_inject_bold": { "fg": "white", "bg": "brightred", "attrs": [] },
	    }
    }
  1. You will 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
        }

Confidential ENV use

You may find you want to know when you have SECRETS loaded into your ENVIRONMENT. This will show only a symbol when the SECRET_TOKEN or AWS_PROFILE is loaded.

	{
		"function": "powerline_inject.context",
		"priority": 30,
		"args": {
			"show_env": false,
			"env_list": ["SECRET_TOKEN", "AWS_PROFILE"],
			"before": "⩜ "
		}
	},

You can further add a second call to powerline_inject.context with a different before symbol and/or env_highlighter in args like the powerline_inject_bold defined above.

	{
		"function": "powerline_inject.context",
		"priority": 30,
		"name": "second_injection",
		"args": {
			"show_env": false,
			"env_list": ["SECRET_TOKEN", "AWS_PROFILE"],
			"env_highlighter": "powerline_inject_bold"
		}
	},

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.6.tar.gz (4.8 kB view hashes)

Uploaded Source

Built Distribution

powerline_inject-0.1.6-py3-none-any.whl (8.7 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