Restore, backup, and manage application settings on BigLinux
Restore Settings is a native GTK4/libadwaita application for BigLinux that lets you reset, restore, export, and import application configuration files. With 136 preconfigured applications across 15 categories, it covers browsers, multimedia, development tools, terminals, desktop environments, Flatpak apps, and much more.
Built with modern GNOME HIG principles, it integrates seamlessly into any desktop environment running GTK4.
- Restore BigLinux Defaults — Restore supported files from
/etc/skelwithout touching unrelated application settings. - Restore Program Defaults — Remove an application's custom settings so it can recreate its own defaults.
- Export Settings — Back up selected applications to a single compressed
.tar.gzarchive, with integrity checks. - Import Settings — Restore selected applications from a backup using validation and rollback protection.
- Full Directory Backup — Optionally include complete configuration directories, including otherwise excluded cache data.
- Flatpak Support — Detect and manage Flatpak configuration and data alongside native packages.
- Desktop settings — Back up and reset only the registered GSettings/dconf namespaces.
- Search and Favorites — Find applications quickly and maintain a personal Favorites category.
- Organized by Category — Browse applications grouped into 15 categories, from browsers and multimedia to system tools and desktop environments.
- Welcome Dialog — Onboarding dialog showing the main workflows on first launch, with a "Show on startup" toggle.
- Internationalization — Translation sources are maintained for 29 languages via gettext
.pofiles.
| Dependency | Minimum Version |
|---|---|
| Python | 3.12+ |
| GTK | 4.12+ (application API minimum) |
| libadwaita | 1.6+ |
| PyGObject | Gtk 4.0 and Adw 1 introspection available |
| Flatpak | (optional, for Flatpak app detection) |
# From the official BigLinux repository
sudo pacman -S biglinux-configgit clone https://github.com/ruscher/biglinux-config.git
cd biglinux-config
python3 biglinux-config/usr/share/biglinux/biglinux-config/main.pycd pkgbuild
makepkg -sipkgbuild/PKGBUILD fetches the repository from git, so commit or push local
changes before building.
biglinux-config/
├── biglinux-config/
│ ├── locale/ # Translation sources (.po, .pot), updated by CI
│ └── usr/
│ ├── bin/
│ │ ├── big-config # Compatibility symlink
│ │ └── biglinux-config # System launcher script
│ └── share/
│ ├── applications/
│ │ ├── com.biglinux.config.desktop # Menu entry; matches the Wayland app_id
│ │ └── biglinux-config.desktop # Hidden entry for BigLinux Control Center
│ ├── biglinux/biglinux-config/
│ │ ├── main.py # Application entry point
│ │ ├── i18n.py # gettext lookup (_ and ngettext)
│ │ ├── backend/
│ │ │ ├── app_detector.py # Detect installed native apps
│ │ │ ├── archive_policy.py # Backup format and archive validation
│ │ │ ├── backup_manager.py # Export/import .tar.gz backups
│ │ │ ├── dconf_manager.py # Scoped GSettings/dconf access
│ │ │ ├── flatpak_detector.py # Detect installed Flatpak apps
│ │ │ ├── paths.py # Home-confined path checks
│ │ │ ├── reset_manager.py # Reset configs (skel / delete)
│ │ │ ├── transactions.py # Staging, rollback and recovery
│ │ │ └── user_prefs.py # Favorites and welcome preference
│ │ ├── data/
│ │ │ └── app_registry.py # 136 app entries + categories
│ │ ├── img/ # Custom SVG icons
│ │ └── ui/
│ │ ├── application.py # Main window + Adw.Application
│ │ ├── app_grid.py # FlowBox grid of app buttons
│ │ ├── category_sidebar.py # Category sidebar navigation
│ │ ├── restore_dialog.py # Per-app dialog and reset flow
│ │ ├── export_dialog.py # Export flow
│ │ ├── import_dialog.py # Import flow
│ │ ├── operation_dialogs.py # Progress, result and file dialogs
│ │ ├── jobs.py # Worker threads tied to the app
│ │ ├── style.css # All application styles
│ │ ├── about_dialog.py # About dialog
│ │ └── welcome_dialog.py # Welcome/onboarding dialog
│ ├── icons/hicolor/scalable/apps/ # Application icon (.svg)
│ ├── locale/ # Compiled translations (.mo)
│ └── metainfo/ # AppStream metadata
├── pkgbuild/
│ └── PKGBUILD # Arch/BigLinux package build script
├── tests/ # pytest suite (tools/check.sh)
├── LICENSE # GPL-3.0-or-later
└── README.md
┌─────────────────────────────────────────────────────┐
│ main.py │
│ BigConfigApp (Adw.Application) │
├─────────────┬──────────────┬────────────────────────┤
│ UI Layer │ Backend │ Data │
├─────────────┼──────────────┼────────────────────────┤
│ application │ app_detector │ app_registry │
│ app_grid │ flatpak_det. │ (136 AppEntry objects) │
│ sidebar │ reset_manager│ │
│ dialogs │ backup_mgr │ │
└─────────────┴──────────────┴────────────────────────┘
- UI Layer — GTK4 + libadwaita widgets. Split view with category sidebar and app grid. Dialogs for restore, export/import, about, and welcome.
- Backend — Detects installed applications, manages config reset via
/etc/skelor deletion, and handles.tar.gzbackup export/import. - Data — Single-source-of-truth registry of 136 applications with their config paths, skel paths, icons, categories, and detection binaries.
- Select an application from the grid.
- Choose between:
- Restore BigLinux Defaults — Copies preconfigured files from
/etc/skelto your home directory. - Restore Program Defaults — Removes only registered reset paths so the application recreates defaults; backup paths may be broader.
- Restore BigLinux Defaults — Copies preconfigured files from
- If the application is currently running, you will be prompted to close it first.
- A success/error dialog confirms the operation result.
- Open Menu → Export settings…
- Select which installed applications to include in the backup.
- Choose a destination file (
.tar.gz). - The archive contains the selected registered roots, subject to the documented cache policy, portable-link policy and resource limits. Close the apps first.
- Open Menu → Import settings…
- Select a previously exported
.tar.gzfile. - Choose which applications to restore from the backup.
- The archive is validated, selected files are staged privately, and live paths are replaced with rollback support. Import only trusted backups; integrity is not authenticity.
User preferences are stored at:
${XDG_CONFIG_HOME:-~/.config}/restore-settings/settings.json
Currently stores:
show-welcome— Whether to display the welcome dialog on startup (default:true).favorites-added/favorites-removed— User overrides to detected favorites.
The application uses gettext for internationalization. Translation files are located in biglinux-config/locale/.
Belarusian, Bulgarian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Croatian, Hungarian, Icelandic, Italian, Japanese, Korean, Norwegian, Polish, Portuguese (Portugal), Portuguese (Brazil), Romanian, Russian, Slovak, Spanish, Swedish, Turkish, Ukrainian, Chinese, Simplified Chinese (China), Traditional Chinese (Taiwan).
- Copy the template:
cp biglinux-config/locale/biglinux-config.pot biglinux-config/locale/<lang>.po - Edit the
.pofile with your translations. - Compile:
msgfmt biglinux-config/locale/<lang>.po -o biglinux-config/usr/share/locale/<lang>/LC_MESSAGES/biglinux-config.mo
- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request.
To add support for a new application, add an AppEntry to the APP_REGISTRY list in data/app_registry.py:
AppEntry(
app_id="my-app",
name="My Application",
icon="my-app",
binary="/usr/bin/my-app",
category="multimedia",
config_paths=["~/.config/my-app"],
skel_paths=["/etc/skel/.config/my-app"],
)This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.
- Repository: github.com/ruscher/biglinux-config
- Issues: github.com/ruscher/biglinux-config/issues
- BigLinux: biglinux.com.br
If the application does not detect an installed program, confirm that its executable is available in PATH and that the program is present in the registry. Flatpak support requires the flatpak command; desktop settings support requires dconf.
For a failed backup or restore, keep the original archive and use the project issue tracker to report the exact operation and error message. Do not delete a pre-reset backup under ~/.local/state/biglinux-config/ until the issue is understood.
Use the isolation scripts, not your normal desktop bus/profile:
bash tools/check.sh # unit tests and Python syntax; dconf tests skipped
bash tools/check-dconf.sh # real dconf with a new isolated D-Bus sessionSee Safety, compatibility and release checks before importing, resetting or packaging. In particular, this patch set is not a full-home backup system, does not authenticate archives, and has a pending native GTK release gate. The tests of the worker dispatcher use a fake GLib queue, not real widgets.
The application never reads the repository documentation at runtime.