Skip to content

kmuchiri/gnomad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gnomad

A setup migration utility script for GNOME DE.

Captures your current GNOME environment into a profile, and duplicates it on another machine.

Note: This script focuses on extensions, keybindings, wallpaper and workspace configurations, as well as optional bash configuraitons. For addtional setup e.g. applications, add functionality or use another utility.

Requirements

System: Arch, Fedora or Debian based distributions with GNOME 45+ (tested on Arch Based Distro with GNOME 48,49)

Dependencies - Recommended to install before loading any profile, however load option will attempt to install them if missing.

Arch

sudo pacman -S python-pipx gnome-shell-extensions

Fedora

sudo dnf install -y python-pipx gnome-shell-extensions

Debian

sudo apt-get install -y python3-pipx gnome-shell-extensions

Usage

./gnomad create <profile-name>  # Snapshot current system into a profile
./gnomad load <profile-name>    # Apply a saved profile to the system
./gnomad list                   # List all saved profiles

Note: This is not an unsupervised install script.

  • The GUI is invoked when installing extentions. This means that for each extension you have to select install when prompted.
  • There is a bug that restarts the shell during extension installation, logging the user out. Running the script again will resume the setup process.
  • To copy wallpapers and other files, sudo is required.

Repo Structure

.
├── cli/           # Contains CLI command scripts (create, load, list)
├── profiles/      # Directory storing saved GNOME profile configurations
├── utils/         # OS-specific utilities and import/export scripts
└── gnomad         # Entrypoint executable

CLI

The cli/ directory contains the core logic for the commands provided by the gnomad wrapper.

  • create.sh: Handles snapshotting the current system into a profile.
  • load.sh: Responsible for applying a saved profile to the system.
  • list.sh: Lists all currently available profiles.

Profile

What does a Profile Capture

Folder what's Saved
Extensions Enable extension UUIDs + all extension dconf settings
Workspace WM keybindings, custom shortcuts, mutter settings
Wallpapers Light and dark wallpapers (optional) + picture options + Wallpaper Collection
Configs App configs, terminal configs + bash configs (tbd)
Custom Scripts (Optional) any scripts in ~/custom-scripts/

Creating a New Profile

Run create on a machine you've already customised and configured to your liking. All settiings are captured from the live GNOME session via dconf dump and gsettings get.

./gnomad create my-setup

Loading a Profile

Run the following on the machine you'd like to configure.

./gnomad load my-setup

Utils

Contains the OS detection and utility functions for each distro. Also contains the export and import scripts.

Creating a custom scripts

To create custom import/export scripts, create a new file in the utils/custom directory. Add the import to create and the export to the load cli.

About

A GNOME DE setup migration utility

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages