Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Applescript/shell script] comment changer le dossier d'images de l'économiseur d'écran ?

18 réponses
Avatar
blanc
Bonjour à tous,

Voilà. La question est dans le titre. J'ai trouvé comment lancer un
économiseur d'écran par AS. Mais ce que je souhaite faire, pour les EE
qui affiche des images, c'est changer le dossier d'images, et ce par AS
(ou shell script).

--
JiPaul.
/ /--/--//\\ Jean-Paul Blanc
|/| L |\\\ quelquepart en (somewhere in)
\/|| = |||\\\ FRANCE

10 réponses

1 2
Avatar
benoit
JiPaul wrote:

Bonjour à tous,

Voilà. La question est dans le titre. J'ai trouvé comment lancer un
économiseur d'écran par AS. Mais ce que je souhaite faire, pour les EE
qui affiche des images, c'est changer le dossier d'images, et ce par AS
(ou shell script).



Une idée comme ça :

1re idée

- Tu choisis un alias qui pointe vers un dossier d'images

- Tu fais pointer cet alias vers un autre dossier d'images
ou
- Tu remplaces cet alias par un alias (du même nom) qui pointe vers le
nouveau dossier

2e idée (à condition que l'économiseur sache aller dans des
sous-dossiers)

- Tu pointes vers un dossier
- Tu changes le contenu de ce dossier en déplaçant/copiant/aliassant le
nouveau dossier dans le dossier de référence


Voili voulou, juste deux idées.


--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
blanc
Benoit wrote:

1re idée

- Tu choisis un alias qui pointe vers un dossier d'images

- Tu fais pointer cet alias vers un autre dossier d'images
ou
- Tu remplaces cet alias par un alias (du même nom) qui pointe vers le
nouveau dossier



Très bonne idée ! En fait je l'avais eue il y a qques années, et ça
marchait très bien (avec un lien symbolique plutot qu'un alias). Ça
marche d'ailleurs encore sur mon MacMini sous 10.6 (SL). Malheureusement
quand je suis passé au MBP et surtout que je suis passé à ML puis
maintenant à Yo, ça ne marche plus !... En effet les concepteurs du
screensaver (ou peut-être du système lui-même) ont pensé que c'était
mieux, dans un cas comme celui-ci, de déterminer le dossier pointé et de
le retenir comme celui où sont les images. Résultat : si mon script
change le dossier pointé, alors le screensaver utilise toujours l'ancien
dossier !...
Je viens de tester avec un vrai alias comme tu le suggèrais, et c'est
exactement pareil !...


2e idée (à condition que l'économiseur sache aller dans des
sous-dossiers)



Il le sait

- Tu pointes vers un dossier
- Tu changes le contenu de ce dossier en déplaçant/copiant/aliassant le
nouveau dossier dans le dossier de référence



Effectivement, c'est une idée qui pourrait marcher.

Bon dans une première approche, je viens de tester une variante :
Dans le dossier pointé j'ai mis mon alias/lien symbolique + 2 ou 3
photos. Malheureusement dans ce cas le ScSa a l'air de privilégier les
photos et ne suis pas l'alias.

Deuxième variante : J'ai mis dans le dossier pointé mon lien symbolique
+ 1 ou 2 alias
Hélas il ne suit aucun des trois et me dit qu'il n'y a aucune photo...

Troisième possibilité : copier (ou déplacer) le dossier de réf dans le
dossier pointé. Ça marche !... mais je me refuse à le faire car :
1) J'ai parmi mes dossiers d'images de gros dossiers dont la copie
prendrais du temps
2) Sachant que mon script change le dossier d'images chaque fois que le
fond d'écran change (càd actuellement toutes les heures). Ça ferait
beaucoup de copies/suppressions (ou déplacement) et j'ai peur que mon
SDD (même avec le Trim) n'aime pas du tout !...

Donc voilà ! Merci pour tes idées :-)
Mais il me faut autre chose...
--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
g4fleurot
JiPaul wrote:

Mais il me faut autre chose...



Je ne saurais pas faire, mais l'idée qui me vient, c'est de faire un
script par dossier d'images, de mettre les scripts dans un dossier et
faire un nouveau script qui fait une sélection aléatoire dans ce
dossier.

--
Gérard FLEUROT plus un
Avatar
blanc
Fleuger wrote:

Je ne saurais pas faire, mais l'idée qui me vient, c'est de faire un
script par dossier d'images, de mettre les scripts dans un dossier et
faire un nouveau script qui fait une sélection aléatoire dans ce
dossier.



