Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskbarVolume

English · 한국어 · 日本語 · 简体中文

Per-application volume from the Windows 11 taskbar. Hover an icon to get a slider, scroll on it to change that application's volume — without opening the Volume Mixer.

Hovering a taskbar icon and scrolling to change that application's volume

What it does

  • Hover a taskbar icon → a volume slider appears above the thumbnail preview
  • Scroll a taskbar icon → that application's volume goes up or down
  • Scroll while over the thumbnail preview → the same thing, so it keeps working while you are looking at the previews
  • Hold Shift → finer steps
  • Scroll the notification icon → system master volume
  • Mute from the button on the slider

No DLL injection into explorer.exe, no registry tweaks, no replacement taskbar. Nothing is installed: it is a folder you can delete.

Settings, from the notification icon

Settings

Requirements

  • Windows 11 22H2 (build 22621) or newer
  • No runtime install. It runs on .NET Framework 4.8, which Windows 11 already has.

Download, unzip anywhere, run TaskbarVolume.exe. That one file is the whole application — 311 KB, with nothing that has to sit beside it.

Windows will stop you the first time: "Windows protected your PC". TaskbarVolume is not signed with a code-signing certificate, and SmartScreen says that about any unsigned program it has not seen before — it is not a verdict about this one. Click More info → Run anyway. If you would rather not take my word for it, the source is right here and the build is two commands, and every release is built by GitHub Actions from the tag rather than uploaded from someone's desktop.

Signing is the fix and it is planned: free certificates exist for open-source projects, and the policy this one would sign under is already written down in SIGNING.md. Applying is worth doing once the project has some history behind it.

Settings live in %APPDATA%\TaskbarVolume\settings.ini, not next to the executable. Nothing is written to the registry unless you turn on "Start with Windows".

Windows 11 hides new notification icons behind the overflow chevron. Drag it out onto the taskbar to keep it visible.

Third-party taskbar replacements (ExplorerPatcher, StartAllBack, Start11) are not supported — TaskbarVolume detects them and stays out of the way.

How it works

Windows 11's taskbar is a XAML island, so the Windows 10 approach (MSTaskListWClass + IAccessible) no longer returns per-button data. UI Automation does: each button is a Taskbar.TaskListButtonAutomationPeer whose AutomationId is "Appid: <AppUserModelID>" — a stable, culture-independent identity.

Connecting that identity to an audio session is the hard part, because the obvious approach fails:

Trap Why process-id matching breaks
Brave / Chrome / Edge The audio session belongs to a --utility-sub-type=audio.mojom.AudioService child, never to the process owning the window
Discord and other Electron apps Audio comes from a renderer child, and the window declares no AppUserModelID at all
Steam The window is steamwebhelper.exe; the audio is steam.exe. Not the same executable, not even related by process tree
VS Code, Docker, Battle.net No AppUserModelID on the window — the shell derives it from the Start Menu shortcut

TaskbarVolume resolves each button to a set of candidate executables (live windows, path-form AUMIDs, and a reverse index built from .lnk files), then matches sessions by executable path, install root, process ancestry, and finally file name. Executable paths come out of the session identifier string itself, so no target process ever has to be opened — which is why elevated applications work from a normal-privilege process.

DESIGN.md has the rest, including what was measured and what failed.

Translations

Twenty languages: English, 简体中文, 繁體中文, हिन्दी, Español, العربية, Português, Русский, 日本語, Deutsch, Français, 한국어, Italiano, Türkçe, Tiếng Việt, Polski, Nederlands, ไทย, Bahasa Indonesia, Українська.

It follows the Windows display language, and you can pick one at the bottom of the settings panel — the change is immediate, no restart.

Corrections are welcome. The translations were not written by native speakers of most of these languages, and short UI labels are exactly where that shows. Adding or fixing one is a single dictionary in src/TaskbarVolume.App/Strings.cs: copy the ["ko"] block, change the code, translate the right-hand side. Twenty strings. The English text is the lookup key, so anything untranslated shows in English rather than breaking.

Build

dotnet build TaskbarVolume.sln -c Release
src\TaskbarVolume.App\bin\Release\net48\TaskbarVolume.exe

Needs the .NET 9 SDK; the projects multi-target net48 and net9.0-windows.

License

