Bug 57356

Summary: баг в работе расширения removable drive menu - появляются фиктивные флешки
Product: Branch p11 Reporter: kullibbin <kullibbin>
Component: gnome-shell-extensionsAssignee: Semen Fomchenkov <armatik>
Status: NEW --- QA Contact: qa-p11 <qa-p11>
Severity: normal    
Priority: P5 CC: amakeenk, antohami, dmitry, kullibbin, udalov
Version: unspecified   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=57366
Attachments:
Description Flags
Пропатченный файл js для временного решения проблемы.
none
Скрипт для решения проблемы. Бэкапит исходный файл расширения js и создает новый, с задержкой запуска 5 сек, что решает проблему. Используетс
none
патч, добавляющий проверку на дубликаты при монтирование (исправление для версии 48.3)
none
патч none

Description kullibbin 2025-12-25 12:01:56 MSK
Если в усб вставить флешку или усб-диск до того, как юзер залогинился в сессии, расширение показывает в панели ДВА таких устройства вместо одного. При этом одно устройство работает правильно и отмонтируется при нажатии на стрелку, а второе - нет, при этом получаю сообщение, что не найдена точка монтирования, но это фейковое устройство продолжает находиться в меню расширения до перезагрузки. То же самое, если флешка вставлена и не вытаскивается из усб-порта при перезагрузке. Пробовал удалять папку этого расширения из /usr/share/gnome-shell/extensions и ставить с интернета с сайта расширений - то же самое. Предполагаю, что баг имеет тот же характер, что и с pipewire settings - расширения инициализируются слишком рано после логина юзера, но это только предположение. В случае с pipewire settings помогло включение задержки в несколько секунд в файле расришения js.
Comment 1 kullibbin 2025-12-25 12:03:54 MSK
в файле расширения extension.js
Comment 2 kullibbin 2025-12-25 12:36:52 MSK
Created attachment 20402 [details]
Пропатченный файл js для временного решения проблемы.

Исправленный extension.js для временного решения проблемы.
Comment 3 kullibbin 2025-12-25 12:41:14 MSK
Мое предположение было правильным, баги с расширениями возникают из-за слишком ранней инициализации их. Если добавить задержку в 5 секунд, например, при инициализации расширения removable drive menu, то проблема пропадает. Как временное решение, с помощью нейросети исправил файл extension.js так, чтоб он запускался через 5 секунд только, после логина пользователя. Все работает. Но расширение не виновато - та же проблема с pipewire settings. И если ставить removeale drive menu с сайта расширений, удалив из системы (удалив каталог с расширением, по-варварски :)  ), точно такой же баг проявляется и тогда.
Comment 4 kullibbin 2025-12-25 12:46:11 MSK
файл extension.js скопировать с заменой в папку admin:///usr/share/gnome-shell/extensions/drive-menu@gnome-shell-extensions.gcampax.github.com
Comment 5 Антон Мидюков 2025-12-26 11:11:09 MSK
Пулл-риквест в апстрим:
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/440
Comment 6 kullibbin 2025-12-29 14:29:00 MSK
Created attachment 20424 [details]
Скрипт для решения проблемы. Бэкапит исходный файл расширения js и создает новый, с задержкой запуска 5 сек, что решает проблему. Используетс
Comment 7 Дмитрий 2025-12-29 17:45:30 MSK
Created attachment 20431 [details]
патч, добавляющий проверку на дубликаты при монтирование (исправление для версии 48.3)

В расширение добавлена проверка для предотвращения дублирования носителей, MR в апстрим отправлен:

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/440
Comment 8 Дмитрий 2025-12-29 18:05:19 MSK
Comment on attachment 20431 [details]
патч, добавляющий проверку на дубликаты при монтирование (исправление для версии 48.3)

Изменил название файла в соответствии со стандартом
Comment 9 Дмитрий 2025-12-29 19:00:49 MSK
Comment on attachment 20431 [details]
патч, добавляющий проверку на дубликаты при монтирование (исправление для версии 48.3)

diff -urN gnome-shell-extensions-original/extensions/drive-menu/extension.js gnome-shell-extensions/extensions/drive-menu/extension.js
--- gnome-shell-extensions-original/extensions/drive-menu/extension.js	2025-12-29 21:49:23.096987297 +0600
+++ gnome-shell-extensions/extensions/drive-menu/extension.js	2025-12-29 21:54:16.094220518 +0600
@@ -178,6 +178,9 @@
     }
 
     _addMount(mount) {
+        if (this._mounts.some(item => item.mount === mount))
+            return;
+
         let item = new MountMenuItem(mount);
         this._mounts.unshift(item);
         this.menu.addMenuItem(item, 0);
Comment 10 Дмитрий 2025-12-29 19:02:46 MSK
Comment on attachment 20431 [details]
патч, добавляющий проверку на дубликаты при монтирование (исправление для версии 48.3)

diff -urN gnome-shell-extensions-original/extensions/drive-menu/extension.js gnome-shell-extensions/extensions/drive-menu/extension.js
--- gnome-shell-extensions-original/extensions/drive-menu/extension.js	2025-12-29 21:49:23.096987297 +0600
+++ gnome-shell-extensions/extensions/drive-menu/extension.js	2025-12-29 21:54:16.094220518 +0600
@@ -178,6 +178,9 @@
     }
 
     _addMount(mount) {
+        if (this._mounts.some(item => item.mount === mount))
+            return;
+
         let item = new MountMenuItem(mount);
         this._mounts.unshift(item);
         this.menu.addMenuItem(item, 0);
Comment 11 Дмитрий 2025-12-29 19:05:45 MSK
Created attachment 20432 [details]
патч

В расширение добавлена проверка для предотвращения дублирования носителей, MR в апстрим отправлен:

P.S
Извините за спам, я изучаю особенностей bugzilla по работе с файлами и их редактированию )
Comment 12 kullibbin 2026-02-27 18:29:38 MSK
Нашел еще один, видимо, правильный фикс проблемы. Не надо патчить расширение. Как я понимаю, флэшки монтирует как gdm, так и gnome shell, то есть два раза - могу криво выражаться, я не программист. Если запретить gdm монтировать флешки, то фантомы исчезают, но флешки и диски все равно после логина автоматически монтируются правильно, для пользователя ничего не меняется.
Создаем файл 
sudo nano /etc/polkit-1/rules.d/49-no-usb-mount-gdm.rules

И вписываем содержимое

polkit.addRule(function(action, subject) {
    if (subject.user == "gdm") {
        if (action.id == "org.freedesktop.udisks2.filesystem-mount" ||
            action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
            action.id == "org.freedesktop.udisks2.encrypted-unlock" ||
            action.id == "org.freedesktop.udisks2.encrypted-unlock-other-seat" ||
            action.id == "org.freedesktop.udisks2.loop-setup") {
            return polkit.Result.NO;
        }
    }
});

После чего перезагружаемся. Профит. Фантомов нет, но флешки примонтированы.
Comment 13 kullibbin 2026-03-01 14:45:34 MSK
Упс.. переустановил систему - скрипт не срабатывает.
Comment 14 kullibbin 2026-03-01 16:39:59 MSK
Да, самый надежный вариант - применить указанный выше патч к расширению. Другие варианты ненадежны.