Skip to content

Commit 571b560

Browse files
committed
feat: add native gamepad support for toolbar navigation and capture, and update to version 2.0.0
1 parent 70475b8 commit 571b560

4 files changed

Lines changed: 53 additions & 37 deletions

File tree

README.md

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ A high-end, glassmorphic floating pill toolbar for the Dank Material Shell. Seam
1818

1919
[![DMS Plugin Gallery](https://img.shields.io/badge/DMS-Plugin%20Gallery-06599d?style=flat-square&logo=linux&logoColor=white)](https://danklinux.com/plugins)
2020

21-
*Requires Dank Material Shell (DMS) 1.0 or higher.*
21+
_Requires Dank Material Shell (DMS) 1.0 or higher._
2222

2323
## Requirements
2424

@@ -28,15 +28,16 @@ To ensure all features work correctly, the following dependencies are recommende
2828
<summary><b>View System Dependencies</b></summary>
2929
<div align="left">
3030

31-
* **Dank Material Shell (DMS)** 1.0 or higher.
32-
* **slurp**: Required for **Interactive Mode** region selection.
33-
* **gpu-screen-recorder**: Required for high-performance video recording.
34-
* **jq**: Required for automatic monitor detection in video mode (parses compositor JSON output).
31+
- **Dank Material Shell (DMS)** 1.0 or higher.
32+
- **slurp**: Required for **Interactive Mode** region selection.
33+
- **gpu-screen-recorder**: Required for high-performance video recording.
34+
- **jq**: Required for automatic monitor detection in video mode (parses compositor JSON output).
3535

3636
```bash
3737
# Debian/Ubuntu
3838
sudo apt install slurp gpu-screen-recorder jq
3939
```
40+
4041
```bash
4142
# Fedora
4243
sudo dnf install slurp gpu-screen-recorder jq
@@ -47,13 +48,15 @@ sudo dnf install slurp gpu-screen-recorder jq
4748

4849
## Keyboard Shortcuts
4950

50-
The toolbar supports the following keyboard interactions when open:
51-
51+
<details>
52+
<summary><b>View Keyboard Shortcuts</b></summary>
5253
<div align="left">
5354

54-
* **`Space`**: Trigger capture or start/stop recording (configurable behavior).
55-
* **`Ctrl + Space`**: Secondary capture mode (typically "Edit Mode", can be swapped or disabled in settings).
56-
* **`Escape`**: Dismiss the toolbar.
55+
The toolbar supports the following keyboard interactions when open:
56+
57+
- **`Space`**: Trigger capture or start/stop recording (configurable behavior).
58+
- **`Ctrl + Space`**: Secondary capture mode (typically "Edit Mode", can be swapped or disabled in settings).
59+
- **`Escape`**: Dismiss the toolbar.
5760

5861
If the editor pipe command is empty, the toolbar uses:
5962

@@ -63,38 +66,51 @@ If the editor pipe command is empty, the toolbar uses:
6366

6467
If `satty` is not installed, a notification is shown so you can install it or set a custom editor pipe command such as `swappy -f -`.
6568

66-
</div>
67-
68-
<div align="center">
69-
69+
You can customize the power-user workflow in the settings:
7070

71-
## Requirements
71+
- **Swap Shortcuts**: Exchange the functionality of `Space` and `Ctrl + Space`.
72+
- **Disable Editor Shortcut**: Completely remove the `Ctrl + Space` interaction and UI hint.
7273

73-
You can customize the power-user workflow in the settings:
7474
</div>
75+
</details>
7576

77+
## Controller Shortcuts <img src="https://img.shields.io/badge/BETA-0877d2?style=flat" alt="BETA" valign="middle">
78+
79+
<details>
80+
<summary><b>View Controller Shortcuts</b></summary>
7681
<div align="left">
7782

78-
* **Swap Shortcuts**: Exchange the functionality of `Space` and `Ctrl + Space`.
79-
* **Disable Editor Shortcut**: Completely remove the `Ctrl + Space` interaction and UI hint.
83+
The toolbar fully supports native gamepad and controller interactions without third-party mapping software:
84+
85+
- **`D-Pad Up` / `Left Stick Up`**: Open the Monitor Selection Popup.
86+
- **`D-Pad Right` / `Left Stick Right`**: Open the Capture Delay Popup.
87+
- **`D-Pad Down` / `Left Stick Down`**: Open Settings/Options Popup.
88+
- **`D-Pad (All)` / `Left Stick (All)`**: Navigate focus across buttons, toggles, and dropdowns.
89+
- **`LT / RT`**: Switch between Capture Modes (Photo / Video).
90+
- **`LB / RB`**: Switch between Capture Types (Interactive / Monitor / All).
91+
- **`A Button`**: Trigger capture, start/stop recording, or toggle the focused option.
92+
- **`B Button`**: Dismiss the toolbar or close the currently active popup.
93+
- **`Home / Guide`**: Stop an active screen recording (usable while the toolbar is hidden).
8094

8195
</div>
96+
</details>
8297

8398
## Features
8499

85100
<div align="left">
86101

87-
* **Premium Glassmorphism**: Translucent, theme-aware "Floating Pill" design with configurable toolbar and recording pill opacity.
88-
* **Multi-Monitor Recording Pill**: "Click-to-Move" logic with screen-aware positioning, allowing you to move the recording pill across connected displays.
89-
* **Adaptive Theme Support**: Intelligent UI that dynamically flips icon and text colors between black and white based on your theme brightness for guaranteed visibility.
90-
* **Smart Recording Pill**: A collapsible, high-frequency overlay that displays live recording duration and provides instant access to stop, pause, and screenshot actions.
91-
* **Tactile Interaction**: Features playful 360° spins, tilt-and-jump micro-animations, and responsive Dank Ripples on every interactive element.
92-
* **Dynamic Settings**: A context-aware popup bubble that automatically filters capture settings (FPS, Audio, Formats) based on your active mode (Photo vs. Video).
93-
* **Flexible Recording Audio**: Record system output audio and microphone input independently.
94-
* **Separate Output Settings**: Screenshots and recordings can use independent custom directories and filenames.
95-
* **Versatile Capture**: Native support for interactive region selection, active monitor focus, full-workspace grabbing, and optional `slurp` + `grim` multi-monitor screenshots.
96-
* **Configurable Capture Delay**: For non-interactive screenshot modes, a **Timer** icon allows choosing 3s, 5s, or 10s delays for capture.
97-
* **Power Workflow**: Lightning-fast controls with `Spacebar` to trigger captures, `Ctrl+Space` to send a screenshot to the editor, and `Escape` for instant dismissal.
102+
- **Premium Glassmorphism**: Translucent, theme-aware "Floating Pill" design with configurable toolbar and recording pill opacity.
103+
- **Multi-Monitor Recording Pill**: "Click-to-Move" logic with screen-aware positioning, allowing you to move the recording pill across connected displays.
104+
- **Adaptive Theme Support**: Intelligent UI that dynamically flips icon and text colors between black and white based on your theme brightness for guaranteed visibility.
105+
- **Smart Recording Pill**: A collapsible, high-frequency overlay that displays live recording duration and provides instant access to stop, pause, and screenshot actions.
106+
- **Tactile Interaction**: Features playful 360° spins, tilt-and-jump micro-animations, and responsive Dank Ripples on every interactive element.
107+
- **Dynamic Settings**: A context-aware popup bubble that automatically filters capture settings (FPS, Audio, Formats) based on your active mode (Photo vs. Video).
108+
- **Flexible Recording Audio**: Record system output audio and microphone input independently.
109+
- **Separate Output Settings**: Screenshots and recordings can use independent custom directories and filenames.
110+
- **Versatile Capture**: Native support for interactive region selection, active monitor focus, full-workspace grabbing, and optional `slurp` + `grim` multi-monitor screenshots.
111+
- **Configurable Capture Delay**: For non-interactive screenshot modes, a **Timer** icon allows choosing 3s, 5s, or 10s delays for capture.
112+
- **Power Workflow**: Lightning-fast controls with `Spacebar` to trigger captures, `Ctrl+Space` to send a screenshot to the editor, and `Escape` for instant dismissal.
113+
- **Controller Support** <img src="https://img.shields.io/badge/BETA-0877d2?style=flat" alt="BETA" valign="middle">: Navigate, configure, and capture entirely via gamepads and controllers using native IPC events and zero external mapping software.
98114

99115
</div>
100116

@@ -104,8 +120,8 @@ You can customize the power-user workflow in the settings:
104120

105121
To open the toolbar from a keyboard shortcut, add an entry in **DMS Settings** -> **Keyboard Shortcuts**:
106122

107-
* Type: `Run a program`
108-
* Action: `dms ipc call screenCaptureToolbar toggle`
123+
- Type: `Run a program`
124+
- Action: `dms ipc call screenCaptureToolbar toggle`
109125

110126
</div>
111127

Settings.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,7 @@ PluginSettings {
757757
ToggleSetting {
758758
width: parent.width - 22 - Theme.spacingM
759759
settingKey: "enableController"
760-
label: "Enable Controller Support"
760+
label: "Enable Controller Support (BETA)"
761761
description: "Allow gamepads to trigger and navigate the toolbar via IPC"
762762
defaultValue: false
763763
}

gamepad_listener.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,15 @@ def scan_devices():
8686
if is_pressed and not was_pressed:
8787
if number == 2: btn_name = "LT"
8888
elif number == 5: btn_name = "RT"
89-
elif number == 6: btn_name = "RIGHT"
90-
elif number == 7: btn_name = "DOWN"
89+
elif number == 6 or number == 0: btn_name = "RIGHT"
90+
elif number == 7 or number == 1: btn_name = "DOWN"
9191
axis_state[f"{f.fileno()}_{number}_pos"] = is_pressed
9292

9393
is_neg = value < -16000
9494
was_neg = axis_state.get(f"{f.fileno()}_{number}_neg", False)
9595
if is_neg and not was_neg:
96-
if number == 6: btn_name = "LEFT"
97-
elif number == 7: btn_name = "UP"
96+
if number == 6 or number == 0: btn_name = "LEFT"
97+
elif number == 7 or number == 1: btn_name = "UP"
9898
axis_state[f"{f.fileno()}_{number}_neg"] = is_neg
9999

100100
if btn_name:

plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "Screen Capture Toolbar",
44
"description": "Premium pill-shaped toolbar for quick screenshots and screen recording",
55
"category": "utilities",
6-
"version": "1.3.4",
6+
"version": "2.0.0",
77
"author": "JDKamalakar",
88
"icon": "screenshot_region",
99
"type": "daemon",

0 commit comments

Comments
 (0)