Skip to content

Releases: lancefaul/archamp

archamp 1.1.0

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 21:24

Three things in this release are things you would have hit in the first minute.

Closing archamp no longer ends it

With WINDOW → Show in tray on, the close button now puts the player away
and the music carries on — the way it does in anything else that lives in a
tray. The way out is Close archamp, which is what the player menu's Exit
now says, and which the tray menu gains too, since someone who closed to the
tray has no window left to quit from.

Without a tray there is nothing to come back from, so closing still quits.
"Keep hidden" is untouched by this: that one is about where archamp starts,
the close button is about where it is now.

The first drag after a window appears works

Open archamp, try to move the window, nothing. Bring it back from the tray,
try again, still nothing — until you clicked the equalizer first, and then it
dragged. Chromium only works out where a window's drag regions are when the
elements carrying them change, and a window that has only just been mapped has
not changed since. archamp now makes that change on purpose after every show.

archamp floats itself on Hyprland

The player window is the shape and size of the skin it is drawing. Tiled, the
compositor stretches a transparent, irregularly-shaped window across a slot
and the player reads as broken rather than as small — and a Wayland client
cannot ask to float, so archamp used to print the rule in its first-run dialog
and hope you would paste it into your config.

Hyprland takes a rule at runtime, though, so archamp asks for it itself at
startup. Session-only, writes nothing to your config, asks nothing of you,
and does nothing at all on any other compositor. Both config parsers are
catered for — eval for a Lua config, keyword windowrule for a classic
hyprland.conf — and if none of them takes, archamp still starts.

On anything that is not Hyprland, set the equivalent rule for window class
archamp yourself; the README
has it.

Two alpha pieces — not support

archamp is developed and used on Omarchy under
Hyprland. Two changes here were written for desktops archamp has not been
run on
, and they ship as alpha: what is verified is the mechanism, not the
desktop.

  • The tray is only offered where the desktop has one. A tray icon is a
    StatusNotifierItem, and a stock GNOME has nothing listening for one, so
    archamp says so rather than hiding its window behind an icon that would
    never appear. Bringing a hidden window back has never depended on the tray:
    start archamp again from your launcher, or use any MPRIS client's "open the
    player".
  • KDE's colour scheme is read from ~/.config/kdeglobals where Omarchy's
    theme files are absent, for archamp's own chrome — its menus, the skin
    browser, About and the update window.

Both are inert on Omarchy: the tray host is there, and Omarchy's own theme
files win. If you run archamp on Plasma or GNOME, reports are welcome — treat
neither as supported yet.

Everything else

See 1.0.0's notes
for what archamp is and how it and
OMedia Controls were
built to go together.

Install

Download archamp-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-x86_64.AppImage
./archamp-x86_64.AppImage

Or, from a running archamp: ARCHAMP → Check for updates.

archamp 1.0.3

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 13:48

The AppImage stops naming a version it cannot keep

archamp-1.0.0-x86_64.AppImage with 1.0.2 inside it — because updating is
replacing that one file in place, and the name it was first downloaded under
is the name it keeps. The file is archamp-x86_64.AppImage now.

Keeping the version in the name would have meant renaming the file on every
update, and that name is the path the desktop entry, the launcher, any dock
pin and the restart itself all point at. Moving all of that on every update to
keep a label honest is a lot of moving parts for a label. A stable name costs
nothing: the release asset is matched on .AppImage, and ARCHAMP → About is
what knows which version you are running.

If you already have a versioned copy, rename it to
archamp-x86_64.AppImage. archamp rewrites its desktop entry from the new
path the next time it starts, so the launcher follows on its own.

Everything else

Unchanged from 1.0.2 — see its notes
and 1.0.1's for
the restart, and
1.0.0's for what
archamp is and how it and
OMedia Controls were
built to go together.

Install

Download archamp-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-x86_64.AppImage
./archamp-x86_64.AppImage

Or, from a running archamp: ARCHAMP → Check for updates.

archamp 1.0.2

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 13:35

Restart Later says what it is

Beside Restart, the other button said "Later", which leaves you to work
out later than what. It is Restart Later now.

A note for anyone testing the restart

The update window belongs to the version that is running, so its buttons are
the ones the old archamp shipped. Updating from 1.0.0 to 1.0.1 — the release
that added Restart — showed 1.0.0's window, with its disabled "Updated" and a
Close, because that is the window that was open when Update was pressed. The
new archamp was on disk and correct; it simply was not the one drawing.

