Chromiumアプリモードでタイトルバーまで消し位置サイズもAHK制御

Chromiumの--appとAHKで枠なし制御
  • URLをコピーしました!

Chromium アプリモード(コマンドラインの --app=)を使うと、アドレスバーやタブなどブラウザ UI を抑えたウィンドウで URL を開けます。
ただし Windows では、タイトルバーや最小化・最大化・閉じるボタンといった OS 側の枠が残ることが多く、位置やサイズの精密制御もブラウザ単体では足りません。

本記事では、Windows 前提で --app= と --start-fullscreen の違い、window.resizeTo() などのブラウザ制限、そして AutoHotkey(AHK)の WinSetStyle / WinMove で枠を消しつつ配置する方法を実務手順としてまとめます。
最終的な構成は「Chromium + --app + AutoHotkey」です。

ポイント

--app= はブラウザのツールバー類を抑えます。
タイトルバーまで消して位置・サイズを固定したい場合は、Windows 側で AHK を使うのが現実的です。
ページ内の通常 JavaScript から AHK を直接起動することはできません。

目次

Chromiumアプリモード(–app=)で消えるUI

Chromium / Chrome には、指定 URL をアプリケーションモードで起動するスイッチがあります。
コマンドラインスイッチ一覧では、次のように説明されています。

–app — Specifies that the associated value should be launched in “application” mode.

引用:List of Chromium Command Line Switches – Peter Beverloo(Chromium ソース由来のスイッチ一覧)

実務上の体感としては、次のようなブラウザ UI が非表示(または最小化)になります。

  • アドレスバー(オムニボックス)
  • タブバー
  • ブックマークバーやメニューバーなどのブラウザクロム

Windows での起動例は次のとおりです。

パスは環境に合わせて読み替えてください。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --app=https://example.com/

# rem Chromium 本体を使う場合の例
"C:\Program Files\Chromium\Application\chrome.exe" --app=https://example.com/

--app= と URL のあいだにスペースを入れず、等号でつなぐのが安全です。
初期サイズだけ決めたい場合は、同じくスイッチ一覧にある --window-size=幅,高さ を併用できます。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --app=https://example.com/ --window-size=1280,720

アプリモードは「専用ブラウザウィンドウで Web を見せる」用途向けです。
キオスク端末や、社内ダッシュボードをデスクトップアプリ風に見せたいときに向きます。

–app=と–start-fullscreenの違い

よく混同されるのが --start-fullscreen です。
スイッチ一覧では、起動直後に F11 を押したようなフルスクリーン開始だと説明されています。

–start-fullscreen — Specifies if the browser should start in fullscreen mode, like if the user had pressed F11 right after startup.

引用:List of Chromium Command Line Switches – Peter Beverloo

用途が違うため、比較表で整理します。

手段主な効果向く用途注意点
--app=URLアプリモード。ブラウザツールバー類を抑えるWeb をデスクトップアプリ風に表示Windows では OS のタイトルバー等が残りやすい
--start-fullscreen起動時フルスクリーン(F11相当)画面いっぱいに見せたい一時表示ウィンドウとして任意座標に置く用途ではない
--kioskキオスク寄りの強い全画面運用専用端末・展示用終了や操作制限が強く、通常の枠なし配置とは別物
AHK の枠削除+移動タイトルバー削除と座標・サイズ制御枠なし+任意配置が必要な Windows 運用外部ツール導入が必要

--app= と --start-fullscreen を同時指定することもできますが、「任意の位置・サイズの枠なしウィンドウ」という目的には直結しません。
画面全体を占有したいのか、ブラウザ UI だけ消してウィンドウ操作は残したいのかを先に決めると迷いにくいです。

–app=だけではタイトルバーが残る理由

--app= が抑えるのは、主に Chromium 自身が描画するブラウザ UI です。
一方で、Windows のタイトルバーや最小化・最大化・閉じるボタンは、OS のウィンドウ枠(ウィンドウスタイル)側の要素です。
そのため「アドレスバーは消えたのに、上の枠とボタンは残る」状態になりやすいです。
ここが Chromium フラグ単体解説と実務の差です。
ブラウザ UI を消すことと、OS の枠を消すことは別レイヤーの作業だと切り分けると設計が安定します。

