{"id":13897713,"url":"https://github.com/JoshuaEstes/pms","last_synced_at":"2025-07-17T14:32:40.363Z","repository":{"id":51719030,"uuid":"267052867","full_name":"JoshuaEstes/pms","owner":"JoshuaEstes","description":"Framework for managing different shells. Allows easy switching between them, plugins, themes, and more.","archived":false,"fork":false,"pushed_at":"2025-02-06T15:53:45.000Z","size":257,"stargazers_count":14,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T16:21:29.404Z","etag":null,"topics":["bash","bash-configuration","dotfiles","dotfiles-manager","productivity","shell","shell-framework","shell-plugin-manager","shell-theme-manager","terminal","theme","zsh","zsh-configuration"],"latest_commit_sha":null,"homepage":"https://docs.codewithjoshua.com/pms","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoshuaEstes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["JoshuaEstes"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-05-26T13:38:53.000Z","updated_at":"2025-03-25T18:05:53.000Z","dependencies_parsed_at":"2024-11-13T16:24:57.966Z","dependency_job_id":"21e6c71d-88be-4e0a-b5fa-0e333aba721e","html_url":"https://github.com/JoshuaEstes/pms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JoshuaEstes/pms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaEstes%2Fpms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaEstes%2Fpms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaEstes%2Fpms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaEstes%2Fpms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoshuaEstes","download_url":"https://codeload.github.com/JoshuaEstes/pms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaEstes%2Fpms/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265616851,"owners_count":23798908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bash-configuration","dotfiles","dotfiles-manager","productivity","shell","shell-framework","shell-plugin-manager","shell-theme-manager","terminal","theme","zsh","zsh-configuration"],"created_at":"2024-08-06T18:03:49.461Z","updated_at":"2025-07-17T14:32:39.972Z","avatar_url":"https://github.com/JoshuaEstes.png","language":"Shell","funding_links":["https://github.com/sponsors/JoshuaEstes"],"categories":["Shell"],"sub_categories":[],"readme":"\u003cpre\u003e\n _______   __                                __       __                   ______   __                  __  __\n/       \\ /  |                              /  \\     /  |                 /      \\ /  |                /  |/  |\n$$$$$$$  |$$/  _____  ____    ______        $$  \\   /$$ | __    __       /$$$$$$  |$$ |____    ______  $$ |$$ |\n$$ |__$$ |/  |/     \\/    \\  /      \\       $$$  \\ /$$$ |/  |  /  |      $$ \\__$$/ $$      \\  /      \\ $$ |$$ |\n$$    $$/ $$ |$$$$$$ $$$$  |/$$$$$$  |      $$$$  /$$$$ |$$ |  $$ |      $$      \\ $$$$$$$  |/$$$$$$  |$$ |$$ |\n$$$$$$$/  $$ |$$ | $$ | $$ |$$ |  $$ |      $$ $$ $$/$$ |$$ |  $$ |       $$$$$$  |$$ |  $$ |$$    $$ |$$ |$$ |\n$$ |      $$ |$$ | $$ | $$ |$$ |__$$ |      $$ |$$$/ $$ |$$ \\__$$ |      /  \\__$$ |$$ |  $$ |$$$$$$$$/ $$ |$$ |\n$$ |      $$ |$$ | $$ | $$ |$$    $$/       $$ | $/  $$ |$$    $$ |      $$    $$/ $$ |  $$ |$$       |$$ |$$ |\n$$/       $$/ $$/  $$/  $$/ $$$$$$$/        $$/      $$/  $$$$$$$ |       $$$$$$/  $$/   $$/  $$$$$$$/ $$/ $$/\n                            $$ |                         /  \\__$$ |\n                            $$ |                         $$    $$/\n                            $$/                           $$$$$$/\n\u003c/pre\u003e\n\nPimp My Shell allows you to manage your shell in a way to that helps decrease\nsetup time and increases your productivity. It has support for themes (change\nthe way your shell looks), plugins (adds functionality to your shell), and\ndotfile management.\n\nOne of the best parts is, the PMS framework allows you to use the same\nframework in different shells. Use zsh on your personal laptop, and use bash on\nremote servers. Wanna try fish? Go ahead, try out different shells and see the\npower of PMS ;)\n\n![CI](https://github.com/JoshuaEstes/pms/workflows/CI/badge.svg?branch=main)\n\n---\n\n# Features\n\n* Themes\n* Plugins\n  * Plugins do more than just add a bunch of aliases that you will never use\n  * Shell Options, Auto Completions, Commands, and more are just some of the\n    things plugins can provide.\n* Dotfiles\n  * Get help managing those dotfiles! No more custom install or update scripts\n  * Your dotfiles are backed up to your own git repository\n* Multiple Shell Support (Bash, Zsh, etc.)\n  * Works to load sane defaults for you (with the help of various plugins)\n* PMS Manager\n  * Easy upgrades for PMS\n  * Preview and switch themes with ease\n  * Easy to enabled and disable various plugins\n* Great Documentation for both Users and Developers\n\n# Requirements\n\n* MacOS or Linux (could work on windows, but I don't use windows)\n* Shell such as bash, zsh, etc.\n* curl or wget\n* git\n\n# Installation\n\nInstallation can be done manually or by using curl or wget.\n\n```\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/JoshuaEstes/pms/main/scripts/install.sh)\"\n```\n\n# FAQs\n\n## Why use PMS?\n\nPMS allows you to work within a framework designed to be used with any shell\n(zsh, bash, etc.). Because everything is \"standardized\" you gain the benefit of\nhaving the ability to use PMS on your macOS laptop running zsh and also the\nlinux server running bash. Co-workers can use this while using different\nplugins, themes, shells, etc.\n\nPMS ships with the PMS Manager, which is a tool that will allow you to make easy\nmodifications to PMS such as switching themes, enabling/disabling plugins, and\nhelping you keep PMS updated with the latest release.\n\nPMS also helps you manage your dotfiles.\n\nPMS is easy to install and is as non-destructive as possible backing up existing\nrc files and reverted them when uninstalled.\n\n## What is a plugin?\n\nA plugin changes the behaviour of the shell. This is done by setting or\nunsetting shell specific features. Plugins may also include aliases for you to\nuse or contain functionality that will be ran when you do things within PMS like\nupgrading PMS, enable/disable plugins. Plugins may also have settings that can\nbe modified by editing your ~/.env file.\n\n## What is a theme?\n\nThemes change the look of your shell by modifying your command prompt. They may\nalso do things like change or load colors. If a theme does make changes, it will\nrevert those changes when you switch to another theme.\n\n## How are my dotfiles managed?\n\nThere is a [great article](https://www.atlassian.com/git/tutorials/dotfiles) on\nusing a bare git repo to store your dotfiles. This is how PMS works to manage\nyour dotfiles but provides some extra functionality to make it easier to manage.\n\nBy managing your files like this, it will not require any of your files to be\nsymlinked. Another benefit of managing your dotfiles like this is we can do some\nreally cool shit with git.\n\n# Documentation\n\n* [User Guides](https://docs.codewithjoshua.com/pms)\n* [Developer Guides](https://docs.codewithjoshua.com/pms)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJoshuaEstes%2Fpms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJoshuaEstes%2Fpms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJoshuaEstes%2Fpms/lists"}