Inital packaging
This commit is contained in:
5
debian/changelog
vendored
Normal file
5
debian/changelog
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
alvr (20.14.1-1rakuos1) rakuos; urgency=medium
|
||||||
|
|
||||||
|
* inital packaging
|
||||||
|
|
||||||
|
-- Joshua Webb <tohur@rakuos.org> Tue, 09 Dec 2025 17:19:38 GMT
|
||||||
13
debian/control
vendored
Normal file
13
debian/control
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Source: alvr
|
||||||
|
Section: admin
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: ferreo <harderthanfire@gmail.com>
|
||||||
|
Standards-Version: 4.6.1
|
||||||
|
Build-Depends:
|
||||||
|
debhelper-compat (= 13),
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
|
||||||
|
Package: alvr
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: ${misc:Depends}, ${shlibs:Depends}, libunwind8, mesa-vulkan-drivers, libdrm2
|
||||||
|
Description: Stream VR games from your PC to your headset via Wi-Fi.
|
||||||
23
debian/copyright
vendored
Normal file
23
debian/copyright
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Copyright (c) 2018-2019 polygraphene
|
||||||
|
Copyright (c) 2020-2021 alvr-org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
2
debian/install
vendored
Normal file
2
debian/install
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
alvr_streamer_linux/* opt/alvr/
|
||||||
|
usr/* usr/
|
||||||
14
debian/rules
vendored
Executable file
14
debian/rules
vendored
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# Simple dh (debhelper) build rules file
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
override_dh_fixperms:
|
||||||
|
dh_fixperms
|
||||||
|
chmod 755 debian/alvr/opt/alvr/bin/alvr_dashboard
|
||||||
|
chmod u+x debian/alvr/opt/alvr/bin/alvr_dashboard
|
||||||
|
chmod 755 debian/alvr/usr/games/alvr_dashboard
|
||||||
|
chmod u+x debian/alvr/usr/games/alvr_dashboard
|
||||||
|
chmod 755 debian/alvr/usr/share/applications/alvr.desktop
|
||||||
|
chmod u+x debian/alvr/usr/share/applications/alvr.desktop
|
||||||
|
|
||||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
||||||
2
usr/games/alvr_dashboard
Executable file
2
usr/games/alvr_dashboard
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
exec /opt/alvr/bin/alvr_dashboard "$@"
|
||||||
113
usr/share/alvr/alvr_fw_config.sh
Normal file
113
usr/share/alvr/alvr_fw_config.sh
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Basic script to add / remove firewall configuration for ALVR
|
||||||
|
# Usage: ./alvr_fw_config.sh add|remove
|
||||||
|
# Exit codes:
|
||||||
|
# 1 - Invalid command
|
||||||
|
# 2 - Invalid action
|
||||||
|
# 3 - Failed to copy UFW configuration
|
||||||
|
# 99 - Firewall not found
|
||||||
|
# 126 - pkexec failed - Request dismissed
|
||||||
|
|
||||||
|
firewalld_cfg() {
|
||||||
|
# Iterate around each active zone
|
||||||
|
for zone in $(firewall-cmd --get-active-zones | grep -P --only-matching '^[\w/-]+'); do
|
||||||
|
if [ "${1}" == 'add' ]; then
|
||||||
|
# If running or permanent alvr service is missing, add it
|
||||||
|
if ! firewall-cmd --zone="${zone}" --list-services | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
firewall-cmd --zone="${zone}" --add-service='alvr'
|
||||||
|
fi
|
||||||
|
if ! firewall-cmd --zone="${zone}" --list-services --permanent | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
firewall-cmd --zone="${zone}" --add-service='alvr' --permanent
|
||||||
|
fi
|
||||||
|
elif [ "${1}" == 'remove' ]; then
|
||||||
|
# If running or persistent alvr service exists, remove it
|
||||||
|
if firewall-cmd --zone="${zone}" --list-services | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
firewall-cmd --zone="${zone}" --remove-service='alvr'
|
||||||
|
fi
|
||||||
|
if firewall-cmd --zone="${zone}" --list-services --permanent | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
firewall-cmd --zone="${zone}" --remove-service='alvr' --permanent
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
ufw_cfg() {
|
||||||
|
# Try and install the application file
|
||||||
|
if ! ufw app info 'alvr'; then
|
||||||
|
# Pull application file from local build first if the script lives inside it
|
||||||
|
if [ -f "$(dirname "$(realpath "${0}")")/ufw-alvr" ]; then
|
||||||
|
cp "$(dirname "$(realpath "${0}")")/ufw-alvr" '/etc/ufw/applications.d/'
|
||||||
|
elif [ -f '/usr/share/alvr/ufw-alvr' ]; then
|
||||||
|
cp '/usr/share/alvr/ufw-alvr' '/etc/ufw/applications.d/'
|
||||||
|
else
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${1}" == 'add' ] && ! ufw status | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
ufw allow 'alvr'
|
||||||
|
elif [ "${1}" == 'remove' ] && ufw status | grep 'alvr' >/dev/null 2>&1; then
|
||||||
|
ufw delete allow 'alvr'
|
||||||
|
else
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
iptables_cfg() {
|
||||||
|
first_port_match_count=$(iptables -S | grep -c '9943')
|
||||||
|
second_port_match_count=$(iptables -S | grep -c '9944')
|
||||||
|
if [ "${1}" == 'add' ]; then
|
||||||
|
if [ "$first_port_match_count" == "0" ] || [ "$second_port_match_count" == "0" ]; then
|
||||||
|
if [ ! -d '/etc/iptables' ]; then
|
||||||
|
mkdir '/etc/iptables'
|
||||||
|
fi
|
||||||
|
|
||||||
|
iptables -I OUTPUT -p tcp --sport 9943 -j ACCEPT
|
||||||
|
iptables -I INPUT -p tcp --dport 9943 -j ACCEPT
|
||||||
|
iptables -I OUTPUT -p udp --sport 9943 -j ACCEPT
|
||||||
|
iptables -I INPUT -p udp --dport 9943 -j ACCEPT
|
||||||
|
iptables -I OUTPUT -p tcp --sport 9944 -j ACCEPT
|
||||||
|
iptables -I INPUT -p tcp --dport 9944 -j ACCEPT
|
||||||
|
iptables -I OUTPUT -p udp --sport 9944 -j ACCEPT
|
||||||
|
iptables -I INPUT -p udp --dport 9944 -j ACCEPT
|
||||||
|
iptables-save >/etc/iptables/rules.v4
|
||||||
|
fi
|
||||||
|
elif [ "${1}" == 'remove' ]; then
|
||||||
|
if [ "$first_port_match_count" == "4" ] || [ "$second_port_match_count" == "4" ]; then
|
||||||
|
iptables -D OUTPUT -p tcp --sport 9943 -j ACCEPT
|
||||||
|
iptables -D INPUT -p tcp --dport 9943 -j ACCEPT
|
||||||
|
iptables -D OUTPUT -p udp --sport 9943 -j ACCEPT
|
||||||
|
iptables -D INPUT -p udp --dport 9943 -j ACCEPT
|
||||||
|
iptables -D OUTPUT -p tcp --sport 9944 -j ACCEPT
|
||||||
|
iptables -D INPUT -p tcp --dport 9944 -j ACCEPT
|
||||||
|
iptables -D OUTPUT -p udp --sport 9944 -j ACCEPT
|
||||||
|
iptables -D INPUT -p udp --dport 9944 -j ACCEPT
|
||||||
|
iptables-save >/etc/iptables/rules.v4
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# If we're not root use pkexec for GUI prompt
|
||||||
|
if [ "${USER}" == 'root' ]; then
|
||||||
|
# Check if firewall-cmd exists and firewalld is running
|
||||||
|
if which firewall-cmd >/dev/null 2>&1 && firewall-cmd --state >/dev/null 2>&1; then
|
||||||
|
firewalld_cfg "${1,,}"
|
||||||
|
# Check if ufw exists and is running
|
||||||
|
elif which ufw >/dev/null 2>&1 && ! ufw status | grep 'Status: inactive' >/dev/null 2>&1; then
|
||||||
|
ufw_cfg "${1,,}"
|
||||||
|
elif which iptables >/dev/null 2>&1; then
|
||||||
|
iptables_cfg "${1,,}"
|
||||||
|
else
|
||||||
|
exit 99
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
pkexec "$(realpath "${0}")" "${@}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
||||||
11
usr/share/applications/alvr.desktop
Normal file
11
usr/share/applications/alvr.desktop
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Type=Application
|
||||||
|
Name=ALVR
|
||||||
|
GenericName=Game
|
||||||
|
Comment=ALVR is an open source remote VR display which allows playing SteamVR games on a standalone headset such as Gear VR or Oculus Go/Quest.
|
||||||
|
Exec=alvr_dashboard
|
||||||
|
Icon=alvr
|
||||||
|
Categories=Game;
|
||||||
|
StartupNotify=true
|
||||||
|
StartupWMClass=alvr.dashboard
|
||||||
97
usr/share/icons/hicolor/scalable/apps/alvr.svg
Normal file
97
usr/share/icons/hicolor/scalable/apps/alvr.svg
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="934.25092"
|
||||||
|
height="934.29956"
|
||||||
|
viewBox="0 0 247.18722 247.20021"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
xml:space="preserve"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
|
||||||
|
id="title20">ALVR Logo</title><defs
|
||||||
|
id="defs1"><linearGradient
|
||||||
|
id="linearGradient20"><stop
|
||||||
|
style="stop-color:#3ed2e3;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop19" /><stop
|
||||||
|
style="stop-color:#279ed4;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop20" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient17"><stop
|
||||||
|
style="stop-color:#3ed2e3;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop16" /><stop
|
||||||
|
style="stop-color:#2192d1;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop17" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient5"><stop
|
||||||
|
style="stop-color:#3ed2e3;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop5" /><stop
|
||||||
|
style="stop-color:#1d89cf;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop6" /></linearGradient><linearGradient
|
||||||
|
xlink:href="#linearGradient5"
|
||||||
|
id="linearGradient6"
|
||||||
|
x1="307.78638"
|
||||||
|
y1="144.12395"
|
||||||
|
x2="554.95905"
|
||||||
|
y2="144.12395"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(11.986501,-0.45167211)" /><linearGradient
|
||||||
|
xlink:href="#linearGradient17"
|
||||||
|
id="linearGradient15"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="307.78638"
|
||||||
|
y1="144.12395"
|
||||||
|
x2="554.95905"
|
||||||
|
y2="144.12395"
|
||||||
|
gradientTransform="matrix(0.73927686,0,0,0.73927686,124.45536,37.124776)" /><linearGradient
|
||||||
|
xlink:href="#linearGradient20"
|
||||||
|
id="linearGradient16"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.48821952,0,0,0.48821952,232.75465,73.308151)"
|
||||||
|
x1="307.78638"
|
||||||
|
y1="144.12395"
|
||||||
|
x2="554.95905"
|
||||||
|
y2="144.12395" /><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath5"><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke-width:15.875;stroke-dasharray:none"
|
||||||
|
d="m 339.01043,47.371294 48.90352,43.318594 -19.59953,44.325122 18.16699,46.9631 -45.21416,41.34902 2.16559,43.94798 223.52133,-0.006 0.006,-247.194152 -215.10728,0.144791 z"
|
||||||
|
id="path6" /></clipPath></defs><metadata
|
||||||
|
id="metadata1"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>ALVR Logo</dc:title><dc:date>01/12/24</dc:date><dc:creator><cc:Agent><dc:title>Issac Dowling</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>ALVR</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><rect
|
||||||
|
style="display:inline;opacity:1;fill:#000000;fill-opacity:0;stroke:none;stroke-width:93.5937;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect20"
|
||||||
|
height="285.82809"
|
||||||
|
x="1.9722117"
|
||||||
|
y="-18.865053"
|
||||||
|
ry="0"
|
||||||
|
width="243.39352" /><g
|
||||||
|
id="g22"
|
||||||
|
clip-path="url(#clipPath5)"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(-319.77289,-20.074958)"><circle
|
||||||
|
style="display:inline;opacity:1;fill:none;stroke:url(#linearGradient6);stroke-width:16.4055;stroke-dasharray:none"
|
||||||
|
id="path5"
|
||||||
|
cx="443.35922"
|
||||||
|
cy="143.67227"
|
||||||
|
r="115.38358" /><circle
|
||||||
|
style="opacity:1;fill:none;stroke:url(#linearGradient15);stroke-width:15.875;stroke-dasharray:none"
|
||||||
|
id="circle15"
|
||||||
|
cx="443.35922"
|
||||||
|
cy="143.67227"
|
||||||
|
r="85.300415" /><circle
|
||||||
|
style="opacity:1;fill:none;stroke:url(#linearGradient16);stroke-width:15.5123;stroke-dasharray:none"
|
||||||
|
id="circle16"
|
||||||
|
cx="443.35922"
|
||||||
|
cy="143.67227"
|
||||||
|
r="56.33252" /></g></svg>
|
||||||
|
After Width: | Height: | Size: 4.0 KiB |
Reference in New Issue
Block a user