Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .clangd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
CompileFlags:
Add:
- -I/usr/include/qt6
- -I/usr/include/qt6/QtCore
- -I/usr/include/qt6/QtGui
- -I/usr/include/qt6/QtWidgets
- -I/usr/include/qt6/QtWebEngineCore
- -I/usr/include/qt6/QtWebEngineWidgets
- -I/usr/include/qt6/QtNetwork
- -I/usr/include/qt6/QtXml
- -I/usr/include/qt6/QtPrintSupport
- -I/usr/include/qt6/QtWebChannel
- -I/usr/include/qt6/QtQml
- -I/usr/include/qt6/QtQmlIntegration
- -I/usr/include/qt6/QtPositioning
- -Isrc
- -x
- c++
- -std=c++20
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
qt6-base-dev \
qt6-tools-dev-tools \
qt6-webengine-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
zlib1g-dev
- name: Build
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ jobs:
qt6-base-dev \
qt6-tools-dev-tools \
qt6-webengine-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
shared-mime-info \
zlib1g-dev
Expand Down
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@
/safe-exam-browser
/seb-linux-qt
/*.o
/*.a
/*.so*
/.qmake.stash
/.moc/
/.obj/
/.rcc/
/moc_*
/ui_*
/qrc_*
/build/
/dist/
/windows/
/windows/
/compile_commands.json
/.clangd/
/.vscode/
/.idea/
105 changes: 23 additions & 82 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,107 +3,48 @@

# Safe Exam Browser for Linux

**A native Linux implementation of Safe Exam Browser, built with Qt 6 and Qt WebEngine.**
Hey there! This is a community-driven, native Linux version of Safe Exam Browser. We built it with Qt 6 to give Linux users a reliable way to take exams without needing a specific OS.
</div>

## Overview
## What is this?

This project provides a native Linux client focused on:
We're trying to make SEB work great on Linux. This client handles all the important stuff like `.seb` files and special links (`seb://`), so you can just focus on your exam.

- Reliable startup and kiosk-like exam runtime behavior
- Linux desktop integration (file associations and protocol handling)
- Packaging and distribution for common Linux ecosystems
### Running Everywhere
One cool thing we did is make the browser engine flexible.
- Most people will use **Qt WebEngine** (it's fast and integrated).
- If your system doesn't support it, we automatically try to use **WebKitGTK** as a backup.

It supports:
This means SEB should "just work" on pretty much any Linux device you throw at it.
Comment on lines +13 to +18
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description/release notes state that in QtWebEngine-free compatibility mode the app cannot render exam pages and disables web navigation, but the README now says it will automatically use WebKitGTK as a backup engine. Please reconcile the documentation with the intended behavior (either document WebKitGTK as a supported rendering fallback, or document the mode as non-rendering compatibility UI only).

Copilot uses AI. Check for mistakes.

- Opening `.seb` configuration files
- Handling `seb://` and `sebs://` links
- Running as an installed Linux desktop application
## Getting Started

> [!IMPORTANT]
> This repository is an independent Linux implementation and is **not** an official Safe Exam Browser release.

## Prerequisites

Make sure your environment has the dependencies required for a Qt 6 + Qt WebEngine desktop build.

## Build
### Prerequisites
You'll need the usual Qt 6 development tools. If you're on something like RISC-V where Qt WebEngine isn't around, make sure you've got `libwebkit2gtk-4.1-dev` and `libgtk-3-dev` installed so we can use the fallback engine.

### How to Build
It's pretty simple:
```bash
./scripts/build.sh
```
You'll find the binary at `build/bin/safe-exam-browser`.

Compiled binary output:

```bash
build/bin/safe-exam-browser
```

## Run

Start with default behavior:

```bash
./build/bin/safe-exam-browser
```

Open a local exam file:

```bash
./build/bin/safe-exam-browser /path/to/exam.seb
```

Open a remote exam link:

```bash
./build/bin/safe-exam-browser sebs://demo.safeexambrowser.org/exams/DemoExamGeneral.seb
```

Run with a JSON config file:

### Running an Exam
Just point it at your `.seb` file:
```bash
./build/bin/safe-exam-browser --config ./examples/minimal-config.json
./build/bin/safe-exam-browser /path/to/my-exam.seb
```

## Create Release Artifacts

Or use a link:
```bash
./scripts/build-release.sh 0.1.0
./build/bin/safe-exam-browser sebs://exam-link.seb
```

Release files are written to `dist/`.

Prebuilt binaries are available from the GitHub Releases page.

## Installation

### Debian/Ubuntu

```bash
sudo apt install ./dist/safe-exam-browser_0.1.0_amd64.deb
```
## Troubleshooting & Support

### Arch Linux
If you run the app and see a message saying **"Safe Exam Browser is not supported on your device"**, it means we couldn't find a compatible browser engine on your system.

```bash
cd packaging/arch
makepkg -si
```

## Contributing

Please review these files before opening a PR:

- [CONTRIBUTING.md](./CONTRIBUTING.md)
- [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
- [SECURITY.md](./SECURITY.md)

Quick copy/open helper:

```bash
cat CONTRIBUTING.md CODE_OF_CONDUCT.md SECURITY.md
```
We want to fix that! please [open an issue here](https://github.com/Jvr2022/seb-linux/issues) with some details about your system and what version of Linux you're using.

## License

Licensed under the terms in `LICENSE`.
This is an open-source project licensed under the `MPL2`. Check the `LICENSE` file for the legalese.
Binary file added bin/safe-exam-browser
Binary file not shown.
4 changes: 2 additions & 2 deletions packaging/arch/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ pkgname=safe-exam-browser
pkgver=0.1.0
pkgrel=1
pkgdesc="Qt-based Linux port of Safe Exam Browser"
arch=('x86_64')
arch=('x86_64' 'aarch64' 'riscv64')
url="https://github.com/example/safe-exam-browser-linux"
license=('MPL2')
depends=('qt6-base' 'qt6-webengine' 'zlib' 'hicolor-icon-theme' 'shared-mime-info' 'desktop-file-utils' 'polkit')
depends=('qt6-base' 'qt6-webengine' 'webkit2gtk-4.1' 'gtk3' 'zlib' 'hicolor-icon-theme' 'shared-mime-info' 'desktop-file-utils' 'polkit')
makedepends=('qt6-tools' 'gcc' 'make')
source=("safe-exam-browser-${pkgver}.tar.gz")
sha256sums=('SKIP')
Expand Down
2 changes: 1 addition & 1 deletion packaging/linux/safe-exam-browser.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</developer>
<launchable type="desktop-id">safe-exam-browser.desktop</launchable>
<description>
<p>Safe Exam Browser for Linux with `.seb` file loading, `seb://` and `sebs://` protocol handling, remote configuration loading, and a Qt WebEngine runtime.</p>
<p>Safe Exam Browser for Linux with `.seb` file loading, `seb://` and `sebs://` protocol handling, remote configuration loading, and a Qt WebEngine runtime when that browser engine is available.</p>
</description>
<categories>
<category>Education</category>
Expand Down
5 changes: 3 additions & 2 deletions scripts/build-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ make INSTALL_ROOT="${STAGE_DIR}" install
popd >/dev/null

mkdir -p "${ARTIFACT_DIR}/debian/DEBIAN"
DP_ARCH=$(dpkg --print-architecture 2>/dev/null || echo "amd64")
cat > "${ARTIFACT_DIR}/debian/DEBIAN/control" <<EOF
Package: ${PACKAGE_NAME}
Version: ${VERSION}
Section: education
Priority: optional
Architecture: amd64
Architecture: ${DP_ARCH}
Maintainer: SEB Linux contributors
Depends: libqt6core6, libqt6gui6, libqt6network6, libqt6webenginecore6, libqt6webenginewidgets6, shared-mime-info, pkexec
Depends: libqt6core6, libqt6gui6, libqt6network6, libqt6webenginecore6 | libwebkit2gtk-4.1-0, libqt6webenginewidgets6 | libwebkit2gtk-4.1-0, libgtk-3-0, shared-mime-info, pkexec
Description: Safe Exam Browser Linux Qt port
Qt-based Safe Exam Browser launcher for Linux with .seb file and sebs:// support.
EOF
Expand Down
2 changes: 1 addition & 1 deletion scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ BUILD_DIR="${ROOT_DIR}/build"

mkdir -p "${BUILD_DIR}"
pushd "${BUILD_DIR}" >/dev/null
qmake6 ../seb-linux-qt.pro
qmake6 ../seb-linux-qt.pro "$@"
make -j"$(nproc)"
popd >/dev/null

Expand Down
Loading