# WinFish Shell

A Fish shell-like implementation for Windows that provides modern shell features including syntax highlighting, autocompletion, and command suggestions. Comes with a built-in terminal emulator for a seamless experience.

## Features

- Modern terminal emulator with customizable interface
- Syntax highlighting for commands
- Command history with search (Ctrl+R)
- Auto-suggestions based on history
- Tab completion for commands and paths
- Modern command prompt with Git integration
- Color support for Windows
- Built-in command handling
- Alias support with persistent storage
- Directory stack navigation (pushd/popd)
- Multiple terminal windows support
- Customizable font size
- Copy/paste support
- Split terminal support (vertical and horizontal)
- Full text search in terminal
- Window transparency control
- Customizable colors (background and text)
- Full-screen mode
- Always-on-top option
- Persistent configuration
- Multiple shell instances in split panes

## Requirements

- Python 3.7 or higher
- Windows 10/11

## Installation

### Via pip (recommended)

```bash
pip install winfish-terminal
```

### Via package managers

#### Chocolatey

```powershell
choco install winfish-terminal
```

#### Scoop

```powershell
scoop bucket add extras
scoop install winfish-terminal
```

#### Winget

```powershell
winget install winfish-terminal
```

### Manual Installation

1. Clone or download this repository
2. Install the required dependencies:

```bash
pip install -r requirements.txt
```

3. Create a desktop shortcut (optional):

```bash
python create_shortcut.py
```

## Usage

You can start the terminal in two ways:

1. Run the terminal emulator (recommended):

```bash
python terminal_app.py
```

2. Run the shell directly (basic terminal):

```bash
python winfish.py
```

### Available Commands

- All standard Windows commands are supported
- Built-in commands:
  - `cd [dir]` - Change directory (use `cd -` to go to previous directory)
  - `ls` - List directory contents
  - `pwd` - Print working directory
  - `help` - Show help message
  - `exit` - Exit the shell
  - `alias` - Show or set command aliases
  - `unalias` - Remove an alias
  - `history` - Show command history
  - `clear` - Clear screen
  - `pushd/popd/dirs` - Directory stack manipulation

### Keyboard Shortcuts

- Up/Down arrows: Navigate through command history
- Tab: Command and path completion
- Ctrl+R: Reverse history search
- Ctrl+C: Cancel current command
- Ctrl+D: Exit shell
- Ctrl+L: Clear screen
- Ctrl+W: Delete word before cursor
- Ctrl+F: Open search
- F11: Toggle full screen

### Terminal Emulator Features

- Multiple windows support (File -> New Window)
- Split terminal support (File -> Split Vertical/Horizontal)
- Customizable font size (Settings -> Font Size)
- Customizable colors (Settings -> Background/Text Color)
- Window transparency (Settings -> Transparency)
- Copy/Paste support (Edit menu or standard shortcuts)
- Full text search (Edit -> Find or Ctrl+F)
- Modern dark theme
- Scrollback buffer
- Always on top option (View -> Always on Top)
- Full screen mode (View -> Toggle Full Screen or F11)

### Configuration

The shell stores its configuration in the following locations:

- `~/.winfish/` - Configuration directory
- `~/.winfish/aliases.json` - Stored command aliases
- `~/.winfish/terminal_config.json` - Terminal emulator settings
- `~/.winfish_history` - Command history

## Features compared to Fish shell

- Command syntax highlighting ✓
- Command history ✓
- Directory navigation ✓
- Auto-suggestions ✓
- Tab completion ✓
- Modern prompt design ✓
- Git integration ✓
- Alias support ✓
- Directory stack ✓
- Split panes ✓
- Customization ✓

Note: This is a simplified implementation focused on providing a modern command-line experience on Windows while maintaining compatibility with Windows commands.