MIT — see LICENSE.


한국어

English · 한국어 · 日本語 · 简体中文

Windows 11 작업표시줄에서 앱별 볼륨을 조절합니다. 아이콘에 마우스를 올리면 슬라이더가 나오고, 그 위에서 스크롤하면 그 앱의 볼륨이 바뀝니다 — 볼륨 믹서를 열지 않고.

작업표시줄 아이콘에 마우스를 올리고 스크롤해 그 앱의 볼륨을 바꾸는 모습

무엇을 하나

  • 마우스를 올리면 → 썸네일 미리보기 위에 볼륨 슬라이더가 나타납니다
  • 작업표시줄 아이콘에서 스크롤 → 그 앱의 볼륨이 오르내립니다
  • 썸네일 미리보기 위에서 스크롤 → 똑같이 동작합니다. 미리보기를 보는 중에도 계속 됩니다
  • Shift를 누른 채로 → 더 세밀하게
  • 알림 영역 아이콘에서 스크롤 → 시스템 전체 볼륨
  • 슬라이더의 버튼으로 음소거

explorer.exe에 DLL을 주입하지 않고, 레지스트리를 건드리지 않고, 작업표시줄을 대체하지 않습니다. 설치 과정이 없습니다 — 지우면 그만인 폴더 하나입니다.

설정, 알림 영역 아이콘에서

설정

요구 사항

  • Windows 11 22H2(빌드 22621) 이상
  • 런타임 설치 불필요. Windows 11에 이미 들어 있는 .NET Framework 4.8에서 동작합니다.

내려받아 아무 데나 풀고 TaskbarVolume.exe 를 실행하면 됩니다. 그 파일 하나가 앱 전부입니다 — 311 KB이고, 옆에 아무것도 둘 필요가 없습니다.

처음 실행할 때 Windows가 막습니다 — "Windows의 PC 보호". TaskbarVolume은 코드 서명 인증서로 서명돼 있지 않고, SmartScreen은 처음 보는 서명 없는 프로그램이면 무엇이든 그렇게 띄웁니다. 이 프로그램에 대한 판정이 아닙니다. 추가 정보 → 실행을 누르시면 됩니다. 그 말을 믿기 어려우시면 소스가 여기 있고 빌드는 명령 두 줄이며, 모든 릴리스는 누군가의 PC에서 올라오는 게 아니라 태그에서 GitHub Actions가 빌드합니다.

해결책은 서명이고, 할 계획입니다. 오픈소스 프로젝트용 무료 인증서가 있고, 그때 따를 서명 정책은 SIGNING.md에 이미 적어뒀습니다. 프로젝트가 어느 정도 이력을 쌓은 뒤에 신청하는 게 맞다고 봅니다.

설정은 실행 파일 옆이 아니라 %APPDATA%\TaskbarVolume\settings.ini에 저장됩니다. "Windows 시작 시 실행"을 켜지 않는 한 레지스트리에는 아무것도 쓰지 않습니다.

Windows 11은 새 알림 아이콘을 오버플로 화살표 뒤에 숨깁니다. 계속 보이게 하려면 작업표시줄로 끌어다 놓으세요.

서드파티 작업표시줄 대체 프로그램(ExplorerPatcher, StartAllBack, Start11)은 지원하지 않습니다 — 감지하면 비켜섭니다.

동작 원리

Windows 11의 작업표시줄은 XAML 아일랜드라, Windows 10 방식(MSTaskListWClass + IAccessible)으로는 버튼별 데이터가 나오지 않습니다. UI Automation은 나옵니다: 각 버튼은 Taskbar.TaskListButtonAutomationPeer이고 그 AutomationId"Appid: <AppUserModelID>" — 안정적이고 언어에 무관한 식별자입니다.

그 식별자를 오디오 세션에 연결하는 게 어려운 부분입니다. 뻔한 방법이 통하지 않기 때문입니다:

함정 프로세스 ID 매칭이 깨지는 이유
Brave / Chrome / Edge 오디오 세션이 --utility-sub-type=audio.mojom.AudioService 자식 프로세스의 것이고, 창을 가진 프로세스의 것이 결코 아님
Discord 등 Electron 앱 오디오는 렌더러 자식에서 나오고, 창은 AppUserModelID를 아예 선언하지 않음
Steam 창은 steamwebhelper.exe, 오디오는 steam.exe. 같은 실행 파일도 아니고 프로세스 트리로도 이어지지 않음
VS Code, Docker, 배틀넷 창에 AppUserModelID가 없음 — 셸이 시작 메뉴 바로 가기에서 유도함