できること / できないこと(ここまで)

できること:--app= でアドレスバー・タブなどを抑えた起動。
できないこと(フラグだけ):タイトルバーやウィンドウボタンまで確実に消すこと、任意座標への精密配置を OS 枠なしで完成させること。

Windowsでタイトルバーを消すならAutoHotkey

Windows では、既存ウィンドウのスタイルを後から書き換えられる AutoHotkey が手堅いです。
公式ドキュメントでも、アクティブウィンドウのタイトルバー(WS_CAPTION)を外す例が示されています。

WinSetStyle “-0xC00000”, “A” — Removes the active window’s title bar (WS_CAPTION).

引用:WinSetStyle / WinSetExStyle – AutoHotkey v2

位置とサイズは WinMove で変更します。

WinMove — Changes the position and/or size of the specified window.

引用:WinMove – AutoHotkey v2

以下は AutoHotkey v2 の実務例です。
Chrome のアプリモードウィンドウを待ち、タイトルバーを外してから左上へ配置します。

; chrome-app-borderless.ahk (AutoHotkey v2)
#Requires AutoHotkey v2.0
#SingleInstance Force

chrome := "C:\Program Files\Google\Chrome\Application\chrome.exe"
url := "https://example.com/"
targetTitle := "example.com"  ; 実際のウィンドウタイトルに合わせて調整

; アプリモードで起動
Run Format('"{1}" --app={2}', chrome, url)

; 対象ウィンドウ待ち(タイトル or 実行ファイル名で絞る)
if !WinWait(targetTitle " ahk_exe chrome.exe", , 15) {
    MsgBox "Chromium/Chrome ウィンドウが見つかりませんでした。"
    ExitApp
}

win := WinExist(targetTitle " ahk_exe chrome.exe")

; タイトルバー(WS_CAPTION = 0xC00000)を削除
WinSetStyle "-0xC00000", "ahk_id " win

; 必要なら太いサイズ変更枠も外す(WS_THICKFRAME = 0x40000)
; WinSetStyle "-0x40000", "ahk_id " win

; 位置とサイズを指定(X, Y, Width, Height)
WinMove 100, 80, 1280, 720, "ahk_id " win

; 見た目の更新を促す
WinRedraw "ahk_id " win
WinActivate "ahk_id " win

ポイントは次の3つです。

  1. 先に --app= でブラウザ UI を抑える
  2. WinWait で対象ウィンドウを特定する
  3. WinSetStyle で枠を消し、WinMove で配置する

ウィンドウ特定が不安定なときは、Window Spy で実際のタイトルや ahk_class Chrome_WidgetWin_1 を確認してください。
同じ Chrome プロセスが複数ある場合は、専用の --user-data-dir= を分けて起動すると衝突を減らせます。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="%TEMP%\chrome-app-dashboard" --app=https://example.com/

起動を1本化するバッチ例

AHK スクリプトをダブルクリック運用でも構いません。
バッチから呼ぶと、現場配布がしやすいです。

@echo off
start "" "C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe" "C:\tools\chrome-app-borderless.ahk"

AHK v1 を使う場合の同等操作は WinSet, Style, -0xC00000, A と WinMove です。
新規に書くなら v2 を推奨します。

ブラウザJSではできないこと

「ページの JavaScript だけでウィンドウ枠を消して好きな座標へ移せないか」という発想は自然ですが、現代ブラウザでは制限が強いです。

window.resizeTo / window.moveTo の制限

MDN では、作成経緯やタブ構成によって移動・リサイズが拒否されると明記されています。

It’s not possible to resize a window or tab that wasn’t created by window.open(). It’s also not possible to resize when the window has multiple tabs.

引用:Window: resizeTo() method – MDN

