How to customize each Firefox window icon individually?

Solution 1:

This can be done using the free AutoHotkey.

Create a .ahk text file and enter these contents:

#Persistent
SetTitleMatchMode, 2    ; A window's title to contain the text anywhere

F9::
ChangeWindowIcon("title text", "\path\to\iconfile.ico")

ChangeWindowIcon(WinSpec, IconFile) {
    hIcon := DllCall("LoadImage", uint, 0, str, IconFile, uint, 1, uint, 0, uint, 0, uint, uint 0x10)
    if (!hIcon) {
        MsgBox, "Icon file missing or invalid in `nChangeWindowIcon(" IconFile ", " WinSpec ")`n`n"
        Throw "Icon file missing or invalid in `nChangeWindowIcon(" IconFile ", " WinSpec ")`n`n"
    }
    hWnd := WinExist(WinSpec)
    if (!hWnd) {
        MsgBox, Window Not Found
        return "Window Not Found"
    }
    SendMessage, WM_SETICON:=0x80, ICON_SMALL:=0, hIcon,, ahk_id %hWnd% ; Set the window's small icon
    SendMessage, WM_SETICON:=0x80, ICON_BIG:=1, hIcon,, ahk_id %hWnd%   ; Set the window's big icon
    SendMessage, WM_SETICON:=0x80, ICON_SMALL2:=2, hIcon,, ahk_id %hWnd%    ; Set the window's small icon
}

The script is set to be activated upon hitting F9, but you may set your own key. Add as many calls to the function ChangeWindowIcon as required, each with the parameters of:

  • Unique text that can be found in the title
  • The full address of an icon file

When the script is running, you may right-click its green H icon in the traybar and choose Exit to terminate. If it works, you may also add it to your Startup group to run when you login.

Note that AutoHotkey can also launch your favorite tabs and arrange their layout on the screen. There isn't really much that AutoHotkey cannot do.