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 details)

Uploaded Source

Built Distribution

powerline_inject-0.1.6-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file powerline-inject-0.1.6.tar.gz.

File metadata

  • Download URL: powerline-inject-0.1.6.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

File hashes

Hashes for powerline-inject-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8733928f0db4dccf291c6a60a33abaf6f91354c755b49002398e7ddf21855504
MD5 fd0fcc9ebf627ef1c87f737d359e2903
BLAKE2b-256 6fcd038c611102f852e1b89042789f1c59480082b516a963acf7e2931de6271c

See more details on using hashes here.

File details

Details for the file powerline_inject-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: powerline_inject-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

File hashes

Hashes for powerline_inject-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 93dc5b0b1ed69be5ace2c931a6911020c448aa86ae5bdccfa19b228c697f8db7
MD5 a67cffcb391a4c2b754a833490b7a0e9
BLAKE2b-256 986dbfb4ac9a9e7d724cb9a28ae0a63572ff4e45c935244baa5b8cd681bc5488

See more details on using hashes here.

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