Compare commits
2 commits
7a83c50208
...
22b5e0094a
| Author | SHA1 | Date | |
|---|---|---|---|
| 22b5e0094a | |||
| 6118557715 |
13 changed files with 196 additions and 140 deletions
|
|
@ -13,7 +13,7 @@ import datetime
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
|
|
||||||
DISTRIBUTION = "bookworm"
|
DISTRIBUTION = "trixie"
|
||||||
|
|
||||||
VARIANT_LABEL = {
|
VARIANT_LABEL = {
|
||||||
"contestant": "contest",
|
"contestant": "contest",
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,6 @@ systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
|
||||||
DISABLE_DESKTOP="dpkg-statoverride --force-statoverride-add --update --add root root 640"
|
DISABLE_DESKTOP="dpkg-statoverride --force-statoverride-add --update --add root root 640"
|
||||||
$DISABLE_DESKTOP /usr/share/applications/gnome-bluetooth-panel.desktop
|
$DISABLE_DESKTOP /usr/share/applications/gnome-bluetooth-panel.desktop
|
||||||
$DISABLE_DESKTOP /usr/share/applications/gnome-online-accounts-panel.desktop
|
$DISABLE_DESKTOP /usr/share/applications/gnome-online-accounts-panel.desktop
|
||||||
$DISABLE_DESKTOP /usr/share/applications/gnome-sharing-panel.desktop
|
|
||||||
|
|
||||||
# Disable kexec-tools services.
|
|
||||||
# We want to load kexec manually, and execution of kexec is already done by systemd.
|
|
||||||
systemctl disable kexec-load.service
|
|
||||||
systemctl disable kexec.service
|
|
||||||
|
|
||||||
# Restrict access to the config which contains the WiFi password.
|
# Restrict access to the config which contains the WiFi password.
|
||||||
chmod og= /etc/NetworkManager/system-connections/contest.nmconnection
|
chmod og= /etc/NetworkManager/system-connections/contest.nmconnection
|
||||||
|
|
|
||||||
|
|
@ -2,21 +2,27 @@
|
||||||
// Because of that, this gnome extension is distributed under
|
// Because of that, this gnome extension is distributed under
|
||||||
// the terms of the GNU General Public License, version 2 or later.
|
// the terms of the GNU General Public License, version 2 or later.
|
||||||
|
|
||||||
const {
|
import AccountsService from 'gi://AccountsService';
|
||||||
AccountsService, Atk, Clutter, Gio,
|
import Atk from 'gi://Atk';
|
||||||
GLib, Graphene, Meta, Shell, St,
|
import Clutter from 'gi://Clutter';
|
||||||
} = imports.gi;
|
import Gio from 'gi://Gio';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import Graphene from 'gi://Graphene';
|
||||||
|
import Meta from 'gi://Meta';
|
||||||
|
import Shell from 'gi://Shell';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
const Background = imports.ui.background;
|
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
const Layout = imports.ui.layout;
|
import * as Background from 'resource:///org/gnome/shell/ui/background.js';
|
||||||
const Main = imports.ui.main;
|
import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
|
||||||
const ScreenShield = imports.ui.screenShield;
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
import * as ScreenShield from 'resource:///org/gnome/shell/ui/screenShield.js';
|
||||||
|
|
||||||
// half of the time for which a frame is displayed
|
// half of the time for which a frame is displayed
|
||||||
const HALF_FRAME_TIME_MS = 8;
|
const HALF_FRAME_TIME_MS = 8;
|
||||||
|
|
||||||
const BLUR_BRIGHTNESS = 0.55;
|
const BLUR_BRIGHTNESS = 0.65;
|
||||||
const BLUR_SIGMA = 60;
|
const BLUR_RADIUS = 90;
|
||||||
|
|
||||||
const POINTER_HIDE_TIMEOUT = 10 * GLib.USEC_PER_SEC;
|
const POINTER_HIDE_TIMEOUT = 10 * GLib.USEC_PER_SEC;
|
||||||
|
|
||||||
|
|
@ -43,6 +49,7 @@ let countdownTimeoutId = 0;
|
||||||
|
|
||||||
let configFile;
|
let configFile;
|
||||||
let configMonitor;
|
let configMonitor;
|
||||||
|
let configLoadCancellable;
|
||||||
let config;
|
let config;
|
||||||
let startTime;
|
let startTime;
|
||||||
|
|
||||||
|
|
@ -59,23 +66,22 @@ function extLogError (msg) {
|
||||||
printerr(`[contest-lock] Error: ${msg}`);
|
printerr(`[contest-lock] Error: ${msg}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadConfig () {
|
async function loadConfig () {
|
||||||
configFile.load_contents_async(null, (obj, res) => {
|
configLoadCancellable?.cancel();
|
||||||
|
configLoadCancellable = new Gio.Cancellable();
|
||||||
|
|
||||||
// If there is a poblem with the config file, log an error and keep
|
// If there is a poblem with the config file, log an error and keep
|
||||||
// using the old config.
|
// using the old config.
|
||||||
let newConfig;
|
let newConfig;
|
||||||
try {
|
try {
|
||||||
const [ok, bytes] = configFile.load_contents_finish(res);
|
const [ok, bytes] = await configFile.load_contents(configLoadCancellable);
|
||||||
// TextDecoder is used in upstream gnome-shell, but not yet
|
const contentStr = new TextDecoder().decode(bytes);
|
||||||
// supported in current Debian.
|
|
||||||
const contentStr = imports.byteArray.toString(bytes);
|
|
||||||
//const contentStr = new TextDecoder().decode(bytes);
|
|
||||||
newConfig = JSON.parse(contentStr);
|
newConfig = JSON.parse(contentStr);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logError(err, '[contest-lock] config file');
|
logError(err, '[contest-lock] config file');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(typeof newConfig === 'object' && newConfig != null)) {
|
if (typeof newConfig !== 'object' || newConfig == null) {
|
||||||
extLogError('config file: invalid format');
|
extLogError('config file: invalid format');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -101,7 +107,6 @@ function loadConfig () {
|
||||||
|
|
||||||
updateConfig();
|
updateConfig();
|
||||||
syncActive();
|
syncActive();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncActive () {
|
function syncActive () {
|
||||||
|
|
@ -190,7 +195,7 @@ function updateBackgrounds () {
|
||||||
effect: new Shell.BlurEffect({
|
effect: new Shell.BlurEffect({
|
||||||
name: 'blur',
|
name: 'blur',
|
||||||
brightness: BLUR_BRIGHTNESS,
|
brightness: BLUR_BRIGHTNESS,
|
||||||
sigma: BLUR_SIGMA,
|
radius: BLUR_RADIUS,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -382,7 +387,9 @@ function deactivate () {
|
||||||
isActiveChanging = false;
|
isActiveChanging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function init (extension) {
|
var isInitialized = false;
|
||||||
|
|
||||||
|
function init () {
|
||||||
actor = Main.layoutManager.screenShieldGroup;
|
actor = Main.layoutManager.screenShieldGroup;
|
||||||
|
|
||||||
const userName = GLib.get_user_name();
|
const userName = GLib.get_user_name();
|
||||||
|
|
@ -395,7 +402,7 @@ function init (extension) {
|
||||||
|
|
||||||
Main.layoutManager.connect('monitors-changed', updateBackgrounds);
|
Main.layoutManager.connect('monitors-changed', updateBackgrounds);
|
||||||
|
|
||||||
cursorTracker = Meta.CursorTracker.get_for_display(global.display);
|
cursorTracker = global.backend.get_cursor_tracker();
|
||||||
|
|
||||||
if (!Main.layoutManager._startingUp) {
|
if (!Main.layoutManager._startingUp) {
|
||||||
isShellReady = true;
|
isShellReady = true;
|
||||||
|
|
@ -406,19 +413,6 @@ function init (extension) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: When we drop compatibility with gnome <42, remove this code,
|
|
||||||
// rename the stylesheet back to stylesheet.css (so that it is loaded
|
|
||||||
// by the extension system) and add a session-modes property which
|
|
||||||
// includes unlock-dialog to metadata.json.
|
|
||||||
const theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
|
||||||
const stylesheetFile = extension.dir.get_child('stylesheet-always.css');
|
|
||||||
theme.load_stylesheet(stylesheetFile);
|
|
||||||
|
|
||||||
// TODO: When we drop compatibility with gnome <42, remove this code.
|
|
||||||
// gnome 38 has a bug that causes extensions to break when running
|
|
||||||
// `dconf update` while the screen is locked.
|
|
||||||
Main.extensionManager.reloadExtension = function () {};
|
|
||||||
|
|
||||||
configFile = Gio.File.new_for_path('/etc/contest-lock.json');
|
configFile = Gio.File.new_for_path('/etc/contest-lock.json');
|
||||||
configMonitor = configFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
configMonitor = configFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
||||||
configMonitor.set_rate_limit(1000);
|
configMonitor.set_rate_limit(1000);
|
||||||
|
|
@ -426,12 +420,18 @@ function init (extension) {
|
||||||
loadConfig();
|
loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable () {
|
export default class ContestLockExtension extends Extension {
|
||||||
|
enable () {
|
||||||
|
if (!isInitialized) {
|
||||||
|
init();
|
||||||
|
isInitialized = true;
|
||||||
|
}
|
||||||
isExtensionEnabled = true;
|
isExtensionEnabled = true;
|
||||||
syncActive();
|
syncActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable () {
|
disable () {
|
||||||
isExtensionEnabled = false;
|
isExtensionEnabled = false;
|
||||||
syncActive();
|
syncActive();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
"uuid": "contest-lock@soi.ch",
|
"uuid": "contest-lock@soi.ch",
|
||||||
"name": "Contest lock screen",
|
"name": "Contest lock screen",
|
||||||
"description": "A custom lock screen for contests.",
|
"description": "A custom lock screen for contests.",
|
||||||
"shell-version": [ "3.38", "42", "43" ],
|
"session-modes": [ "user", "unlock-dialog" ],
|
||||||
|
"shell-version": [ "48" ],
|
||||||
"url": ""
|
"url": ""
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,24 @@
|
||||||
.contest-lock-stack {
|
.contest-lock-stack {
|
||||||
color: white;
|
color: white;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
spacing: 24px;
|
spacing: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contest-lock-countdown {
|
.contest-lock-countdown {
|
||||||
font-size: 64pt;
|
font-size: 96pt;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
font-feature-settings: "tnum"; /* tabular figures */
|
font-feature-settings: "tnum"; /* tabular figures */
|
||||||
}
|
}
|
||||||
|
|
||||||
.contest-lock-title {
|
.contest-lock-title {
|
||||||
font-size: 16pt;
|
font-size: 24pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contest-lock-user {
|
.contest-lock-user {
|
||||||
font-size: 20pt;
|
font-size: 32pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contest-lock-message {
|
.contest-lock-message {
|
||||||
padding-top: 24px;
|
padding-top: 32px;
|
||||||
font-size: 16pt;
|
font-size: 24pt;
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
const { St, Clutter, GLib, Gio, AccountsService } = imports.gi;
|
|
||||||
const Main = imports.ui.main;
|
import AccountsService from 'gi://AccountsService';
|
||||||
|
import Clutter from 'gi://Clutter';
|
||||||
|
import GLib from 'gi://GLib';
|
||||||
|
import St from 'gi://St';
|
||||||
|
|
||||||
|
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
|
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
|
|
||||||
let panelBin;
|
let panelBin;
|
||||||
let userLabel;
|
let userLabel;
|
||||||
|
|
@ -11,7 +17,10 @@ function updateUser () {
|
||||||
if (realName != null) userLabel.text = realName;
|
if (realName != null) userLabel.text = realName;
|
||||||
}
|
}
|
||||||
|
|
||||||
function init () {
|
export default class UserIndicatorExtension extends Extension {
|
||||||
|
constructor(metadata) {
|
||||||
|
super(metadata);
|
||||||
|
|
||||||
panelBin = new St.Bin({
|
panelBin = new St.Bin({
|
||||||
style_class: 'panel-bin',
|
style_class: 'panel-bin',
|
||||||
});
|
});
|
||||||
|
|
@ -28,12 +37,13 @@ function init () {
|
||||||
user.connect('notify::is-loaded', updateUser);
|
user.connect('notify::is-loaded', updateUser);
|
||||||
user.connect('changed', updateUser);
|
user.connect('changed', updateUser);
|
||||||
updateUser();
|
updateUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable () {
|
enable () {
|
||||||
Main.panel._rightBox.insert_child_at_index(panelBin, 0);
|
Main.panel._rightBox.insert_child_at_index(panelBin, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable () {
|
disable () {
|
||||||
Main.panel._rightBox.remove_child(panelBin);
|
Main.panel._rightBox.remove_child(panelBin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
"uuid": "user-indicator@soi.ch",
|
"uuid": "user-indicator@soi.ch",
|
||||||
"name": "User indicator",
|
"name": "User indicator",
|
||||||
"description": "Shows the user's real name in the top bar.",
|
"description": "Shows the user's real name in the top bar.",
|
||||||
"shell-version": [ "3.38", "42", "43" ],
|
"shell-version": [ "48" ],
|
||||||
"url": ""
|
"url": ""
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,3 +60,60 @@ Ret0lkql+RTCtyWh95sr1kgGyyQCyF/Jv7NSntcQlJL3whphCpOkvOvK+HlBoY5U
|
||||||
McvDuGKIXk111Z3nrF4DeIIc/U6ICQ==
|
McvDuGKIXk111Z3nrF4DeIIc/U6ICQ==
|
||||||
=CCk2
|
=CCk2
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQINBFkQsPABEACnBDDC1d1e6h3CH0VNjJ/gtExITglzThVvPADCFBOFpwUKgqnf
|
||||||
|
mEj6Rx/citX3QO1MAwyACCP7UsFad7JDNpBWHRBGGGZFQE1EYOvXccWN4dqMyH11
|
||||||
|
06+GtzPuMRxo+qEpWzGbIGHDZH9GVjCM0QykHZQawJShPdnsgpYuDtGMlvNQKLk7
|
||||||
|
eSNGsHZ/NxHeYbC8Ung4ts48a2N0js+dayv1DVSZI8L9TnzbgxkOTcUqytBhub7u
|
||||||
|
ZygYzalzvqN9BiHVsTXi2rd7T/XfK7Zl0rawOHQUQavY/5IsUuRmqKwimmM6dkcu
|
||||||
|
9500nwQTDkFB6Q50IsL9pZVf2tXT70OpKDTMiTlK9VkJNnKFIHdFfZkk/O3opFhR
|
||||||
|
jI7iD41sgSVH5X176lzS2nd15GGn3qW2jSVXZ7XnlgUML4GqJVKU+T//WQjudVkF
|
||||||
|
bpfeTCOzkxj9wF0ixW64MxhkOoaHDreFhKdyn9yjSWId8m4igS+pe1xHJKREZwTR
|
||||||
|
1kgQY8Od0eOxyyvZQlQons6Ac80gF0220Z2+qnpEawhGGOKBDmh8tgQkw4s+nJc5
|
||||||
|
cHIB5o9oyhRo0R9yA7kj7D/bymN1uu7fYFnGOhwJ0jTW3LEKohRLJVgC14C/i44+
|
||||||
|
1XZB6lOF98TcmjY7plBB1eSSBFk9mfHsb7PH2DE17xTczHC4mpLxd5w+WwARAQAB
|
||||||
|
tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC
|
||||||
|
NAQTAQIAHgUCWRCw8AIbLwMLCQcEFQoJCAUWAgMBAAIeAQIXgAAKCRDKRkqaIi0j
|
||||||
|
0LQsD/93IlZevTYbg9NmTPsVZx9zlBLO9qAIb4co+dOk9Fohc7FMYSevenpA7PTl
|
||||||
|
O+3yARJhqqB75+7u5LatjEyYo/VEpvZhDyhorPUHshoIcHnsDpC+Ua5zq42efNdl
|
||||||
|
PE9Vr3klVR7gKbX2FxjqUL5SE6/YLIIr2PhpdbbMQbOCH6s4kXklsVysjRu7k0Ip
|
||||||
|
U4XF90s4inXTILMruA8LdW59q6dg5Ej4tUv54d9//Jl2Rz0z8TbguYPwFEHaXRNv
|
||||||
|
hNv0oFnjt16sZENaar81E+icw7laHxGKPnZ1XRUlvsa40/hTYj62yBGzUhLbWPHv
|
||||||
|
Os7UrIkvsyiE+53cDfEfoFh/e6yLzkSEv12xwhk4p5GjeLnkgC7Wu4VHBZDj9atO
|
||||||
|
Muwtcxk/eNpdXKg0VA1+Zo1qCuLad7ciaSKGHTasGSEVUjvtnDMPaAzvc8o0kmi4
|
||||||
|
lzZl6jHeDq2IKrgkT/FKEF9HrER7mFp+mjlVp65AM/xwZ7Ja23ocnuAVz4j9S5s4
|
||||||
|
iz6dkdJNYkzZiZ67TMth+1Qc0D6LoTwHufMJQHUmUE1+ffRKOpXim4CE21eO+WbX
|
||||||
|
vOcPh20Khv4E7O4h669+i5Oz9w/qDK2pVEYwiS/7LxaSoYaLHg1xJWk1sQx4gryF
|
||||||
|
vkhZMlN+2B3cJD4XISa65TWhDSMyWrwElnXchfEc90svjkG/nw==
|
||||||
|
=bBxZ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQINBGkJdvYBEADWhdySHM8j/ADp4YuVsnB6RkLVJoQI9A50uMiuDuNk8f05NpZJ
|
||||||
|
29bStn4m4/sB0jM2L7L6DK6IneHvU+6oUfsMylevZ6SrsjTibt3Ado7vmtEfXz1q
|
||||||
|
zZ1QbExJpYBXzUNGIIdsdUGgtkTO6dBPzZWA9zhsN8BkMJEJfnJgyJXV7eXqiHUa
|
||||||
|
LIfCFKy3f97BrLss/bXLY2d3d1J/14uoGhnpTV1udurw/i4F7WrpigauUAyKqvWc
|
||||||
|
pSCY6iXFGAhX7wTAKnkC7o/nRI4HxpZA01bUt43BMMM0S71xxW54kN/JVRRsVXEt
|
||||||
|
gE+ZgYB5UG9NjSIkF695PEqjtgv35tpkKnDU94m7Ws+yc51DkyW/6KgGO2FScxkD
|
||||||
|
bymF8VJl7JO9rZUcA60x45bmbPU6ex1BT4BIiE14mZMrOH80TmmgJDuU1KljMDL0
|
||||||
|
L+ts4tsv5haPRDByOhLhQeuRRMnbhhQAQeP9oi3SvLl1by76ztwy25wvfkwC4Hrm
|
||||||
|
O4KoeuDeoP5wrlIVkJv4BO9y0jJypQ+YjSxS3hvChtZjIaNygjzV+fRf9OqVeZV/
|
||||||
|
S0Lg7jgcDL6B1IMSbXp4uPTAkfciDjaNhgIXiK4jhSQZMLmJvKs0UQdIO09cTCUV
|
||||||
|
7qTx2IPP8A/VpXAJFLpw3NQGY50uLSYwR5DlOqn726rNF2xGgfLPcOqunQARAQAB
|
||||||
|
tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC
|
||||||
|
UQQTAQoAOxYhBOvHM7eKqzUtx3O/hX/i+hLPbjjyBQJpCXb2AhsDBQsJCAcCAiIC
|
||||||
|
BhUKCQgLAgQWAgMBAh4HAheAAAoJEH/i+hLPbjjy3HkQALMuihzYrqTzeM4j8FAN
|
||||||
|
V2y+cz/myqDsB+Z8Xnfj8/ZP7mA0hBOe87yV6lna2naaWm2p0uMFgpRc8qZ1Hgha
|
||||||
|
lBIfkprWBlukynFnUlGRzs449ayhieFQK7nHPz5R+d/1ZK1wVeHd7VWqR8vBw7G1
|
||||||
|
Lc/ZHZCYLVh2DA23UgFBIOosIUAaaa2c2Xv1y5ljEDiRWxq64vgInSzcHjAydaIo
|
||||||
|
joT5tEYLYLPbXPQ/jSywsDSszkVAdGVJShaQLMY3+w5z7cszhQlcK3IuPCTjIdG+
|
||||||
|
p7FGLimzmmjctkpGW1mHuoY58fPfcB7dTAo2sCkhh0+Vuml9ullI/8HVxQ/fGDV1
|
||||||
|
XrBXE56psff+F2LYKBxAQTjTGGJlIQ77LDOKzLs7cbwF040LNnTnpDsXFUnIK8p5
|
||||||
|
IPm+U+I8lAtudio5VZNj9NHiYyPfYXHRi2P85yDunoI5NxoxTcUFtjrozp2H23OF
|
||||||
|
jbY1kZVH/i94kaNkbikzFT42xw4XyMxg2QbtHn6376pJ3bRMNsE397UrZ4c9Cve5
|
||||||
|
wW7nALCu2N74dFiPJSeJK9XBieEvTS43sIWDaLpQgZlc6Msd/3sYnygc71LR5Zdm
|
||||||
|
/g98Eq55oyqp8tOTSyH2Hnyerk3Qg2juFNe1qUXbHdDRZbr3DKOj1FRAZDmiHCc/
|
||||||
|
AwZ5B2NwXZBg532zpvLNBlhp
|
||||||
|
=hSCO
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Version: GnuPG v1.4.7 (GNU/Linux)
|
Version: BSN Pgp v1.1.0.0
|
||||||
|
|
||||||
mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
|
mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
|
||||||
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
|
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
|
||||||
|
|
@ -7,13 +7,13 @@ LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
|
||||||
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
|
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
|
||||||
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
|
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
|
||||||
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
|
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
|
||||||
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
|
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATQEEwEI
|
||||||
AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
|
AB4FAlYxWIwCGwMGCwkIBwMCAxUIAwMWAgECHgECF4AACgkQ6z6Urb4SKc+P9gf/
|
||||||
/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
|
diY2900wvWEgV7iMgrtGzx79W/PbwWiOkKoD9sdzhARXWiP8Q5teL/t5TUH6TZ3B
|
||||||
MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
|
ENboDjwr705jLLPwuEDtPI9jz4kvdT86JwwG6N8gnWM8Ldi56SdJEtXrzwtlB/Fe
|
||||||
7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
|
6tyfMT1E/PrJfgALUG9MWTIJkc0GhRJoyPpGZ6YWSLGXnk4c0HltYKDFR7q4wtI8
|
||||||
KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
|
4cBu4mjZHZbxIO6r8Cci+xxuJkpOTIpr4pdpQKpECM6x5SaT2gVnscbN0PE19KK9
|
||||||
XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
|
nPsBxyK4wW0AvAhed2qldBPTipgzPhqB2gu0jSryil95bKrSmlYJd1Y1XfNHno5D
|
||||||
NdCFTW7wY0Fb1fWJ+/KTsC4=
|
xfn5JwgySBIdWWvtOI05gw==
|
||||||
=J6gs
|
=zPfd
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Show the accessibility menu in the top bar.
|
||||||
|
[org/gnome/desktop/a11y]
|
||||||
|
always-show-universal-access-status=true
|
||||||
|
|
@ -27,7 +27,7 @@ evince gnome-terminal konsole xterm byobu make cmake
|
||||||
nautilus-extension-gnome-terminal
|
nautilus-extension-gnome-terminal
|
||||||
file-roller
|
file-roller
|
||||||
# video codecs for grader gifs
|
# video codecs for grader gifs
|
||||||
libavcodec59
|
libavcodec61
|
||||||
# for drawing on screenshots
|
# for drawing on screenshots
|
||||||
drawing
|
drawing
|
||||||
# documentation
|
# documentation
|
||||||
|
|
|
||||||
|
|
@ -41,17 +41,8 @@ if efibootmgr --quiet; then
|
||||||
efibootmgr --bootnum 0150 --delete-bootnum || true
|
efibootmgr --bootnum 0150 --delete-bootnum || true
|
||||||
efibootmgr --bootnum 0151 --delete-bootnum || true
|
efibootmgr --bootnum 0151 --delete-bootnum || true
|
||||||
|
|
||||||
# efibootmgr --create-only --bootnum 0150 --label "Removable media" --file-dev-path --loader '\EFI\BOOT\BOOTx64.EFI'
|
efibootmgr --create-only --bootnum 0150 --label "Removable media" --file-dev-path --loader '\EFI\BOOT\BOOTx64.EFI'
|
||||||
# efibootmgr --create-only --bootnum 0151 --label "Debian" --file-dev-path --loader '\EFI\debian\shimx64.efi'
|
efibootmgr --create-only --bootnum 0151 --label "Debian" --file-dev-path --loader '\EFI\debian\shimx64.efi'
|
||||||
|
|
||||||
# The version of efibootmgr in bookworm does not support the --file-dev-path
|
|
||||||
# argument, so here are commands that directly write to efivarfs.
|
|
||||||
# When upgrading from bookworm to trixie, remove the commands below and
|
|
||||||
# uncomment the commands above.
|
|
||||||
echo "BwAAAAEAAAA0AFIAZQBtAG8AdgBhAGIAbABlACAAbQBlAGQAaQBhAAAABAQwAFwARQBGAEkAXABCAE8ATwBUAFwAQgBPAE8AVAB4ADYANAAuAEUARgBJAAAAf/8EAA==" | \
|
|
||||||
base64 --decode - > /sys/firmware/efi/efivars/Boot0150-8be4df61-93ca-11d2-aa0d-00e098032b8c
|
|
||||||
echo "BwAAAAEAAAA4AEQAZQBiAGkAYQBuAAAABAQ0AFwARQBGAEkAXABkAGUAYgBpAGEAbgBcAHMAaABpAG0AeAA2ADQALgBlAGYAaQAAAH//BAA=" | \
|
|
||||||
base64 --decode - > /sys/firmware/efi/efivars/Boot0151-8be4df61-93ca-11d2-aa0d-00e098032b8c
|
|
||||||
|
|
||||||
efibootmgr --bootorder 0150,0151
|
efibootmgr --bootorder 0150,0151
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -36,12 +36,12 @@ You can try replacing it with `--cap-add=sys_admin,mknod --security-opt apparmor
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p osbuild/build
|
mkdir -p osbuild/build
|
||||||
sudo podman pull debian:bookworm
|
sudo podman pull debian:trixie
|
||||||
sudo podman run --rm -it --privileged --mount type=bind,source="$(pwd)",target=/work --workdir /work/osbuild/build debian:bookworm
|
sudo podman run --rm -it --privileged --mount type=bind,source="$(pwd)",target=/work --workdir /work/osbuild/build debian:trixie
|
||||||
|
|
||||||
# Alternative with Docker:
|
# Alternative with Docker:
|
||||||
sudo docker pull debian:bookworm
|
sudo docker pull debian:trixie
|
||||||
sudo docker run --rm -it --privileged --mount type=bind,source="$(pwd)",target=/work --workdir /work/osbuild/build debian:bookworm
|
sudo docker run --rm -it --privileged --mount type=bind,source="$(pwd)",target=/work --workdir /work/osbuild/build debian:trixie
|
||||||
```
|
```
|
||||||
|
|
||||||
Inside the container, run the following commands.
|
Inside the container, run the following commands.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue