Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/svenstaro/wmfocus

Visually focus windows by label
https://github.com/svenstaro/wmfocus

i3 i3wm manager window wm

Last synced: 13 days ago
JSON representation

Visually focus windows by label

Awesome Lists containing this project

README

        

# wmfocus - Visually focus windows by label

[![CI](https://github.com/svenstaro/wmfocus/workflows/CI/badge.svg)](https://github.com/svenstaro/wmfocus/actions)
[![Crates.io](https://img.shields.io/crates/v/wmfocus.svg)](https://crates.io/crates/wmfocus)
[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/svenstaro/wmfocus/blob/master/LICENSE)
[![Stars](https://img.shields.io/github/stars/svenstaro/wmfocus.svg)](https://github.com/svenstaro/wmfocus/stargazers)
[![Lines of Code](https://tokei.rs/b1/github/svenstaro/wmfocus)](https://github.com/svenstaro/wmfocus)

This tool that allows you to rapidly choose a specific window directly without having to use the mouse or directional keyboard navigation.

![Screen cast](cast.apng)

Thanks to cairo, it should work on all kinds of screens and automatically display at the correct size according to your DPI.

## Installation

Packaging status

**On Arch Linux**: `pacman -S wmfocus`

**With Cargo**: `cargo install --features i3 wmfocus`

## Usage

Draw labels on the upper-left corner of all windows:

wmfocus

Completely fill out windows and draw the label in the middle (try it with transparency!):

wmfocus --fill

Use a different font (as provided by fontconfig):

wmfocus -f "Droid Sans":100

Change up the default colors:

wmfocus --textcolor red --textcoloralt "#eeeeee" --bgcolor "rgba(50, 50, 200, 0.5)"

wmfocus will make use of a compositor to get real transparency.

## Full help
```
wmfocus 1.5.0

Sven-Hendrik Haase

Visually focus windows by label

USAGE:
wmfocus [OPTIONS]

OPTIONS:
--textcolor Text color (CSS notation) [default: #dddddd]
--textcoloralt Text color alternate (CSS notation) [default: #666666]
--bgcolor Background color (CSS notation) [default: "rgba(30, 30, 30, 0.9)"]
--textcolorcurrent Text color current window (CSS notation) [default: #333333]
--textcolorcurrentalt Text color current window alternate (CSS notation) [default: #999999]
--bgcolorcurrent Background color current window (CSS notation) [default: "rgba(200, 200, 200, 0.9)"]
--halign Horizontal alignment of the box inside the window [default: left] [possible values: left, center, right]
--valign Vertical alignment of the box inside the window [default: top] [possible values: top, center, bottom]
--fill Completely fill out windows
-c, --chars Define a set of possbile values to use as hint characters [default: sadfjklewcmpgh]
-e, --exit-keys ... List of keys to exit application, sequences separator is space, key separator is '+', eg Control_L+g
Shift_L+f
-f, --font Use a specific TrueType font with this format: family:size [default: Mono:72]
-h, --help Print help information
-m, --margin Add an additional margin around the text box (value is a factor of the box size) [default: 0.2]
-o, --offset Offset box from edge of window relative to alignment (x,y) [default: 0,0]
-p, --print-only Print the window id only but don't change focus
-V, --version Print version information
```

## Troubleshooting

If there's some funky stuff, you can try to track it down by running `wmfocus` with `RUST_LOG=trace`:

RUST_LOG=trace wmfocus

This will print quite some useful debugging info.

## Compiling

You need to have recent versions of `rust`, `cargo`, `xcb-util-keysyms`, `libxkbcommon-x11` and `cairo` installed.

Then, just clone it like usual and `cargo run` to get output:

git clone https://github.com/svenstaro/wmfocus.git
cd wmfocus
cargo run --features i3

## Window manager support

While this tool is window manager-independent, an implementation for your favorite window manager might not yet be available. Current support:

- i3
- sway (partial, accepting PRs)

If you want to implement support for more window managers, have a look at the [i3 implementation](https://github.com/svenstaro/wmfocus/blob/master/src/wm_i3.rs).

This tool is heavily inspired by [i3-easyfocus](https://github.com/cornerman/i3-easyfocus).

## Releasing

This is mostly a note for me on how to release this thing:

- `cargo release`
- `cargo release --execute`
- Release will automatically be deployed by GitHub Actions.
- Update Arch package.