A blazing fast, extendable launcher for wayland.
centerpiece is designed with these values in mind:
- ⚡ blazing fast performance
- âš« minimalistic UI
- 🔌 extendable through plugins
Centerpiece is not packed in any major package manager yet. However you can easily run it through nix.
Try it using nix run
nix run github:friedow/centerpiece
Use it with home-manager
-
Add this repository to your
flake.nixinputs{ inputs.centerpiece.url = "github:friedow/centerpiece"; }
-
Register the home-manager module and enable centerpiece
{ inputs, ... }: { home-manager.users.<USER> = { imports = [ inputs.centerpiece.hmModules."x86_64-linux".default ]; programs.centerpiece.enable = true; }; }
-
See the 'Configure' section for more nix config options.
All plugins are enabled by default. Disable the ones you don't need ;).
Search for open sway windows and switch between them.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
sway_windows:
enable: trueSearch for installed applications and launch them.
This plugin searches for .desktop files.
It follows the XDG Base Directory Specification.
Thus, it searches in directories specified in the XDG_DATA_DIRS and XDG_DATA_HOME environment variables.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
applications:
enable: trueOpen bookmarks and browser history in new tabs.
In addition to bookmarks and history there is also a plugin to open special bookmarks in app mode. This will launch a brave instance without address and tab bar. To use this plugin put bookmarks into a Bookmark folder called 'Progressive Web Apps' at the top of your bookmarks collection.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
brave_bookmarks:
enable: true
brave_history:
enable: true
brave_progressive_web_apps:
enable: trueRelated config keys
# ~/.config/centerpiece/config.yml
plugin:
firefox_bookmarks:
enable: true
firefox_history:
enable: trueList git repositories in your home directory and open a terminal and an editor in them.
Selecting a git repository will execute the configured commands. Defaults to opening a terminal and a code editor in the selected directory.
Searching for git repositories in the whole home directory is resource heavy.
To avoid delays in the plugin launch time this plugin comes with a systemd service which will create an index file.
This index file is located at ~/.cache/centerpiece/git-repositories-index.json and necessary for the plugin to work.
It exports the following environment variables:
$GIT_DIRECTORY: The path to the git directory.$GIT_DIRECTORY_NAME: The name of the git directory.
If zoxide integration is enabled, the plugin will sort your projects based on their respective zoxide scores.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
git_repositories:
enable: true
zoxide: true
commands:
- ["alacritty", "--command", "nvim", "$GIT_DIRECTORY"]
- ["alacritty", "--working-directory", "$GIT_DIRECTORY" "--class" "$GIT_DIRECTORY_NAME"]List gitmojis and copy them.
Note: You need to have wl-clipboard installed on your system.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
gitmoji:
enable: falseLock, sleep, restart or shutdown your system.
The following commands are executed when the respective actions are selected.
lock: lock
sleep: systemctl suspend
restart: reboot
shutdown: poweroff
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
system:
enable: trueList nearby wifi networks and connect to them.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
wifi:
enable: trueDisplay current cpu, ram, disk usage and battery state.
Related config keys
# ~/.config/centerpiece/config.yml
plugin
resource_monitor_battery:
enable: true
resource_monitor_cpu:
enable: true
resource_monitor_disks:
enable: true
resource_monitor_memory:
enable: trueDisplay current date and time.
Related config keys
# ~/.config/centerpiece/config.yml
plugin:
clock:
enable: trueYou can configure centerpiece through yaml or nix.
You can specify alternative configuration locations through:
- the
--configflag - the
CENTERPIECE_CONFIGURATION_FILEenvironment variable
-
Create a
config.ymlfile in~/.config/centerpiece/config.yml. -
Use the following config keys to configure centerpiece. These are all config keys including their respective defaults.
color: text: "#ffffff" background: "#000000" plugin: applications: enable: true brave_bookmarks: enable: true brave_history: enable: true brave_progressive_web_apps: enable: true clock: enable: true firefox_bookmarks: enable: true firefox_history: enable: true git_repositories: enable: true commands: - ["alacritty", "--command", "nvim", "$GIT_DIRECTORY"] - ["alacritty", "--working-directory", "$GIT_DIRECTORY"] gitmoji: enable: false resource_monitor_battery: enable: true resource_monitor_cpu: enable: true resource_monitor_disks: enable: true resource_monitor_memory: enable: true sway_windows: enable: true system: enable: true wifi: enable: true
-
Install the home-manager module as documented in the 'Run it!' section.
-
Use the following config keys to configure centerpiece. These are all config keys including their respective defaults.
{ inputs, ... }: { home-manager.users.<USER> = { imports = [ inputs.centerpiece.hmModules."x86_64-linux".default ]; programs.centerpiece = { enable = true; config = { color = { text = "#ffffff"; background = "#000000"; }; plugin = { applications = { enable = true; }; brave_bookmarks = { enable = true; }; brave_history = { enable = true; }; brave_progressive_web_apps = { enable = true; }; clock = { enable = true; }; firefox_bookmarks = { enable = true; }; firefox_history = { enable = true; }; git_repositories = { enable = true; commands = [ ["alacritty" "--command" "nvim" "$GIT_DIRECTORY"] ["alacritty" "--working-directory" "$GIT_DIRECTORY"] ]; }; gitmoji = { enable = false; }; resource_monitor_battery = { enable = true; }; resource_monitor_cpu = { enable = true; }; resource_monitor_disks = { enable = true; }; resource_monitor_memory = { enable = true; }; sway_windows = { enable = true; }; system = { enable = true; }; wifi = { enable = true; }; }; }; # enables a systemd service to index git-repositories services.index-git-repositories = { enable = true; interval = "5min"; }; }; }; }
Contains the graphical application and the plugin code that is needed during runtime. This is most of the plugin code which handles requests for searching and opening of entries.
Computations for generating plugin entries can be time consuming. For example listing all git repositories entails searching your whole home directory for directories with the name .git. To avoid slowing down the graphical application during run time this directory contains code for small systemd services that write indices for plugins with time consuming queries.
The flake.nix provides a ready-to-roll build environment usable with nix develop.
-
Run a new bash shell containing the build environment
nix develop
-
Run the application
cargo run

