自分用のメモ。
MacでElectronしていたら、どういうわけかクリップボードがアプリ内で効かない。Qtでも似たようなことが起きていたので、両方に共通するChromiumランタイムが原因かと思いきや、以下によるとどうやらMacOS 側の問題であるらしい。
- https://github.com/atom/electron/issues/916
- https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard#mac-os-x-pasteboard-access-under-tmux-and-screen
開発中しか影響しないらしいとあるけど、うっとおしいことこの上ないので修正したい。けどパッチとかかったるいことしたくない。
すると、Electron - Enable copy and pasteでElectronに明示的に Edit メニューを追加する方法があったので、これで回避することにした。そもそもElectronウィンドウにEdit メニューがないのはいろいろ気持ち悪いので。
以下は、Electron - Enable copy and pasteの方法そのまんまです。ごめんなさいごめんなさい。
var app = require("app");
var BrowserWindow = require("browser-window");
var Menu = require("menu");
var mainWindow = null;
app.on("window-all-closed", function(){
app.quit();
});
app.on("ready", function () {
mainWindow = new BrowserWindow({
width: 980,
height: 650,
"min-width": 980,
"min-height": 650
});
mainWindow.loadUrl("file://" + __dirname + "/index.html");
mainWindow.on("closed", function () {
mainWindow = null;
});
// Create the Application's main menu
var template = [{
label: "Application",
submenu: [
{ label: "About Application", selector: "orderFrontStandardAboutPanel:" },
{ type: "separator" },
{ label: "Quit", accelerator: "Command+Q", click: function() { app.quit(); }}
]}, {
label: "Edit",
submenu: [
{ label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
]}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
});