Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 9 additions & 39 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,59 +2,29 @@ name: release

on:
push:
tags:
- 'v*.*.*'
branch:
- 'issue_10_debian_packaging'

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Create package structure
run: |
mkdir -p .debpkg/usr/bin .rpmpkg/usr/bin
cp -p screen-* .debpkg/usr/bin/
cp -p screen-* .rpmpkg/usr/bin/
- name: Create DEB package
uses: jiro4989/build-deb-action@v3
uses: jtdor/build-deb-action@v1
env:
DEB_BUILD_OPTIONS: noautodbgsym
with:
package: screen-save
package_root: .debpkg
maintainer: Simon Walz <contact@simonwalz.de>
version: ${{ github.ref }} # refs/tags/v*.*.*
arch: 'all'
depends: 'screen'
desc: 'A tool to make screen sessions persistent = survive system reboots.'
homepage: 'https://github.com/simonwalz/screen-save'
- name: Create RPM package
uses: jiro4989/build-rpm-action@v2
with:
summary: 'A tool to make screen sessions persistent = survive system reboots.'
package: screen-save
package_root: .rpmpkg
maintainer: Simon Walz <contact@simonwalz.de>
version: ${{ github.ref }} # refs/tags/v*.*.*
arch: 'x86_64'
desc: 'A tool to make screen sessions persistent = survive system reboots.'

buildpackage-opts: --build=binary --no-sign
- name: Upload DEB package
uses: actions/upload-artifact@v4
with:
name: artifact-deb
path: |
./*.deb
- name: Upload RPM package
uses: actions/upload-artifact@v4
with:
name: artifact-rpm
path: |
./*.rpm
!./*-debuginfo-*.rpm
path: debian/artifacts/
name: debian_package
- name: Remove debuginfo file
run: |
rm *-debuginfo-*.rpm
rm *-debuginfo-*.rpm || true
- name: Release package files
uses: softprops/action-gh-release@v2
with:
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
*.swp
debian/.debhelper/
debian/*.debhelper
debian/debhelper-build-stamp
debian/files
debian/*.log
debian/*.substvars
debian/screen-save/
5 changes: 5 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
screen-save (1.2.6) UNRELEASED; urgency=medium

* Last version provided from github

-- Simon Walz <contact@simonwalz.de> Sat, 20 Jul 2024 12:25:00 +0200
1 change: 1 addition & 0 deletions debian/compat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12
17 changes: 17 additions & 0 deletions debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Source: screen-save
Section: admin
Priority: optional
Maintainer: Simon Walz <contact@simonwalz.de>
Build-Depends: debhelper (>= 8)
Standards-Version: 3.9.8

Package: screen-save
Priority: optional
Section: admin
Architecture: all
Depends: screen
Description: A tool to make screen sessions persistent = survive system reboot.
.
This package is an optional module to complete screen feature
.
More information at https://github.com/simonwalz/screen-save
1 change: 1 addition & 0 deletions debian/copyright
3 changes: 3 additions & 0 deletions debian/cron.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
##Save and autostart all screen sesssion
@reboot root if [ -x /usr/bin/screen-auto-start ]; then /usr/bin/screen-auto-start; fi
*/5 * * * * root if [ -x /usr/bin/screen-save-all-sessions ]; then /usr/bin/screen-save-all-sessions -d; fi
3 changes: 3 additions & 0 deletions debian/install
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
./screen-auto-start /usr/bin/
./screen-save /usr/bin/
./screen-save-all-sessions /usr/bin/
13 changes: 13 additions & 0 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/usr/bin/make -f
#export DH_VERBOSE = 1


override_dh_installsystemduser:
dh_installsystemduser --name=screen-save-autostart

override_dh_installsystemd:
dh_installsystemd --name=screen-save-all
dh_installsystemd --name=screen-save-all-shutdown

%:
dh $@
14 changes: 14 additions & 0 deletions debian/screen-save.screen-save-all-shutdown.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[Unit]
Description=Save all screen session on shutdown event
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/bin/screen-save-all-sessions -d
User=root
TimeoutStartSec=0


[Install]
WantedBy=shutdown.target
7 changes: 7 additions & 0 deletions debian/screen-save.screen-save-all.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[Unit]
Description=Save all screen session

[Service]
Type=oneshot
ExecStart=/usr/bin/screen-save-all-sessions
User=root
9 changes: 9 additions & 0 deletions debian/screen-save.screen-save-all.timer
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Unit]
Description=Save all 5' minutes all screen session

[Timer]
OnCalendar=*:0/15
OnStartupSec=15min

[Install]
WantedBy=timers.target
8 changes: 8 additions & 0 deletions debian/screen-save.screen-save-autostart.user.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Unit]
Description=Auto start all saved screen session

[Service]
ExecStart=/usr/bin/screen-auto-start

[Install]
WantedBy=default.target
40 changes: 24 additions & 16 deletions screen-save-all-sessions
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#!/bin/sh
#!/bin/bash
# save all my screen sessions
# Simon Walz, 2018

SCRIPTPATH="$(readlink -f 2>/dev/null || perl -MCwd -e 'print Cwd::abs_path shift' "$0")"
SCRIPTDIR="$(dirname "${SCRIPTPATH}")"

set -e
shopt -s nullglob

savedir="$1"

Expand All @@ -16,23 +17,30 @@ then
echo " savedir - save to directory" >&2
exit 2
fi
if test "$savedir" = "-d"
then
savedir="$HOME/.screen-save/$(date +%Y-%m-%d)/"
fi

if test "$savedir" != ""
then
savedir="${savedir}/"
mkdir -p "${savedir}"
fi

SCREEN_PID=$(screen -ls | \
grep -oE "^\s+[0-9]+\." | \
grep -oE "[0-9]+")
screen_sockets=(/var/run/screen/S-*/*);

for i in ${SCREEN_PID}
for screen_info in "${screen_sockets[@]#*S-}";
do
"${SCRIPTDIR}/screen-save" "$i" "$savedir" </dev/null
screen_user=$(dirname "${screen_info}")
screen_pid=$(basename "${screen_info%.pts*}")
command=""

if test "$1" = "-d"
then
savedir="~${screen_user}/.screen-save/$(date +%Y-%m-%d)/"
command="mkdir -p ${savedir}"
if [ "$EUID" -ne 0 ]; then
eval "${command}"
else
su - "${screen_user}" -c "${command}"
fi
fi
command="${SCRIPTDIR}/screen-save ${screen_pid} ${savedir} </dev/null"
if [ "$EUID" -ne 0 ]; then
eval "${command}"
else
su - "${screen_user}" -c "${command}"
fi
done