Chromium Code Reviews| Index: chrome/browser/ui/views/frame/browser_frame.cc | 
| diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc | 
| index 23b200538718ae638674ca2d4b494ac2b52873aa..4c7eebcd6295005d09318a9fae38e19c0f341cd0 100644 | 
| --- a/chrome/browser/ui/views/frame/browser_frame.cc | 
| +++ b/chrome/browser/ui/views/frame/browser_frame.cc | 
| @@ -5,6 +5,7 @@ | 
| #include "chrome/browser/ui/views/frame/browser_frame.h" | 
| #include "ash/shell.h" | 
| +#include "base/command_line.h" | 
| #include "base/i18n/rtl.h" | 
| #include "chrome/browser/app_mode/app_mode_utils.h" | 
| #include "chrome/browser/themes/theme_service.h" | 
| @@ -19,6 +20,7 @@ | 
| #include "chrome/browser/ui/views/frame/native_browser_frame.h" | 
| #include "chrome/browser/ui/views/frame/system_menu_model_builder.h" | 
| #include "chrome/browser/ui/views/frame/top_container_view.h" | 
| +#include "chrome/browser/web_applications/web_app.h" | 
| #include "chrome/common/chrome_switches.h" | 
| #include "ui/aura/root_window.h" | 
| #include "ui/aura/window.h" | 
| @@ -32,6 +34,10 @@ | 
| #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h" | 
| #endif | 
| +#if defined(OS_LINUX) | 
| +#include "chrome/browser/shell_integration_linux.h" | 
| +#endif | 
| + | 
| #if defined(USE_ASH) | 
| #include "chrome/browser/ui/ash/ash_init.h" | 
| #endif | 
| @@ -74,6 +80,30 @@ void BrowserFrame::InitBrowserFrame() { | 
| params.context = ash::Shell::GetAllRootWindows()[0]; | 
| } | 
| #endif | 
| + | 
| +#if defined(OS_LINUX) | 
| 
 
sky
2013/08/29 15:33:47
Can this be moved to BrowserDesktopRootWindowHostX
 
Matt Giuca
2013/08/30 02:47:33
Good point. I've tried this and it worked OK for b
 
 | 
| + // Set up a custom WM_CLASS for some sorts of window types. This allows | 
| + // task switchers in X11 environments to distinguish between main browser | 
| + // windows and e.g app windows. | 
| + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 
| + const Browser& browser = *browser_view_->browser(); | 
| + params.wm_class_class = ShellIntegrationLinux::GetProgramClassName(); | 
| + params.wm_class_name = params.wm_class_class; | 
| + if (browser.is_app() && !browser.is_devtools()) { | 
| + // This window is a hosted app or v1 packaged app. | 
| + // NOTE: v2 packaged app windows are created by NativeAppWindowViews. | 
| + params.wm_class_name = web_app::GetWMClassFromAppName(browser.app_name()); | 
| + } else if (command_line.HasSwitch(switches::kUserDataDir)) { | 
| + // Set the class name to e.g. "Chrome (/tmp/my-user-data)". The | 
| + // class name will show up in the alt-tab list in gnome-shell if | 
| + // you're running a binary that doesn't have a matching .desktop | 
| + // file. | 
| + const std::string user_data_dir = | 
| + command_line.GetSwitchValueNative(switches::kUserDataDir); | 
| + params.wm_class_name += " (" + user_data_dir + ")"; | 
| + } | 
| +#endif // defined(OS_LINUX) | 
| + | 
| Init(params); | 
| if (!native_browser_frame_->UsesNativeSystemMenu()) { |