Skip to content

Installation

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.

If you purchased the project from Ko-fi, you will receive a versioned bundle. These bundles may receive bug fixes until a new version is released, after which they will no longer be maintained. When a new version becomes available, you will need to purchase it again.

WARNING

I am also the author of most dependencies. While I will do my best to ensure the versioned bundles remain functional, I cannot guarantee there will be no breaking changes in the future. If a breaking change occurs and you wish to continue using your current version, you can install nix on any Linux distribution to lock dependencies and use the project indefinitely.

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;
  };
}