add gamescope
This commit is contained in:
parent
ad86e17628
commit
a2a6b53407
40
.github/workflows/release.yml
vendored
Normal file
40
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
name: PikaOS Package Release
|
||||
|
||||
on:
|
||||
workflow_dispatch
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
container:
|
||||
image: ubuntu:22.10
|
||||
volumes:
|
||||
- /proc:/proc
|
||||
options: --privileged -it
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install needed packages
|
||||
run: apt update && apt install software-properties-common sudo git bc gpg gpg-agent bison build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd tar reprepro dpkg-sig devscripts dh-make -y
|
||||
|
||||
- name: Import GPG key
|
||||
id: import_gpg
|
||||
uses: crazy-max/ghaction-import-gpg@v5
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.PASSPHRASE }}
|
||||
|
||||
- name: Install SSH key
|
||||
uses: shimataro/ssh-key-action@v2
|
||||
with:
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
name: id_rsa
|
||||
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
||||
if_key_exists: replace
|
||||
|
||||
- name: Build Package
|
||||
run: ./main.sh
|
||||
|
||||
- name: Release Package
|
||||
run: ./release.sh
|
@ -1,4 +1,4 @@
|
||||
gamescope-session (0.0.git.92.60c3f5f9-99pika2) kinetic; urgency=low
|
||||
gamescope-session (0.0.git.92.60c3f5f9-99pika3) kinetic; urgency=low
|
||||
|
||||
* Fix return to desktop
|
||||
|
||||
|
24
gamescope-session/usr/bin/gamescope-session
Executable file
24
gamescope-session/usr/bin/gamescope-session
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script to start the session used by Valve with minor tweaks for ChimeraOS.
|
||||
|
||||
# Window managers sets this to wayland but apps using Gamescope must use x11
|
||||
export XDG_SESSION_TYPE=x11
|
||||
|
||||
# Update the enviroment with DESKTOP_SESSION and all XDG variables
|
||||
dbus-update-activation-environment --systemd DESKTOP_SESSION `env | grep ^XDG_ | cut -d = -f 1`
|
||||
|
||||
# This makes it so that xdg-desktop-portal doesn't find any portal implementations and doesn't start them and makes
|
||||
# them crash/exit because the dbus env has no DISPLAY. In turn this causes dbus calls to the portal which don't rely
|
||||
# on implementations to hang (such as SDL talking to the real time portal)
|
||||
systemctl --user set-environment XDG_DESKTOP_PORTAL_DIR=""
|
||||
|
||||
# Remove these as they prevent gamescope-session from starting correctly
|
||||
systemctl --user unset-environment DISPLAY XAUTHORITY
|
||||
|
||||
# If this shell script is killed then stop gamescope-session
|
||||
trap 'systemctl --user stop gamescope-session.service' HUP INT TERM
|
||||
|
||||
# Start gamescope-session and wait
|
||||
systemctl --user --wait start gamescope-session.service &
|
||||
wait
|
3
gamescope-session/usr/bin/jupiter-biosupdate
Executable file
3
gamescope-session/usr/bin/jupiter-biosupdate
Executable file
@ -0,0 +1,3 @@
|
||||
#! /bin/bash
|
||||
|
||||
exit 0;
|
32
gamescope-session/usr/bin/steam-http-loader
Executable file
32
gamescope-session/usr/bin/steam-http-loader
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/env python
|
||||
import urllib.parse
|
||||
import os.path
|
||||
import argparse
|
||||
import subprocess
|
||||
|
||||
def run(action, arg):
|
||||
final_url = "steam://{0}/{1}".format(action, arg)
|
||||
subprocess.run(["steam", final_url])
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Launch a link in the steam browser.')
|
||||
parser.add_argument('uri')
|
||||
args = parser.parse_args()
|
||||
|
||||
uri = args.uri
|
||||
|
||||
url = urllib.parse.urlparse(uri, "file")
|
||||
|
||||
# convert mailto://A@b.com to steam://mailto/A@b.com
|
||||
if (url.scheme == 'mailto'):
|
||||
run('mailto', url.netloc)
|
||||
return
|
||||
|
||||
# open any other URL, converting paths to full file URIs
|
||||
if (url.scheme == 'file' and not os.path.isabs(url.path)):
|
||||
absolute_path = os.path.abspath(url.path)
|
||||
url = url._replace(path=absolute_path)
|
||||
run('openurl_external', url.geturl())
|
||||
return
|
||||
|
||||
main()
|
11
gamescope-session/usr/bin/steamos-polkit-helpers/jupiter-biosupdate
Executable file
11
gamescope-session/usr/bin/steamos-polkit-helpers/jupiter-biosupdate
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
if [[ $EUID -ne 0 ]];
|
||||
then
|
||||
exec pkexec --disable-internal-agent "$0" "$@"
|
||||
fi
|
||||
|
||||
exec /usr/bin/jupiter-biosupdate "$@"
|
||||
|
11
gamescope-session/usr/bin/steamos-polkit-helpers/steamos-update
Executable file
11
gamescope-session/usr/bin/steamos-polkit-helpers/steamos-update
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
if [[ $EUID -ne 0 ]];
|
||||
then
|
||||
exec pkexec --disable-internal-agent "$0" "$@"
|
||||
fi
|
||||
|
||||
exec /usr/bin/steamos-update "$@"
|
||||
|
11
gamescope-session/usr/bin/steamos-update
Executable file
11
gamescope-session/usr/bin/steamos-update
Executable file
@ -0,0 +1,11 @@
|
||||
#! /bin/bash
|
||||
|
||||
if command -v frzr-deploy > /dev/null; then
|
||||
if [ "$1" == "check" ]; then
|
||||
frzr-deploy --check
|
||||
else
|
||||
frzr-deploy --steam-progress
|
||||
fi
|
||||
else
|
||||
exit 7
|
||||
fi
|
@ -0,0 +1,17 @@
|
||||
# Startup systemd unit for Gamescope session meant to be started by a script.
|
||||
# Logs will go to journal and logged into /run/user/$USER
|
||||
# This is the way Valve does it, we add our own file structure and scripts
|
||||
[Unit]
|
||||
Description=Gamescope Session
|
||||
BindsTo=graphical-session.target
|
||||
Before=graphical-session.target
|
||||
Wants=graphical-session-pre.target
|
||||
After=graphical-session-pre.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/share/gamescope-session/gamescope-session-script
|
||||
# This is a temporary workaround for the some proton apps becoming
|
||||
# confused by the AF_UNIX socket they get for the stdout when the
|
||||
# service outputs to the journal. (e.g. Vampire Survivors).
|
||||
StandardOutput=append:%t/gamescope-session.log
|
||||
StandardError=append:%t/gamescope-session.log
|
@ -0,0 +1,7 @@
|
||||
[Default Applications]
|
||||
x-scheme-handler/http=steam_http_loader.desktop
|
||||
x-scheme-handler/https=steam_http_loader.desktop
|
||||
x-scheme-handler/mailto=steam_http_loader.desktop
|
||||
application/pdf=steam_http_loader.desktop
|
||||
application/x-extension-html=steam_http_loader.desktop
|
||||
text/html=steam_http_loader.desktop
|
@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Steam HTTP Handler
|
||||
NoDisplay=true
|
||||
Exec=steam-http-loader %u
|
40
gamescope-session/usr/share/gamescope-session/device-quirks
Normal file
40
gamescope-session/usr/share/gamescope-session/device-quirks
Normal file
@ -0,0 +1,40 @@
|
||||
# This file would be sourced by gamescope-session script (meant for
|
||||
# ChimeraOS devices).
|
||||
|
||||
SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)"
|
||||
|
||||
# OXP Devices
|
||||
OXP_LIST="ONE XPLAYER:ONEXPLAYER 1 T08:ONEXPLAYER 1S A08:ONEXPLAYER 1S T08:ONEXPLAYER mini A07:ONEXPLAYER mini GA72:ONEXPLAYER mini GT72:ONEXPLAYER Mini Pro:ONEXPLAYER GUNDAM GA72:ONEXPLAYER 2 ARP23"
|
||||
AOK_LIST="AOKZOE A1 AR07"
|
||||
if [[ ":$OXP_LIST:" =~ ":$SYS_ID:" ]] || [[ ":$AOK_LIST:" =~ ":$SYS_ID:" ]]; then
|
||||
# Dependent on a special --force-orientation option in gamescope
|
||||
if ( gamescope --help 2>&1 | grep -e "--force-orientation" > /dev/null ) ; then
|
||||
export GAMESCOPECMD="/usr/bin/gamescope \
|
||||
-e \
|
||||
--generate-drm-mode fixed \
|
||||
--xwayland-count 2 \
|
||||
-O *,eDP-1 \
|
||||
--default-touch-mode 4 \
|
||||
--hide-cursor-delay 3000 \
|
||||
--fade-out-duration 200 \
|
||||
--force-orientation left "
|
||||
fi
|
||||
# Set refresh rate range and enable refresh rate switching
|
||||
export STEAM_DISPLAY_REFRESH_LIMITS=40,60
|
||||
fi
|
||||
|
||||
# AYANEO AIR Devices
|
||||
AIR_LIST="AIR:AIR Pro"
|
||||
if [[ ":$AIR_LIST:" =~ ":$SYS_ID:" ]]; then
|
||||
# Dependent on a special --force-orientation option in gamescope
|
||||
if ( gamescope --help 2>&1 | grep -e "--force-orientation" > /dev/null ) ; then
|
||||
export GAMESCOPECMD="/usr/bin/gamescope \
|
||||
-e \
|
||||
--xwayland-count 2 \
|
||||
-O *,eDP-1 \
|
||||
--default-touch-mode 4 \
|
||||
--hide-cursor-delay 3000 \
|
||||
--fade-out-duration 200 \
|
||||
--force-orientation left "
|
||||
fi
|
||||
fi
|
266
gamescope-session/usr/share/gamescope-session/gamescope-session-script
Executable file
266
gamescope-session/usr/share/gamescope-session/gamescope-session-script
Executable file
@ -0,0 +1,266 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Some environment variables by default (taken from Deck session)
|
||||
export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
|
||||
|
||||
# Enable Mangoapp
|
||||
export STEAM_USE_MANGOAPP=1
|
||||
export MANGOHUD_CONFIGFILE=$(mktemp /tmp/mangohud.XXXXXXXX)
|
||||
|
||||
export STEAM_USE_DYNAMIC_VRS=1
|
||||
export RADV_FORCE_VRS_CONFIG_FILE=$(mktemp /tmp/radv_vrs.XXXXXXXX)
|
||||
|
||||
# Plop GAMESCOPE_MODE_SAVE_FILE into $XDG_CONFIG_HOME (defaults to ~/.config).
|
||||
export GAMESCOPE_MODE_SAVE_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/gamescope/modes.cfg"
|
||||
|
||||
# Make path to gamescope mode save file.
|
||||
mkdir -p "$(dirname "$GAMESCOPE_MODE_SAVE_FILE")"
|
||||
touch "$GAMESCOPE_MODE_SAVE_FILE"
|
||||
#echo "Making Gamescope Mode Save file at \"$GAMESCOPE_MODE_SAVE_FILE\""
|
||||
|
||||
# Support for gamescope tearing with GAMESCOPE_ALLOW_TEARING atom
|
||||
export STEAM_GAMESCOPE_HAS_TEARING_SUPPORT=1
|
||||
|
||||
# Enable tearing controls in steam
|
||||
export STEAM_GAMESCOPE_TEARING_SUPPORTED=1
|
||||
|
||||
# There is no way to set a color space for an NV12
|
||||
# buffer in Wayland. And the color management protocol that is
|
||||
# meant to let this happen is missing the color range...
|
||||
# So just workaround this with an ENV var that Remote Play Together
|
||||
# and Gamescope will use for now.
|
||||
export GAMESCOPE_NV12_COLORSPACE=k_EStreamColorspace_BT601
|
||||
|
||||
# Initially write no_display to our config file
|
||||
# so we don't get mangoapp showing up before Steam initializes
|
||||
# on OOBE and stuff.
|
||||
mkdir -p "$(dirname "$MANGOHUD_CONFIGFILE")"
|
||||
echo "no_display" > "$MANGOHUD_CONFIGFILE"
|
||||
|
||||
# Prepare our initial VRS config file
|
||||
# for dynamic VRS in Mesa.
|
||||
mkdir -p "$(dirname "$RADV_FORCE_VRS_CONFIG_FILE")"
|
||||
echo "1x1" > "$RADV_FORCE_VRS_CONFIG_FILE"
|
||||
|
||||
# To expose vram info from radv
|
||||
export WINEDLLOVERRIDES=dxgi=n
|
||||
|
||||
# Workaround for steam getting killed immediatly during reboot
|
||||
export STEAMOS_STEAM_REBOOT_SENTINEL="/tmp/steamos-reboot-sentinel"
|
||||
|
||||
# Workaround for steam getting killed immediatly during shutdown
|
||||
# Same idea as reboot sentinel above
|
||||
export STEAMOS_STEAM_SHUTDOWN_SENTINEL="/tmp/steamos-shutdown-sentinel"
|
||||
|
||||
# Enable volume key management via steam for this session
|
||||
export STEAM_ENABLE_VOLUME_HANDLER=1
|
||||
|
||||
# Have SteamRT's xdg-open send http:// and https:// URLs to Steam
|
||||
export SRT_URLOPEN_PREFER_STEAM=1
|
||||
|
||||
# Disable automatic audio device switching in steam, now handled by wireplumber
|
||||
export STEAM_DISABLE_AUDIO_DEVICE_SWITCHING=1
|
||||
|
||||
# Enable support for xwayland isolation per-game in Steam
|
||||
export STEAM_MULTIPLE_XWAYLANDS=1
|
||||
|
||||
# We have the Mesa integration for the fifo-based dynamic fps-limiter
|
||||
export STEAM_GAMESCOPE_DYNAMIC_FPSLIMITER=1
|
||||
|
||||
# We have gamma/degamma exponent support
|
||||
export STEAM_GAMESCOPE_COLOR_TOYS=1
|
||||
|
||||
# We have NIS support
|
||||
export STEAM_GAMESCOPE_NIS_SUPPORTED=1
|
||||
|
||||
# Don't wait for buffers to idle on the client side before sending them to gamescope
|
||||
export vk_xwayland_wait_ready=false
|
||||
|
||||
# Let steam know it can unmount drives without superuser privileges
|
||||
export STEAM_ALLOW_DRIVE_UNMOUNT=1
|
||||
|
||||
# We no longer need to set GAMESCOPE_EXTERNAL_OVERLAY from steam, mangoapp now does it itself
|
||||
export STEAM_DISABLE_MANGOAPP_ATOM_WORKAROUND=1
|
||||
|
||||
# Enable horizontal mangoapp bar
|
||||
export STEAM_MANGOAPP_HORIZONTAL_SUPPORTED=1
|
||||
|
||||
# Scaling support
|
||||
export STEAM_GAMESCOPE_FANCY_SCALING_SUPPORT=1
|
||||
|
||||
# Set input method modules for Qt/GTK that will show the Steam keyboard
|
||||
export QT_IM_MODULE=steam
|
||||
export GTK_IM_MODULE=Steam
|
||||
|
||||
# To play nice with the short term callback-based limiter for now
|
||||
export GAMESCOPE_LIMITER_FILE=$(mktemp /tmp/gamescope-limiter.XXXXXXXX)
|
||||
|
||||
# Use SteamOS background if exists
|
||||
if [ -f "/usr/share/steamos/steamos.png" ] ; then
|
||||
export STEAM_UPDATEUI_PNG_BACKGROUND=/usr/share/steamos/steamos.png
|
||||
fi
|
||||
|
||||
ulimit -n 524288
|
||||
|
||||
# Source device quirks if exists
|
||||
if [ -f /usr/share/gamescope-session/device-quirks ]; then
|
||||
. /usr/share/gamescope-session/device-quirks
|
||||
fi
|
||||
|
||||
# Source environment from ~/.config/environment.d with user overrides
|
||||
set -a
|
||||
for i in "${HOME}"/.config/environment.d/*.conf ;
|
||||
do
|
||||
[[ -f "${i}" ]] && . "${i}"
|
||||
done
|
||||
set +a
|
||||
|
||||
# Setup socket for gamescope
|
||||
# Create run directory file for startup and stats sockets
|
||||
tmpdir="$([[ -n ${XDG_RUNTIME_DIR+x} ]] && mktemp -p "$XDG_RUNTIME_DIR" -d -t gamescope.XXXXXXX)"
|
||||
socket="${tmpdir:+$tmpdir/startup.socket}"
|
||||
stats="${tmpdir:+$tmpdir/stats.pipe}"
|
||||
# Fail early if we don't have a proper runtime directory setup
|
||||
if [[ -z $tmpdir || -z ${XDG_RUNTIME_DIR+x} ]]; then
|
||||
echo >&2 "!! Failed to find run directory in which to create stats session sockets (is \$XDG_RUNTIME_DIR set?)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
export GAMESCOPE_STATS="$stats"
|
||||
mkfifo -- "$stats"
|
||||
mkfifo -- "$socket"
|
||||
|
||||
# Attempt to claim global session if we're the first one running (e.g. /run/1000/gamescope)
|
||||
linkname="gamescope-stats"
|
||||
# shellcheck disable=SC2031 # (broken warning)
|
||||
sessionlink="${XDG_RUNTIME_DIR:+$XDG_RUNTIME_DIR/}${linkname}" # Account for XDG_RUNTIME_DIR="" (notfragileatall)
|
||||
lockfile="$sessionlink".lck
|
||||
exec 9>"$lockfile" # Keep as an fd such that the lock lasts as long as the session if it is taken
|
||||
if flock -n 9 && rm -f "$sessionlink" && ln -sf "$tmpdir" "$sessionlink"; then
|
||||
# Took the lock. Don't blow up if those commands fail, though.
|
||||
echo >&2 "Claimed global gamescope stats session at \"$sessionlink\""
|
||||
else
|
||||
echo >&2 "!! Failed to claim global gamescope stats session"
|
||||
fi
|
||||
|
||||
# Use cursor if file exist
|
||||
if [ -z "$CURSOR_FILE" ] ; then
|
||||
CURSOR_FILE="${HOME}/.local/share/Steam/tenfoot/resource/images/cursors/arrow_right.png"
|
||||
fi
|
||||
CURSOR=""
|
||||
if [ -f "$CURSOR_FILE" ] ; then
|
||||
CURSOR="--cursor ${CURSOR_FILE}"
|
||||
fi
|
||||
|
||||
# Define session if not overriden
|
||||
if [ -z "$STEAMCMD" ] ; then
|
||||
STEAMCMD="steam -gamepadui -steamos3 -steampal -steamdeck"
|
||||
fi
|
||||
|
||||
if [ -z "$GAMESCOPECMD" ] ; then
|
||||
RESOLUTION=""
|
||||
if [ -n "$SCREEN_WIDTH" ] && [ -n "$SCREEN_HEIGHT" ] ; then
|
||||
RESOLUTION="-W $SCREEN_WIDTH -H $SCREEN_HEIGHT"
|
||||
fi
|
||||
GAMESCOPECMD="/usr/bin/gamescope \
|
||||
$CURSOR \
|
||||
-e \
|
||||
$RESOLUTION \
|
||||
--xwayland-count 2 \
|
||||
-O *,eDP-1 \
|
||||
--default-touch-mode 4 \
|
||||
--hide-cursor-delay 3000 \
|
||||
--fade-out-duration 200 \
|
||||
-R $socket -T $stats"
|
||||
else
|
||||
# Add socket and stats read
|
||||
GAMESCOPECMD+=" -R $socket -T $stats"
|
||||
fi
|
||||
|
||||
# Workaround for Steam login issue while Steam client change propagates out of Beta
|
||||
touch "${HOME}"/.steam/root/config/SteamAppData.vdf || true
|
||||
|
||||
# Log rotate the last session
|
||||
if [ -f "${HOME}"/.steam-tweaks.log ]; then
|
||||
cp "${HOME}"/.steam-tweaks.log "${HOME}"/.steam-tweaks.log.old
|
||||
fi
|
||||
if [ -f "${HOME}"/.steam-stdout.log ]; then
|
||||
cp "${HOME}"/.steam-stdout.log "${HOME}"/.steam-stdout.log.old
|
||||
fi
|
||||
if [ -f "${HOME}"/.gamescope-stdout.log ]; then
|
||||
cp "${HOME}"/.gamescope-stdout.log "${HOME}"/.gamescope-stdout.log.old
|
||||
fi
|
||||
|
||||
# Start gamescope compositor, log it's output and background it
|
||||
$GAMESCOPECMD > "${HOME}"/.gamescope-stdout.log 2>&1 &
|
||||
gamescope_pid="$!"
|
||||
|
||||
if read -r -t 3 response_x_display response_wl_display <> "$socket"; then
|
||||
export DISPLAY="$response_x_display"
|
||||
export GAMESCOPE_WAYLAND_DISPLAY="$response_wl_display"
|
||||
# We're done!
|
||||
else
|
||||
kill -9 "$gamescope_pid"
|
||||
wait
|
||||
exit 0
|
||||
# Systemd or Session manager will have to restart session
|
||||
fi
|
||||
|
||||
# Run steam-tweaks if exists
|
||||
if command -v steam-tweaks > /dev/null; then
|
||||
steam-tweaks > "${HOME}"/.steam-tweaks.log
|
||||
fi
|
||||
|
||||
# Input method support if present
|
||||
if command -v /usr/bin/ibus-daemon > /dev/null; then
|
||||
/usr/bin/ibus-daemon -d -r --panel=disable --emoji-extension=disable
|
||||
fi
|
||||
|
||||
# If we have mangoapp binary start it
|
||||
if command -v mangoapp > /dev/null; then
|
||||
mangoapp > "${HOME}"/.mangoapp-stdout.log 2>&1 &
|
||||
fi
|
||||
|
||||
# Start Steam client
|
||||
$STEAMCMD > "${HOME}"/.steam-stdout.log 2>&1
|
||||
|
||||
# When the client exits, kill gamescope nicely
|
||||
kill $gamescope_pid
|
||||
|
||||
# Start a background sleep for five seconds because we don't trust it
|
||||
sleep 5 &
|
||||
sleep_pid="$!"
|
||||
|
||||
# Catch reboot and poweroof sentinels here
|
||||
if [[ -e "$STEAMOS_STEAM_REBOOT_SENTINEL" ]]; then
|
||||
rm -f "$STEAMOS_STEAM_REBOOT_SENTINEL"
|
||||
reboot
|
||||
fi
|
||||
if [[ -e "$STEAMOS_STEAM_SHUTDOWN_SENTINEL" ]]; then
|
||||
rm -f "$STEAMOS_STEAM_SHUTDOWN_SENTINEL"
|
||||
poweroff
|
||||
fi
|
||||
|
||||
# Wait for gamescope or the sleep to finish for timeout purposes
|
||||
ret=0
|
||||
wait -n $gamescope_pid $sleep_pid || ret=$?
|
||||
|
||||
# If we get a SIGTERM/etc while waiting this happens. Proceed to kill -9 everything but complain
|
||||
if [[ $ret = 127 ]]; then
|
||||
echo >&2 "gamescope-session: Interrupted while waiting on teardown, force-killing remaining tasks"
|
||||
fi
|
||||
|
||||
# Kill all remaining jobs and warn if unexpected things are in there (should be just sleep_pid, unless gamescope failed
|
||||
# to exit in time or we hit the interrupt case above)
|
||||
for job in $(jobs -p); do
|
||||
# Warn about unexpected things
|
||||
if [[ $ret != 127 && $job = "$gamescope_pid" ]]; then
|
||||
echo >&2 "gamescope-session: gamescope timed out while exiting, killing"
|
||||
elif [[ $ret != 127 && $job != "$sleep_pid" ]]; then
|
||||
echo >&2 "gamescope-session: unexpected background pid $job at teardown: "
|
||||
# spew some debug about it
|
||||
ps -p "$job" >&2
|
||||
fi
|
||||
kill -9 "$job"
|
||||
done
|
||||
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
|
||||
<vendor>ChimeraOS Chimera</vendor>
|
||||
<vendor_url>http://chimeraos.org</vendor_url>
|
||||
|
||||
<action id="org.chimeraos.policykit.steamos.pkexec.run-steamos-update">
|
||||
<description>Main update script from Steam client</description>
|
||||
<icon_name>package-x-generic</icon_name>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/steamos-polkit-helpers/steamos-update</annotate>
|
||||
</action>
|
||||
|
||||
<action id="org.chimeraos.policykit.steamos.pkexec.run-jupiter-biosupdate">
|
||||
<description>Dummy script for jupiter-biosupdate on Steam client</description>
|
||||
<icon_name>package-x-generic</icon_name>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/steamos-polkit-helpers/jupiter-biosupdate</annotate>
|
||||
</action>
|
||||
|
||||
</policyconfig>
|
@ -0,0 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=ChimeraOS (gamescope)
|
||||
Comment=Steam Big Picture session
|
||||
Exec=gamescope-session
|
||||
Type=Application
|
||||
DesktopNames=gamescope
|
22
main.sh
Executable file
22
main.sh
Executable file
@ -0,0 +1,22 @@
|
||||
DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Add dependent repositories
|
||||
wget -q -O - https://ppa.pika-os.com/key.gpg | sudo apt-key add -
|
||||
add-apt-repository https://ppa.pika-os.com
|
||||
add-apt-repository ppa:pikaos/pika
|
||||
add-apt-repository ppa:kubuntu-ppa/backports
|
||||
|
||||
# Clone Upstream
|
||||
cd ./gamescope-session
|
||||
|
||||
# Get build deps
|
||||
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
|
||||
apt-get build-dep ./ -y
|
||||
|
||||
# Build package
|
||||
dpkg-buildpackage
|
||||
|
||||
# Move the debs to output
|
||||
cd ../
|
||||
mkdir -p ./output
|
||||
mv ./*.deb ./output/
|
@ -1 +0,0 @@
|
||||
#https://github.com/KyleGospo/gamescope-session
|
11
release.sh
Executable file
11
release.sh
Executable file
@ -0,0 +1,11 @@
|
||||
# Sign the packages
|
||||
dpkg-sig --sign builder ./output/*.deb
|
||||
|
||||
# Pull down existing ppa repo db files etc
|
||||
rsync -azP --exclude '*.deb' ferreo@direct.pika-os.com:/srv/www/pikappa/ ./output/repo
|
||||
|
||||
# Add the new package to the repo
|
||||
reprepro -V --basedir ./output/repo/ includedeb kinetic ./output/*.deb
|
||||
|
||||
# Push the updated ppa repo to the server
|
||||
rsync -azP ./output/repo/ ferreo@direct.pika-os.com:/srv/www/pikappa/
|
Loading…
Reference in New Issue
Block a user