Skip to content

lukeyou05/tacky-borders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tacky-borders

image tacky-borders lets you customize window borders on Windows 10 and 11.

Installation

Pre-built Release

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/.

Build It Yourself

Alternatively, if you wish to build it yourself, you can follow these steps:

  1. Install the necessary tools:

  2. Clone the repository:

    git clone https://github.com/lukeyou05/tacky-borders.git
  3. Navigate to the project directory:

    cd tacky-borders
  4. Build or run the project:

    cargo build --release

    or

    cargo run --release

Uninstallation

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/

Configuration Options

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.

Comparison to cute-borders

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.