???
Le problème n'est pas mon script en lui-même, mais le fait que je ne
peut pas (plus) demander par script au système de choisir tel ou tel
dossier d'images. Le fait de multiplier les scripts ne résoudra rien
àmha.

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
benoit
JiPaul wrote:

Bon dans une première approche, je viens de tester une variante :
Dans le dossier pointé j'ai mis mon alias/lien symbolique + 2 ou 3
photos. Malheureusement dans ce cas le ScSa a l'air de privilégier les
photos et ne suis pas l'alias.

Deuxième variante : J'ai mis dans le dossier pointé mon lien symbolique
+ 1 ou 2 alias
Hélas il ne suit aucun des trois et me dit qu'il n'y a aucune photo...

Troisième possibilité : copier (ou déplacer) le dossier de réf dans le
dossier pointé. Ça marche !... mais je me refuse à le faire car :
1) J'ai parmi mes dossiers d'images de gros dossiers dont la copie
prendrais du temps
2) Sachant que mon script change le dossier d'images chaque fois que le
fond d'écran change (càd actuellement toutes les heures). Ça ferait
beaucoup de copies/suppressions (ou déplacement) et j'ai peur que mon
SDD (même avec le Trim) n'aime pas du tout !...



Si le fond d'écran change une fois par heure et que le dossier doit
changer une fois par heure (pour moi cela veut dire une seule image à
chaque lancement) tu fais toi-même le tirage aléatoire et tu ne recopies
dans le dossier que l'image (on un alias, ou un lien symbolique) qui
servira (peut-être deux ou trois images par mesure de précaution).

Bref tu fais un script qui regarde toutes les minutes si l'économiseur
tourne. Si oui, tu ne fais rien, sinon tu vides le dossier et tu le
remplis à nouveau avec juste une/quelques images que tu as choisis
aléatoiremet.

Dans ton script

- Tu prends la liste des images existantes dans le dossier
- Tu ajoutes de nouvelles images choisies par ton script de façon
aléatoire
- Tu vérifies si une ancienne image est « ouverte » ;
- Si oui tu la laisses, sinon tu la vires ;

Tu lances le script toutes les X minutes (mettons 15) et tu auras
toujours une/des nouvelles images au lancement suivant et ce de façon
aléatoire. Quand tu dis que tu as des dossiers trop gros, ils
contiennent beaucoup d'images qui ne seront pas utiles : c'est donc toi
qui fait une sélection aléatoire avant pour ne copier que ce qui est
nécessaire.

En bref, tu modifies le contenu de ton dossier image au fil de l'eau en
ne modifiant le contenu que du nombre d'images nécessaires.

Donc voilà ! Merci pour tes idées :-)



En voilà une autre ;)




--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
g4fleurot
JiPaul wrote:

le fait que je ne peut pas (plus) demander par script au système de
choisir tel ou tel dossier d'images



La case Préférences Système > Sécurité et confidentialité >
Confidentialité > Accessibilité > SystemUIServer est bien cochée ?

--
Gérard FLEUROT plus un
Avatar
blanc
Merci encore pour cette troisième idée, mais... :

Benoit wrote:

Si le fond d'écran change une fois par heure et que le dossier doit
changer une fois par heure (pour moi cela veut dire une seule image à
chaque lancement) [snip...]



...non tu n'as pas compris.
Ce qu'est censé faire mon script (toutes les 10 minutes) (et qu'il fait
parfaitement sous SL) :
- déterminer quelle est l'image du fond d'écran (celle-ci est changée
toutes les heures par un logiciel qui s'appelle "Change Desktop" en
prenant une image au hasard dans un dossier qui contient plusieurs
sous-dossiers avec au total près de 10000 photos)
- si cette image de fond d'écran a changé, alors :
- déterminer quel est le sous-dossier qui contient la dite image
- changer le Sc Sav pour qu'il pointe vers le sous-dossier en question

