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:
- Add a provider — These are typically GNOME applications implementing the
SearchProvider
API. To discover available providers, runmarble providers
in your terminal. Seeconfig/widgets/Launcher/plugins.ts
for examples. - Write a custom plugin — This involves TypeScript. As an example you can reference
config/widgets/Launcher/nix.ts
andconfig/widgets/Launcher/NixList.tsx
.