Skip to content
📖 12 min🎯Difficulty:
Prerequisites:Qt QuickQML basics

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.qml

Key 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

  1. Simplicity — Easy to understand and modify
  2. Fast startup — Fewer components means faster loading
  3. Keyboard-first — Efficient for power users
  4. Graceful degradation — Works with or without optional dependencies
  5. Clean code — Well-organized, well-named files

Trade-offs

FeatureCaelestiaIllogical-impulse
Startup time~500ms~150ms
Memory usage~200MB~80MB
FeaturesFull desktopMinimal
CustomizationExtensiveLimited
Learning curveModerateLow

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)

Built with VitePress. Licensed under MIT.