Skip to main content

ServeM

A simple screen sharing server for modern GNU/LINUX desktops!

Installation

Dependencies

  • A GNU/Linux desktop with GLib availability and the python 'gi' (GObject Introspection) (usually almost all popular distros came with it)
  • Gstreamer and jpeg encoders installed. If not available execute the following commands
# for debian based distros
sudo apt-get install python3-gi gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good

# for fedora / ..
sudo dnf install python3-gi gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good

# arch linux
sudo pacman -S python-gobject gstreamer
  • Pyhon dbus package.
pip install dbus-python
# prefer to install using system package manager

Lastly, the service is packaged as a Python CLI that can be installed with,

pip3 install servem

Usage

The tool is meant to be used as a command line utility. After installation of the package one can follow the bellow mentioned commands to get started

# to get usage details
servem --help

# spinning a simple server (with cursor position)
servem --cursor

The Story & The Name

BTW, this repo was not originally intended to be a Python one... (poor me, lacking time and expertise in GLib conventions). Anyway, hopefully, it's here and it's working.

Initially, I set out to create a C-based HTTP server purely for educational purposes :) So I named it Cerve (substituting the s in serve with c—pure brilliance!). During development, I happened to watch this video by a friend, Subin. It was a nice one, and the thing was, he was using Jitsi Meet to share his screen with his peer's computer and from there to a presentation screen using an HDMI port (as his MacBook running Asahi doesn't have an HDMI port). And, as usual, due to some network issues, his Jitsi Meet session got disconnected midway. (Anyway, the presentation went well.)

So I thought, what about creating an HTTP server that shares my computer screen with my local peers, so that they can access it in a more reliable and low-latency fashion in such scenarios? One could even use it to share their desktop with others when no screen-sharing facility is available. I decided to build something like that in C and changed the project's initial name from Cerve to CerveM (this one sounds like the word 'sarvam' in Malayalam, meaning 'everything'). But after dealing with a bunch of Wayland issues, Linux display portals, and some convention-related matters, and due to my limited time (as I was on a tight schedule), I decided to drop the project and stick with a simple HTTP server instead.

Anyway, the feature I was thinking about seemed good. So I built this Python script that does the job during my train journey back to Ernakulam. And that's what it is—a simple script for a simple hack.

Metadata

Release files for serveM 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for serveM 0.1.0
File Size Uploaded Provenance Actions
servem-0.1.0.tar.gz 47.5 kB Without provenance Details for servem-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for serveM 0.1.0
File Interpreter ABI Platform Actions
serveM-0.1.0-py3-none-any.whl Python 3 none any Details for serveM-0.1.0-py3-none-any.whl

Total release size: 83.2 kB

Release files / servem-0.1.0.tar.gz

Download URL servem-0.1.0.tar.gz
Size 47.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c8670056aa1c3d98214472e17cf5ece6a1438e10f204f0f1a67325c4007dba82
BLAKE2b-256 checksum
How to use checksums
f763c7664768ae70d3b27e9112d6a856d913c1b0469acf045da44d63055ee312
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.9

Release files / serveM-0.1.0-py3-none-any.whl

Download URL serveM-0.1.0-py3-none-any.whl
Size 35.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4dc1a250d072afa16c47de04502c5be0e6e2e796574c245257750d08e2f3d7e
BLAKE2b-256 checksum
How to use checksums
5c0c87ef53d0f09b0a719fefaf9656d8b74ac25b05459df631b0965b0b57927b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.9

Security for serveM 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page