Autrement dit : quand le Sc Sav démarre il va afficher les fichiers qui
sont dans le dossier contenant l'image du fond d'écran (ceci parce que
le dit dossier contient des images qui sont en rapport avec le fond
d'écran).

En outre il faut savoir que le dossier de 10000 images n'a pas un seul
niveau de sous-dossiers... mais cela n'est pas un problème : mon script
gère très bien cela. La seule chose qui ne marche plus, c'est demander
au sc sav de pointer vers le ss-dossier déterminé par le script.

Voilà.

Ceci étant, je reviens sur ce que j'ai dit précédemment.

JiPaul wrote:

Troisième possibilité : copier (ou déplacer) le dossier de réf dans le
dossier pointé. Ça marche !... mais je me refuse à le faire



En fait, quand j'ai écrit cela je n'ai pas réalisé que le dossier de réf
et le dossier pointé étaient sur le même disque (ça n'a pas été toujours
le cas). Donc un ** déplacement ** de l'un vers l'autre est possible
sans trop de coût ni en temps, ni en place mémoire sur le ssd.
Je vais donc peut-être faire un essai dans ce sens. Mais ceci dit cela
m'ennuie quand-même un peu, car trois programmes entrent en jeu :
- Change Desktop
- mon script
- le gestionnaire de screen saver
et je ne voudrais pas qu'un bug de l'un ou de l'autre (ou de plusieurs à
la fois) fasse que le déplacement du dossier d'images (alors que ScSav
ou ChDe est en train de travailler sur icelui) conduise à un mauvais
déplacement, voire une perte de fichiers, voire un plantage...

Donc si quelqu'un à une idée sur la question initiale que je reformule
pour plus de précision : *** comment demander par script au screensaver
(économiseur d'écran) de changer le dossier d'images qu'il utilise ***
alors il est le bienvenu.

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
blanc
Merci Gérard de tes réponses :-)

Fleuger wrote:

La case Préférences Système > Sécurité et confidentialité >
Confidentialité > Accessibilité > SystemUIServer est bien cochée ?



Ce n'est pas un problème de sécurité (et accessoirement je n'ai pas
cette case là où tu dis).

Le problème est que *** je ne sais pas *** faire ça (voir le sujet) par
script (car je n'est pas assez d'infos sur le ScreenSaver et comment lui
demander ça par script).

Je m'aperçois que le sujet (titre) de mon post n'était pas clair. Je
viens donc de le modifier.

Avant mon script marchait car je contournais le problème, mais
maintenant il ne marche plus car le système et le ScreenSaver ont évolué
(changé de version). Pour plus de détails, relire surtout ce que j'ai
dit ici :
<1mb9ze4.1pfybqc371qm8N%
et accessoirement ma réponse à Benoit ce matin.


--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
g4fleurot
JiPaul wrote:

Ce n'est pas un problème de sécurité (et accessoirement je n'ai pas
cette case là où tu dis).



C'est une paticularité intervenue récemment. (je ne me souviens plus du
système - Mavericks ?)
Le panneau de préfs Accès universel a disparu et il n'y a plus la case
Activer l'accès pour les périphériques d'aide qui permettait d'activer
les scripts d'AppleScript et le fonctionnement de System Events.
Le fonctionnalité correspndante à cette case (qui n'est pas activée par
défaut sur un nouveau système) a été dépacée à l'endroit que je t'ai
indiqué.
Comme avant, ça n'avait pas de rapport avec l'accès universel,
maintenant, ça n'a toujours pas de rapport avec la sécurité, mais les
concepteurs système Apple ont cru bon de la mettre là.

je n'ai pas cette case là où tu dis





--
Gérard FLEUROT plus un
Avatar
blanc
Fleuger wrote:

JiPaul wrote:

> Ce n'est pas un problème de sécurité (et accessoirement je n'ai pas
> cette case là où tu dis).

C'est une paticularité intervenue récemment. (je ne me souviens plus du
système - Mavericks ?)


Peux pas te dire : j'ai sauté par-dessus ...

Le panneau de préfs Accès universel a disparu et il n'y a plus la case
Activer l'accès pour les périphériques d'aide qui permettait d'activer
les scripts d'AppleScript et le fonctionnement de System Events.
Le fonctionnalité correspondante à cette case (qui n'est pas activée par
défaut sur un nouveau système) a été déplacée à l'endroit que je t'ai
indiqué.



A cet endroit je vois :

"Autoriser les applications ci-dessous à ** contrôler ** cet ordinateur"

Et il y a le '+' permettant d'ajouter des applis. Alors peut-être
peut-on ajouter "SystemUIServer". Mais :
1) je ne sais pas où le trouver
2) je ne vois pas l'intérêt de l'autoriser à contrôler mon ordi.

Comme avant, ça n'avait pas de rapport avec l'accès universel,
maintenant, ça n'a toujours pas de rapport avec la sécurité, mais les
concepteurs système Apple ont cru bon de la mettre là.



J'avoue effectivement ne pas comprendre le rapport.

Ceci étant, comme déjà dit, mon problème n'est pas là : je cherche un
mode d'emploi et je n'ai pas (pour l'instant) de problème d'autorisation
d'accès, puisque je ne sais pas comment accéder (par script) au choix du
dossier d'images (choix que je peux faire à la main dans les préfs
Système).


--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
1 2