Inital packaging

This commit is contained in:
2025-12-09 17:07:28 -07:00
parent fac9cfc070
commit b04750b892
10 changed files with 281 additions and 0 deletions

5
debian/changelog vendored Normal file
View 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
View 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
View 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
View File

@@ -0,0 +1,2 @@
alvr_streamer_linux/* opt/alvr/
usr/* usr/

14
debian/rules vendored Executable file
View 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
View File

@@ -0,0 +1 @@
3.0 (quilt)

2
usr/games/alvr_dashboard Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
exec /opt/alvr/bin/alvr_dashboard "$@"

View 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 "${@}"

View 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

View 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