mirror of
https://codeberg.org/PLG-Development/PLG-MuDiCS
synced 2026-07-06 17:07:08 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 86f23077ea | |||
| 47d462ba76 | |||
| 5533696aad | |||
| ac68939abd | |||
| d6bafd4e6f | |||
| ce28a1f771 | |||
| 7632229704 | |||
| b5e997e675 | |||
| ca08d6fb6a | |||
| 4ab8f43295 |
@@ -2,9 +2,10 @@ import { db } from './database';
|
||||
import { get_display_by_id } from './stores/displays';
|
||||
import {
|
||||
get_current_folder_elements,
|
||||
create_path_on_all_selected_displays,
|
||||
get_file_by_id,
|
||||
remove_all_files_without_display,
|
||||
remove_file_from_display
|
||||
remove_file_from_display_recusively
|
||||
} from './stores/files';
|
||||
import { notifications } from './stores/notification';
|
||||
import { generate_thumbnail } from './stores/thumbnails';
|
||||
@@ -28,6 +29,8 @@ export async function add_upload(
|
||||
) {
|
||||
if (file_list.length === 0) return console.warn('Upload canceled: no selected files');
|
||||
|
||||
await create_path_on_all_selected_displays(current_file_path, selected_display_ids);
|
||||
|
||||
const used_file_names: string[] = await (
|
||||
await get_current_folder_elements(current_file_path, selected_display_ids)
|
||||
).map((e) => e.name);
|
||||
@@ -414,11 +417,11 @@ async function show_error(task: FileTransferTask, error: ProgressEvent | string)
|
||||
`Datei: "${task.file_name}", Display-IP: ${task.display.ip}\nFehler: ${error}`
|
||||
);
|
||||
if (task_data.type === 'upload') {
|
||||
await remove_file_from_display(task.display.id, task.file_primary_key);
|
||||
await remove_file_from_display_recusively(task.display.id, task.file_primary_key);
|
||||
await remove_all_files_without_display();
|
||||
} else if (task_data.type === 'sync') {
|
||||
for (const display_id of task_data.destination_displays.map((e) => e.id)) {
|
||||
await remove_file_from_display(display_id, task.file_primary_key);
|
||||
await remove_file_from_display_recusively(display_id, task.file_primary_key);
|
||||
}
|
||||
await remove_all_files_without_display();
|
||||
}
|
||||
|
||||
@@ -42,16 +42,35 @@ export async function delete_and_deselect_unique_files_from_display(display_id:
|
||||
.equals(display_id)
|
||||
.toArray();
|
||||
for (const file of files_on_display) {
|
||||
await remove_file_from_display(display_id, file.file_primary_key);
|
||||
await remove_file_from_display_recusively(display_id, file.file_primary_key);
|
||||
}
|
||||
await remove_all_files_without_display();
|
||||
}
|
||||
|
||||
export async function remove_file_from_display(display_id: string, file_primary_key: string) {
|
||||
export async function remove_file_from_display_recusively(display_id: string, file_primary_key: string) {
|
||||
const found = await db.files_on_display.get([display_id, file_primary_key]);
|
||||
if (!found) return;
|
||||
select(selected_file_ids, file_primary_key, 'deselect');
|
||||
await db.files_on_display.delete([display_id, file_primary_key]);
|
||||
|
||||
const inode_element = await get_file_by_id(found.file_primary_key);
|
||||
if (!inode_element) return;
|
||||
if (inode_element.type === 'inode/directory') {
|
||||
const path_inside_folder = inode_element.path + inode_element.name + `/`;
|
||||
const primary_file_keys_in_folder = (
|
||||
await db.files.where('path').equals(path_inside_folder).toArray()
|
||||
).map((e) => get_file_primary_key(e));
|
||||
const primary_file_keys_in_folder_on_display = (
|
||||
await db.files_on_display
|
||||
.where('file_primary_key')
|
||||
.anyOf(primary_file_keys_in_folder)
|
||||
.filter((file) => file.display_id === display_id)
|
||||
.toArray()
|
||||
).map((e) => e.file_primary_key);
|
||||
for (const file_key of primary_file_keys_in_folder_on_display) {
|
||||
await remove_file_from_display_recusively(display_id, file_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function remove_all_files_without_display() {
|
||||
@@ -272,7 +291,7 @@ export async function update_folder_elements_recursively(
|
||||
if (diff.deleted.length > 0) {
|
||||
// Remove old Folder-Elements
|
||||
for (const old_element of diff.deleted) {
|
||||
remove_file_from_display(display.id, get_file_primary_key(old_element));
|
||||
remove_file_from_display_recusively(display.id, get_file_primary_key(old_element));
|
||||
}
|
||||
await remove_all_files_without_display();
|
||||
}
|
||||
@@ -377,6 +396,14 @@ export async function create_folder_on_all_selected_displays(
|
||||
path: string,
|
||||
selected_display_ids: string[]
|
||||
): Promise<void> {
|
||||
const path_with_folder_name = (path += folder_name + '/');
|
||||
await create_path_on_all_selected_displays(path_with_folder_name, selected_display_ids);
|
||||
}
|
||||
|
||||
export async function create_path_on_all_selected_displays(
|
||||
path: string,
|
||||
selected_display_ids: string[]
|
||||
) {
|
||||
const path_parts = path
|
||||
.slice(1, path.length - 1)
|
||||
.split('/')
|
||||
@@ -397,9 +424,8 @@ export async function create_folder_on_all_selected_displays(
|
||||
const displays = await getDisplaysForPath(currentPath);
|
||||
if (!displays.length) continue;
|
||||
|
||||
const folders_to_create = [...path_parts.slice(depth), folder_name];
|
||||
for (const display of displays) {
|
||||
await create_folders(display.ip, currentPath, folders_to_create);
|
||||
await create_folders(display.ip, currentPath, path_parts.slice(depth));
|
||||
remaining_display_ids = remaining_display_ids.filter((id) => id !== display.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
title: 'Neuen Bildschirm hinzufügen',
|
||||
title_icon: Monitor,
|
||||
title_class: '!text-xl',
|
||||
window_class: 'w-3xl',
|
||||
closable: true
|
||||
};
|
||||
};
|
||||
@@ -231,10 +232,6 @@
|
||||
icon: Plus,
|
||||
name: 'Neuen Bildschirm hinzufügen',
|
||||
on_select: show_new_display_popup
|
||||
},
|
||||
{
|
||||
icon: Settings,
|
||||
name: 'Weitere Einstellungen'
|
||||
}
|
||||
]}
|
||||
>
|
||||
|
||||
@@ -66,12 +66,6 @@
|
||||
is_selected: () => editor_state.editor?.isActive('strike') ?? false,
|
||||
title: 'Durchgestrichen',
|
||||
icon: Strikethrough
|
||||
},
|
||||
{
|
||||
onclick: () => {},
|
||||
is_selected: () => false,
|
||||
title: 'QR-Code anfügen',
|
||||
icon: QrCode
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@@ -1,221 +1,221 @@
|
||||
module.exports = {
|
||||
content: ['./src/**/*.{html,js,svelte,ts}'],
|
||||
safelist: [
|
||||
'bg-stone-50',
|
||||
'bg-stone-100',
|
||||
'bg-stone-150',
|
||||
'bg-stone-200',
|
||||
'bg-stone-250',
|
||||
'bg-stone-300',
|
||||
'bg-stone-350',
|
||||
'bg-stone-400',
|
||||
'bg-stone-450',
|
||||
'bg-stone-500',
|
||||
'bg-stone-550',
|
||||
'bg-stone-600',
|
||||
'bg-stone-650',
|
||||
'bg-stone-700',
|
||||
'bg-stone-750',
|
||||
'bg-stone-800',
|
||||
'bg-stone-850',
|
||||
'bg-stone-900',
|
||||
'bg-stone-950',
|
||||
content: ['./src/**/*.{html,js,svelte,ts}'],
|
||||
safelist: [
|
||||
'bg-stone-50',
|
||||
'bg-stone-100',
|
||||
'bg-stone-150',
|
||||
'bg-stone-200',
|
||||
'bg-stone-250',
|
||||
'bg-stone-300',
|
||||
'bg-stone-350',
|
||||
'bg-stone-400',
|
||||
'bg-stone-450',
|
||||
'bg-stone-500',
|
||||
'bg-stone-550',
|
||||
'bg-stone-600',
|
||||
'bg-stone-650',
|
||||
'bg-stone-700',
|
||||
'bg-stone-750',
|
||||
'bg-stone-800',
|
||||
'bg-stone-850',
|
||||
'bg-stone-900',
|
||||
'bg-stone-950',
|
||||
|
||||
'hover:bg-stone-50',
|
||||
'hover:bg-stone-100',
|
||||
'hover:bg-stone-150',
|
||||
'hover:bg-stone-200',
|
||||
'hover:bg-stone-250',
|
||||
'hover:bg-stone-300',
|
||||
'hover:bg-stone-350',
|
||||
'hover:bg-stone-400',
|
||||
'hover:bg-stone-450',
|
||||
'hover:bg-stone-500',
|
||||
'hover:bg-stone-550',
|
||||
'hover:bg-stone-600',
|
||||
'hover:bg-stone-650',
|
||||
'hover:bg-stone-700',
|
||||
'hover:bg-stone-750',
|
||||
'hover:bg-stone-800',
|
||||
'hover:bg-stone-850',
|
||||
'hover:bg-stone-900',
|
||||
'hover:bg-stone-950',
|
||||
'hover:bg-stone-50',
|
||||
'hover:bg-stone-100',
|
||||
'hover:bg-stone-150',
|
||||
'hover:bg-stone-200',
|
||||
'hover:bg-stone-250',
|
||||
'hover:bg-stone-300',
|
||||
'hover:bg-stone-350',
|
||||
'hover:bg-stone-400',
|
||||
'hover:bg-stone-450',
|
||||
'hover:bg-stone-500',
|
||||
'hover:bg-stone-550',
|
||||
'hover:bg-stone-600',
|
||||
'hover:bg-stone-650',
|
||||
'hover:bg-stone-700',
|
||||
'hover:bg-stone-750',
|
||||
'hover:bg-stone-800',
|
||||
'hover:bg-stone-850',
|
||||
'hover:bg-stone-900',
|
||||
'hover:bg-stone-950',
|
||||
|
||||
'active:bg-stone-50',
|
||||
'active:bg-stone-100',
|
||||
'active:bg-stone-150',
|
||||
'active:bg-stone-200',
|
||||
'active:bg-stone-250',
|
||||
'active:bg-stone-300',
|
||||
'active:bg-stone-350',
|
||||
'active:bg-stone-400',
|
||||
'active:bg-stone-450',
|
||||
'active:bg-stone-500',
|
||||
'active:bg-stone-550',
|
||||
'active:bg-stone-600',
|
||||
'active:bg-stone-650',
|
||||
'active:bg-stone-700',
|
||||
'active:bg-stone-750',
|
||||
'active:bg-stone-800',
|
||||
'active:bg-stone-850',
|
||||
'active:bg-stone-900',
|
||||
'active:bg-stone-950',
|
||||
'active:bg-stone-50',
|
||||
'active:bg-stone-100',
|
||||
'active:bg-stone-150',
|
||||
'active:bg-stone-200',
|
||||
'active:bg-stone-250',
|
||||
'active:bg-stone-300',
|
||||
'active:bg-stone-350',
|
||||
'active:bg-stone-400',
|
||||
'active:bg-stone-450',
|
||||
'active:bg-stone-500',
|
||||
'active:bg-stone-550',
|
||||
'active:bg-stone-600',
|
||||
'active:bg-stone-650',
|
||||
'active:bg-stone-700',
|
||||
'active:bg-stone-750',
|
||||
'active:bg-stone-800',
|
||||
'active:bg-stone-850',
|
||||
'active:bg-stone-900',
|
||||
'active:bg-stone-950',
|
||||
|
||||
'focus:bg-stone-50',
|
||||
'focus:bg-stone-100',
|
||||
'focus:bg-stone-150',
|
||||
'focus:bg-stone-200',
|
||||
'focus:bg-stone-250',
|
||||
'focus:bg-stone-300',
|
||||
'focus:bg-stone-350',
|
||||
'focus:bg-stone-400',
|
||||
'focus:bg-stone-450',
|
||||
'focus:bg-stone-500',
|
||||
'focus:bg-stone-550',
|
||||
'focus:bg-stone-600',
|
||||
'focus:bg-stone-650',
|
||||
'focus:bg-stone-700',
|
||||
'focus:bg-stone-750',
|
||||
'focus:bg-stone-800',
|
||||
'focus:bg-stone-850',
|
||||
'focus:bg-stone-900',
|
||||
'focus:bg-stone-950',
|
||||
'focus:bg-stone-50',
|
||||
'focus:bg-stone-100',
|
||||
'focus:bg-stone-150',
|
||||
'focus:bg-stone-200',
|
||||
'focus:bg-stone-250',
|
||||
'focus:bg-stone-300',
|
||||
'focus:bg-stone-350',
|
||||
'focus:bg-stone-400',
|
||||
'focus:bg-stone-450',
|
||||
'focus:bg-stone-500',
|
||||
'focus:bg-stone-550',
|
||||
'focus:bg-stone-600',
|
||||
'focus:bg-stone-650',
|
||||
'focus:bg-stone-700',
|
||||
'focus:bg-stone-750',
|
||||
'focus:bg-stone-800',
|
||||
'focus:bg-stone-850',
|
||||
'focus:bg-stone-900',
|
||||
'focus:bg-stone-950',
|
||||
|
||||
'text-stone-50',
|
||||
'text-stone-150',
|
||||
'text-stone-200',
|
||||
'text-stone-250',
|
||||
'text-stone-300',
|
||||
'text-stone-350',
|
||||
'text-stone-100',
|
||||
'text-stone-400',
|
||||
'text-stone-450',
|
||||
'text-stone-500',
|
||||
'text-stone-550',
|
||||
'text-stone-600',
|
||||
'text-stone-650',
|
||||
'text-stone-700',
|
||||
'text-stone-750',
|
||||
'text-stone-800',
|
||||
'text-stone-850',
|
||||
'text-stone-900',
|
||||
'text-stone-950',
|
||||
'text-stone-50',
|
||||
'text-stone-150',
|
||||
'text-stone-200',
|
||||
'text-stone-250',
|
||||
'text-stone-300',
|
||||
'text-stone-350',
|
||||
'text-stone-100',
|
||||
'text-stone-400',
|
||||
'text-stone-450',
|
||||
'text-stone-500',
|
||||
'text-stone-550',
|
||||
'text-stone-600',
|
||||
'text-stone-650',
|
||||
'text-stone-700',
|
||||
'text-stone-750',
|
||||
'text-stone-800',
|
||||
'text-stone-850',
|
||||
'text-stone-900',
|
||||
'text-stone-950',
|
||||
|
||||
'group-hover:text-stone-100',
|
||||
'group-hover:text-stone-150',
|
||||
'group-hover:text-stone-200',
|
||||
'group-hover:text-stone-50',
|
||||
'group-hover:text-stone-250',
|
||||
'group-hover:text-stone-300',
|
||||
'group-hover:text-stone-350',
|
||||
'group-hover:text-stone-400',
|
||||
'group-hover:text-stone-450',
|
||||
'group-hover:text-stone-500',
|
||||
'group-hover:text-stone-550',
|
||||
'group-hover:text-stone-600',
|
||||
'group-hover:text-stone-650',
|
||||
'group-hover:text-stone-700',
|
||||
'group-hover:text-stone-750',
|
||||
'group-hover:text-stone-800',
|
||||
'group-hover:text-stone-850',
|
||||
'group-hover:text-stone-900',
|
||||
'group-hover:text-stone-950',
|
||||
'group-hover:text-stone-100',
|
||||
'group-hover:text-stone-150',
|
||||
'group-hover:text-stone-200',
|
||||
'group-hover:text-stone-50',
|
||||
'group-hover:text-stone-250',
|
||||
'group-hover:text-stone-300',
|
||||
'group-hover:text-stone-350',
|
||||
'group-hover:text-stone-400',
|
||||
'group-hover:text-stone-450',
|
||||
'group-hover:text-stone-500',
|
||||
'group-hover:text-stone-550',
|
||||
'group-hover:text-stone-600',
|
||||
'group-hover:text-stone-650',
|
||||
'group-hover:text-stone-700',
|
||||
'group-hover:text-stone-750',
|
||||
'group-hover:text-stone-800',
|
||||
'group-hover:text-stone-850',
|
||||
'group-hover:text-stone-900',
|
||||
'group-hover:text-stone-950',
|
||||
|
||||
'group-active:text-stone-50',
|
||||
'group-active:text-stone-100',
|
||||
'group-active:text-stone-150',
|
||||
'group-active:text-stone-200',
|
||||
'group-active:text-stone-250',
|
||||
'group-active:text-stone-300',
|
||||
'group-active:text-stone-350',
|
||||
'group-active:text-stone-400',
|
||||
'group-active:text-stone-450',
|
||||
'group-active:text-stone-500',
|
||||
'group-active:text-stone-550',
|
||||
'group-active:text-stone-600',
|
||||
'group-active:text-stone-650',
|
||||
'group-active:text-stone-700',
|
||||
'group-active:text-stone-750',
|
||||
'group-active:text-stone-800',
|
||||
'group-active:text-stone-850',
|
||||
'group-active:text-stone-950',
|
||||
'group-active:text-stone-900',
|
||||
'group-active:text-stone-50',
|
||||
'group-active:text-stone-100',
|
||||
'group-active:text-stone-150',
|
||||
'group-active:text-stone-200',
|
||||
'group-active:text-stone-250',
|
||||
'group-active:text-stone-300',
|
||||
'group-active:text-stone-350',
|
||||
'group-active:text-stone-400',
|
||||
'group-active:text-stone-450',
|
||||
'group-active:text-stone-500',
|
||||
'group-active:text-stone-550',
|
||||
'group-active:text-stone-600',
|
||||
'group-active:text-stone-650',
|
||||
'group-active:text-stone-700',
|
||||
'group-active:text-stone-750',
|
||||
'group-active:text-stone-800',
|
||||
'group-active:text-stone-850',
|
||||
'group-active:text-stone-950',
|
||||
'group-active:text-stone-900',
|
||||
|
||||
'border-stone-50',
|
||||
'border-stone-100',
|
||||
'border-stone-150',
|
||||
'border-stone-200',
|
||||
'border-stone-250',
|
||||
'border-stone-300',
|
||||
'border-stone-350',
|
||||
'border-stone-400',
|
||||
'border-stone-450',
|
||||
'border-stone-500',
|
||||
'border-stone-550',
|
||||
'border-stone-600',
|
||||
'border-stone-650',
|
||||
'border-stone-700',
|
||||
'border-stone-750',
|
||||
'border-stone-800',
|
||||
'border-stone-850',
|
||||
'border-stone-900',
|
||||
'border-stone-950',
|
||||
'border-stone-50',
|
||||
'border-stone-100',
|
||||
'border-stone-150',
|
||||
'border-stone-200',
|
||||
'border-stone-250',
|
||||
'border-stone-300',
|
||||
'border-stone-350',
|
||||
'border-stone-400',
|
||||
'border-stone-450',
|
||||
'border-stone-500',
|
||||
'border-stone-550',
|
||||
'border-stone-600',
|
||||
'border-stone-650',
|
||||
'border-stone-700',
|
||||
'border-stone-750',
|
||||
'border-stone-800',
|
||||
'border-stone-850',
|
||||
'border-stone-900',
|
||||
'border-stone-950',
|
||||
|
||||
'group-hover:border-stone-50',
|
||||
'group-hover:border-stone-100',
|
||||
'group-hover:border-stone-150',
|
||||
'group-hover:border-stone-200',
|
||||
'group-hover:border-stone-250',
|
||||
'group-hover:border-stone-300',
|
||||
'group-hover:border-stone-350',
|
||||
'group-hover:border-stone-400',
|
||||
'group-hover:border-stone-450',
|
||||
'group-hover:border-stone-500',
|
||||
'group-hover:border-stone-550',
|
||||
'group-hover:border-stone-600',
|
||||
'group-hover:border-stone-650',
|
||||
'group-hover:border-stone-700',
|
||||
'group-hover:border-stone-750',
|
||||
'group-hover:border-stone-800',
|
||||
'group-hover:border-stone-850',
|
||||
'group-hover:border-stone-950',
|
||||
'group-hover:border-stone-900',
|
||||
'group-hover:border-stone-50',
|
||||
'group-hover:border-stone-100',
|
||||
'group-hover:border-stone-150',
|
||||
'group-hover:border-stone-200',
|
||||
'group-hover:border-stone-250',
|
||||
'group-hover:border-stone-300',
|
||||
'group-hover:border-stone-350',
|
||||
'group-hover:border-stone-400',
|
||||
'group-hover:border-stone-450',
|
||||
'group-hover:border-stone-500',
|
||||
'group-hover:border-stone-550',
|
||||
'group-hover:border-stone-600',
|
||||
'group-hover:border-stone-650',
|
||||
'group-hover:border-stone-700',
|
||||
'group-hover:border-stone-750',
|
||||
'group-hover:border-stone-800',
|
||||
'group-hover:border-stone-850',
|
||||
'group-hover:border-stone-950',
|
||||
'group-hover:border-stone-900',
|
||||
|
||||
'group-active:border-stone-50',
|
||||
'group-active:border-stone-100',
|
||||
'group-active:border-stone-150',
|
||||
'group-active:border-stone-200',
|
||||
'group-active:border-stone-250',
|
||||
'group-active:border-stone-300',
|
||||
'group-active:border-stone-350',
|
||||
'group-active:border-stone-400',
|
||||
'group-active:border-stone-450',
|
||||
'group-active:border-stone-500',
|
||||
'group-active:border-stone-550',
|
||||
'group-active:border-stone-600',
|
||||
'group-active:border-stone-650',
|
||||
'group-active:border-stone-700',
|
||||
'group-active:border-stone-750',
|
||||
'group-active:border-stone-800',
|
||||
'group-active:border-stone-850',
|
||||
'group-active:border-stone-900',
|
||||
'group-active:border-stone-950',
|
||||
'group-active:border-stone-50',
|
||||
'group-active:border-stone-100',
|
||||
'group-active:border-stone-150',
|
||||
'group-active:border-stone-200',
|
||||
'group-active:border-stone-250',
|
||||
'group-active:border-stone-300',
|
||||
'group-active:border-stone-350',
|
||||
'group-active:border-stone-400',
|
||||
'group-active:border-stone-450',
|
||||
'group-active:border-stone-500',
|
||||
'group-active:border-stone-550',
|
||||
'group-active:border-stone-600',
|
||||
'group-active:border-stone-650',
|
||||
'group-active:border-stone-700',
|
||||
'group-active:border-stone-750',
|
||||
'group-active:border-stone-800',
|
||||
'group-active:border-stone-850',
|
||||
'group-active:border-stone-900',
|
||||
'group-active:border-stone-950',
|
||||
|
||||
'h-10',
|
||||
'h-15',
|
||||
'h-20',
|
||||
'h-25',
|
||||
'h-30',
|
||||
'h-35',
|
||||
'h-40',
|
||||
'h-10',
|
||||
'h-15',
|
||||
'h-20',
|
||||
'h-25',
|
||||
'h-30',
|
||||
'h-35',
|
||||
'h-40',
|
||||
|
||||
'right-0',
|
||||
'left-0',
|
||||
'right-0',
|
||||
'left-0',
|
||||
|
||||
'hover:bg-red-400',
|
||||
'active:bg-red-500',
|
||||
'hover:bg-red-400',
|
||||
'active:bg-red-500',
|
||||
|
||||
'hover:bg-stone-600/70',
|
||||
'active:bg-stone-500/80',
|
||||
],
|
||||
}
|
||||
'hover:bg-stone-600/70',
|
||||
'active:bg-stone-500/80'
|
||||
]
|
||||
};
|
||||
|
||||
+12
-1
@@ -116,7 +116,7 @@
|
||||
after = ["network-online.target"];
|
||||
wants = ["network-online.target"];
|
||||
path = config.environment.systemPackages;
|
||||
script = "nu ${./update.sh}";
|
||||
script = "nu ${./update.nu}";
|
||||
serviceConfig = {
|
||||
WorkingDirectory = "/home/mudics/mudics";
|
||||
User = "mudics";
|
||||
@@ -152,6 +152,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.enable-wol = {
|
||||
wantedBy = ["multi-user.target"];
|
||||
after = ["network.target"];
|
||||
path = with pkgs; [ethtool nushell];
|
||||
script = "nu ${./wol.nu}";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "root";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /home/mudics/mudics 0755 mudics - -"
|
||||
];
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env nu
|
||||
|
||||
ls /sys/class/net | get name | path basename | where $it != "lo" | each {|iface|
|
||||
print $"Enabling WoL on ($iface)..."
|
||||
try {
|
||||
ethtool -s $iface wol g
|
||||
print $"Successfully enabled WoL on ($iface)"
|
||||
} catch {
|
||||
print $"Failed to enable WoL on ($iface). It might not be supported."
|
||||
}
|
||||
}
|
||||
@@ -5,16 +5,22 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func OpenBrowserWindow(url string, fullscreen bool) error {
|
||||
bins := []string{"chromium", "chromium-browser"}
|
||||
|
||||
tempDirPath, err := os.MkdirTemp("", "plg-mudics-browser-")
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("unable to determine user home directory: %w", err)
|
||||
}
|
||||
args := []string{fmt.Sprintf("--app=%s", url), "--autoplay-policy=no-user-gesture-required", fmt.Sprintf("--user-data-dir=%s", tempDirPath)}
|
||||
browserProfileDirPath := filepath.Join(home, ".local", "share", "plg-mudics", "browser")
|
||||
if err := os.MkdirAll(browserProfileDirPath, os.ModePerm); err != nil {
|
||||
return fmt.Errorf("failed to create local config directory: %w", err)
|
||||
}
|
||||
|
||||
args := []string{fmt.Sprintf("--app=%s", url), "--autoplay-policy=no-user-gesture-required", fmt.Sprintf("--user-data-dir=%s", browserProfileDirPath)}
|
||||
if fullscreen {
|
||||
args = append(args, "--start-fullscreen")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user