Commandes sous X11

Frizou

Membre actif
6 Juillet 2006
173
2
Bonjour,

J'aimerais pouvoir lancer d'un xterm toutes les applications de mon dock. Il y a toujours moyen de faire des tartines d'alias ou de modifier mon PATH en y ajoutant à chaque fois ce qu'il faut pour chaque programme. Je voulais savoir s'il y avait une manière propre pour faire cela (j'espère être à peu près clair).

NB. Ceci ne concerne donc que les programmes que je n'ai pas installés avec fink.

Merci.
 
Pour lancer, par exemple, Textedit, je fais :
Bloc de code:
open -a Textedit
Ça suffit.
Je suppose que pour que cela suffise il faut avoir lancé l'application au moins une fois pour qu'elle soit référencée par le Finder (ou l'avoir glissée/deposée avec le même Finder).
En tous cas,
Bloc de code:
open -a TextMate
lance TextMate illico.
 
je sais pas si tu va trouver ça propre, mais il y a cet article à lire : Mac OS X Hints
dont voici une libre adaptation, un peu simplifiée :

• créer le dossier ~/Apps et le rajouter au PATH
(puis éventuellement le rendre invisible)

• y placer le script suivant :
Bloc de code:
!/bin/sh
# openapp.sh

open -a "${0##*/}" "$@"

• créer un second script :
Bloc de code:
#!/bin/sh
# gener.sh

APPS=~/Apps			## a ajouter au PATH
OPENAPP=$APPS/openapp.sh

mdfind "kMDItemKind == 'Application'" | while read a
do
    echo $a
    ln -sf $OPENAPP $APPS/"${a##*/}"
done
(donc Tiger only, sinon voir l'article)

• penser à rendre exécutable les deux script et lancer gener.sh


tu auras maintenant accès à tes applis depuis le Terminal en profitant de la complétion


reste à mettre en place un système de MàJ (cf commentaires de l'article)
et donc bien vider à chaque fois le contenu du rép, hormis le script


voir aussi la solution de kholburn toujours dans les commentaires pour quelque chose d'un peu plus propre


mais bon, je préfère largement un truc comme Namely à tout ça :)
 
arg - on peut pas éditer ses anciens posts de même pas 24h !?

parasite a dit:
voir aussi la solution de kholburn toujours dans les commentaires pour quelque chose d'un peu plus propre
je viens seulement de tester - c'est clairement mieux :) quelques petits bugs mais a priori rien de trop gênant (à part la perte de la complétion habituelle pour open => utilisation ici d'un alias plutôt, mais toujours pas pour d'éventuels fichiers à passer en arg à l'app)

alors en clair :

• un fichier ~/.bash_completion (par exemple), contenant :
Bloc de code:
function _open_app
{
    COMPREPLY=()
    local cur=${COMP_WORDS[COMP_CWORD]}
    [[ "$cur" == -* ]] && return 0
    
    if [ $COMP_CWORD -eq 1 ] && [ -s "$appslist" -a -r "$appslist" ]
    then
       # pour grep
       cur=${cur//./\\.}
       cur=${cur//\\/\\\\}

       local IFS="
"
       COMPREPLY=( $( grep "^$cur" "$appslist" ) )
    fi
    
    return 0
}

complete -F _open_app app
et rajouter dans son .profile ou .bashrc les lignes :
Bloc de code:
export appslist=~/.apps.list
alias app='open -a'
source ~/.bash_completion

• un script :
Bloc de code:
#!/bin/sh
# script.sh [repapp1 [repapp2 [...]]]

loc=
#if [ $# -gt 0 ]
#then
#    loc="-onlyin '$1'"
#    for (( i=2; i<=$#; i++))
#    do loc="$loc -onlyin '$(eval echo \${$i})'"; done
#fi
    
exec 3>&1

mdfind "$loc" "kMDItemKind == 'Application'" | while read
do
    app=${REPLY##*/}
    echo $app >&3
    echo ${app// /\\ }
done | sort -i > "$appslist"
&#224; lancer p&#233;riodiquement comme on veut
(un peu merd&#233; dans le passage des -onlyin optionnels, et simplifiable au niveau de la sortie console si on pr&#233;f&#232;re)


d&#233;sormais, on dispose de app qui propose la compl&#233;tion pour le nom des applis &#224; lancer


bon man bash :)
 
Merci beaucoup, ça répond exactement à ma question.