Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

odd-profile

A keyboard-first launcher for Chromium browser profiles, native to the COSMIC desktop. Open it, type a few letters, hit Enter — the right profile opens in the right browser.

Features

  • Detects all installed chromium-based browsers — native and flatpak (Chromium, Chrome, Brave, Edge, Vivaldi, Opera, Thorium).
  • Lists every profile with its friendly name, sorted by most-recently-used.
  • Fuzzy search, full keyboard navigation.
  • Launch & close: picking a profile opens it and the launcher exits (it only stays open if the launch fails, to show the error).
  • Native COSMIC theming (follows system light/dark + accent).

Keybindings

Key Action
type filter profiles
/ move selection
Enter launch selected profile
F5 reload profile list
Esc quit

Build & run

cargo build --release
./target/release/odd-profile          # GUI

Debug CLI

The core engine is also exposed as a CLI (used during development and handy for scripting):

odd-profile list                       # show browsers + profiles
odd-profile launch chromium "Profile 2"

Install (desktop integration)

./install.sh        # builds release + installs binary, .desktop, and icon
./uninstall.sh      # removes them again

This installs to your user dirs (no root):

  • binary → ~/.local/bin/odd-profile
  • launcher entry → ~/.local/share/applications/io.github.odd.OddProfile.desktop
  • icon → ~/.local/share/icons/hicolor/scalable/apps/io.github.odd.OddProfile.svg

It then appears in the COSMIC App Library and launcher. Ensure ~/.local/bin is on your PATH.

Global shortcut (open from anywhere)

Via COSMIC Settings (recommended): Settings → KeyboardKeyboard shortcutsCustom shortcuts → add a shortcut with the command odd-profile and bind it to e.g. Super+P.

Or by editing the config directly~/.config/cosmic/com.system76.CosmicSettings.Shortcuts/v1/custom is a RON map; add an entry inside the outer { ... }:

(
    modifiers: [Super],
    key: "p",
): Spawn("odd-profile"),

Log out/in (or restart the compositor) for the binding to take effect.

How it works

Chromium stores a registry of profiles in <config>/Local State (profile.info_cache), mapping the on-disk directory (Profile 1) to a display name (Work). odd-profile reads this (never writes it) and launches the chosen browser with --profile-directory="Profile 1", fully detached so the browser outlives the launcher.

Architecture

Module Responsibility
discovery find launchable browsers (native + flatpak)
profile parse Local State into a profile list
launch spawn the browser detached, in the chosen profile
app libcosmic GUI

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages