mirror of
https://github.com/ben-grande/qusal.git
synced 2024-10-01 02:35:49 -04:00
feat: add Qubes Video Companion formula
Fixes: https://github.com/ben-grande/qusal/issues/49
This commit is contained in:
parent
c2db142f2d
commit
0c9b173e2c
73
salt/video-companion/README.md
Normal file
73
salt/video-companion/README.md
Normal file
@ -0,0 +1,73 @@
|
||||
# video-companion
|
||||
|
||||
Stream webcams and share screens in Qubes OS.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Description](#description)
|
||||
* [Installation](#installation)
|
||||
* [Usage](#usage)
|
||||
|
||||
## Description
|
||||
|
||||
Installation procedures to stream webcams and share screens across qubes. The
|
||||
sender/server owns the screen or webcam and the receiver/client wants to
|
||||
access them without compromising the domains.
|
||||
|
||||
## Installation
|
||||
|
||||
- Top:
|
||||
```sh
|
||||
sudo qubesctl top.enable video-companion
|
||||
sudo qubesctl state.apply
|
||||
sudo qubesctl top.disable video-companion
|
||||
```
|
||||
|
||||
- State:
|
||||
<!-- pkg:begin:post-install -->
|
||||
```sh
|
||||
sudo qubesctl state.apply video-companion.create
|
||||
```
|
||||
<!-- pkg:end:post-install -->
|
||||
|
||||
|
||||
Installation on the server (sender) template:
|
||||
```sh
|
||||
sudo qubesctl --skip-dom0 --targets=QUBE state.apply video-companion.install-sender
|
||||
```
|
||||
|
||||
Installation on the client (receiver) template:
|
||||
```sh
|
||||
sudo qubesctl --skip-dom0 --targets=QUBE state.apply video-companion.install-receiver
|
||||
```
|
||||
|
||||
Installation for debugging on the client (receiver) template:
|
||||
```sh
|
||||
sudo qubesctl --skip-dom0 --targets=QUBE state.apply video-companion.install-receiver-debug
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
The sender has the screen you want to share of the webcam you want to access.
|
||||
|
||||
The receiver the is client that requests access to the screen of webcam,
|
||||
therefore the client is responsible to initiate the call.
|
||||
|
||||
On the client, to get the screen of another qube:
|
||||
```sh
|
||||
qubes-video-companion screenshare
|
||||
```
|
||||
|
||||
On the client, to get the webcam of another qube:
|
||||
```sh
|
||||
qubes-video-companion webcam
|
||||
```
|
||||
|
||||
On the client, if you installed the debug utilities, call cheese to access the
|
||||
shared screen or webcam:
|
||||
```sh
|
||||
cheese
|
||||
```
|
||||
|
||||
Refer to [upstream usage guide](https://github.com/QubesOS/video-companion?tab=readme-ov-file#usage)
|
||||
for more information.
|
15
salt/video-companion/create.sls
Normal file
15
salt/video-companion/create.sls
Normal file
@ -0,0 +1,15 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
include:
|
||||
- utils.tools.common.update
|
||||
|
||||
"{{ slsdotpath }}-dom0-installed":
|
||||
pkg.installed:
|
||||
- require:
|
||||
- sls: utils.tools.common.update
|
||||
- pkgs:
|
||||
- video-companion-dom0
|
10
salt/video-companion/create.top
Normal file
10
salt/video-companion/create.top
Normal file
@ -0,0 +1,10 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
base:
|
||||
'dom0':
|
||||
- match: nodegroup
|
||||
- video-companion.create
|
8
salt/video-companion/files/admin/policy/default.policy
Normal file
8
salt/video-companion/files/admin/policy/default.policy
Normal file
@ -0,0 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
## Do not modify this file, create a new policy with with a lower number in the
|
||||
## file name instead. For example `30-user.policy`.
|
||||
qvc.Webcam * @anyvm @tag:usbvm ask
|
||||
## vim:ft=qrexecpolicy
|
10
salt/video-companion/init.top
Normal file
10
salt/video-companion/init.top
Normal file
@ -0,0 +1,10 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
base:
|
||||
'dom0':
|
||||
- match: nodegroup
|
||||
- video-companion.create
|
22
salt/video-companion/install-receiver-debug.sls
Normal file
22
salt/video-companion/install-receiver-debug.sls
Normal file
@ -0,0 +1,22 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
{% if grains['nodename'] != 'dom0' -%}
|
||||
|
||||
include:
|
||||
- utils.tools.common.update
|
||||
- .install-receiver
|
||||
|
||||
"{{ slsdotpath }}-receiver-debug-installed":
|
||||
pkg.installed:
|
||||
- require:
|
||||
- sls: utils.tools.common.update
|
||||
- install_recommends: False
|
||||
- skip_suggestions: True
|
||||
- pkgs:
|
||||
- dunst
|
||||
|
||||
{% endif %}
|
9
salt/video-companion/install-receiver-debug.top
Normal file
9
salt/video-companion/install-receiver-debug.top
Normal file
@ -0,0 +1,9 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
base:
|
||||
'*':
|
||||
- video-companion.install-receiver-debug
|
32
salt/video-companion/install-receiver.sls
Normal file
32
salt/video-companion/install-receiver.sls
Normal file
@ -0,0 +1,32 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
{% if grains['nodename'] != 'dom0' -%}
|
||||
|
||||
include:
|
||||
- utils.tools.common.update
|
||||
|
||||
"{{ slsdotpath }}-receiver-installed":
|
||||
pkg.installed:
|
||||
- require:
|
||||
- sls: utils.tools.common.update
|
||||
- install_recommends: False
|
||||
- skip_suggestions: True
|
||||
- pkgs:
|
||||
{% if grains['os_family']|lower == 'debian' -%}
|
||||
- qubes-video-companion
|
||||
{% else %}
|
||||
- qubes-video-companion-receiver
|
||||
{% endif %}
|
||||
{% if '.qubes.' not in salt['cmd.shell']('uname -r') and grains['os_family']|lower == 'debian' -%}
|
||||
- v4l2loopback-dkms
|
||||
{% endif %}
|
||||
## Undeclared dependencies
|
||||
- qubes-core-agent-passwordless-root
|
||||
- dunst
|
||||
- libnotify-bin
|
||||
|
||||
{% endif %}
|
9
salt/video-companion/install-receiver.top
Normal file
9
salt/video-companion/install-receiver.top
Normal file
@ -0,0 +1,9 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
base:
|
||||
'*':
|
||||
- video-companion.install-receiver
|
27
salt/video-companion/install-sender.sls
Normal file
27
salt/video-companion/install-sender.sls
Normal file
@ -0,0 +1,27 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
{% if grains['nodename'] != 'dom0' -%}
|
||||
|
||||
include:
|
||||
- utils.tools.common.update
|
||||
|
||||
"{{ slsdotpath }}-sender-installed":
|
||||
pkg.installed:
|
||||
- require:
|
||||
- sls: utils.tools.common.update
|
||||
- install_recommends: False
|
||||
- skip_suggestions: True
|
||||
- pkgs:
|
||||
{% if grains['os_family']|lower == 'debian' -%}
|
||||
- qubes-video-companion
|
||||
{% else %}
|
||||
- qubes-video-companion-sender
|
||||
{% endif %}
|
||||
## Undeclared dependencies
|
||||
- dunst
|
||||
|
||||
{% endif %}
|
9
salt/video-companion/install-sender.top
Normal file
9
salt/video-companion/install-sender.top
Normal file
@ -0,0 +1,9 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
base:
|
||||
'*':
|
||||
- video-companion.install-sender
|
Loading…
Reference in New Issue
Block a user