mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2025-09-11 06:14:42 +02:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
9ca3d3b37d | |||
fb9082e995 |
11
CHANGELOG.md
11
CHANGELOG.md
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## 2.0.0
|
||||
|
||||
### Breaking changes
|
||||
|
||||
- Changed settings hotkey from "ctrl+/" to "ctrl+=" to avoid a conflict with the default Tidal hotkeys
|
||||
|
||||
## Other changes
|
||||
|
||||
- Added a setting to disable custom hotkeys
|
||||
- Fixed the bug that the previous song hotkey would register 3 times. (Twice due to a duplicate block of code + once from the default tidal hotkey)
|
||||
|
||||
## 1.3.0
|
||||
|
||||
-- re-enabled mpris-service wit the electron downloader fixes
|
||||
|
23
README.md
23
README.md
@@ -14,12 +14,18 @@ The web version of [listen.tidal.com](listen.tidal.com) running in electron with
|
||||
- [Installation](#installation)
|
||||
- [Using releases](#using-releases)
|
||||
- [Snap install](#snap-install)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [Using source](#using-source)
|
||||
- [features](#features)
|
||||
- [Integrations](#integrations)
|
||||
- [Known bugs](#known-bugs)
|
||||
- [Why](#why)
|
||||
- [Why not extend existing projects?](#why-not-extend-existing-projects)
|
||||
- [Special thanks to..](#special-thanks-to)
|
||||
- [Special thanks to...](#special-thanks-to)
|
||||
- [Buy me a coffee? Please don't](#buy-me-a-coffee-please-dont)
|
||||
- [Images](#images)
|
||||
- [settings window](#settings-window)
|
||||
- [user setups](#user-setups)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
@@ -66,9 +72,9 @@ To install and work with the code on this project follow these steps:
|
||||
|
||||
- HiFi playback
|
||||
- Notifications
|
||||
- Shortcuts ([source](https://defkey.com/tidal-desktop-shortcuts))
|
||||
- Custom hotkeys ([source](https://defkey.com/tidal-desktop-shortcuts))
|
||||
- API for status and playback
|
||||
- [Settings feature](./docs/settings.png) to disable certain functionality. (`ctrl+/`)
|
||||
- [Settings feature](./docs/settings.png) to disable certain functionality. (`ctrl+=`)
|
||||
|
||||
## Integrations
|
||||
|
||||
@@ -104,3 +110,14 @@ Sometimes it's just easier to start over, cover my own needs and then making it
|
||||
|
||||
Instead spend some money on a charity I care for: [kwf.nl](secure.kwf.nl/donation).
|
||||
Inspired by [haydenjames' issue](https://github.com/Mastermindzh/tidal-hifi/issues/27#issuecomment-704198429)
|
||||
|
||||
## Images
|
||||
|
||||
### settings window
|
||||
|
||||

|
||||
|
||||
### user setups
|
||||
|
||||
Some of our users are kind enough to share their usage pictures.
|
||||
If you want to see them or possibly even add one please do so in the following issue: [#3 - image thread](https://github.com/Mastermindzh/tidal-hifi/issues/3).
|
||||
|
@@ -1,6 +1,6 @@
|
||||
pkgbase = tidal-hifi-git
|
||||
pkgdesc = The web version of listen.tidal.com running in electron with hifi support thanks to widevine.
|
||||
pkgver = 1.2.0
|
||||
pkgver = 2.0.0
|
||||
pkgrel = 1
|
||||
url = https://github.com/Mastermindzh/tidal-hifi
|
||||
arch = x86_64
|
||||
@@ -11,7 +11,7 @@ pkgbase = tidal-hifi-git
|
||||
depends = nss
|
||||
depends = gtk3
|
||||
provides = tidal-hifi
|
||||
source = https://github.com/Mastermindzh/tidal-hifi/archive/1.2.0.zip
|
||||
source = https://github.com/Mastermindzh/tidal-hifi/archive/2.0.0.zip
|
||||
source = tidal-hifi.desktop
|
||||
sha512sums = e1c0e47257cebe6b2609131964f0971c3eb70fc28c86f3d7177cb3cea09a3311236f4147bafa91347210fe2c96e6bd9d2e4ac7ca5b105e0c899657645705913d
|
||||
sha512sums = 35f38ac308b871c1822d7f6f760f2fb54c3748cf769822cb0f0dfb90f0f5754ba9316da5e903a0d2e9839de3a43ec76f238f3f2e44021956fa1da19142081349
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
_pkgname=tidal-hifi
|
||||
pkgname="$_pkgname-git"
|
||||
pkgver=1.2.0
|
||||
pkgver=2.0.0
|
||||
pkgrel=1
|
||||
pkgdesc="The web version of listen.tidal.com running in electron with hifi support thanks to widevine."
|
||||
arch=("x86_64")
|
||||
|
BIN
docs/settings-preview.png
Normal file
BIN
docs/settings-preview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 726 KiB |
8
package-lock.json
generated
8
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tidal-hifi",
|
||||
"version": "1.3.0",
|
||||
"version": "2.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -1732,9 +1732,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
||||
"dev": true
|
||||
},
|
||||
"ipaddr.js": {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tidal-hifi",
|
||||
"version": "1.3.0",
|
||||
"version": "2.0.0",
|
||||
"description": "Tidal on Electron with widevine(hifi) support",
|
||||
"main": "src/main.js",
|
||||
"scripts": {
|
||||
|
@@ -18,6 +18,7 @@ const settings = {
|
||||
port: "apiSettings.port",
|
||||
},
|
||||
mpris: "mpris",
|
||||
enableCustomHotkeys: "enableCustomHotkeys",
|
||||
trayIcon: "trayIcon",
|
||||
windowBounds: {
|
||||
root: "windowBounds",
|
||||
|
@@ -19,6 +19,7 @@ function refreshSettings() {
|
||||
menuBar.checked = store.get(settings.menuBar);
|
||||
trayIcon.checked = store.get(settings.trayIcon);
|
||||
mpris.checked = store.get(settings.mpris);
|
||||
enableCustomHotkeys.checked = store.get(settings.enableCustomHotkeys);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,6 +80,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
menuBar = get("menuBar");
|
||||
trayIcon = get("trayIcon");
|
||||
mpris = get("mprisCheckbox");
|
||||
enableCustomHotkeys = get("enableCustomHotkeys");
|
||||
|
||||
refreshSettings();
|
||||
|
||||
@@ -89,4 +91,5 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
addInputListener(menuBar, settings.menuBar);
|
||||
addInputListener(trayIcon, settings.trayIcon);
|
||||
addInputListener(mpris, settings.mpris);
|
||||
addInputListener(enableCustomHotkeys, settings.enableCustomHotkeys);
|
||||
});
|
||||
|
@@ -80,6 +80,16 @@
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
<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 />
|
||||
</p>
|
||||
<label class="switch">
|
||||
<input id="enableCustomHotkeys" type="checkbox">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="api" class="tab-panel">
|
||||
|
@@ -29,7 +29,7 @@ const elements = {
|
||||
account: '*[data-test^="profile-image-button"]',
|
||||
settings: '*[data-test^="open-settings"]',
|
||||
media: '*[data-test="current-media-imagery"]',
|
||||
image: '*[class^="image--"]',
|
||||
image: "img",
|
||||
|
||||
/**
|
||||
* Get an element from the dom
|
||||
@@ -101,55 +101,38 @@ function playPause() {
|
||||
* https://defkey.com/tidal-desktop-shortcuts
|
||||
*/
|
||||
function addHotKeys() {
|
||||
hotkeys.add("Control+p", function () {
|
||||
elements.click("account").click("settings");
|
||||
});
|
||||
hotkeys.add("Control+l", function () {
|
||||
handleLogout();
|
||||
});
|
||||
if (store.get(settings.enableCustomHotkeys)) {
|
||||
hotkeys.add("Control+p", function () {
|
||||
elements.click("account").click("settings");
|
||||
});
|
||||
hotkeys.add("Control+l", function () {
|
||||
handleLogout();
|
||||
});
|
||||
|
||||
hotkeys.add("Control+h", function () {
|
||||
elements.click("home");
|
||||
});
|
||||
hotkeys.add("Control+h", function () {
|
||||
elements.click("home");
|
||||
});
|
||||
|
||||
hotkeys.add("backspace", function () {
|
||||
elements.click("back");
|
||||
});
|
||||
hotkeys.add("backspace", function () {
|
||||
elements.click("back");
|
||||
});
|
||||
|
||||
hotkeys.add("shift+backspace", function () {
|
||||
elements.click("forward");
|
||||
});
|
||||
hotkeys.add("shift+backspace", function () {
|
||||
elements.click("forward");
|
||||
});
|
||||
|
||||
hotkeys.add("control+f", function () {
|
||||
elements.focus("search");
|
||||
});
|
||||
hotkeys.add("control+u", function () {
|
||||
// reloading window without cache should show the update bar if applicable
|
||||
window.location.reload(true);
|
||||
});
|
||||
|
||||
hotkeys.add("control+u", function () {
|
||||
// reloading window without cache should show the update bar if applicable
|
||||
window.location.reload(true);
|
||||
});
|
||||
hotkeys.add("control+r", function () {
|
||||
elements.click("repeat");
|
||||
});
|
||||
}
|
||||
|
||||
hotkeys.add("control+left", function () {
|
||||
elements.click("previous");
|
||||
});
|
||||
|
||||
hotkeys.add("control+right", function () {
|
||||
elements.click("next");
|
||||
});
|
||||
|
||||
hotkeys.add("control+right", function () {
|
||||
elements.click("next");
|
||||
});
|
||||
|
||||
hotkeys.add("control+s", function () {
|
||||
elements.click("shuffle");
|
||||
});
|
||||
|
||||
hotkeys.add("control+r", function () {
|
||||
elements.click("repeat");
|
||||
});
|
||||
|
||||
hotkeys.add("control+/", function () {
|
||||
// always add the hotkey for the settings window
|
||||
hotkeys.add("control+=", function () {
|
||||
ipcRenderer.send(globalEvents.showSettings);
|
||||
});
|
||||
}
|
||||
@@ -264,11 +247,13 @@ setInterval(function () {
|
||||
resolve();
|
||||
},
|
||||
() => {
|
||||
reject();
|
||||
// if the image can't be downloaded then continue without it
|
||||
resolve();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
reject();
|
||||
// if the image can't be found on the page continue without it
|
||||
resolve();
|
||||
}
|
||||
}).then(
|
||||
() => {
|
||||
|
@@ -16,6 +16,7 @@ const store = new Store({
|
||||
},
|
||||
trayIcon: true,
|
||||
mpris: false,
|
||||
enableCustomHotkeys: false,
|
||||
windowBounds: { width: 800, height: 600 },
|
||||
},
|
||||
});
|
||||
|
Reference in New Issue
Block a user