Overview
Illogical-impulse is a minimal Quickshell configuration by ayfri. It prioritizes keyboard-driven interaction and avoids unnecessary visual complexity. The entire shell consists of a top bar and an application launcher.
Architecture
illogical-impulse/
shell.qml — Entry point
keys.json — Keyboard shortcuts
style.qml — Theme constants
components/
bar/ — Top bar
bar.qml
clock.qml
workspace.qml
volume.qml
launcher/ — Application launcher
launcher.qml
services/
audio.qml
workspaces.qmlKey Design Decisions
1. Minimal Component Count
Illogical-impulse has fewer than 15 QML files. Every component justifies its existence. No notification center, no system tray, no weather widget. The bar shows only: clock, workspaces, volume.
2. Keyboard-First Navigation
json
// keys.json
{
"launcher": "Super+Space",
"workspace:next": "Super+Tab",
"workspace:prev": "Super+Shift+Tab",
"volume:up": "Super+=",
"volume:down": "Super+-",
"volume:mute": "Super+m"
}Every action is accessible from the keyboard. No mouse required for daily use.
3. External Dependency Handling
qml
// services/audio.qml
// If PipeWire is not available, gracefully disable
Item {
property bool available: false
Component.onCompleted: {
Qt.process(["which", "wpctl"]).onStdout.connect(function() {
available = true
initializeAudio()
})
}
}Services detect whether external tools are available and disable themselves if not.
4. Minimal Theme
qml
// style.qml
pragma Singleton
QtObject {
readonly property color bg: "#1a1b26"
readonly property color fg: "#a9b1d6"
readonly property color accent: "#7aa2f7"
readonly property color surface: "#1f2335"
readonly property int barHeight: 30
readonly property int borderRadius: 4
readonly property string font: "JetBrains Mono"
readonly property int fontSize: 12
}What Makes Illogical-Impulse Great
- Simplicity — Easy to understand and modify
- Fast startup — Fewer components means faster loading
- Keyboard-first — Efficient for power users
- Graceful degradation — Works with or without optional dependencies
- Clean code — Well-organized, well-named files
Trade-offs
| Feature | Caelestia | Illogical-impulse |
|---|---|---|
| Startup time | ~500ms | ~150ms |
| Memory usage | ~200MB | ~80MB |
| Features | Full desktop | Minimal |
| Customization | Extensive | Limited |
| Learning curve | Moderate | Low |
Exercises
⭐Exercise
Add a notification indicator to illogical-impulse's bar. Show an icon when notifications are pending. Clicking the icon opens the notification center (use mako/dunst externally).
⭐⭐Exercise
Implement a "focus mode" that hides the bar. Pressing Super+F toggles visibility. Add a subtle indicator at the screen edge showing that focus mode is active (a thin colored line).
⭐⭐⭐Exercise
Convert illogical-impulse to use Caelestia's JSON config format. The shell should read bar modules, shortcuts, and theme from config.json. Add backward compatibility for keys.json.
What You've Learned
- Illogical-impulse is a minimal, keyboard-driven shell under 15 QML files
- External services are detected on startup and gracefully disabled
- Keyboard shortcuts for all actions in keys.json
- Fast startup (~150ms) and low memory (~80MB)