Skip to content

Configuration

There is currently no built-in configuration system. To make changes, you'll need to manually edit the source code, then recompile and reinstall.

Project Structure

The repository is organized into two main directories:

  • src/ — Contains the primitive widgets and the core theming API implementation. You typically won't need to modify anything here.
  • config/ — Defines the shell layout and launcher configuration. This is the most likely place where you'll make changes.

Modifying the Layout

Although it is written in TypeScript, making changes to the layout is very straightforward as you'll primarily be writing XML. For example, to switch to a vertical bar layout, you'll need to set the Box widgets in TopBar.tsx to vertical.

Adding new features, however, will require TypeScript knowledge.

Adding a Theme

A theme is simply a collection of CSS variables. You can find the variables used throughout the project in src/theme/variables. To define a new theme, create a Theme object in config/theme.ts.

Adding Launcher Commands

You can extend the Launcher in two ways:

  1. Add a provider — These are typically GNOME applications implementing the SearchProvider API. To discover available providers, run marble providers in your terminal. See config/widgets/Launcher/plugins.ts for examples.
  2. Write a custom plugin — This involves TypeScript. As an example you can reference config/widgets/Launcher/nix.ts and config/widgets/Launcher/NixList.tsx.