An update is what puts the new window in place. It is the update after that
which uses it.

Everything else

Unchanged from 1.0.1 — see its notes
for the restart itself, and
1.0.0's for what
archamp is and how it and
OMedia Controls were
built to go together.

Install

Download archamp-1.0.2-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-1.0.2-x86_64.AppImage
./archamp-1.0.2-x86_64.AppImage

Or, from a running 1.0.1: ARCHAMP → Check for updates.

archamp 1.0.1

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 05:59

The update window can start what it just installed

Update left you with a new archamp on disk and the old one still on screen,
and the only way across was to quit and go and find it again.

The button that installed it now offers to start it. Update becomes
Restart, Cancel becomes Later, and archamp goes down and comes
back up on the new version — with the playlist, the track and where it had got
to all as you left them, out of the saved session. Later is still there if you
would rather pick it up next time you start archamp yourself.

Under it, this is not Electron's own app.relaunch(). That starts the new
copy as the old one is going down, and archamp holds a single-instance lock —
so the new copy found the lock still held, handed over its arguments and
exited, and the old one was quitting anyway. Nothing came back. The waiting is
done outside the process instead, by a detached shell that watches archamp go
and then starts the AppImage the update wrote, giving up rather than ever
running two players at once.

Everything else

Unchanged from 1.0.0 — see its notes
for what archamp is and what it does, including how it and
OMedia Controls were
built to go together.

Install

Download archamp-1.0.1-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-1.0.1-x86_64.AppImage
./archamp-1.0.1-x86_64.AppImage

Or, from a running 1.0.0: ARCHAMP → Check for updates.

archamp 1.0.0

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 05:47

A real Winamp, as a native desktop app: the classic main window, equalizer and
playlist, skinnable, with real Web Audio playback — built on
webamp and wrapped in Electron.

Since 0.9.0

The icon a launcher, switcher or dock draws is the three-bar mark rather than
the seven-bar one, which needed more pixels than any of them give it, and the
installed icons now refresh when they stop matching what archamp ships. They
were only written when the desktop entry was, which happens when the
AppImage's path changes — and an update replaces the AppImage in place, so the
path is the one thing that does not change when the artwork has.

archamp and OMedia Controls are one thing in two halves

archamp was built alongside
OMedia Controls, a
media plugin for the Omarchy bar, and the two were
designed to go together. The plugin reaches for archamp first when it needs a
player; archamp answers questions no other player can.

Either works alone. Together they do things neither can do by itself:

  • The equalizer in the bar. MPRIS has no equalizer, so no plugin can offer
    one. archamp publishes org.archamp.Equalizer, and the plugin draws ten
    bands, a preamp and the presets right in the popup — the same equalizer,
    from either end, in step.
  • A player with no window. WINDOW → Keep hidden takes archamp's window
    away and leaves the music; the plugin becomes the whole interface, and the
    switch for it lives in the plugin's own Settings.
  • One playlist, two ways in. Both read and write M3U files in the same
    Playlists folder, and archamp follows the plugin's setting for where that
    folder is.
  • Reordering, from the bar. org.archamp.TrackList adds the MoveTrack
    that MPRIS left out.
  • Everything else, done exactly. Sample-exact seeking rather than a fixed
    skip, a named playlist, album/year/track read from the files themselves,
    speed from 0.25x to 4x, and all three repeat positions.

The player

  • The classic Winamp main window, equalizer and playlist, skinnable.
  • A browser for the Winamp Skin Museum: search and
    apply any of its ~93,000 skins (Alt+S). Skins are cached, and the one you
    chose comes back next launch.
  • Crisp scaling in whole-pixel steps: Ctrl+= / Ctrl+- / Ctrl+0, or Ctrl+scroll.
  • The equalizer's presets, with .eqf files to load and save.
  • Where it left off: the playlist, the track, the position, volume, shuffle and
    repeat all come back at launch, paused.

On the desktop

  • MPRIS (org.mpris.MediaPlayer2.archamp), so media keys, KDE's media controls
    and panel widgets see the track, the art, the playlist and the equalizer.
  • Three interfaces of archamp's own for what MPRIS has no room for:
    org.archamp.TrackList, org.archamp.Window and org.archamp.Equalizer.
  • Desktop integration on first run: a .desktop entry and icons under
    ~/.local/share, so launchers list archamp, panels name it, and it can be
    picked as your music player. Undo it with
    archamp --remove-desktop-integration.
  • Takes files, folders and M3Us on the command line; a second launch hands its
    files to the copy already running rather than starting another.
  • A tray icon, when you ask for one (WINDOW → Show in tray).
  • ARCHAMP → Check for updates, which shows you the exact command it will run
    before it runs it.

