diff --git a/src/renderer/views/Config.vue b/src/renderer/views/Config.vue
index 0fc8ba40..1c668d9f 100644
--- a/src/renderer/views/Config.vue
+++ b/src/renderer/views/Config.vue
@@ -54,7 +54,31 @@
Cores
-
+
+
+
+
+
+
Disk Size
+
+
+ How much space is allocated for the virtual disk
+
+
+
+
(diskGB = Number(/^\d+$/.exec(e.target.value)![0] || minDiskGB))"
+ required
+ >
+
GB
+
+
(null);
+const minDiskGB = ref(0);
+const maxDiskGB = ref(0);
const compose = ref(null);
const numCores = ref(0);
const origNumCores = ref(0);
@@ -753,6 +782,23 @@ async function assignValues() {
maxRamGB.value = specs.ramGB;
maxNumCores.value = specs.cpuCores;
+ let storagePath;
+
+ for (const volume of compose.value.services.windows.volumes) {
+ if (volume.endsWith('/storage')) {
+ storagePath = volume.split(':')[0].trim();
+ break
+ }
+ }
+
+ const diskSpace = await checkDiskSpace(storagePath!);
+ const freeGB = Math.floor(diskSpace.free / (1024 * 1024 * 1024));
+ const virtualDiskSize = parseInt(compose.value.services.windows.environment.DISK_SIZE.split('G')[0])
+
+ minDiskGB.value = virtualDiskSize;
+ maxDiskGB.value = freeGB;
+ diskGB.value = virtualDiskSize;
+
refreshAvailableDevices();
}
@@ -763,6 +809,7 @@ async function assignValues() {
async function saveCompose() {
compose.value!.services.windows.environment.RAM_SIZE = `${ramGB.value}G`;
compose.value!.services.windows.environment.CPU_CORES = `${numCores.value}`;
+ compose.value!.services.windows.environment.DISK_SIZE = `${diskGB.value}`;
const composeHasHomefolderShare = compose.value!.services.windows.volumes.includes(HOMEFOLDER_SHARE_STR);
@@ -869,6 +916,15 @@ const errors = computedAsync(async () => {
errCollection.push("You must choose an open port for your FreeRDP port!");
}
+ if (diskGB.value! < minDiskGB.value) {
+ errCollection.push(`You cannot allocate less than ${minDiskGB.value} GB`);
+ }
+
+ if (diskGB.value! >= maxDiskGB.value) {
+ errCollection.push(`You cannot allocate more or equal to ${maxDiskGB.value} GB`);
+ }
+
+
return errCollection;
});
@@ -890,7 +946,8 @@ const saveButtonDisabled = computed(() => {
origRamGB.value !== ramGB.value ||
shareHomeFolder.value !== origShareHomeFolder.value ||
(!isNaN(freerdpPort.value) && freerdpPort.value !== origFreerdpPort.value) ||
- autoStartContainer.value !== origAutoStartContainer.value;
+ autoStartContainer.value !== origAutoStartContainer.value ||
+ minDiskGB.value !== diskGB.value;
const shouldBeDisabled = errors.value?.length || !hasResourceChanges || isApplyingChanges.value;