Skip to content

Installation

IMPORTANT

The project is currently being updated from agsv2 gtk3 to Gnim and gtk4.

WARNING

Currently Astal libraries are packaged for the AUR and Nix. If you don't have access to these you will have to install dependencies from source.

Disclaimer

This project is closed source.

If you are a GitHub Sponsor, you will have access to the source code for as long as you remain a sponsor.

NOTE

The Ko-fi distribution has been retired.

Arch

Install the following dependencies

sh
yay -S gjs libastal-meta

Then run the distributed script.

sh
./marble

If you are a GitHub sponsor and have access to the repo you can build from source with AGS.

sh
yay -S aylurs-gtk-shell nushell gjs libastal-meta
git clone https://github.com/marble-shell/shell.git
cd shell

npm run dev:init
npm run dev:build
gjs -m build/marble

IMPORTANT

I'm using nushell for setup and build scripts.

TIP

Move the executable into a directory that's in your PATH

sh
sudo mv marble /usr/bin
mv marble ~/.local/bin # alternatively

Nix

Example flake for bundled scripts.

nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    astal = {
      url = "github:aylur/astal";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = {
    self,
    nixpkgs,
    astal,
  }: let
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
  in {
    packages.${system}.default = pkgs.stdenv.mkDerivation {
      pname = "marble";
      src = ./marble;
      dontUnpack = true;

      nativeBuildInputs = with pkgs; [
        wrapGAppsHook
        gobject-introspection
      ];

      buildInputs =
        (with astal.packages.${system}; [
          astal3
          io
          apps
          battery
          bluetooth
          hyprland
          mpris
          network
          notifd
          powerprofiles
          tray
          wireplumber
        ])
        ++ (with pkgs; [
          gjs
        ]);

      preFixup = ''
        gappsWrapperArgs+=(
          --prefix PATH : ${with pkgs;
          lib.makeBinPath [
            dart-sass
            fzf
          ]}
        )
      '';

      installPhase = ''
        mkdir -p $out/bin
        install $src $out/bin/marble
      '';
    };
  };
}

If you are a GitHub sponsor and have access to the repo you can pull its flake.

nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    marble = {
      url = "github:marble-shell/shell";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, marble }: let
    system = "x86_64-linux";
  in {
    packages.${system}.default = marble.packages.${system}.default;
  };
}