TaskbarVolume은 각 버튼을 후보 실행 파일 집합(살아 있는 창, 경로 형태 AUMID, .lnk로 만든 역인덱스) 으로 해석한 뒤, 실행 파일 경로·설치 루트·프로세스 조상·마지막으로 파일 이름 순으로 세션을 맞춥니다. 실행 파일 경로는 세션 식별자 문자열 자체에서 나오므로 대상 프로세스를 열 필요가 전혀 없습니다 — 관리자 권한 앱도 일반 권한 프로세스에서 동작하는 이유입니다.

나머지는 DESIGN.md에 있습니다 — 무엇을 실측했고 무엇이 실패했는지까지.

번역

20개 언어: English, 简体中文, 繁體中文, हिन्दी, Español, العربية, Português, Русский, 日本語, Deutsch, Français, 한국어, Italiano, Türkçe, Tiếng Việt, Polski, Nederlands, ไทย, Bahasa Indonesia, Українська.

Windows 표시 언어를 따르고, 설정 패널 맨 아래에서 직접 고를 수도 있습니다. 재시작 없이 즉시 바뀝니다.

수정 환영합니다. 대부분의 언어는 원어민이 쓴 것이 아니며, 짧은 UI 라벨이 바로 그게 드러나는 자리입니다. 언어를 추가하거나 고치는 건 src/TaskbarVolume.App/Strings.cs의 사전 하나입니다 — ["ko"] 블록을 복사하고, 코드를 바꾸고, 오른쪽을 번역하면 됩니다. 문자열은 20개입니다. 영어 원문이 조회 키라서 번역되지 않은 것은 깨지지 않고 영어로 나옵니다.

빌드

dotnet build TaskbarVolume.sln -c Release
src\TaskbarVolume.App\bin\Release\net48\TaskbarVolume.exe

.NET 9 SDK가 필요합니다. 프로젝트는 net48net9.0-windows를 동시 타깃합니다.

라이선스

MIT — LICENSE 참조.


日本語

English · 한국어 · 日本語 · 简体中文

Windows 11 のタスクバーからアプリごとの音量を調整します。アイコンにマウスを乗せるとスライダーが 現れ、その上でスクロールするとそのアプリの音量が変わります — 音量ミキサーを開かずに。

タスクバーアイコンに乗せてスクロールし、そのアプリの音量を変えているところ

できること

  • アイコンに乗せる → サムネイルプレビューの上に音量スライダーが現れます
  • タスクバーアイコンでスクロール → そのアプリの音量が上下します
  • サムネイルプレビューの上でスクロール → 同じように動きます。プレビューを見ている間も使えます
  • Shift を押しながら → より細かく
  • 通知領域アイコンでスクロール → システム全体の音量
  • スライダーのボタンからミュート

explorer.exe への DLL インジェクションなし、レジストリの変更なし、タスクバーの置き換えなし。 インストール作業はありません — 削除すればそれで終わるフォルダー一つです。

設定、通知領域アイコンから

設定

動作要件

  • Windows 11 22H2(ビルド 22621)以降
  • ランタイムのインストール不要。 Windows 11 に既に含まれている .NET Framework 4.8 で動きます。

ダウンロードして好きな場所に展開し、TaskbarVolume.exe を実行するだけです。その 1 ファイルが アプリのすべてで、311 KB。隣に何も置く必要はありません。

初回起動時に Windows が止めます — 「WindowsによってPCが保護されました」。TaskbarVolume は コード署名証明書で署名されておらず、SmartScreen は初めて見る未署名のプログラムなら何であれ そう表示します。このプログラムへの判定ではありません。詳細情報 → 実行を押してください。 それを鵜呑みにしたくなければ、ソースはここにあり、ビルドはコマンド 2 行で、すべてのリリースは 誰かのデスクトップからではなくタグから GitHub Actions がビルドしています。

解決策は署名で、その予定です。オープンソース向けの無料証明書があり、その際に従う署名ポリシーは SIGNING.md に既に書いてあります。プロジェクトに多少の実績ができてから申請するのが 筋だと考えています。

設定は実行ファイルの隣ではなく %APPDATA%\TaskbarVolume\settings.ini に保存されます。「Windows 起動時に実行」をオンにしない限り、レジストリには何も書きません。

Windows 11 は新しい通知アイコンをオーバーフローの山形記号の裏に隠します。表示したままにするには、 タスクバーへドラッグしてください。

サードパーティのタスクバー置き換えソフト(ExplorerPatcher、StartAllBack、Start11)には対応して いません — 検出したら手を引きます。

仕組み

Windows 11 のタスクバーは XAML アイランドなので、Windows 10 のやり方(MSTaskListWClass + IAccessible)ではボタンごとのデータが取れません。UI Automation なら取れます: 各ボタンは Taskbar.TaskListButtonAutomationPeer で、その AutomationId"Appid: <AppUserModelID>" — 安定していて言語に依存しない識別子です。

その識別子をオーディオセッションに結び付けるのが難所です。当たり前のやり方が通用しないからです:

落とし穴 プロセス ID による照合が壊れる理由
Brave / Chrome / Edge オーディオセッションは --utility-sub-type=audio.mojom.AudioService の子プロセスのものであり、ウィンドウを持つプロセスのものでは決してない
Discord などの Electron アプリ オーディオはレンダラーの子から出て、ウィンドウは AppUserModelID を一切宣言しない
Steam ウィンドウは steamwebhelper.exe、オーディオは steam.exe。同じ実行ファイルでもなく、プロセスツリーでもつながっていない
VS Code、Docker、Battle.net ウィンドウに AppUserModelID がない — シェルがスタートメニューのショートカットから導出している

TaskbarVolume は各ボタンを候補実行ファイルの集合(生きているウィンドウ、パス形式の AUMID、.lnk から作った逆引きインデックス)に解決し、実行ファイルのパス、インストールルート、プロセスの祖先、 最後にファイル名の順でセッションを照合します。実行ファイルのパスはセッション識別子の文字列自体から 得られるため、対象プロセスを開く必要が一切ありません — 管理者権限のアプリが通常権限の プロセスから扱える理由です。

残りは DESIGN.md にあります — 何を実測し、何が失敗したかまで。

翻訳

20 言語: English、简体中文、繁體中文、हिन्दी、Español、العربية、Português、Русский、日本語、 Deutsch、Français、한국어、Italiano、Türkçe、Tiếng Việt、Polski、Nederlands、ไทย、Bahasa Indonesia、 Українська。

Windows の表示言語に従い、設定パネルの一番下で選ぶこともできます。再起動なしで即座に切り替わります。

修正を歓迎します。 ほとんどの言語はネイティブスピーカーが書いたものではなく、短い UI ラベルは まさにそれが表れる場所です。言語の追加や修正は src/TaskbarVolume.App/Strings.cs の辞書一つです — ["ko"] のブロックをコピーし、コードを変え、右辺を訳すだけ。文字列は 20 個です。英語の原文が 検索キーなので、訳されていないものは壊れずに英語で表示されます。

ビルド

dotnet build TaskbarVolume.sln -c Release
src\TaskbarVolume.App\bin\Release\net48\TaskbarVolume.exe

.NET 9 SDK が必要です。プロジェクトは net48net9.0-windows のマルチターゲットです。

ライセンス

MIT — LICENSE を参照。


简体中文

English · 한국어 · 日本語 · 简体中文

在 Windows 11 任务栏上调节单个应用的音量。把鼠标移到图标上会出现滑块,在图标上滚动即可改变该应用的 音量 —— 无需打开音量合成器。

把鼠标移到任务栏图标上并滚动来改变该应用音量

它能做什么

  • 鼠标悬停任务栏图标 → 缩略图预览上方出现音量滑块
  • 在任务栏图标上滚动 → 该应用的音量随之升降
  • 在缩略图预览上滚动 → 同样有效,所以你看预览的时候它照样能用
  • 按住 Shift → 更精细的步进
  • 在通知区域图标上滚动 → 系统主音量
  • 用滑块上的按钮静音

不向 explorer.exe 注入 DLL,不改注册表,不替换任务栏。没有安装过程 —— 就是一个删掉即可的文件夹。

设置,从通知区域图标打开

设置

运行要求

  • Windows 11 22H2(版本号 22621)或更新
  • 无需安装运行时。 它运行在 Windows 11 自带的 .NET Framework 4.8 上。

下载后解压到任意位置,运行 TaskbarVolume.exe 即可。这一个文件就是整个应用,311 KB,旁边不 需要放任何东西。

第一次运行时 Windows 会拦下来:“Windows 已保护你的电脑”。TaskbarVolume 没有用代码签名证书签名, 而 SmartScreen 对任何它没见过的未签名程序都会这样提示 —— 这不是针对本程序的判断。点击 更多信息 → 仍要运行即可。如果你不想只听我的说法,源码就在这里,构建只需两条命令,而且每个版本 都是由 GitHub Actions 从标签构建的,而不是从某个人的电脑上传的。

签名才是根治办法,也在计划之中:开源项目可以申请免费证书,届时遵循的签名策略已经写在 SIGNING.md 里了。等这个项目积累一些使用记录之后再申请更合适。

设置保存在 %APPDATA%\TaskbarVolume\settings.ini,而不是可执行文件旁边。除非你开启「开机时启动」, 否则不会向注册表写入任何内容。

Windows 11 会把新的通知图标藏在溢出箭头后面。想让它一直显示,请把它拖到任务栏上。

不支持第三方任务栏替换程序(ExplorerPatcher、StartAllBack、Start11)—— 检测到就会主动避让。

工作原理

Windows 11 的任务栏是一个 XAML island,因此 Windows 10 的做法(MSTaskListWClass + IAccessible) 再也拿不到每个按钮的数据。UI Automation 可以:每个按钮都是 Taskbar.TaskListButtonAutomationPeer,其 AutomationId"Appid: <AppUserModelID>" —— 一个稳定且与语言无关的标识。

把这个标识连到音频会话上才是难点,因为显而易见的做法行不通:

陷阱 为什么按进程 ID 匹配会失败
Brave / Chrome / Edge 音频会话属于 --utility-sub-type=audio.mojom.AudioService 子进程,从来不属于拥有窗口的那个进程
Discord 等 Electron 应用 音频来自渲染器子进程,而窗口根本不声明 AppUserModelID
Steam 窗口是 steamwebhelper.exe,音频是 steam.exe。不是同一个可执行文件,进程树上也没有关系
VS Code、Docker、Battle.net 窗口上没有 AppUserModelID —— 由外壳从开始菜单快捷方式推导出来

TaskbarVolume 会把每个按钮解析成一组候选可执行文件(活动窗口、路径形式的 AUMID,以及由 .lnk 构建的反向索引),然后依次按可执行文件路径、安装根目录、进程祖先,最后按文件名来匹配会话。可执行 文件路径直接来自会话标识字符串本身,因此从不需要打开目标进程 —— 这也是以普通权限运行时仍能 处理管理员权限应用的原因。

其余内容在 DESIGN.md,包括测过什么、什么失败了。

翻译

二十种语言:English、简体中文、繁體中文、हिन्दी、Español、العربية、Português、Русский、日本語、 Deutsch、Français、한국어、Italiano、Türkçe、Tiếng Việt、Polski、Nederlands、ไทย、Bahasa Indonesia、 Українська。

它跟随 Windows 的显示语言,也可以在设置面板底部选择,改动立即生效,无需重启。

欢迎指正。 大多数语言并非由母语者撰写,而简短的 UI 标签恰恰是最容易暴露这一点的地方。新增或 修正一种语言,只是 src/TaskbarVolume.App/Strings.cs 里的一个 字典 —— 复制 ["ko"] 那一段,改掉语言代码,把右边翻译过来即可。一共二十条字符串。英文原文就是 查找键,所以未翻译的内容只会显示为英文而不会出错。

构建

dotnet build TaskbarVolume.sln -c Release
src\TaskbarVolume.App\bin\Release\net48\TaskbarVolume.exe

需要 .NET 9 SDK;项目同时面向 net48net9.0-windows

许可证

MIT —— 参见 LICENSE

About

Per-application volume from the Windows 11 taskbar - hover an icon, scroll to adjust

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages