A cross-platform desktop application built with Electron and React for launching multiple, customizable, stay-on-top timers for Bless Unleashed. More info at butools.xyz
- Multiple Timers: Launch as many independent timers as you need.
- Preset Based: Quickly start timers from predefined configurations (e.g., Backflow, Fire, Reflect).
- Stay-on-Top Windows: Timer windows always remain visible above other applications.
- Visual Cues: Timers change border color (yellow -> red) and pulse when time is low.
- Audio Cues:
- Selectable modes: Voice countdowns or simple Beeps.
- Distinct warning and completion sounds per preset.
- Individual Controls: Each timer has its own play/pause, reset, volume, and mute controls.
- Global Controls: Manage master volume or mute/unmute all timers simultaneously from the Launcher.
- Customizable Appearance: Transparent background, draggable, and resizable windows.
- Position Memory: Remembers the last position and size for each type of timer preset.
- Launcher UI: Centralized window to add new timers and manage active ones.
- Keyboard Shortcuts: Launch specific timer presets instantly.
- Cross-Platform: Works on Windows, macOS, and Linux.
You can download the latest pre-built version for your operating system from the GitHub Releases Page.
- Windows: Download the
.exe
.
- Launch: Open the
BuTools-Timer
application to display the main Launcher window. - Add Timer: Click the
(+) Add Timer
button and select a timer preset (e.g.,Backflow
,Fire
) from the dropdown. A small, stay-on-top timer window will appear. - Control Timer Window:
- Use the Play/Pause/Reset buttons for basic control.
- Adjust Audio using the volume icon (mute/unmute), the slider (volume level), and the mic/bell icons (switch between Voice/Beep modes).
- Watch the border for Visual Cues (yellow/red) as time decreases.
- Click the
X
in the top-right corner to Close the timer. - Move/Resize the window by dragging the top bar or its edges. The position/size is saved for the next time you launch that preset.
- Manage in Launcher:
- View all running timers in the Active Timers list.
- Click
Focus
to bring a specific timer window to the front. - Click the
X
next to a timer name to close it from the Launcher. - Use the Global Audio Controls (volume icon and slider at the top-right of the list) to adjust the master volume or mute/unmute all timers at once.
- Use Shortcuts: Quickly launch timers without the Launcher (see below).
Launch Timer Presets:
Quickly launch timers using these global shortcuts:
Ctrl+Shift+B
: BackflowCtrl+Shift+F
: FireCtrl+Shift+L
: LightningCtrl+Shift+R
: ReflectCtrl+Shift+S
: Fuse Storm
Control Active Timers (v1.1.0+):
These shortcuts allow you to control timers without directly clicking them, ideal for overlays:
-
Cycle Selection: Use these keys to select which timer the control keys will affect:
Ctrl+Shift+Right Arrow
: Select the next open timer.Ctrl+Shift+Left Arrow
: Select the previous open timer. (The selected window will briefly focus for visual confirmation)
-
Control Selected Timer:
Ctrl+Shift+Up Arrow
: Start / Resume the selected timer.Ctrl+Shift+Down Arrow
: Pause the selected timer.Ctrl+Shift+End
: Reset the selected timer.
- Electron - Cross-platform desktop app framework
- React - UI library
- TypeScript - Strongly typed JavaScript
- Vite - Frontend tooling (build & dev server)
- Electron Forge - Build, package, and distribute Electron apps
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - UI components
- Framer Motion - Animations
- Electron Store - Simple data persistence
Want to run the project from the source or contribute?
Prerequisites:
Steps:
- Clone the repository:
git clone https://github.com/foreztgump/butools-timer-desktop.git cd BuTools-Timer
- Install dependencies:
npm install # or yarn install
- Run the app in development mode:
This will launch the app with hot-reloading enabled for the renderer process.
npm start # or yarn start
To create distributable packages for different platforms:
npm run make
# or
yarn make
This command uses Electron Forge to build the application based on the configuration in forge.config.js. The output packages will be located in the out directory.
Contributions are welcome! If you have suggestions, bug reports, or want to contribute code:
- Please check the Issues tab to see if your issue or suggestion already exists.
- If not, feel free to open a new issue.
- For code contributions, please fork the repository and submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
Need more help? Check out the BuTools Timer FAQ. Find more tools and consider supporting development at butools.xyz.