1const { Gio, GLib } = imports.gi; 2 3const monitor = Gio.VolumeMonitor.get(); 4 5monitor.connect('mount-added', (_, mount) => onMountAdded(mount)); 6monitor.connect('volume-added', (_, volume) => onVolumeAdded(volume)); 7 8monitor.get_mounts().forEach(onMountAdded); 9monitor.get_volumes().forEach(onVolumeAdded);1011function onMountAdded(mount) {12 print(`Mount added: ${mount}`);13 print(` ${mount.get_name()}`);14 print(` UUID: ${mount.get_uuid()}`);15 print(` Icon: ${mount.get_icon().to_string()}`);16 print(` Root: ${mount.get_root() ? mount.get_root().get_path() : 'none'}`);17 print(` Default location: ${mount.get_default_location().get_path()}`);18 try {19 print(` Content type: ${mount.guess_content_type_sync(true, null)}`);20 } catch (e) {}21 print(` Drive: ${mount.get_drive()} (${mount.get_drive() ? mount.get_drive().get_name() : 'none'})`);22 print(` Volume: ${mount.get_volume()}`);23 print(` Shadowed: ${mount.is_shadowed()}`);24 print(` Can umount: ${mount.can_unmount()}`);25 print(` Can eject: ${mount.can_eject()}`);26 print('');27}2829function onVolumeAdded(volume) {30 print(`Volume added: ${volume}`);31 print(` ${volume.get_name()}`);32 print(` UUID: ${volume.get_uuid()}`);33 print(` Icon: ${volume.get_icon().to_string()}`);34 print(` Activation Root: ${volume.get_activation_root() ? volume.get_activation_root().get_path() : 'none'}`);35 print(` Drive: ${volume.get_drive()} (${volume.get_drive() ? volume.get_drive().get_name() : 'none'})`);36 print(` Mount: ${volume.get_mount()}`);37 print(` Can mount: ${volume.can_mount()}`);38 print(` Can eject: ${volume.can_eject()}`);39 print('');40}4142const loop = GLib.MainLoop.new(null, false);43GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => loop.quit());44loop.run();