61 votos

¿Cómo puedo desactivar este mensaje: "el disco no se expulsó correctamente"?

¿Existe alguna forma de desactivar el mensaje "el disco no se expulsó correctamente"?

Utilizo un KVM y necesito alternar entre dos sistemas y tengo una memoria USB conectada al KVM. El problema es que es muy molesto recibir el mensaje cada vez que cambio de una computadora a la otra. Sé que puedo desmontarlo (y probablemente debería hacerlo), pero cambio todo el tiempo, así que es una molestia desmontarlo, y no hay nada sensible en la memoria USB.

5 votos

Lo siento, no tengo respuesta. Sin embargo, ten en cuenta que este mensaje es para recordarte que los datos se encuentran en la memoria y aún no han sido escritos en el disco. Lo cual es particularmente importante cuando cambias con frecuencia.

9 votos

He hecho esto desde hace mucho tiempo y nunca he perdido nada. No estoy diciendo que no vaya a suceder, pero estoy dispuesto a correr el riesgo.

2 votos

Está bien, tengo que preguntar: ¿alguien sabe por qué recibimos tres preguntas casi idénticas en 10 horas, esta, 6090, y 6108 (y sí, las dos últimas han sido cerradas como duplicados)?

24voto

James Puntos 406

actualizado nuevo método mejorado

Como mencionó Russel en los comentarios:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.DiskArbitration.diskarbitrationd.plist DADisableEjectNotification -bool YES && sudo pkill diskarbitrationd

0 votos

¿Continuará descargándose después de reiniciar mi Mac?

1 votos

Descargar un archivo launchctl plist persiste incluso después de reiniciar, así que creo que sí. Dicho esto, casi nunca reinicio, ¡así que aún no lo he probado!

2 votos

He reiniciado y ha persistido bien :)

23voto

pateksan Puntos 123

Este script de applescript los cerrará por ti. Péguelo en Editor de Scripts y luego guárdelo como una aplicación. Luego otorgue acceso a esa aplicación en (Preferencias del Sistema > Seguridad y Privacidad > Accesibilidad) Luego puedes usar una aplicación como ControlPlane https://www.controlplaneapp.com/ para ejecutar la aplicación al despertar y cerrarlos automáticamente todos. ** Nota: También necesitarás otorgar acceso de Accesibilidad a ControlPlane.

tell application "System Events"
tell process "NotificationCenter"
    set numwins to (count windows)
    repeat with i from numwins to 1 by -1
        tell window i
            set temp to value of static text 1
        end tell
        if temp contains "Disk Not Ejected Properly" then
            click button "Close" of window i
        end if
    end repeat
end tell
end tell

Actualización a partir de marzo de 2023

@Zev Eisenberg: El script anterior no funciona con macOS Ventura. Aquí hay uno que sí lo haría:

tell application "System Events" to tell process "Notification Center"
    repeat with notificationWindow in windows
        tell notificationWindow
            set entireContents to entire contents
            repeat with content in reverse of entireContents -- iterar hacia atrás para cerrar primero las notificaciones inferiores, si eso es importante
                if class of content is group then
                    set groupStaticTexts to static texts of content
                    repeat with staticText in groupStaticTexts
                        set foundText to false
                        if value of staticText is equal to "Disk Not Ejected Properly" then
                            set foundText to true
                            exit repeat
                        end if -- text es el texto que queremos encontrar
                    end repeat -- staticTexts in group

                    if foundText then
                        -- Nos gustaría buscar botones en el grupo llamados "Close", pero las versiones recientes de macOS ocultan el botón Cerrar hasta que pases el cursor sobre la notificación, y aparentemente no hay forma de pasar el cursor en AppleScript. En su lugar, inspeccionamos las acciones del grupo y buscamos la que se llama "Close".
                        -- truco de acciones a través de https://github.com/Ptujec/LaunchBar/blob/master/Notifications/Dismiss%20all%20notifications.lbaction/Contents/Scripts/default.applescript a través de https://www.reddit.com/r/applescript/comments/ycilyr/comment/iu5m3q5/?utm_source=reddit&utm_medium=web2x&context=3

                        repeat with groupAction in actions of content
                            if description of groupAction is equal to "Close" then
                                perform groupAction
                                exit repeat
                            end if
                        end repeat
                    end if
                end if -- si la clase del contenido es grupo
            end repeat -- contenidos completos de la ventana
        end tell -- notificationWindow
    end repeat
