diff options
author | Pascal Ronecker | 2018-06-29 09:34:38 +0200 |
---|---|---|
committer | Pascal Ronecker | 2018-06-29 09:34:38 +0200 |
commit | 24b1e53eae83f6989feedc0c6f3ea56cb06fd562 (patch) | |
tree | 059b553a173986a89c72fbd4c0098df8205a8699 | |
parent | a5962f1b3f3f142a9b0fd2dca1439094565ca48a (diff) | |
download | aur-24b1e53eae83f6989feedc0c6f3ea56cb06fd562.tar.gz |
trayicon merged upstream
-rw-r--r-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | wrappedWindow.js | 195 |
3 files changed, 4 insertions, 205 deletions
@@ -14,13 +14,11 @@ pkgbase = google-chat-linux-git source = google-chat-linux.sh source = package.json source = chat-favicon-new-non-notif-256dp.png - source = wrappedWindow.js sha256sums = SKIP sha256sums = e65b8b9b0556dded2521aa12b6d8e87c59f08a79b9e8cbee4273a7a659f72a6a sha256sums = d23052d27c870090987d1844e7c82bc42b878afa42c8af9a363d8414560ea34d sha256sums = 25b73ffc5ea40317faffaa277243617b1a2daed5bec7ddfb39e31274c5a88a79 sha256sums = 807fa77054d1b9ebeccaabfe5200e9e52c2dc603bdba3647c2da7c0cc34c2a83 - sha256sums = 3fa6a230ace92e1d61a6a0e18e33dc26f8b5f45fcc75598bc836b68e11ddb836 pkgname = google-chat-linux-git @@ -1,7 +1,7 @@ # Maintainer: Squalou <squalou.jenkins [at] gmail [dot] com> pkgname=google-chat-linux-git -pkgver=r15.2d1d3c9 -pkgrel=3 +pkgver=r17.2e9ba08 +pkgrel=1 pkgdesc="Unofficial electron-based desktop client for Google Chat" arch=('x86_64' 'i686') url="https://github.com/robyf/google-chat-linux" @@ -15,15 +15,13 @@ source=("${pkgname%-git}::git+${url}#branch=master" "${pkgname%-git}.desktop" "${pkgname%-git}.sh" "package.json" - "chat-favicon-new-non-notif-256dp.png" - "wrappedWindow.js") + "chat-favicon-new-non-notif-256dp.png") sha256sums=('SKIP' 'e65b8b9b0556dded2521aa12b6d8e87c59f08a79b9e8cbee4273a7a659f72a6a' 'd23052d27c870090987d1844e7c82bc42b878afa42c8af9a363d8414560ea34d' '25b73ffc5ea40317faffaa277243617b1a2daed5bec7ddfb39e31274c5a88a79' - '807fa77054d1b9ebeccaabfe5200e9e52c2dc603bdba3647c2da7c0cc34c2a83' - '3fa6a230ace92e1d61a6a0e18e33dc26f8b5f45fcc75598bc836b68e11ddb836') + '807fa77054d1b9ebeccaabfe5200e9e52c2dc603bdba3647c2da7c0cc34c2a83') pkgver() { cd "$srcdir/${pkgname%-git}" @@ -36,7 +34,6 @@ pkgver() { build() { cp "$srcdir/package.json" "$srcdir/${pkgname%-git}/" cp "$srcdir/chat-favicon-new-non-notif-256dp.png" "$srcdir/${pkgname%-git}/assets/icon/" - cp "$srcdir/wrappedWindow.js" "$srcdir/${pkgname%-git}/" cd "$srcdir/${pkgname%-git}" npm install --production=false } @@ -54,4 +51,3 @@ package() { mv "${srcdir}/${pkgname%-git}" "${pkgdir}/usr/share/" } -# vim:set ts=2 sw=2 et: diff --git a/wrappedWindow.js b/wrappedWindow.js deleted file mode 100644 index 323621034697..000000000000 --- a/wrappedWindow.js +++ /dev/null @@ -1,195 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var crypto = require('crypto'); -const electron = require('electron'); -var app = electron.app; // Module to control application life. -var BrowserWindow = electron.BrowserWindow; // Module to create native browser window. -var ipc = electron.ipcMain; -var shell = electron.shell; -var Tray = electron.Tray; -var Menu = electron.Menu; -var localShortcut = require('electron-localshortcut'); // Module to register keyboard shortcuts - -var appIcon = undefined; - -const contextMenu = require('electron-context-menu'); - -contextMenu({ showInspectElement: false }); - -const ICON_NO_NEW_MSG = path.join(__dirname, 'assets/icon/chat-favicon-no-new-256dp.png'); -const ICON_NEW_NON_NOTIF_MSG = path.join(__dirname, 'assets/icon/chat-favicon-new-non-notif-256dp.png'); -const ICON_NEW_NOTIF_MSG = path.join(__dirname, 'assets/icon/chat-favicon-new-notif-256dp.png'); -const ICON_OFFLINE_MSG = path.join(__dirname, 'assets/icon/chat-favicon-offline-256dp.png'); - -module.exports = function createWrappedWindow(opts) { - // Thanks imskull! (https://github.com/atom/electron/issues/526#issuecomment-132942967) - // Try to load saved window bounds - var initPath = path.join(app.getPath("userData"), 'init.json'); - var data; - try { - data = JSON.parse(fs.readFileSync(initPath, 'utf8')); - } - catch(e) { } - - var sha = crypto.createHash('sha256'); - sha.update(opts.name); - var hash = sha.digest('hex'); - - const iconPath = path.join(__dirname, 'assets/icon/icon.png'); - - // Create the browser window. - var windowOpts = (data && data[hash] && data[hash].bounds) ? data[hash].bounds : { width: 800, height: 600 }; - windowOpts['auto-hide-menu-bar'] = true; - windowOpts['web-preferences'] = { 'node-integration': false }; - windowOpts['icon'] = iconPath; - var window = new BrowserWindow(windowOpts); - window.setMenu(null); - //window.webContents.openDevTools(); - - if (data && data[hash] && data[hash].shouldBeMaximized) { - window.maximize(); - } - - // and load the url ;) - window.loadURL(opts.url); - - // Register common navigation shortcuts - function goBack() { - if (window.webContents.canGoBack()) { - window.webContents.goBack(); - } - } - function goForward() { - if (window.webContents.canGoForward()) { - window.webContents.goForward(); - } - } - localShortcut.register(window, 'Alt+Left', goBack); - localShortcut.register(window, 'Alt+Right', goForward); - localShortcut.register(window, 'F5', window.webContents.reload); - - // Open EXTERNAL LINKS in the default browser - // Example: electron-wrap messenger.com - // Links on messenger.com that link to messenger.com will be followed in-app - // Links on messenger.com that link elsewhere (e.g., imgur.com) will be opened externally - - // http://stackoverflow.com/a/23945027/5136076 - function extractDomain(url) { - var domain; - //find & remove protocol (http, ftp, etc.) and get domain - if (url.indexOf("://") > -1) { - domain = url.split('/')[2]; - } - else { - domain = url.split('/')[0]; - } - - //find & remove port number - domain = domain.split(':')[0]; - - return domain; - } - var handleRedirect = function(e, url) { - if (!opts.openLocally && extractDomain(url) !== extractDomain(window.webContents.getURL()) && extractDomain(url) !== "accounts.google.com" && extractDomain(url) !== "accounts.youtube.com" && extractDomain(url) !== "support.google.com" && extractDomain(url) !== "chat.google.com") { - require('electron').shell.openExternal(url); - e.preventDefault(); -/* - } else { - var nested = createWrappedWindow({ - name: opts.name, - url: url, - openLocally: opts.openLocally - }); - nested.on('closed', function() { - nested = null; - }); -*/ - } - }; - - window.webContents.on('will-navigate', handleRedirect); - window.webContents.on('new-window', handleRedirect); - - // Save the window bounds on close - window.on('close', function() { - var maximized = window.isMaximized(); - var newData = data || {}; - newData[hash] = { bounds: window.getBounds() }; - if (window.isMaximized()) { - newData[hash].shouldBeMaximized = true; - } - fs.writeFileSync(initPath, JSON.stringify(newData)); - }); - - window.webContents.on('dom-ready', () => { - const scriptPath = path.join('file://', __dirname, 'node_modules/jquery/dist/jquery.min.js'); - window.webContents.executeJavaScript('var ipc = require(\'electron\').ipcRenderer; document.addEventListener("click", (evt) => { if (evt.target && evt.target.localName == "a" && evt.target.target == "_blank" && evt.target.href.startsWith("http")) { ipc.send("open-link", evt.target.href); evt.preventDefault(); } }, true);'); - window.webContents.executeJavaScript('var fi = document.querySelector("link#favicon256"); ipc.send("favicon-changed", fi.href); var callback = function(mutationList) { ipc.send("favicon-changed", fi.href); }; var observer = new MutationObserver(callback); observer.observe(fi, { attributes: true });'); - }); - - appIcon = new Tray(ICON_OFFLINE_MSG); - const contextMenu = Menu.buildFromTemplate([ - { - label: 'Show', click: function () { - window.show() - } - },{ - label: 'Hide', click: function () { - window.minimize() - } - },{ - label: 'Quit', click: function () { - app.isQuiting = true - app.quit() - } - } - ]); - appIcon.setContextMenu(contextMenu); - - appIcon.on('click', function(e){ - if (window.isMinimized()){ - window.show(); - }else{ - window.focus(); - } - }); - - return window; -}; - - - -ipc.on('open-link', (evt, href) => { - shell.openExternal(href); -}); - -function iconForType(itype) { - if (itype == "NORMAL") { - return ICON_NO_NEW_MSG; - }else if (itype == "UNREAD") { - return ICON_NEW_NON_NOTIF_MSG; - }else if (itype == "ATTENTION") { - return ICON_NEW_NOTIF_MSG; - } - return ICON_OFFLINE_MSG; -} - -ipc.on('favicon-changed', (evt, href) => { - /* console.log("Favicon changed: ", href); */ - - var itype = ""; - if (href.match(/chat-favicon-no-new/)) { - itype = "NORMAL"; - }else if (href.match(/chat-favicon-new-non-notif/)) { - itype = "UNREAD"; - }else if (href.match(/chat-favicon-new-notif/)) { - itype = "ATTENTION"; - }else if (href.match(/^data:image\/png;base64,iVBOR.+/)) { - itype = "OFFLINE"; - } - - appIcon.setImage(iconForType(itype)); - -}); |