Code Monkey home page Code Monkey logo

opentabletdriver.packaging's Introduction

Actions Status Total Download Count

OpenTabletDriver

English | Español | Français | Deutsch | Português-BR | Nederlands | 한국어 | Русский | 简体中文 | 繁體中文 | Ελληνικά | Magyar

OpenTabletDriver is an open source, cross platform, user mode tablet driver. The goal of OpenTabletDriver is to be cross platform as possible with the highest compatibility in an easily configurable graphical user interface.

Supported Tablets

All statuses of tablets that are supported, untested, and planned to be supported can be found here. Common issue workarounds can be found in the wiki for your platform.

Installation

Running OpenTabletDriver binaries

OpenTabletDriver functions as two separate processes that interact with each other seamlessly. The active program that does all of the tablet data handling is OpenTabletDriver.Daemon, while the GUI frontend is OpenTabletDriver.UX.*, where * depends on your platform1. The daemon must be started in order for anything to work, however the GUI is unnecessary. If you have existing settings, they should apply when the daemon starts.

1Windows uses Wpf, Linux uses Gtk, and MacOS uses MacOS respectively. This for the most part can be ignored if you don't build it from source as only the correct version will be provided.

Building OpenTabletDriver from source

The requirements to build OpenTabletDriver are consistent across all platforms. Running OpenTabletDriver on each platform requires different dependencies.

All platforms

  • .NET 7 SDK (can be obtained from here - You want the SDK for your platform, Linux users should install via package manager where possible)

Windows

Run build.ps1 to produce binary builds to 'bin' folder. These builds will run in portable mode by default.

Linux

Required packages (some packages may be pre-installed for your distribution):

  • libx11
  • libxrandr
  • libevdev2
  • GTK+3

Run ./eng/linux/package.sh. If a "package" build is desired, there are official support for the following packaging formats:

Package Format Command
Generic binary tarball (.tar.gz) ./eng/linux/package.sh --package BinaryTarBall
Debian package (.deb) ./eng/linux/package.sh --package Debian
Red Hat package (.rpm) ./eng/linux/package.sh --package RedHat

The generic binary tarball is designed to be extracted from the root directory.

MacOS [Experimental]

Run ./eng/macos/package.sh --package true.

Features

  • Fully platform-native GUI
    • Windows: Windows Presentation Foundation
    • Linux: GTK+3
    • MacOS: MonoMac
  • Fully fledged console tool
    • Quickly acquire, change, load, or save settings
    • Scripting support (json output)
  • Absolute cursor positioning
    • Screen area and tablet area
    • Center-anchored offsets
    • Precise area rotation
  • Relative cursor positioning
    • px/mm horizontal and vertical sensitivity
  • Pen bindings
    • Tip by pressure bindings
    • Express key bindings
    • Pen button bindings
    • Mouse button bindings
    • Keyboard bindings
    • External plugin bindings
  • Saving and loading settings
    • Auto-loads user settings via settings.json in the active user %localappdata% or .config settings root directory.
  • Plugins
    • Filters
    • Output modes
    • Tools

Contributing to OpenTabletDriver

If you wish to contribute to OpenTabletDriver, check out the issue tracker. When creating pull requests, follow the guidelines outlined in our contribution guidelines.

If you have any issues or suggestions, open an issue ticket and fill out the template with relevant information. We welcome both bug reports, as well as new tablets to add support for. In many cases adding support for a new tablet is quite easy.

For issues and PRs related to OpenTabletDriver's packaging, please see the repository here.

For issues and PRs related to OpenTabletDriver's web page, see the repository here.

Supporting a new tablet

If you'd like us to add support for a new tablet, open an issue or join our discord asking for support. We generally prefer that adding support for a tablet be done through discord, due to the back-and-forth involved.

We'll have you do a few things like making a recording of the data sent by your tablet using our built-in tablet debugging tool, testing features of the tablet (on-tablet buttons, pen buttons, pen pressure, etc) with different configs we'll send you to try.

You're also of course welcome to open a PR adding support for it yourself, if you have a good grasp on what's involved.