end tell

1 votos

Hermoso, prefiero esto a deshabilitar por completo el Centro de notificaciones.

0 votos

Gracias. En Catalina agregué un flujo de trabajo en Automator, luego seleccioné AppleScript de la lista de acciones posibles y pegué tu guion, y funcionó, aunque tuve que ejecutarlo varias veces.

0 votos

Gracias,

10voto

tfinniga Puntos 101

Ciertamente no es una solución elegante pero puedes desactivar UserNotificationCenter.app que se encuentra en /system/library/coreservices - reemplázalo con otra aplicación o archivo con el mismo nombre. Esto detendrá cualquier advertencia que aparezca (incluyendo que tu disco está lleno), así que ten cuidado con eso, pero en mi experiencia hace lo que estás buscando.

En realidad hice esto en mi Mac hace mucho tiempo, y lo olvidé hasta que hiciste la pregunta. Crédito a Macpadawon en http://macosx.com/forums/mac-os-x-system-mac-software/297194-disable-device-removal-message.html por la respuesta - el mismo lugar donde encontré mi respuesta hace unos años.

0 votos

Wow. Buen atrapada. Ciertamente no haría esto en mi propio sistema, pero es bueno saber que se puede hacer. Supongo que la aplicación podría ser reemplazada por un archivo vacío.

0 votos

Lo he hecho en tres Mac diferentes sin problemas, aunque la mayor parte del tiempo solo desmonto las cosas también.

2 votos

Al menos no notaste ningún problema, ¿verdad? Lo siento, ¡no pude resistirme! :-)

3voto

Jack Humphries Puntos 273

Funciona con macOS Big Sur

Este AppleScript descarta todas las notificaciones sobre el disco que no se ha expulsado correctamente.

tell application "System Events"
    tell process "Notification Center"
        set group_index to 1
        repeat
            try
                set the_window to group group_index of UI element 1 of scroll area 1 of window "Notification Center"
                set notification to value of static text of the_window
                set notification_title to item 1 of notification
                if notification_title = "DISK NOT EJECTED PROPERLY" then
                    set the_actions to actions of the_window
                    repeat with the_action in the_actions
                        if description of the_action is "Close" then
                            tell the_window
                                perform the_action
                            end tell
                        end if
                    end repeat
                    # Esperar a que la notificación desaparezca para que los índices de las notificaciones restantes se actualicen en consecuencia.
                    delay 0.25
                    # No incrementar `group_index` porque todos las notificaciones restantes tienen su índice decrementado en 1 ya que esta notificación fue eliminada. No necesitamos preocuparnos por las notificaciones antes de la que acaba de ser eliminada porque ya sabemos que no son notificaciones sobre la expulsión de discos.
                else
                    # Esta no es una notificación de expulsión de disco, así que omítela y pasa a la siguiente notificación.
                    set group_index to group_index + 1
                end if
            on error error_message
                # No hay más notificaciones que procesar.
                exit repeat
            end try
        end repeat
    end tell
end tell

Puedes ejecutar este AppleScript cada 10 segundos con el PLIST de launchd a continuación. Asegúrate de modificarlo para que funcione con tu propia configuración. Luego coloca el PLIST en ~/Library/LaunchAgents y ejecuta launchctl load ~/Library/LaunchAgents/archivo.plist (reemplazando archivo.plist con el nombre del archivo) en Terminal.

Lo realmente genial de launchd es que si un trabajo no se ejecuta porque la computadora está dormida (por ejemplo, cuando tu computadora portátil está cerrada), launchd ejecutará el trabajo tan pronto como la computadora se despierte nuevamente (y si el trabajo debía ejecutarse varias veces mientras la computadora estaba dormida, las múltiples ejecuciones se fusionarán en una sola ejecución al despertar). Esto es realmente útil cuando desenchufas una computadora portátil cerrada de un dock hogareño con un disco duro conectado y luego usas la computadora portátil sobre la marcha.

    Label
    com.TuNombre.DescartarNotificaciones
    ProgramArguments

      osascript
      /ruta/al/script

    RunAtLoad

    StartInterval
    10

