Skip to content

Latest commit

 

History

188 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Restore Settings (biglinux-config)

Restore Settings

Restore, backup, and manage application settings on BigLinux

License GTK4 libadwaita Python 136 apps 29 languages


Overview

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.

Features

  • Restore BigLinux Defaults — Restore supported files from /etc/skel without 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.gz archive, 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 .po files.

Requirements

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)

Installation

BigLinux / Manjaro / Arch Linux

# From the official BigLinux repository
sudo pacman -S biglinux-config

From Source

git clone https://github.com/ruscher/biglinux-config.git
cd biglinux-config
python3 biglinux-config/usr/share/biglinux/biglinux-config/main.py

Building the Package (makepkg)

cd pkgbuild
makepkg -si

pkgbuild/PKGBUILD fetches the repository from git, so commit or push local changes before building.

Project Structure

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

Architecture

┌─────────────────────────────────────────────────────┐
│                    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/skel or deletion, and handles .tar.gz backup export/import.
  • Data — Single-source-of-truth registry of 136 applications with their config paths, skel paths, icons, categories, and detection binaries.

How It Works

Restoring Settings

  1. Select an application from the grid.
  2. Choose between:
    • Restore BigLinux Defaults — Copies preconfigured files from /etc/skel to your home directory.
    • Restore Program Defaults — Removes only registered reset paths so the application recreates defaults; backup paths may be broader.
  3. If the application is currently running, you will be prompted to close it first.
  4. A success/error dialog confirms the operation result.

Exporting Settings

  1. Open Menu → Export settings…
  2. Select which installed applications to include in the backup.
  3. Choose a destination file (.tar.gz).
  4. The archive contains the selected registered roots, subject to the documented cache policy, portable-link policy and resource limits. Close the apps first.

Importing Settings

  1. Open Menu → Import settings…
  2. Select a previously exported .tar.gz file.
  3. Choose which applications to restore from the backup.
  4. 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.

Configuration

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.

Translation

The application uses gettext for internationalization. Translation files are located in biglinux-config/locale/.

Supported Languages

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).

Adding a New Translation

  1. Copy the template: cp biglinux-config/locale/biglinux-config.pot biglinux-config/locale/<lang>.po
  2. Edit the .po file with your translations.
  3. Compile: msgfmt biglinux-config/locale/<lang>.po -o biglinux-config/usr/share/locale/<lang>/LC_MESSAGES/biglinux-config.mo

Contributing

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -m 'Add my feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Open a Pull Request.

Adding a New Application

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"],
)

License

This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

Links

Troubleshooting

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.

Testing

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 session

See 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.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages