Como você remove um único item do menu “Abrir Recente” no Mac OS X?

8

A maioria dos aplicativos do Mac OS X baseados em documentos tem um arquivo --- > Abra o item de menu Recent ... . Esta é uma lista de arquivos recentes que você abriu com o programa. Remover todos os itens é fácil; basta selecionar Limpar Menu .

No entanto, às vezes você pode querer apenas remover um único item ou dois, em vez de tudo, como um arquivo que não existe mais ou um que você nunca deseja ver novamente. Como você remove um único item da lista Abrir recente, sem remover mais nada?

    
por Dave Gallagher 06.06.2011 / 17:31

2 respostas

14

Na maioria dos aplicativos , documentos recentes específicos do aplicativo estão em um arquivo chamado:

~/Library/Preferences/com.company.application.LSSharedFileList.plist

Para listar todos esses arquivos no Terminal, digite o seguinte:

ls -Ad Library/Preferences/* | grep LSSharedFileList

No Mac OS X 10.6, esses arquivos são (geralmente) em formato binário.

Use o Editor de lista de propriedades (Ferramentas para desenvolvedores da Apple / Xcode 3) ou o Xcode 4 para visualizá-las e editá-las.

Eles são relidos quando o aplicativo é iniciado, não enquanto está sendo executado. Você precisa fechar o aplicativo durante a edição deste arquivo.

Acho que estava entediado ...

#!/usr/bin/env bash

mode=$2
if [ -z "$mode" ] ; then
    echo "Usage:"
    echo "$0 <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist"
    echo "$0 <filename> rm <idx> - remove recent file entry with given index from specified plist"
    exit 1
fi

if [ "$mode" != "ls" ] && [ "$mode" != "rm" ] ; then
    echo "second argument must be one of [ls, rm]"
    exit 1
fi

file=$1
if [ -z $file ] ; then
    echo "Need argument (recent items plist file)!"
    exit 1
fi
if [ ! -f $file ] ; then
    echo "File $file does not exist!"
    exit 1
fi

if [ "$mode" = "ls" ] ; then
    i=0
    cont=1
    while [ $cont ] ; do
        recentfilename=$( /usr/libexec/PlistBuddy -c "Print RecentDocuments:CustomListItems:$i:Name" $file 2>/dev/null )
        if [ "$?" -ne "0" ] ; then
            cont=
        else
            echo "$i - $recentfilename"
            i=$(( $i + 1 ))
        fi
    done
fi

if [ "$mode" = "rm" ] ; then
    i=$3
    if [[ $i =~ ^-?[0-9]+$ ]] ; then
        # argument is integer
        $( /usr/libexec/PlistBuddy -c "Delete RecentDocuments:CustomListItems:$i" $file )
    else
        echo "Expected integer, got $i as third argument"
        exit 1
    fi
fi

Uso:

$ ./editrecent.sh 
Usage:
./editrecent.sh <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist
./editrecent.sh <filename> rm <idx> - remove recent file entry with given index from specified plist


$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Music Library.xml
4 - iTunes Library.xml
5 - gradle-proxy-support.diff
6 - DefaultGradlePropertiesLoader.java
7 - DefaultGradlePropertiesLoader-proxy.java
8 - gradle-proxy-support.patch
9 - DefaultKeyBinding.dict
10 - DefaultKeyBindings.dict

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist rm 3

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Library.xml
4 - gradle-proxy-support.diff
5 - DefaultGradlePropertiesLoader.java
6 - DefaultGradlePropertiesLoader-proxy.java
7 - gradle-proxy-support.patch
8 - DefaultKeyBinding.dict
9 - DefaultKeyBindings.dict
    
por 06.06.2011 / 19:21
2

O que você está pedindo não é um recurso compatível.

No entanto, existem instruções sugerindo que é possível remover itens individuais editando /Users/YOURUSERNAME/Library/Preferences/com.apple.recentitems.plist , depois fazendo logout e voltando.

Esse arquivo é para o histórico de todo o sistema; Não consegui encontrar uma lista específica para o histórico de pré-visualização. Supondo que você esteja executando o Leopard ou mais recente, o arquivo plist é binário, portanto, um editor de texto básico não o manipulará. Text Wrangler é um editor gratuito que pode lidar com plists binários.

Fonte: Removendo itens individuais da lista "Itens Recentes"

    
por 06.06.2011 / 17:51

Tags