Skip to content

Commit 11e2bc3

Browse files
committed
Adds Windows portable version
1 parent 6fc1791 commit 11e2bc3

File tree

10 files changed

+33
-8
lines changed

10 files changed

+33
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
99
- new icon styles preference for tray (showing time to break or visual progress to break)
1010
- Autostart functionality in Flatpaks
1111
- updated appExclusions section on README to include description for Windows and substring matching
12+
- portable version for Windows
1213

1314
### Fixed
1415
- snap package not starting on Wayland

app/css/commons.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,8 @@ body {
157157
.linux .linux-hidden,
158158
.freebsd .linux-hidden,
159159
.openbsd .linux-hidden,
160-
.store .store-hidden {
160+
.store .store-hidden,
161+
.portable .portable-hidden {
161162
display: none;
162163
}
163164

app/main.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { DateTime } from 'luxon'
1717

1818
import {
1919
canPostpone, canSkip, formatTimeRemaining,
20-
minutesRemaining, insideWindowsStore, insideFlatpak, insideSnap
20+
minutesRemaining, insideWindowsStore, insideFlatpak, insideSnap, insideWindowsPortable
2121
} from './utils/utils.js'
2222
import IdeasLoader from './utils/ideasLoader.js'
2323
import BreaksPlanner from './breaksPlanner.js'
@@ -78,6 +78,14 @@ let currentTrayIconPath = null
7878
let currentTrayMenuTemplate = null
7979
let trayUpdateIntervalObj = null
8080

81+
if (insideWindowsPortable()) {
82+
const portableDataPath = join(process.env.PORTABLE_EXECUTABLE_DIR, 'Data')
83+
if (!existsSync(portableDataPath)) {
84+
mkdirSync(portableDataPath, { recursive: true })
85+
}
86+
app.setPath('userData', portableDataPath)
87+
}
88+
8189
log.initialize({ preload: true })
8290

8391
// https://stackoverflow.com/questions/65859634/notification-from-electron-shows-electron-app-electron/65863174#65863174

app/platform.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ document.body.classList.add(window.runtime.platform())
22
if (window.runtime.windowsStore()) {
33
document.body.classList.add('store')
44
}
5+
if (window.runtime.windowsPortable()) {
6+
document.body.classList.add('portable')
7+
}
58
export default {}

app/preferences-renderer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ window.onload = async (e) => {
9292
document.querySelector('#electron').innerHTML = await window.runtime.electron()
9393
document.querySelector('#platform').innerHTML = await window.runtime.platform()
9494
document.querySelector('#windowsStore').innerHTML = await window.runtime.windowsStore() || false
95+
document.querySelector('#windowsPortable').innerHTML = await window.runtime.windowsPortable() || false
9596
}
9697
setWindowHeight()
9798
}

app/preferences.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
</a>
4949
</nav>
5050
<div class="settings">
51-
<div class="store-hidden">
51+
<div class="store-hidden portable-hidden">
5252
<input type="checkbox" value="openAtLogin" id="openAtLogin">
5353
<label data-i18next="preferences.settings.openAtLogin" for="openAtLogin"></label>
5454
</div>
@@ -418,7 +418,8 @@
418418
Chromium: <span id="chrome"></span>,
419419
Electron: <span id="electron"></span>
420420
<br />OS: <span id="platform"></span><span class="linux-hidden darwin-hidden">,
421-
Windows Store: <span id="windowsStore"></span></span>
421+
Windows Store: <span id="windowsStore"></span>,
422+
Windows Portable: <span id="windowsPortable"></span></span>
422423
</p>
423424
<p>
424425
<button>copy to clipboard</button>

app/utils/context-bridge-exposers.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ function exposeRuntime () {
4545
electron: () => process.versions.electron,
4646
windowsStore: () => utils.insideWindowsStore(),
4747
snap: () => utils.insideSnap(),
48+
windowsPortable: () => utils.insideWindowsPortable(),
4849
getSystemVersion: () => process.getSystemVersion()
4950
})
5051
}

app/utils/defaultSettings.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import defaultBreakIdeas from './defaultBreakIdeas.js'
22
import defaultMicrobreakIdeas from './defaultMicrobreakIdeas.js'
3-
import { insideFlatpak, insideWindowsStore, insideSnap } from './utils.js'
3+
import { insideFlatpak, insideWindowsStore, insideSnap, insideWindowsPortable } from './utils.js'
44

55
export default {
66
microbreakDuration: 20000,
@@ -76,7 +76,7 @@ export default {
7676
resetBreaksShortcut: '',
7777
showTrayMenuInStrictMode: false,
7878
customPreferencesMessage: '',
79-
disableAppUpdateFeatures: insideFlatpak() || insideWindowsStore() || insideSnap(),
79+
disableAppUpdateFeatures: insideFlatpak() || insideWindowsStore() || insideSnap() || insideWindowsPortable(),
8080
hidePreferencesFileLocation: false,
8181
hideStrictModePreferences: false,
8282
miniBreakManualFinish: false,

app/utils/utils.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ function insideSnap () {
8787
return process.platform === 'linux' && !!process.env.SNAP
8888
}
8989

90+
function insideWindowsPortable () {
91+
return process.platform === 'win32' && !!process.env.PORTABLE_EXECUTABLE_DIR
92+
}
93+
9094
export {
9195
formatTimeRemaining,
9296
formatElapsedDuration,
@@ -99,5 +103,6 @@ export {
99103
shouldShowNotificationTitle,
100104
insideFlatpak,
101105
insideWindowsStore,
102-
insideSnap
106+
insideSnap,
107+
insideWindowsPortable
103108
}

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,17 @@
104104
"target": [
105105
"nsis",
106106
"7z",
107-
"appx"
107+
"appx",
108+
"portable"
108109
],
109110
"asarUnpack": [
110111
"node_modules/windows-notification-state/**",
111112
"node_modules/macos-notification-state/**"
112113
]
113114
},
115+
"portable": {
116+
"artifactName": "${productName} Portable ${version}.${ext}"
117+
},
114118
"nsis": {
115119
"oneClick": false,
116120
"allowToChangeInstallationDirectory": true

0 commit comments

Comments
 (0)