Warning
This project is currently in Alpha. If you encounter any bugs please open a GitHub issue.
| Background Selector |
|---|
| App Drawer |
|---|
| Control Center |
|---|
| Flyouts |
|---|
1. Install the following dependencies for your distribution:
Note
You only need to complete steps 1. and 2. from fabric's installation guide. Fabric's python package is already included in this project's requirements.txt.
| Dependency | Used For | Installation Guide |
|---|---|---|
niri |
Window manager | niri |
fabric |
GUI toolkit | fabric |
awww |
Wallpaper daemon | awww |
Important
The following steps assume you are in an active niri session.
2. Clone and navigate to the repo:
git clone https://github.com/kianblakley/bomb-shell.git
cd bomb-shell3. Create a venv and install python dependencies:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
4. Add the following keybindings to your niri config.kdl:
Tip
Replace ~/bomb-shell with the location at which you cloned this repo.
Mod+D {spawn-sh "~/bomb-shell/venv/bin/python -m fabric execute bombshell \"app.app_drawer.toggle()\""; }
Mod+B {spawn-sh "~/bomb-shell/venv/bin/python -m fabric execute bombshell \"app.bg_selector.toggle()\""; }
Mod+E {spawn-sh "~/bomb-shell/venv/bin/python -m fabric execute bombshell \"app.control_center.toggle()\""; }
5. Add the following layer rules to your niri config.kdl:
layer-rule {
match namespace="^awww-daemonoverview$"
place-within-backdrop true
}
// Optional if you wish to enable blur for the shell.
layer-rule {
match namespace="^fabric$"
background-effect {
blur true
xray false
}
}
6. Start the wallpaper daemon for the workspaces and overview:
awww-daemon -n workspaces
awww-daemon -n overview7. Start the shell:
python main.pyThe simplest method is to add the following lines to your niri config.kdl:
Tip
Replace ~/bomb-shell with the location at which you cloned this repo.
spawn-sh-at-startup "awww-daemon -n workspaces"
spawn-sh-at-startup "awww-daemon -n overview"
spawn-sh-at-startup "~/bomb-shell/venv/bin/python main.py"Alternatively, if you start niri as a sytemd unit with niri-session or equivalent (recommended, see here for more details) follow these steps:
1. Create a systemd user configuration folder if it doesn't exist already:
mkdir -p ~/.config/systemd/user2. Adjust and copy the provided .service files to the systemd config folder:
Tip
Replace %h/bomb-shell with the location at which you cloned this repo in bombshell.service.
Replace /usr/bin/awww-daemon with the path to your awww-daemon binary in awww@.service.
cp ~/bomb-shell/systemd/* ~/.config/systemd/user3. Link the services to niri:
systemctl --user add-wants niri.service bombshell.service
systemctl --user add-wants niri.service awww@workspaces.service
systemctl --user add-wants niri.service awww@overview.serviceThe shell can now be restarted at anytime with:
systemctl --user restart bombshell.serviceThe config.json file in the root of the project allows for limited configuration:
| Key | Default Value | Function |
|---|---|---|
"wallpapers_path" |
"~/Pictures/wallpapers/" |
Set the folder from which the background selector reads wallpapers |
"profile_picture" |
"./assets/penguin.jpg" |
Set the path to the user's picture displayed in the control center |
"transparency" |
true |
Allows the user to switch between the default opaque and transparent styles |
The shell inherits its icon theme and font from GTK settings, which can be changed by running:
gsettings set org.gnome.desktop.interface icon-theme "Your icon theme"
gsettings set org.gnome.desktop.interface font-name "Your font name"Note
The icon theme shown in the demo is Papirus, and the font is Jet Brains Mono Nerd Font.
Additionally, the wallpapers shown in the demo can be found in the wallpapers folder.
- @its-darsh and the fabric community for building fabric and helping me out on the discord.
- @Axenide for writing the upower and networking services.
- @Inparsian for inspiring the design of the control center.
- @Camille Unkown, @waneella, @finch, @TofuPixel, @Yes I Do, @Slynyrd for creating the awesome wallpapers.