{"id":18519301,"url":"https://github.com/linux-surface/iptsd","last_synced_at":"2025-12-30T04:05:03.919Z","repository":{"id":39252702,"uuid":"261858706","full_name":"linux-surface/iptsd","owner":"linux-surface","description":"Userspace daemon for Intel Precise Touch \u0026 Stylus","archived":false,"fork":false,"pushed_at":"2025-02-17T17:22:19.000Z","size":1967,"stargazers_count":112,"open_issues_count":73,"forks_count":50,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-28T18:10:00.538Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linux-surface.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-06T19:26:29.000Z","updated_at":"2025-03-16T08:54:47.000Z","dependencies_parsed_at":"2023-02-02T21:16:53.410Z","dependency_job_id":"f794594d-443e-4685-82e5-febe17331b64","html_url":"https://github.com/linux-surface/iptsd","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Fiptsd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Fiptsd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Fiptsd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Fiptsd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linux-surface","download_url":"https://codeload.github.com/linux-surface/iptsd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234921,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T17:16:00.739Z","updated_at":"2025-12-30T04:05:03.845Z","avatar_url":"https://github.com/linux-surface.png","language":"C++","readme":"# IPTSD\n\nThis is the userspace touch processing daemon for Microsoft Surface devices using Intel Precise\nTouch technology.\n\nThe daemon will read incoming HID reports containing raw capacitive touch data, stylus coordinates\nand DFT pen measurements, and create standard input events from it using uinput devices.\n\n### Installing\n\nIPTSD is included in the linux-surface repository. This is the recommended way of installing it.\n\n**Important:** Support on Debian based distributions only goes back to Debian 11 / Ubuntu 22.04.\n\nIf you want to try out changes that are not yet released, GitHub Actions builds Arch Linux, Debian\nand Fedora packages for every commit. You'll need to be signed in to GitHub, then go to\nhttps://github.com/linux-surface/iptsd/actions, select the latest successful workflow and download\nthe artifact named `\u003cyour distro\u003e-latest`.\n\n### Building\n\nTo build IPTSD from source, you need to install the following dependencies:\n\n * A C++ compiler\n * meson\n * ninja\n * CLI11\n * Eigen3\n * fmt\n * inih / INIReader\n * gsl\n * spdlog\n * cmake, because some of our dependencies don't ship pkgconfig files\n\nTo build the plotting tools for visualizing data, you need to install a few more dependencies.\n\n * cairomm\n * SDL2\n\nMost of the dependencies can be downloaded and included automatically by meson, should your\ndistribution not include them.\n\n```bash\n$ git clone https://github.com/linux-surface/iptsd\n$ cd iptsd\n$ meson setup build\n$ ninja -C build\n```\n\nTo run iptsd, you need to determine the ID of the hidraw device of your touchscreen:\n\n```bash\n$ sudo ./etc/iptsd-find-hidraw\n```\n\nYou can then run iptsd with the device path as a launch argument:\n\n```bash\n$ sudo ./build/src/iptsd /dev/hidrawN\n```\n\nAlternatively, you can install the files you just built to the system. After a reboot, iptsd will\nget started by udev automatically:\n\n```bash\n$ sudo ninja -C build install\n```\n\nOn Fedora (or any other SELinux enabled distribution) you also need to fix the SELinux contexts:\n\n```bash\n$ sudo semanage fcontext -a -t systemd_unit_file_t -s system_u /usr/lib/systemd/system/iptsd@.service\n$ sudo semanage fcontext -a -t usr_t -s system_u '/usr/local/bin/ipts.*'\n\n$ sudo restorecon -vF /usr/lib/systemd/system/iptsd@.service\n$ sudo restorecon -vF /usr/local/bin/ipts*\n```\n\nThis is only necessary when using `ninja install`. When you install one of the packages from\nGitHub Actions, or build your own package, everything will just work.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-surface%2Fiptsd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinux-surface%2Fiptsd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-surface%2Fiptsd/lists"}