Sane Break is a cross-platform break reminder designed to help you take meaningful breaks without disrupting your workflow.
![Download on the Mac App Store](https://private-user-images.githubusercontent.com/36528777/408348801-2b6f067b-d275-4a2f-ba13-4fb9c6bd63fe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzODE1ODAsIm5iZiI6MTczOTM4MTI4MCwicGF0aCI6Ii8zNjUyODc3Ny80MDgzNDg4MDEtMmI2ZjA2N2ItZDI3NS00YTJmLWJhMTMtNGZiOWM2YmQ2M2ZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDE3MjgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ5OWE2YjQ0MGJiMDg0NzZkYzMxNTdkM2VkMThhNmRiNTY2YTg2NTZkYWIzOWFkOTRlODdlYjU1NzRmMjAwZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hPfgLF82Em4BBhZAxJ3PnGikkX-bjSUWzlsgGfQTNwU)
![Get it on GitHub](https://private-user-images.githubusercontent.com/36528777/405834450-16c6c35f-e657-4040-8b08-34282ea4ad43.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzODE1ODAsIm5iZiI6MTczOTM4MTI4MCwicGF0aCI6Ii8zNjUyODc3Ny80MDU4MzQ0NTAtMTZjNmMzNWYtZTY1Ny00MDQwLThiMDgtMzQyODJlYTRhZDQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDE3MjgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4YmY3Mjk3MTU0MjhmMjg2ZmJmN2YwZjhlZDcwNGM0ZTViMmUxOWRhNjQ0MTNmMzNkYmJjNTE1ZTIzNDcwYmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.-qyuCMpctDDO_6ywLRPPak-oQCG79jsOuIy5T1taBDQ)
Most break reminder apps send notifications before the break is scheduled, but that merely informs me that a break is going to happen, rather than telling me it's happening right now. Even with a warning, when the break actually happens I'm too often deeply focused on a task. Then, the program either forces the break, interrupting my work, or I can use a "skip" or "postpone" button. Accepting abrupt interruption is too harsh, so I tend to click "skip" or "postpone". Then, that becomes an almost instinctive habit, and before I know it, hours have passed without a single break.
In contrast, Sane Break allows me to take ownership of when to stop and break. It starts by providing a gentle, non-intrusive reminder through a flashing window. The break officially begins as soon as I naturally pause after finishing my current task. This way, Sane Break offers the flexibility to wrap up my work and take a break on my terms, rather than forcing an abrupt interruption.
Sane Break aims to strike a balance between respecting your workflow and ensuring you take the breaks you need.
For more details about the motivation behind Sane Break, you can refer to No break reminder works (for me).
Sane Break uses a two-phase system:
- Phase 1: A small, unobtrusive reminder that encourages you to find a good stopping point.
- Phase 2: The reminder grows to full screen during the actual break.
Transition to phase 2 happens when you stop working on your computer, or when you ignore the reminder and keep working for too long (configurable).
This design was inspired by RSIBreak and has similarities to WorkRave. Sane Break has some other improvements:
- No big buttons for skipping or postponing to avoid mindless dismissals.
- Cross-platform support
- modern framework and UI style built with Qt6
sane-break-demo.mp4
Download macOS .dmg
file from the release page. It is a universal bundle and both x86 and ARM version of macOS 12 or newer are supported.
Download Windows .exe
executable from the release page. x86 version of Windows 10 or newer is supported. Older versions may work too.
Sane Break requires Qt>=6.4 for X11 support and Qt>=6.6 for Wayland support. It works best on KDE Wayland, and X11 is also fully supported. Sane Break will also work with Wayland compositors with wlr layer shell and idle notify protocols support. Although GNOME Wayland does not support these protocols, some special workaround are made so that Sane Break will work with GNOME.
Sane Break can be installed from Flathub with
flatpak install flathub io.github.AllanChain.sane-break
Note that if you are using GNOME, please download the GNOME shell extension for Sane Break from the release page and run:
gnome-extensions install sane-break-gnome-extension.zip
gnome-extensions enable [email protected]
You may need to logout and login from the Wayland session to make the extension work.
If you are using Ubuntu 24.10 (and above) or Debian Trixie (and above), you can install the .deb
package directly from the release page since v0.6.0
. And make sure to enable the GNOME shell extension with:
gnome-extensions enable [email protected]
The difference between Wayland Ubuntu Oracular build and Debian Trixie build is the layer shell support. If you are using a Debian-based distro and a Wayland compositor with layer shell protocol support (e.g. KDE Neon), you probably need the Debian Trixie build. Otherwise, the Ubuntu Oracular build is good to go.
Assume all required packages described below is installed, you can use the following commands to compile and install Sane Break.
git clone https://github.com/AllanChain/sane-break
cd sane-break
mkdir build
cd build
cmake ..
cmake --build . --parallel
sudo cmake --install .
The above command will automatically enable X11 or Wayland support based on libraries found.
You can disable X11 or Wayland support using the option -DAUTO_ENABLE_X11=OFF
or -DAUTO_ENABLE_WAYLAND=OFF
during cmake
.
To build with translations, add -DWITH_TRANSLATIONS=1
and install qt6-tools
package (name may vary across distros).
For Arch-based distros, it's recommended to directly install the AUR package:
yay -S sane-break
If you want to build it manually, make sure the following packages are installed:
yay -S qt6-base qt6-multimedia
yay -S libxss # X support
yay -S layer-shell-qt # Wayland support
If you want to enable just X11 or Wayland support, you are strongly encouraged to install Sane Break by compiling from source.
For KDE users (e.g. KDE Neon), just install
apt install qt6-base-dev qt6-multimedia-dev
apt install libxss-dev # X support
apt install qt6-wayland-dev liblayershellqtinterface-dev # Wayland support
For GNOME users, liblayershellqtinterface-dev
is optional, and please make sure to enable the GNOME shell extension [email protected]
after building and installing Sane Break.
For Guix (see also #23):
guix shell --container make cmake gcc-toolchain pkg-config vulkan-headers \
qtbase@6 qtmultimedia \
libxkbcommon libxscrnsaver libx11 \ # X support
layer-shell-qt qtwayland@6 wayland # Wayland support
Right-click the menu icon and hover over the "Postpone" menu. The "Quit" menu is there. This design is intended to make users think twice about whether they want to postpone breaks or really quit the software.
- Linux: Whatever way you like
- macOS: Open "System Preferences" and search for "Login Items". Click "+" and add Sane Break to login items
- Windows: Use Win + R and type
shell:startup
. Putsane-break.exe
or its shortcut there
Yes, Sane Break will automatically pause and stop prompting breaks if there is no user input for a configurable amount of time, determined by the "Pause if idle for" setting. Additionally, if the idle time extends beyond a certain threshold, Sane Break will reset the break timer and break cycle, starting from a small break. These thresholds can be configured using the "Reset break after paused for" and "Reset cycle after paused for" settings.
Note for Wayland (and possibly other platforms): Some applications, such as mpv, simulate user inputs to prevent the computer from sleeping automatically. Sane Break cannot distinguish between simulated and real inputs, so it will treat these simulations as active use. This means breaks can still occur while watching videos.
The default locations for settings are:
- On Linux and macOS:
~/.config/SaneBreak/SaneBreak.ini
- On Windows:
%APPDATA%\SaneBreak\SaneBreak.ini
Beside default locations, Qt also supports reading settings from other locations.
If you want to make Sane Break portable, especially on Windows, you can put an empty file named SaneBreak.ini
next to the .exe
file and Sane Break will automatically pick that file for settings.
You can postpone or quit via tray icon within a short time even after the break starts.
However, if you really want to quit when Sane Break is set to fullscreen, you can kill the app via system command line. For example:
- KDE: Enable KRunner with Alt + Space and run
killall sane-break
- macOS: Enable Spotlight with Cmd + Space, open Terminal, and run
killall sane-break
- Windows: Press Win + R and run
taskkill /IM sane-break /F