Code Monkey home page Code Monkey logo

tow's Introduction

Build Status

Tow Logo

Tow and its accompanying tug boat image are very much works in progress.

tow

an ergonomy helper for desktop zoom users.
Adding a little extra convenience to zoom.

Tow has the zoom area be 'towed' by the keyboard caret.

('caret' is possibly better known as 'text-cursor')

Tow is written to work with xfwm4 of the Xfce4 desktop, however it might work with other desktop environments as well. Your mileage may vary.

Users who depend on desktop zoom may appreciate tow. We want zoom but don't want it to be in our way.

If you think tow is cool convenience and want to help out, please consider buying me a coffee! ;)

ko-fi

The problem tow solves

Zoom users zoom-in a portion of their screen to magnify a region of interest. Whilst typing text, the text cursor (caret) moves, yet the zoomed view area stays put. Consequently the text cursor will be out of sight before soon, forcing the user to stop working to readjust the view area's position using the mouse or some other pointer device.

This pattern will repeat and becomes a nuisance to some.

The solution

Tow aims to automate the readjusting by having the zoom view port (the magnified area) be 'towed' by the text cursor (caret).

Applications that use a widget toolkit that supports AT-SPI2 (such as GTK or Qt), can share information regarding the carets position.

Usage

tow [FLAGS] [OPTIONS]

FLAGS: -D, --daemon Have tow be 'daemonized' / run in the background. -h, --help Prints help information -V, --version Prints version information

OPTIONS: -b, --behavior [ mode ] [ val ] Mode: 'pulse' [N: 100-10000] (ms) or 'typewriter' (default)

-s, --slide_duration [dur. in ms]  Duration of view port slide in ms [100-10000] only applies to pulse mode, otherwise ignored [default: 500]

TO DO

  • Tow 'works' but it has (many) flaws.

    Tow is unstable. We might want a cleaner state machine Your author would like all of the generate atspi ffi interface to be safe

    Your author would like CI on this repository.

    The main problems:

    Tow needs a runtime on/off hotkey.

Some programs do not implement accessibility as intended, this may lead to unwanted behavior. Therefore we need and option to opt-out during runtime.

We probably want to save settings at some point.

Detect and 'play nice' with policy kit.
Which may be as simple as prefixing with pk-exec?

Caveats / bugs

[2019-04-16] Until tow can discern synthetic from device (mouse / pad / other) moves, inbetween moves lead to unwanted moves.

[2019-10-30] Sometimes tow makes an unexpected move. Need to find the origin of this.

Installation

prerequisites include . Rust development toolchain. . at-spi2-core

$ git clone https://github.com/luukvanderduim/tow.git

$ cd tow

$ cargo build --release

$ cargo run --release or

$ cargo install --path . (add --force on subsequent invocation)

$ tow

Contributions

Yes, please!

If you can fix problems with tow - or - take accerciser to check your (app of interest) for Atk implementation shortcomings. Lets improve our ecosystem!

I would really love to see VSCode emit caret-moved events.

I would like to know how to pursuade Thunderbird to emit caret-moved events. Anyone?

Thank you so much in advance.

Contact

Don't hesitate to drop a line at:

luukvanderduim (-AT-) gmail (-dot-) com

Licence

This software is licenced MPL 2.0 Please see the LICENCE file.

tow's People

Contributors

luukvanderduim avatar

Stargazers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.