mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2025-08-03 19:41:28 +02:00
Electron 15, single-instance-lock and setting to disable hardwareMediaKeyHandling (#134)
* Update to Electron 15 and add Flatpak to README (#131) * Update functional * Change to 15 * Replace window.hide, window.restart with counterparts * Fix openexternal by doing default JS * Change mouse to pointer for <a> elements * turn mouse to pointer for exit button * Fix deprecation of Audio for AudioVideo * Made a small mistake * Add Flatpak to readme * 3.0.0 prep * Added setting to disable multiple tidal-hifi windows (defaults to true) fixes #121 * Added setting to disable HardwareMediaKeyHandling (defaults to false) fixes #133 Co-authored-by: Marie <marie@kaifa.ch>
This commit is contained in:
@@ -9,12 +9,15 @@ let trayIcon,
|
||||
api,
|
||||
port,
|
||||
menuBar,
|
||||
mutedArtists;
|
||||
mutedArtists,
|
||||
singleInstance,
|
||||
disableHardwareMediaKeys;
|
||||
|
||||
const { store, settings } = require("./../../scripts/settings");
|
||||
const { ipcRenderer } = require("electron");
|
||||
const globalEvents = require("./../../constants/globalEvents");
|
||||
|
||||
const remote = require("@electron/remote");
|
||||
const { app } = remote;
|
||||
/**
|
||||
* Sync the UI forms with the current settings
|
||||
*/
|
||||
@@ -31,31 +34,32 @@ function refreshSettings() {
|
||||
minimizeOnClose.checked = store.get(settings.minimizeOnClose);
|
||||
muteArtists.checked = store.get(settings.muteArtists);
|
||||
mutedArtists.value = store.get(settings.mutedArtists).join("\n");
|
||||
singleInstance.checked = store.get(settings.singleInstance);
|
||||
disableHardwareMediaKeys.checked = store.get(settings.disableHardwareMediaKeys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Open an url in the default browsers
|
||||
*/
|
||||
window.openExternal = function (url) {
|
||||
function openExternal(url) {
|
||||
const { shell } = require("electron");
|
||||
shell.openExternal(url);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* hide the settings window
|
||||
*/
|
||||
window.hide = function () {
|
||||
function hide() {
|
||||
ipcRenderer.send(globalEvents.hideSettings);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Restart tidal-hifi after changes
|
||||
*/
|
||||
window.restart = function () {
|
||||
const remote = require("electron").remote;
|
||||
remote.app.relaunch();
|
||||
remote.app.exit(0);
|
||||
};
|
||||
function restart() {
|
||||
app.relaunch();
|
||||
app.quit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind UI components to functions after DOMContentLoaded
|
||||
@@ -65,8 +69,16 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
document.getElementById("close").addEventListener("click", hide);
|
||||
document.getElementById("restart").addEventListener("click", restart);
|
||||
document.querySelectorAll("#openExternal").forEach((elem) =>
|
||||
elem.addEventListener("click", function (event) {
|
||||
openExternal(event.target.getAttribute("data-url"));
|
||||
})
|
||||
);
|
||||
|
||||
function addInputListener(source, key) {
|
||||
source.addEventListener("input", function (event, data) {
|
||||
source.addEventListener("input", function (_event, _data) {
|
||||
if (this.value === "on") {
|
||||
store.set(key, source.checked);
|
||||
} else {
|
||||
@@ -77,7 +89,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
}
|
||||
|
||||
function addTextAreaListener(source, key) {
|
||||
source.addEventListener("input", function (event, data) {
|
||||
source.addEventListener("input", function (_event, _data) {
|
||||
store.set(key, source.value.split("\n"));
|
||||
ipcRenderer.send(globalEvents.storeChanged);
|
||||
});
|
||||
@@ -103,6 +115,8 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
enableDiscord = get("enableDiscord");
|
||||
muteArtists = get("muteArtists");
|
||||
mutedArtists = get("mutedArtists");
|
||||
singleInstance = get("singleInstance");
|
||||
disableHardwareMediaKeys = get("disableHardwareMediaKeys");
|
||||
|
||||
refreshSettings();
|
||||
|
||||
@@ -118,4 +132,6 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
addInputListener(minimizeOnClose, settings.minimizeOnClose);
|
||||
addInputListener(muteArtists, settings.muteArtists);
|
||||
addTextAreaListener(mutedArtists, settings.mutedArtists);
|
||||
addInputListener(singleInstance, settings.singleInstance);
|
||||
addInputListener(disableHardwareMediaKeys, settings.disableHardwareMediaKeys);
|
||||
});
|
||||
|
@@ -11,7 +11,7 @@
|
||||
<body>
|
||||
<div class="header">
|
||||
<h1 class="title">Settings</h1>
|
||||
<a href="javascript:hide();" class="exitWindow">
|
||||
<a id="close" style="cursor: pointer;" class="exitWindow">
|
||||
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="18px" height="18px" viewBox="0 0 348.333 348.334">
|
||||
<g>
|
||||
@@ -105,13 +105,34 @@
|
||||
<div class="option">
|
||||
<h4>Hotkeys</h4>
|
||||
<p>
|
||||
Enables extra hotkeys to achieve feature parity with the <a href = "javascript:openExternal('https://defkey.com/tidal-desktop-shortcuts')">desktop apps</a><br />
|
||||
Enables extra hotkeys to achieve feature parity with the <a id="openExternal" style="text-decoration: underline; cursor: pointer;" data-url= "https://defkey.com/tidal-desktop-shortcuts">desktop apps</a><br />
|
||||
</p>
|
||||
<label class="switch">
|
||||
<input id="enableCustomHotkeys" type="checkbox">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="option">
|
||||
<h4>Single instance</h4>
|
||||
<p>
|
||||
Prevent opening multiple tidal-hifi instances
|
||||
</p>
|
||||
<label class="switch">
|
||||
<input id="singleInstance" type="checkbox">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="option">
|
||||
<h4>Disable hardware media keys</h4>
|
||||
<p>
|
||||
Disable built-in media keys. <br />
|
||||
Also prevents certain desktop environments from recognizing the chrome MPRIS client separetely from the custom MPRIS client.
|
||||
</p>
|
||||
<label class="switch">
|
||||
<input id="disableHardwareMediaKeys" type="checkbox">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="api" class="tab-panel">
|
||||
@@ -179,15 +200,15 @@
|
||||
<div class="section">
|
||||
<img alt="tidal icon" style="width: 100px; height: auto; display: block; margin: 0 auto; margin-bottom: 20px; margin-top: 20px;" src = "./icon.png">
|
||||
<p style="max-width: 350px; display:block; margin: 0 auto; text-align: center;">
|
||||
<a href ="javascript:openExternal('https://github.com/Mastermindzh/tidal-hifi');">Tidal-hifi</a> is made by <a href ="javascript:openExternal('https://www.rickvanlieshout.com')">Rick van Lieshout</a>.<br />
|
||||
It uses <a href="javascript:openExternal('https://castlabs.com/');">Castlabs'</a> versions of Electron for widevine support.
|
||||
<a id="openExternal" style="text-decoration: underline; cursor: pointer;" data-url="https://github.com/Mastermindzh/tidal-hifi">Tidal-hifi</a> is made by <a id="openExternal" data-url="https://www.rickvanlieshout.com" style="text-decoration: underline; cursor: pointer;">Rick van Lieshout</a>.<br />
|
||||
It uses <a style="text-decoration: underline; cursor: pointer;" id="openExternal" data-url="https://castlabs.com/">Castlabs'</a> versions of Electron for widevine support.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<small>Some settings require a restart of Tidal-hifi. To do so, click the button below:</small>
|
||||
<button onClick="restart()" style ="width: 100%">Restart Tidal-hifi</button>
|
||||
<button id="restart" style ="width: 100%">Restart Tidal-hifi</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user