diff --git a/src/config.rs b/src/config.rs index aa0dbd0c..84219fec 100644 --- a/src/config.rs +++ b/src/config.rs @@ -84,6 +84,7 @@ pub enum Step { Gcloud, Gem, GitRepos, + GnomeShellExtensions, HomeManager, Jetpack, Krew, diff --git a/src/main.rs b/src/main.rs index 65d99eeb..fea56d60 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,6 +269,9 @@ fn run() -> Result<()> { runner.execute(Step::Tmux, "tmux", || tmux::run_tpm(&base_dirs, run_type))?; runner.execute(Step::Tldr, "TLDR", || unix::run_tldr(run_type))?; runner.execute(Step::Pearl, "pearl", || unix::run_pearl(run_type))?; + runner.execute(Step::GnomeShellExtensions, "Gnome Shell Extensions", || { + unix::upgrade_gnome_extensions(&ctx) + })?; runner.execute(Step::Sdkman, "SDKMAN!", || { unix::run_sdkman(&base_dirs, config.cleanup(), run_type) })?; diff --git a/src/steps/os/unix.rs b/src/steps/os/unix.rs index cc55bb79..621be772 100644 --- a/src/steps/os/unix.rs +++ b/src/steps/os/unix.rs @@ -18,6 +18,7 @@ use std::{env, path::Path}; const INTEL_BREW: &str = "/usr/local/bin/brew"; const ARM_BREW: &str = "/opt/homebrew/bin/brew"; + #[derive(Copy, Clone, Debug)] #[allow(dead_code)] pub enum BrewVariant { @@ -130,6 +131,25 @@ pub fn run_fish_plug(ctx: &ExecutionContext) -> Result<()> { ctx.run_type().execute(&fish).args(["-c", "plug update"]).check_run() } +pub fn upgrade_gnome_extensions(ctx: &ExecutionContext) -> Result<()> { + let gdbus = require("gdbus")?; + print_separator("Gnome Shell extensions"); + + ctx.run_type() + .execute(gdbus) + .args(&[ + "call", + "--session", + "--dest", + "rg.gnome.Shell.Extensions", + "--object-path", + "org/gnome/Shell/Extensions", + "-method", + "org.gnome.Shell.Extensions.CheckForUpdates", + ]) + .check_run() +} + pub fn run_brew_formula(ctx: &ExecutionContext, variant: BrewVariant) -> Result<()> { require(variant.binary_name())?; print_separator(variant.step_title());