tacky-borders lets you customize window borders on Windows 10 and 11.
The easiest way to install tacky-borders is to download a pre-built release from the releases page.
When you run the .exe for the first time, tacky-borders will automatically generate a config file for you in %userprofile%/.config/tacky-borders/
.
Alternatively, if you wish to build it yourself, you can follow these steps:
-
Install the necessary tools:
-
Clone the repository:
git clone https://github.com/lukeyou05/tacky-borders.git
-
Navigate to the project directory:
cd tacky-borders
-
Build or run the project:
cargo build --release
or
cargo run --release
To uninstall, it's as easy as deleting tacky-borders.exe
.
Note
If you wish to remove all traces of tacky-borders from your system, you can also delete the config folder located at %userprofile%/.config/tacky-borders/
The config file is located in %userprofile%/.config/tacky-borders/
. You can easily access this folder by right clicking on the tray icon and hitting "Show Config"
The following auto-generated config.yaml is included as reference:
# watch_config_changes: Automatically reload borders whenever the config file is modified.
watch_config_changes: True
# Global configuration options
global:
# border_width: Width of the border (in pixels)
border_width: 3
# border_offset: Offset of the border from the window edges (in pixels)
# - Negative values shrink the border inwards
# - Positive values expand the border outwards
border_offset: -1
# border-radius: Radius of the border's corners. Supported values:
# - Auto: Automatically determine the radius
# - Square: Sharp corners (radius = 0)
# - Round: Fully rounded corners
# - RoundSmall: Slightly rounded corners
# - Or specify any numeric value for a custom radius
border_radius: Auto
# active_color: the color of the active window's border
# inactive_color: the color of the inactive window's border
#
# Supported color types:
# - Solid: Use a hex code or "accent"
# Example:
# active_color: "#ffffff"
# OR
# active_color: "accent"
# - Gradient: Define colors and direction
# Example:
# active_color:
# colors: ["#000000", "#ffffff"]
# direction: 45deg
# OR
# active_color:
# colors: ["#000000", "#ffffff"]
# direction:
# start: [0.0, 1.0]
# end: [1.0, 0.0]
# NOTE: [0.0, 0.0] = top-left, [1.0, 1.0] = bottom-right
active_color:
colors: ["#6274e7", "#8752a3"]
direction: 45deg
inactive_color:
colors: ["#30304f", "#363c69"]
direction:
start: [0.0, 1.0]
end: [1.0, 0.0]
# initialize_delay: Time (in ms) before the border appears after opening a new window
# unminimize_delay: Time (in ms) before the border appears after unminimizing a window
#
# These settings help accommodate window animations (e.g., open or unminimize animations).
# If window animations are disabled, set these to 0.
#
# These can also be used to accomodate border animations (e.g., fade animations).
initialize_delay: 200
unminimize_delay: 150
# animations: Configure animation behavior for window borders
# fps: Animation frame rate
# active: Animations for active windows
# inactive: Animations for inactive windows
#
# Supported animation types:
# - Spiral
# - ReverseSpiral
# - Fade
#
# Specify animation types and parameters as follows:
# active:
# - type: Spiral
# duration: 1800
# easing: Linear
#
# - type: Fade
# duration: 200
# easing: EaseInOutQuad
#
# NOTE: Spiral animations may be resource-intensive on low-end systems.
animations:
fps: 60
active:
- type: Fade
duration: 200
easing: EaseInOutQuad
inactive:
- type: Fade
duration: 200
easing: EaseInOutQuad
# Per-application configuration overrides
window_rules:
- match: Class
name: "Windows.UI.Core.CoreWindow"
enabled: False
- match: Class
name: "XamlExplorerHostIslandWindow"
enabled: False
- match: Title
strategy: Contains
name: "Zebar"
enabled: False
- match: Title
name: "komorebi-bar"
enabled: False
- match: Title
name: "keyviz"
enabled: False
- match: Title
name: "Picture-in-Picture"
enabled: False
# Example rule:
# - match: Class # Match based on Class or Title
# name: "MozillaWindowClass" # Class or title name to match
# strategy: Equals # Matching strategy: Equals, Contains, or Regex (default: Equals)
# enabled: True # Enable mode: True, False, or Auto (default: Auto)
#
# Notes:
# - Any option in the global config can also be defined in window_rules.
# - If not defined in a rule, settings will fall back to global config values.
Here is another great app that achieves similar functionality: https://github.com/keifufu/cute-borders. I've taken a lot of inspiration from them and would highly recommend checking them out!
Although both apps aim to customize window borders, they have totally different implementations, each with their own strengths and limitations. Which one you should use boils down to the following:
Choose tacky-borders if you want:
- Customizable border width
- Gradient support
- Multiple animation types
- Windows 10 support (not fully tested, but it has been reported to work)
Choose cute-borders if you want:
- Stability and performance due to its use of native Windows API for the borders.