Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Changelog

## v1.0.1
- Fixed documentation and build script

## v1.0.0
- Traffic light buttons (red/yellow/green)
- Configurable button placement (left or right)

51 changes: 35 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<a href="https://ko-fi.com/ddc"><img src="https://img.shields.io/badge/Ko--fi-ddc-FF5E5B?style=plastic&logo=kofi&logoColor=white&color=brightgreen" alt="Ko-fi"/></a>
<a href="https://www.paypal.com/ncp/payment/6G9Z78QHUD4RJ"><img src="https://img.shields.io/badge/Donate-PayPal-brightgreen.svg?style=plastic&logo=paypal&logoColor=white" alt="Donate"/></a>
<br>
<a href="https://plugins.jetbrains.com/plugin/30756-traffic-light-buttons"><img src="https://img.shields.io/jetbrains/plugin/d/30756?style=plastic&logo=jetbrains&logoColor=white" alt="Marketplace Downloads"/></a>
<a href="https://github.com/ddc/JetbrainsTrafficLightButtons/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=plastic&logo=apache&logoColor=white" alt="License: Apache 2.0"/></a>
<a href="https://github.com/ddc/JetbrainsTrafficLightButtons/releases/latest"><img src="https://img.shields.io/github/v/release/ddc/JetbrainsTrafficLightButtons?style=plastic&logo=github&logoColor=white" alt="Release"/></a>
<br>
Expand All @@ -22,33 +23,35 @@

<p align="center">📦 <b><a href="https://plugins.jetbrains.com/plugin/30756-traffic-light-buttons">Install from JetBrains Marketplace</a></b> 📦 </p>


# Table of Contents

- [Screenshot](#screenshot)
- [Features](#features)
- [Installation](#installation)
- [From Marketplace](#from-marketplace)
- [From Plugin ZIP](#from-plugin-zip)
- [Getting Started](#getting-started)
- [Settings](#settings)
- [Build](#build)
- [License](#license)
- [Support](#support)


# Screenshot

<p align="left">
<img src="assets/examples.png" alt="Left placement">
</p>


# Features

- LINUX ONLY (macOS already has native traffic lights; Windows support planned for a future release)
- macOS-style traffic light buttons (red/yellow/green)
- Four button states: active, hover (with action icons), pressed, and inactive (gray)
- Configurable button placement (left or right side of the title bar)
- Compatible with all JetBrains IDEs (2025.3.3+)

| Feature | Description |
|-----------------------|---------------------------------------------------------------------------------|
| Traffic Light Buttons | macOS-style colored circles (red/yellow/green) replacing default window buttons |
| Button States | Four states: active, hover (with action icons), pressed, and inactive (gray) |
| Button Placement | Configurable left or right side of the title bar |
| Button Order | IDE Default or macOS Style order (right placement only) |
| Platform | Linux only (macOS already has native traffic lights; Windows support planned) |
| Compatibility | All JetBrains IDEs (2025.3.3+) |

# Installation

Expand All @@ -58,35 +61,51 @@
2. Search for **Traffic Light Buttons**
3. Click **Install** and restart the IDE


## From Plugin ZIP

1. Download the latest `TrafficLightButtons-*.zip` from [Releases](https://github.com/ddc/JetbrainsTrafficLightButtons/releases)
1. Download the latest
`TrafficLightButtons-*.zip` from [Releases](https://github.com/ddc/JetbrainsTrafficLightButtons/releases)
2. Go to **Settings > Plugins > Install Plugin from Disk...**
3. Select the downloaded `.zip` file and restart the IDE

# Getting Started

After install and restart, the traffic light buttons are applied automatically with the default settings (right placement, IDE default order).
To customize, go to:

| Setting | How to change |
|----------------------|-----------------------------------------------------------------------------------------------|
| **Button Placement** | **Settings > Appearance & Behavior > Traffic Light Buttons** > select LEFT/RIGHT |
| **Button Order** | **Settings > Appearance & Behavior > Traffic Light Buttons** > select IDE Default/macOS Style |

> **Note:** Changes require an IDE restart to take effect. A restart dialog will appear after applying.

# Settings

`Settings > Appearance & Behavior > Traffic Light Buttons`

- **Button Placement** — Left or Right (default: Right)
- **Button Order** — IDE Default or macOS Style (only available for Right placement)
- **IDE Default**: Minimize, Maximize, Close
- **macOS Style**: Maximize, Minimize, Close

- **IDE Default**: Minimize, Maximize, Close
- **macOS Style**: Maximize, Minimize, Close

# Build

Requires JDK 21.

```bash
./build.sh
./build.sh # build only
./build.sh [-v|--verify] # build with plugin verification
```

The script formats Kotlin sources (if `ktlint` is available) and builds `TrafficLightButtons-<version>.zip` inside the
`build/` directory.
Plugin settings and variables are configured at the top of `build.sh`.

# License

This project is licensed under the [Apache 2.0 License](LICENSE).


# Support

If you find this project helpful, consider supporting development.
Expand Down
16 changes: 12 additions & 4 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
# Automated script to build the plugin and register changes on the changelog file
# DDC Softwares (daniel@ddcsoftwares.com)
# https://github.com/ddc/JetbrainsTrafficLightButtons
# Usage: ./build.sh [-v|--verify]
# -v, --verify Run plugin verification before building
# ============================================================================
set -euo pipefail

# ============================================================================
# Variables
# ============================================================================
PLUGIN_VERSION="1.0.0"
PLUGIN_VERSION="1.0.1"
GRADLE_VERSION="9.4.0"
KOTLIN_VERSION="2.1.0"
INTELLIJ_PLATFORM_VERSION="2.12.0"
Expand All @@ -20,12 +22,17 @@ OUTPUT_FILENAME="TrafficLightButtons-${PLUGIN_VERSION}.zip"
# ============================================================================
WHATS_NEW=$(cat <<'EOF'
<ul>
<li>Traffic light buttons (red/yellow/green)</li>
<li>Configurable button placement (left or right)</li>
<li>Fixed documentation and build script</li>
</ul>
EOF
)
# ============================================================================
RUN_VERIFY=false
for arg in "$@"; do
case "$arg" in
-v|--verify) RUN_VERIFY=true ;;
esac
done
pushd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null
export JAVA_HOME
# ============================================================================
Expand Down Expand Up @@ -88,6 +95,7 @@ verify_plugin() {

build_plugin() {
log_action "Building plugin..."
rm -f "build/${OUTPUT_FILENAME}"
./gradlew buildPlugin -q
}

Expand All @@ -107,7 +115,7 @@ cleanup_build() {
write_gradle_properties
update_changelog
format_kotlin
verify_plugin
[[ "$RUN_VERIFY" == true ]] && verify_plugin
build_plugin
cleanup_build

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pluginName = Traffic Light Buttons
pluginVersion = 1.0.0
pluginVersion = 1.0.1
pluginSinceBuild = 253
platformVersion = 2025.3.3
pluginGroup = com.ddc.trafficlightbuttons
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
<li>macOS-style traffic light buttons (red/yellow/green)</li>
<li>Hover icons (X, minus, fullscreen arrows)</li>
<li>Configurable button placement (left or right)</li>
<li>Windows support planned</li>
</ul>
<br/>
<br/><br/>
<b>Settings</b><br/>
Settings &gt; Appearance &amp; Behavior &gt; Traffic Light Buttons
]]></description>
Expand Down
Loading