Install

Download archamp-1.0.0-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-1.0.0-x86_64.AppImage
./archamp-1.0.0-x86_64.AppImage

On Hyprland, archamp wants one window rule it cannot set for itself, since a
Wayland client cannot ask to float:

o.window("archamp", { float = true })

Known limitations

  • The equalizer and playlist can't be pulled away from the main window.
  • Double-clicking a title bar no longer toggles shade mode, and right-clicking
    one opens the compositor's window menu rather than Winamp's.
  • Double size (D) at a large scale can run off the screen.
  • The skin museum's cache has no size limit.

MIT-licensed, like webamp itself.

archamp 0.9.0

Choose a tag to compare

@lancefaul lancefaul released this 19 Sep 05:35

A real Winamp, as a native desktop app: the classic main window, equalizer and
playlist, skinnable, with real Web Audio playback — built on
webamp and wrapped in Electron.

This is 0.9.0, the last step before 1.0: everything below is built and tested,
and the version is where it is so that the first upgrade can be walked through
for real before 1.0 goes out.

archamp and OMedia Controls are one thing in two halves

archamp was built alongside
OMedia Controls, a
media plugin for the Omarchy bar, and the two were
designed to go together. The plugin reaches for archamp first when it needs a
player; archamp answers questions no other player can.

Either works alone. Together they do things neither can do by itself:

  • The equalizer in the bar. MPRIS has no equalizer, so no plugin can offer
    one. archamp publishes org.archamp.Equalizer, and the plugin draws ten
    bands, a preamp and the presets right in the popup — the same equalizer,
    from either end, in step.
  • A player with no window. WINDOW → Keep hidden takes archamp's window
    away and leaves the music; the plugin becomes the whole interface, and the
    switch for it lives in the plugin's own Settings.
  • One playlist, two ways in. Both read and write M3U files in the same
    Playlists folder, and archamp follows the plugin's setting for where that
    folder is.
  • Reordering, from the bar. org.archamp.TrackList adds the MoveTrack
    that MPRIS left out.
  • Everything else, done exactly. Sample-exact seeking rather than a fixed
    skip, a named playlist, album/year/track read from the files themselves,
    speed from 0.25x to 4x, and all three repeat positions.

The player

  • The classic Winamp main window, equalizer and playlist, skinnable.
  • A browser for the Winamp Skin Museum: search and
    apply any of its ~93,000 skins (Alt+S). Skins are cached, and the one you
    chose comes back next launch.
  • Crisp scaling in whole-pixel steps: Ctrl+= / Ctrl+- / Ctrl+0, or Ctrl+scroll.
  • The equalizer's presets, with .eqf files to load and save.
  • Where it left off: the playlist, the track, the position, volume, shuffle and
    repeat all come back at launch, paused.

On the desktop

  • MPRIS (org.mpris.MediaPlayer2.archamp), so media keys, KDE's media controls
    and panel widgets see the track, the art, the playlist and the equalizer.
  • Three interfaces of archamp's own for what MPRIS has no room for:
    org.archamp.TrackList, org.archamp.Window and org.archamp.Equalizer.
  • Desktop integration on first run: a .desktop entry and icons under
    ~/.local/share, so launchers list archamp, panels name it, and it can be
    picked as your music player. Undo it with
    archamp --remove-desktop-integration.
  • Takes files, folders and M3Us on the command line; a second launch hands its
    files to the copy already running rather than starting another.
  • A tray icon, when you ask for one (WINDOW → Show in tray).
  • ARCHAMP → Check for updates, which shows you the exact command it will run
    before it runs it.

Install

Download archamp-0.9.0-x86_64.AppImage below, make it executable and run it:

chmod +x archamp-0.9.0-x86_64.AppImage
./archamp-0.9.0-x86_64.AppImage

On Hyprland, archamp wants one window rule it cannot set for itself, since a
Wayland client cannot ask to float:

o.window("archamp", { float = true })

Known limitations

  • The equalizer and playlist can't be pulled away from the main window.
  • Double-clicking a title bar no longer toggles shade mode, and right-clicking
    one opens the compositor's window menu rather than Winamp's.
  • Double size (D) at a large scale can run off the screen.
  • The skin museum's cache has no size limit.

MIT-licensed, like webamp itself.