diff --git a/_scripts/gnome-export.sh b/_scripts/gnome-export.sh deleted file mode 100755 index 57ead71..0000000 --- a/_scripts/gnome-export.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -echo Exporting GNOME configuration... - -# Get current directory -wd=$(dirname -- $(dirname -- $( readlink -f -- $0; ); );) - -dconf dump /org/gnome/shell/extensions/dash-to-panel/ > $wd/gnome/extensions/dash-to-panel.dconf -dconf dump /org/gnome/shell/extensions/cpupower/ > $wd/gnome/extensions/cpupower.dconf - diff --git a/_scripts/import.py b/_scripts/run.py similarity index 56% rename from _scripts/import.py rename to _scripts/run.py index e98fdc8..092c3d1 100755 --- a/_scripts/import.py +++ b/_scripts/run.py @@ -24,6 +24,19 @@ def get_files(folder: Path, files: list[str]) -> set[Path]: result.add(folder / file) return result +def is_enabled(config: dict, key: str) -> bool: + if "disabled" in config: + if config["disabled"] and key in config["disabled"]: + return False + key_parts = key.split(".") + parent = config + for part in key_parts: + if part in parent: + parent = parent[part] + else: + return False + return True + # Setup dotfiles def set_dotfiles(folder: str, config: dict): @@ -40,40 +53,52 @@ def set_dotfiles(folder: str, config: dict): # Install GNOME extensions def install_gnome_extension(ext): - p = subprocess.Popen(f"{cwd / '_scripts' / 'gnome-install-extension.sh'} {ext}", shell=True) + #p = subprocess.Popen(f"{cwd / '_scripts' / 'gnome-install-extension.sh'} {ext}", shell=True) + p = subprocess.Popen(f"busctl --user call org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s {ext}", shell=True) p.wait() -# Import GNOME settings +# Import / Export GNOME settings -def import_gnome_config(file: str, path: str): +def configure_gnome(file: str, path: str, export: bool = False): dconf = cwd / "gnome" / (file+".dconf"); - p = subprocess.Popen(f"dconf load {path} < {dconf}", shell=True) + p = subprocess.Popen(f"dconf {'dump' if export else 'load'} {path} {'>' if export else '<'} {dconf}", shell=True) p.wait() # Main part def main(): + config_file = cwd / "config.yml" if not config_file.exists(): return config = yaml.safe_load(config_file.read_text()) if not config: return - if "dotfiles" in config: + + if is_enabled(config, "dotfiles"): print("Installing dotfiles...") for folder in config["dotfiles"]: print(f" - {folder}") set_dotfiles(folder, config["dotfiles"][folder]) - if "gnome" in config: - if "extensions" in config["gnome"]: + + if is_enabled(config, "gnome"): + + if is_enabled(config, "gnome.extensions"): print("Installing GNOME extensions...") for ext in config["gnome"]["extensions"]: print(f" - {ext}") install_gnome_extension(ext) - if "import" in config["gnome"]: + + if is_enabled(config, "gnome.import"): print("Importing GNOME settings...") for file in config["gnome"]["import"]: print(f" - {file}") - import_gnome_config(file, config["gnome"]["import"][file]) + configure_gnome(file, config["gnome"]["import"][file]) -main() \ No newline at end of file + if is_enabled(config, "gnome.export"): + print("Exporting GNOME settings...") + for file in config["gnome"]["export"]: + print(f" - {file}") + configure_gnome(file, config["gnome"]["export"][file], True) + +main() diff --git a/config.yml b/config.yml index 73ce2b0..184b0f3 100644 --- a/config.yml +++ b/config.yml @@ -20,4 +20,10 @@ gnome: - hibernate-status@dromi import: extensions/cpupower: /org/gnome/shell/extensions/cpupower/ - extensions/dash-to-panel: /org/gnome/shell/extensions/dash-to-panel/ \ No newline at end of file + extensions/dash-to-panel: /org/gnome/shell/extensions/dash-to-panel/ + extensions/blur-my-shell: /org/gnome/shell/extensions/blur-my-shell/ + +# disabled: +# - gnome +# - gnome.import +# - dotfiles \ No newline at end of file diff --git a/gnome/extensions/blur-my-shell.dconf b/gnome/extensions/blur-my-shell.dconf new file mode 100644 index 0000000..0cb780f --- /dev/null +++ b/gnome/extensions/blur-my-shell.dconf @@ -0,0 +1,2 @@ +[panel] +blur=false \ No newline at end of file