# Pimp My Shell

PMS is a framework for using different shells along with various "dotfiles". It supports easy install/uninstall and a wide variety of plugins and themes.

## [Features](https://docs.codewithjoshua.com/pms/features)

* [Themes](https://docs.codewithjoshua.com/pms/themes) - Change the way your environment looks
* [Plugins](https://docs.codewithjoshua.com/pms/plugins) - Change the way your environment functions
* Dotfiles - Manage configuration files through a plugin-backed git repository
* Multiple Shell Support
  * No matter the shell, you can easily swap between them and maintain similar functionality
* [PMS Manager](https://docs.codewithjoshua.com/pms/pms-manager) - Easy to use and up modify tool to help you manage PMS
  * Easy [upgrade](https://docs.codewithjoshua.com/pms/upgrade) PMS
  * Preview and switch themes
  * Easy Plugin enabled and disable
* Focus on using [environment variables](https://docs.codewithjoshua.com/pms/environment-variables) to modify functionality of PMS
* Easy [Uninstall](https://docs.codewithjoshua.com/pms/installation/uninstall) process that leaves your system in the ordinal state before installing PMS
* Easy to extend and overwrite any file, even the PMS core
* [View All Features](https://docs.codewithjoshua.com/pms/features)

## Getting Started

### Requirements

* MacOS or Linux (could work on windows, but I don't use windows so get fucked)
* curl or wget
* git
* A shell such as bash, zsh, etc.

[Detailed Requirements](https://docs.codewithjoshua.com/pms/requirements)

### Installation

Installation can be done manually or by using curl or wget.

[Detailed Installation Guide](https://docs.codewithjoshua.com/pms/installation)

### Updating PMS using the PMS Manager

#### auto

```
pms upgrade
```

#### Manual update

```
cd $PMS
git pull origin main
# Copy over new template files
# cp ~/.pms/templates/bashrc ~/.bashrc
# ...
```

## Shells

PMS supprts a number of different shells. Switching from one shell to another is easy and allows you to compare which shell works best for you and your needs.

To see a list of shells on your system, you can run `cat /etc/shells`

If PMS does not support your shell, please open an issue.

## Uninstall

By default, PMS in installed in `~/.pms` directory. You will just need to run the "uninstall" script and this will revert you system back to how it was before you installed PMS.

```
cd $PMS && ./scripts/uninstall.sh
```

[Detailed Uninstall Guide](https://docs.codewithjoshua.com/pms/installation/uninstall)

## License

See LICENSE.md


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.codewithjoshua.com/pms/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