You can’t move a window or tab that wasn’t created by Window.open(). You can’t move a window or tab when it’s in a window with more than one tab.

引用:Window: moveTo() method – MDN(Firefox の注記として記載)

つまり、アドレスバーから開いた通常タブや、ユーザー操作以外の文脈では、期待どおり動かないことが多いです。
仮にサイズ変更できても、タイトルバー削除のような OS 枠制御は Web API の範囲外です。

ページJSからAHKや外部プログラムは直接呼べない

ブラウザで読み込んだ通常の JavaScript は、サンドボックス内で動きます。
そのため、ページスクリプトから AutoHotkey や任意の .exe を直接起動することはできません。
これは不具合ではなく、悪意あるサイトがローカル実行を誘発しないためのセキュリティ境界です。

やりたいことページ内の通常JS現実的な手段
アドレスバー・タブを消す不可(起動フラグ側)--app=
タイトルバー・ボタンを消す不可AHK の WinSetStyle
位置・サイズを安定制御制限が大きく不安定AHK の WinMove や起動時フラグ
AHK / 外部exe を起動不可OS 側スクリプト、またはローカルサーバー経由

Node.js/Express橋渡しは選択肢だが必須ではない

どうしても「Web UI のボタンから枠制御をトリガーしたい」場合は、ローカルに Node.js / Express などの小さな HTTP サーバーを置き、サーバー側から AHK を実行する構成が考えられます。
流れは「ブラウザ → localhost API → サーバープロセス → AHK」です。
ただし次のコストが乗ります。

  • Node.js ランタイムと常駐プロセスの導入
  • localhost のみ許可する認証・ポート管理
  • 誤って外部公開しない運用設計

単に「起動時に枠なし&指定座標で出す」だけなら、AHK スクリプトを直接実行する方が単純で障害点も少ないです。
本記事の本筋は、導入コストの低い Chromium + --app + AutoHotkey 直結です。

最終構成:Chromium + –app + AutoHotkey

Windows でブラウザ UI を極力消しつつ位置・サイズまで制御するなら、次の分担が明快です。

  1. Chromium / Chrome を --app=URL で起動し、アドレスバー・タブなどを抑える
  2. 必要なら --window-size や専用 --user-data-dir を付ける
  3. AHK で対象ウィンドウを待ち、WinSetStyle "-0xC00000" でタイトルバーを外す
  4. WinMove で X / Y / 幅 / 高さを固定する

フルスクリーンやキオスクが目的なら --start-fullscreen / --kiosk を検討します。
任意座標の枠なし表示が目的なら、それらではなく AHK 側の制御を主軸にしてください。
ページ内 JS の resizeTo / moveTo や外部実行は、期待する完成形の主手段にはしません。

Chrome と Chromium のどちらでも使えますか?

はい。

--app= は共通のコマンドラインスイッチとして使えます。
実行ファイルパスとウィンドウタイトルの指定だけ環境に合わせてください。

タイトルバーを消したあと閉じられなくなりませんか?

閉じるボタンも消えるため、終了手段を別途用意してください。
AHK ホットキーで WinClose する、タスクバーから閉じる、専用終了ボタンをページ側に置く、などが一般的です。

–app= だけで十分なケースはありますか?

あります。
アドレスバーやタブが隠せればよく、OS のタイトルバーが残っても問題ない用途なら --app= 単独で足りることが多いです。

まとめ

Chromium アプリモードの --app= は、アドレスバーやタブなどブラウザ UI を抑える起動手段です。
--start-fullscreen は F11 相当の全画面開始であり、枠なし任意配置の代替ではありません。

Windows でタイトルバーまで消し、位置とサイズまで固定するなら AutoHotkey の WinSetStyle と WinMove が実務的です。

ブラウザ上の通常 JavaScript は resizeTo / moveTo に制限があり、AHK などの外部プログラムも直接実行できません。

まずは Chromium + --app + AutoHotkey の直結構成で要件を満たせるか確認し、どうしても Web UI から制御したいときだけ Node.js 橋渡しを検討してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次