Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
chromecast_mpris
is a daemon utility that allows you to control media playback on casting devices from the Linux desktop.
While this service runs, it gathers and publishes data about the media and apps playing on your casting devices.
Note: This package is now called Cast Control, and is available on PyPI as cast_control
.
Please upgrade to cast_control
for new features and bug fixes.
chromecast_mpris
controls Chromecasts and casting devices via D-Bus and MPRIS media player controls.
MPRIS is the standard media player interface on Linux desktops.
MPRIS integration is enabled by default in Plasma Desktop, and, along with GNOME's volume control widget, there are widgets for GNOME, too. playerctl
provides a CLI for controlling media players through MPRIS.
Check out ▶️mpris_server if you want to integrate MPRIS support into your media player.
Controlling a Chromecast via Plasma Desktop's Media Player widget:
On Debian-derived distributions like Ubuntu, install python3-gi
with apt
.
On Arch, you'll want to install python-gobject
, or install chromecast_mpris
directly from the AUR.
On macOS, install pygobject3
via brew
.
Use pip
to install PyGObject>=3.34.0
if there are no installation candidates available in your vendor's package repositories.
$ python3 -m pip install chromecast_mpris
You'll get a chromecast_mpris
executable added to your $PATH
.
Check out the releases page on GitHub for stable releases.
If you'd like to use the development branch, clone the repository.
Once you have a source copy, run python3 -m pip install -r requirements.txt
, followed by python3 setup.py install
.
You'll get a chromecast_mpris
executable added to your $PATH
.
If you're on Arch, you can install chromecast_mpris
directly from the AUR.
$ yay -S chromecast_mpris
Stable releases are uploaded to PyPI. You can upgrade your chromecast_mpris
installation like so:
$ python3 -m pip --upgrade chromecast_mpris
See the releases page on GitHub.
You'll need to make sure that your computer can make network connections with your casting devices. It also helps to know the names of the devices in advance.
Installing the package via PyPI, GitHub or the AUR will add chromecast_mpris
to your pip
executables path:
$ which chromecast_mpris
~/.local/bin/chromecast_mpris
If you have your pip
executables path added to your shell's $PATH
, you can launch chromecast_mpris
like so:
$ chromecast_mpris
You can also launch chromecast_mpris
via its Python module. This can be useful if your $PATH
doesn't point to your pip
executables.
$ python3 -m chromecast_mpris
To enable Bash completion for chromecast_mpris
, add the following to your ~/.bashrc
:
eval "$(_CHROMECAST_MPRIS_COMPLETE=bash_source chromecast_mpris)"
For the zsh
and fish
shells, check out the documentation here.
$ chromecast_mpris --help
Usage: chromecast_mpris [OPTIONS]
Control casting devices via Linux media controls and desktops.
This daemon connects your casting device directly to the D-Bus media
player interface.
Options:
-n, --name TEXT Connect to a device via its name, otherwise control
the first device found.
-h, --host TEXT Connect to a device via its hostname or IP address,
otherwise control the first device found.
-u, --uuid TEXT Connect to a device via its UUID, otherwise control
the first device found
-w, --wait FLOAT Seconds to wait between trying to make initial
successful connections to a device.
-r, --retry-wait FLOAT Seconds to wait between reconnection attempts if a
successful connection is interrupted. [default:
5.0]
-i, --icon Use a lighter icon instead of the dark icon. The
lighter icon goes well with dark themes. [default:
False]
-l, --log-level TEXT Set the debugging log level. [default: WARN]
--help Show this message and exit.
Connect to a device named "My Device" and run chromecast_mpris
in the background.
$ chromecast_mpris --name "My Device" &
[1] 1234
After launching chromecast_mpris
, you can use any MPRIS client to interact with it. MPRIS support is built in directly to Plasma Desktop and GNOME 3, and you can use playerctl
on the command-line.
You can use the -w/--wait
flag to specify a waiting period in seconds before chromecast_mpris
will try to find a casting device again if one is not found initially.
For example, if you want to wait 60 seconds between scans for devices, you can run the following:
$ export SECONDS=60
$ chromecast_mpris --wait $SECONDS
This is useful if you'd like to start chromecast_mpris
at login, and there is a chance that your device isn't on, or you're on a different network.
Get the D-Bus name for your device using playerctl
.
$ playerctl --list-all
My_Device
Use the D-Bus name to issue commands to it.
$ export URL="http://ccmixter.org/content/gmz/gmz_-_Parametaphoriquement.mp3"
$ playerctl --player My_Device open "$URL"
This will play a song on your device.
You can cast YouTube videos the same way you can cast a generic URI.
$ export VIDEO="https://www.youtube.com/watch?v=I4nkgJdVZFA"
$ playerctl --player My_Device open "$VIDEO"
Want to support this project and other open-source projects like it?
See LICENSE
. Message me if you'd like to use this project with a different license.
FAQs
📺 Control Chromecasts from Linux and D-Bus
We found that chromecast-mpris demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.