Бескаркасное окно с элементами управления в electron (Windows)

Я хочу, чтобы мое приложение не имело заголовка, но по-прежнему было закрытым, перетаскиваемым, минимизируемым, максимизируемым и изменяемым, как обычное окно. Я могу сделать это в OS X, так как есть titleBarStyle под названием hidden-inset что я могу использовать, но, к сожалению, он недоступен для Windows, которая является платформой, для которой я разрабатываю. Как я могу сделать что-то подобное в Windows?

вот пример о чем я говорю.

2 ответов


предполагая, что вы не хотите window chrome, вы можете сделать это, удалив кадр вокруг Electron и заполнив остальные html/css/js. Я написал статью, которая достигает того, что вы ищете в моем блоге здесь: http://www.mylifeforthecode.com/making-the-electron-shell-as-pretty-as-the-visual-studio-shell/ - ... Код для начала работы также размещен здесь:https://github.com/srakowski/ElectronLikeVS

подводя итог, вам нужно пройти frame: false при создании BrowserWindow:

mainWindow = new BrowserWindow({width: 800, height: 600, frame: false});

затем создайте и добавьте кнопки управления для строки заголовка:

 <div id="title-bar">
      <div id="title">My Life For The Code</div>
      <div id="title-bar-btns">
           <button id="min-btn">-</button>
           <button id="max-btn">+</button>
           <button id="close-btn">x</button>
      </div>
 </div>

Bind в функциях max / min / close в js:

(function () {

      var remote = require('remote'); 
      var BrowserWindow = remote.require('browser-window'); 

     function init() { 
          document.getElementById("min-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow();
               window.minimize(); 
          });

          document.getElementById("max-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow(); 
               window.maximize(); 
          });

          document.getElementById("close-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow();
               window.close();
          }); 
     }; 

     document.onreadystatechange = function () {
          if (document.readyState == "complete") {
               init(); 
          }
     };

})();

стиль окна может быть сложным, но использование ключа для использования специальных свойств из webkit. Вот некоторые минимальные CSS:

body {
 padding: 0px;
 margin: 0px; 
}

#title-bar {
 -webkit-app-region: drag;
 height: 24px; 
 background-color: darkviolet;
 padding: none;
 margin: 0px; 
}

#title {
 position: fixed;
 top: 0px;
 left: 6px; 
}

#title-bar-btns {
 -webkit-app-region: no-drag;
 position: fixed;
 top: 0px;
 right: 6px;
}

обратите внимание, что это важно:

-webkit-app-region: drag;
-webkit-app-region: no-drag;

- webkit-app-region: перетащите на "заголовок" область сделает это так что вы можете перетащить его вокруг, как это принято в Windows. Без перетаскивания применяется к кнопкам, так что они не вызывают перетаскивания.


Я был вдохновлен статьей Шона и приложениями, такими как Hyper Terminal, чтобы выяснить, как точно воспроизвести стиль Windows 10 в виде бесшовной строки заголовка, и написал в этом уроке.

он включает исправление проблемы изменения размера, упомянутой Шоном, а также переключается между кнопками максимизации и восстановления, даже если, например, окно максимизируется путем перетаскивания его в верхнюю часть экран.

краткий справочник

  • высота строки заголовка:32px
  • заголовка размер шрифта заголовка: 12px
  • панель управления кнопки: 46px широкий, 32px высокий
  • кнопка управления окна активы из шрифта Segoe MDL2 Assets, площадь: 10px
    • минимизировать: &#xE921;
    • максимально: &#xE922;
    • восстановить: &#xE923;
    • закрыть: &#xE8BB;
  • закрыть цвет фона кнопки
    • нормальный: #E81123
    • нажатии (:active): #F1707A