Generally this process is relatively easy, especially if it's for a tablet manufacturer we already have support for on other tablets.

opentabletdriver.packaging's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

opentabletdriver.packaging's Issues

Manpage not installed during package install

Just realized that these scripts weren't updated when the manpage was written for the project (created with pull request here).

The packages for all linux distros should be updated to place the manpage in the proper directories that the distribution expects.

Discussion: Disable Artist Mode smoothing with libinput quirks file

By default, libinput smooths all tablet input, even if it is smoothed by OpenTabletDriver already.

I propose adding the following quirks to begin with:

[OpenTabletDriver Virtual Tablets]
MatchName=OpenTabletDriver*
AttrTabletSmoothing=0

The file path should be /usr/share/libinput/30-vendor-opentabletdriver.quirks


Arguments for disabling libinput smoothing by default:

  • Raw(er) input
  • Artist mode now handles like absolute mode (as absolute mode is detected as an absolute mouse rather as an tablet device)
  • User still has flexibility to re-enable it, as more users may be interested keeping it disabled, rather than having it enabled.

Valid arguments against disabling the smoothing provided by libinput:

  • Does not match upstream behavior with other tablets (ie. tablet will feel different from stock driver)
  • Can make further configuration (e.g. OpenTabletDriver plugins) mandatory for chattery or otherwise inaccurate tablets, adding to an already somewhat complicated install process

Sadly exposing this as an easy user-controlled setting is ambitious as it seems we can only do this in packaging, requiring the user to have root permissions to set local quirk overrides, or root permissions to repackage with their preferred settings..

Down the line I would like to see something like OpenTabletDriver/OpenTabletDriver#1983 being implemented as well, so this would just be a stopgap solution until then (though, the user would still need root). With that in place, users would be able to generate their own quirks file that could re-enable the smoothing if they so desire.

Move OpenTabletDriver directory to somewhere else (Linux packages)

opentabletdriver.x86_64: E: arch-dependent-file-in-usr-share (Badness: 590) /usr/share/OpenTabletDriver/OpenTabletDriver.Console
opentabletdriver.x86_64: E: arch-dependent-file-in-usr-share (Badness: 590) /usr/share/OpenTabletDriver/OpenTabletDriver.Daemon
opentabletdriver.x86_64: E: arch-dependent-file-in-usr-share (Badness: 590) /usr/share/OpenTabletDriver/OpenTabletDriver.UX.Gtk

This log is from rpmlint, which is used to check quality of a RPM package.
Anyway, /usr/share isn't a good place for a software that is built with --runtime linux-x64.

We can still put Configurations in /usr/share, but the actual program and its libraries should be moved to somewhere like /opt.

Discussion: Auto-enable systemd user service across all distros

Having this would also require packaging a blacklist file that disables autoloading of the wacom and hid_uclogic modules.


Arguments for having an auto-enabling systemd user service:

  • Stuff should just work (on a properly configured system)

Arguments against:

  • Limited compatibility (we need DISPLAY/WAYLAND_DISPLAY env vars to start at all), see OpenTabletDriver/OpenTabletDriver.Web#43, maybe discuss whether OpenTabletDriver should just guess if vars are not present?

Originally I was opposed to this on Arch since I was under the impression there is no precedent for doing this. However, while switching between Wireplumber and Pipewire Media Session, I noticed that user services were automatically being enabled. If it's possible to get the env var behavior more consistent we can more safely do this.

Change dependencies for the .deb build

Description

People using Debian 11 (Bullseye) need to extract tmpdir and DEBIAN folders from the .deb build and edit the file with the dependencies, as libappindicator1-7 is not available, which libappindicator1-dev (A required dependency of the .deb build) depends on. A possible fix is to use libayatana-appindicator-dev instead, which has full support for Bullseye.

System Information:

| Name | Value | - Bit confused but assume it's what I put??
| Bullseye | 11 |
| Operating System - Debian |
| OpenTabletDriver Version - Latest |
| Tablet - N/A |

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.