-4voto

¡ACTUALIZACIÓN!

¡Dios mío! ¡QuantumG es un genio! Aquí tienes un truco (y cuando digo un truco en la vida real) para deshabilitar solo este molesto mensaje y dejar intacto el resto del sistema de notificaciones...

http://quantumg.blogspot.com/2015/04/disabling-os-x-device-removal-warnings.html

Advertencia: ¡Este es un consejo profesional y no apto para los débiles de corazón! Requiere hackear los archivos del sistema Mac OSX y podría resultar en que rompas tu Mac.

Editado para mayor claridad.

El problema con las unidades flash u otros dispositivos USB es este; cada vez que escribes datos en una unidad... CUALQUIER unidad en tu sistema, los datos primero se escriben en una memoria intermedia. Más adelante, cuando la computadora tenga la oportunidad, descargará los datos en el dispositivo (disco duro, SSD o cualquier dispositivo USB). Eso puede ser instantáneo (al menos para nosotros, meros mortales) o puede tardar unos segundos. La posible demora significa que si desconectas un dispositivo USB antes de que los datos se descarguen, puedes terminar con una unidad dañada o un conjunto de archivos dañados en la unidad.

Si solo lees desde un dispositivo, entonces NO NECESITAS descargar las memorias intermedias antes de desconectarlo, ya que están vacías y no es necesario descargarlas en el dispositivo.

Entonces... Es muy probable que la molesta advertencia de MAC OS X NO sea relevante. Solo es importante hacerlo si has escrito recientemente en el dispositivo y no le has dado suficiente tiempo para descargar las memorias intermedias (unos pocos segundos, como máximo). NUNCA es necesario esperar a que se descarguen las memorias intermedias si solo estás leyendo desde el dispositivo USB.

Por lo tanto, es necesario que Apple proporcione una forma de deshabilitar mensajes individuales para los usuarios avanzados. No trates a todos como novatos que no pueden saber cómo funciona su computadora.

Y para aquellos que se quejan de que estoy equivocado y hay una forma de deshabilitar los mensajes deshabilitando TODO EL SUBSISTEMA DE NOTIFICACIONES, están completamente equivocados. Deshabilitar todo el subsistema de notificaciones no es una solución aceptable, al igual que quitar la batería de tu teléfono celular NO es una solución aceptable para recibir demasiadas llamadas de telemercadeo. El subsistema de notificaciones es importante y no se debe desactivar solo porque al autor del mensaje le resulte molesto uno de los muchos mensajes diversos.

Este es un problema que solo puede resolverse adecuadamente si Apple proporciona una manera para que los usuarios elijan no recibir mensajes específicos.

2 votos

Entonces, no estoy segura de que este discurso realmente califique como una respuesta a la pregunta... sin embargo, ya se proporcionó una respuesta que hace exactamente lo que estás diciendo que no se puede hacer: los mensajes pueden ser desactivados. Sin embargo, como esto no intenta brindar ninguna respuesta a la pregunta, voy a marcar esto para su eliminación.

0 votos

@Charlie74 Es un intento de destacar un punto, por lo que no lo voy a borrar. Editaré el lenguaje vago hacia el final. Si el OP desea aclarar, siéntase libre de proporcionar una explicación positiva de por qué OS X está certificado como POSIX - es.wikipedia.org/wiki/POSIX#POSIX-certified y no basado en POSIX.

0 votos

@Charlie74 He aclarado mi respuesta, pero para defenderme nunca dije que no se pudiera hacer. Simplemente sugerí que deshabilitar el subsistema de notificaciones para detener uno de los tal vez cientos de problemas de los cuales tu Mac puede necesitar notificarte, no es una solución aceptable. Es solo un poco mejor que "Deja de usar tu Mac y el molesto mensaje no te molestará más". Solo Apple puede ofrecer una solución aceptable, y aún no lo ha hecho.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X