Empêcher Firefox de quitter le mode "Plein écran" sous macOS lorsque l'on appuie sur la touche Echap
Une fonctionnalité bien pratique sur macOS, c'est la possibilité de placer n'importe quelle application dans son propre espace de travail, en plein écran, masquant toute l'interface du système. Très pratique pour se concentrer ou tout simplement pour laisser le plus de place à l'application active.
Cependant, les navigateurs Firefox et Safari (je n'ai pas testé sur Chrome, ne l'ayant pas installé) ont pris la mauvaise habitude de quitter ce mode dès que l'on appuie sur la touche Echap. Ce qui devient vite pénible quand une application Web utilise cette touche comme raccourci clavier (par exemple pour fermer une boîte de dialogue).
Sachez qu'il existe une option un peu planquée dans Firefox qui permet d'empêcher ce comportement : dans la page about:config
, recherchez la clé browser.fullscreen.exit_on_escape
et passez-la à la valeur false
. L'effet de ce changement est immédiat, pas besoin de relancer le navigateur.
Je n'ai pas trouvé d'option équivalente sur Safari.
Une petite astuce si vous utilisez Alpine Linux pour déployer une application sur votre image Docker, et que vous avez des soucis d'internationalisation, ici appliqué à PHP, mais sûrement applicable à d'autres technos.
Il suffit parfois d'un paquet manquant pour vous provoquer un arrachage de cheveux en bonne et due forme.
Une des choses que j'aime le plus sur les distributions Linux, c'est leur gestionnaire paquets. Je ne parle pas d'un gestionnaire en particulier, mais du concept même de gestionnaire de paquets. Il faut dire que pouvoir installer n'importe quel logiciel en une commande (ou en un clic si vous préférez les interfaces graphiques) tout en étant assuré à quasiment 100% que ce que vous installez n'est pas un fork vérolé de VLC, ça apporte tout de même une certaine sérénité, en plus d'éviter aux logiciels installés d'embarquer leur propre système de mise à jour.
Une des spécificités d'un gestionnaire de paquets est par ailleurs de gérer les dépendances des programmes, de sorte que si deux programmes ont besoin d'une même librairie pour fonctionner, ils n'ont pas besoin de l'incorporer eux-mêmes et ils profitent directement de la librairie qui sera considéré comme une dépendance des deux programmes. Un gain de temps pour les mainteneurs du programme, et de place pour les utilisateurs.
Il arrive fréquemment cependant au fil des évolutions des programmes qu'un paquet initialement installé sous forme de dépendance devienne inutile. Selon la distribution, il pourra être supprimé automatiquement par le gestionnaire de paquets, mais ce n'est pas toujours le cas. Certains gestionnaires proposent par ailleurs une commande simple pour faciliter leur désinstallation, comme APT (apt autoremove
). Ce n'est pas le cas de pacman sur Arch Linux, cependant, il est possible de s'en sortir en jouant un peu avec les options. Dans mon cas, je suis arrivé à cette commande qui semble tout à fait convenir :
pacman -Rs $(pacman -Qdt | sed -E "s/^([^ ]+).+$/\\1/")
Décortiquons un peu ça :
pacman -Qdt
permet de lister (Q
) les paquets ayant été installés sous forme de dépendance (d
), mais dont aucun autre paquet ne dépend actuellement (t
)- On passe le résultat de cette commande à
sed
avec une expression régulière pour ne conserver que la première partie de chaque ligne (donc on retire les numéros de version) - On donne le résultat de tout cela à pacman pour suppression (
R
). On en profite pour supprimer également les dépendances de ces paquets (s
), puisqu'elles ne serviront plus.
Et c'est fini !
Notez que cette commande semble fonctionner également avec yay
, mais chez moi elle semblait avoir oublié certains paquets. Dans le doute, je préférerais donc utiliser pacman directement.
Je vous souhaite un bon gain de place !
Si vous avez un Mac et ouvrez régulièrement le terminal, peut-être avez-vous déjà remarqué que le nom de la machine dans le prompt a tendance à changer tout seul selon le réseau Wi-Fi que vous utilisez.
Ils semble que ce comportement vienne du fait que par défaut, macOS prenne un nom fourni par le serveur DHCP. Si comme moi ce comportement vous perturbe, sachez que vous pouvez fixer ce nom à l'aide d'une simple commande :
sudo scutil --set HostName richard
Remplacez richard
par le nom souhaitez, et ouvrez un nouveau terminal pour voir le nouveau nom appliqué.
Allez, Apple, encore un petit effort, vous êtres à ça 🤏 d'utiliser un fichier /etc/hostname
Petite découverte du jour : Mozilla travaille apparemment avec plusieurs universités européennes pour développer une extension de traduction automatique fonctionnant localement. Ça le gros avantage d'éviter de transmettre du texte pouvant contenir des informations personnelles (genre si on fait traduire une page sur laquelle on est identifié). De ce que j'ai pu voir (notamment en testant avec cet article présentant le projet), les traductions semblent de plutôt bonne qualité d'une manière générale, et propose plusieurs fonctionnalités bien pensées, comme le fait de souligner en rouge les erreurs potentielles ou le fait de traduire ce qu'on écrit dans les formulaires automatiquement pour que ça corresponde à la langue du site.
Bref, un outil qui peut dépanner (mais comme d'habitude, attention à ne pas se reposer uniquement dessus pour éviter les mauvaises surprises). :)
Bravo, YouTube, continuez comme ça, c'est pas comme si les vidéastes de votre plateformes étaient pas déjà en train de migrer vers d'autres plateformes pour diversifier leurs sources de revenus !
Ça me fait furieusement penser aux émissions de téléréalité américaines doublées façon documentaire, dans lesquelles on entend clairement que la VO censure les gros mots avec un gros "bip" dégueulasse (oui, bah c'est mon blog, je peux y écrire ce que je veux, merde !).
Si vous êtes sur Mac et que vous utilisez iTerm, peut-être êtes-vous frustré•e de ne pas pouvoir utiliser les touches Alt et Cmd avec les flèches pour naviguer entre les mot, ou pour revenir en début de ligne : par défaut, l'application insère des caractères cryptique comme [D
ou [C
.
Il existe cependant une configuration qui permet d'avoir le comportement recherché : dans la fenêtre de paramètres, section Profiles, sélectionnez votre profil de terminal puis ouvrez l'onglet Keys et le sous-onglet Keys Mappings. En bas de la liste, vous trouverez une liste déroulante Presets..., choisissez Natural Text Editing.
Et c'est tout !
Dans la même veine que l'outil partagé dans la note précédente, il y a une autre chose que je ne sais jamais écrire du premier coup, c'est une ligne de configuration pour Cron.
Cet interpréteur en ligne est excellent pour écrire sa ligne de Crontab sans s'y perdre !
Quand je développe, il y a des choses que je ne sais jamais faire du premier coup. Parmi elles, il y a le formatage des dates et heures sous forme de chaîne de caractères. %h
ou %H
pour les heures ? %m
, c'est pour inscrire le mois ou les minutes ?
Visiblement, je ne suis pas le seul à galérer, puisque quelqu'un a eu la bonne idée de créer ce petit outil pour tester ses chaînes de formatage !
Une info sur laquelle je suis tombé par hasard en rallumant ma 3DS et en ouvrant l'eShop : si vous aviez acheté des jeux dématérialisés sur la 3DS et/ou la Wii U, je vous conseille fortement de les télécharger au plus vite, car le service ne va pas tarder à être arrêté.
Pour voir les jeux que vous pouvez re-télécharger, vous pouvez ouvrir l'eShop, vous rendre dans le menu, appuyer sur Paramètres/Autres et sélectionner Logiciels retéléchargeables dans l'historique. Vous aurez alors la liste des jeux qui ont été téléchargés un jour par votre console (achetés, démos ou téléchargements automatiques), il ne vous restera plus qu'à appuyer sur le bouton Retélécharger des jeux que vous voulez garder.
Ceci est exactement la raison pour laquelle il vaut mieux acheter ses jeux sur cartouche. De toute façon, Nintendo ne fait aucune réduction sur le format dématérialisé, donc il n'y a vraiment aucune raison de choisir ce format (à moins que le format physique n'existe pas, bien sûr).
Mais plusieurs de ses caractéristiques ont de quoi inquiéter. Notamment la présence d'un kill switch, sorte de bouton d'arrêt d'urgence qui permet à un acteur central d'isoler une adresse IP du reste du réseau. Celle-ci ne pourra alors plus envoyer ou recevoir de données. D'autres inquiétudes surgissent autour du fait que les adresses mais aussi les paquets envoyés et reçus seraient reliés à l'identité du propriétaire de l'ordinateur ou du titulaire de la connexion.
En clair, si vous dites ou faites un truc qui ne plait pas aux autorités, ce nouveau protocole leur permettra :
- de vous retrouver en lisant simplement les métadonnées des paquets qui transitent (actuellement, il faut demander au FAI de collaborer)
- de vous isoler totalement
Espérons que ce protocole ne soit jamais adopté.
Et n'oublions jamais : ce n'est pas parce que nous sommes actuellement dans un État de droit, que nous le serons toujours dans 5 ans. Un régime autoritaire peut toujours apparaître si on n'y prête pas attention.
Ça fait environ un mois maintenant que je possède la console de Valve, le Steam Deck, et c'est un peu devenu mon support de prédilection pour le jeu vidéo du fait de son côté très "hackable", Valve la promouvant comme un telle avec une distribution dérivée de Arch Linux et un mode Bureau accessible très facilement. Du coup, il est assez logique de vouloir accéder à des jeux qui ne sont pas vendues sur la plateforme Steam.
C'est dans cette logique que Microsoft nous propose ici une solution pour jouer aux jeux de son catalogue Xbox Cloud Gaming grâce à un abonnement GamePass Ultimate. Le processus n'est pas très compliqué et consiste en gros à installer le navigateur Edge, l'ajouter à la bibliothèque Steam et modifier ses paramètres de lancement pour ouvrir le navigateur en mode plein écran (ou kiosk, je sais pas pourquoi tous les navigateurs utilisent ce terme au lieu de fullscreen 🤷♂️) sur la page d'accueil du service.
Attention, plusieurs points importants à prendre en compte ici :
- l'utilisation du service cloud de Xbox nécessite un abonnement GamePass Ultimate à 12€/mois
- le jeu vidéo via le cloud nécessite une connexion Internet robuste
- il y a une coquille dans le tutoriel fourni par Microsoft : à l'étape 12b, pensez à remplacer l'URL
https://www.xbox.com/play
parhttps://www.xbox.com/fr_FR/play
(ici pour la France ; adaptez selon votre pays), autrement vous aurez le service américain, et vous ne pourrez rien faire - dans les paramètres du contrôleur, la configuration par défaut Manette avec contrôle caméra semble suffire, cependant certaines parties de l'interface (notamment celle pour s'authentifier à son compte Microsoft) n'est utilisable qu'avec une souris, je recommande donc de configurer le trackpad droit en tant que souris (n'oubliez pas de configurer le clic)
- le tutoriel indique d’ajouter l’argument
--window-size=1024,640
aux paramètres de lancement de Edge. Il s’agit de la résolution de l’écran de la console. Si vous avez prévu de jouer sur une télévision, vous pouvez l’adapter à la résolution maximale supportée par celle-ci (par exemple1920,1080
pour du 1080p, ou4096,2160
pour de la 4K)
Une fonctionnalité un peu cachée et pourtant extrêmement classe et pratique dans Discord : il existe une petite syntaxe qui permet d'inscrire une date dans le format que vous voulez, un peu comme dans un programme :
<t:TIMESTAMP:FORMAT>
En remplaçant TIMESTAMP
par la date sous la forme d'un timestamp (c'est-à-dire le nombre de secondes depuis la date UNIX, le 1er janvier 1970 à minuit), et FORMAT
par un des caractères ci-dessous, vous obtenez l'affichage suivant :
Format | Résultat |
---|---|
R |
un affichage relatif, par exemple "il y a 3 semaines" ou "dans 2 heures" |
D |
la date seule dans la langue de l'application, par exemple "31 octobre 2022" |
T |
l'heure seule localisée avec la langue de l'application, par exemple "19:20:34" |
t |
comme T , mais sans les secondes, par exemple "19:20" |
F |
affichage complet de la date et de l'heure localisée avec la langue de l'application, par exemple "lundi 31 octobre 2022 19:20" |
Ainsi, si je veux obtenir la chaîne pour le 31 octobre à 20:20:34 (dont le timestamp UNIX est 1667240434
) au format relatif, je vais donc écrire :
Halloween commence officiellement <t:1667244034:R> !
D'autres formats sont proposés sur la doc de Discord destinée aux développeur·se·s. Attention, Discord prend le timestamp en heure locale.
Pratique par exemple pour ne pas avoir à mettre à jour votre âge manuellement dans tous les salons de présentation du monde !
Un article extrêmement intéressante sur le format PostScript (qui sert notamment de base au format PDF), sur lequel je suis tombé après avoir tenté de générer un fichier PDF avec ImageMagick, donnant l'erreur (plutôt cryptique) suivante :
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/421.
Il semble que ImageMagick ait désactivé par défaut tout traitement depuis et vers les formats PostScript et PDF, car PostScript est un langage de programmation contenant de multiples failles de sécurité qui rendent sa manipulation dangereuse dans les cas (fréquents) de traitement côté serveur dans le cadre des applications Web. Une sage décision, du coup. Apparemment, ces failles sont inhérentes au langage PostScript lui-même, ce qui rend ces failles impossible à corriger.
Si vous êtes sûr⋅e de ce que vous faites, vous pouvez cependant réactiver le traitement de ces fichiers en éditant le fichier /etc/ImageMagick-6/policy.xml
:
<policy domain="coder" rights="read|write" pattern="PDF,PS" />
Il est aussi possible de mettre uniquement read
ou write
dans l'attribut rights
.
Si vous utilisez un ordinateur portable sous Linux équipé d'une architecture Intel, soyez vigilants : la version 5.19.12 contient un bug important au niveau du pilote graphique qui peut endommager l'écran. Apparemment, le bug provoque des latences au niveau de l'alimentation de l'écran, ce qui engendre des flashes blancs.
Le problème ne concerne pas les architectures AMD et ARM.
Lorsque vous effectuez la mise à jour du pilote, assurez-vous qu'il ne s'agit pas de la 5.19.12. Un correctif (la 5.19.13) est d'ores et déjà disponible.
Si vous avez un doute sur la version que vous exécutez, la commande uname -r
est votre amie. :)
Une petite découverte sympa que j'ai faite aujourd'hui : il s'agit d'une implémentation de la partie serveur du protocole AirPlay, utilisé par les appareils d'Apple pour le partage audio et vidéo.
L'utilisation est on ne peut plus simple : vous ouvrez un terminal et vous invoquez la commande uxplay
, et c'est tout : votre ordinateur devient visible dans le menu AirPlay de vos appareils Apple et vous pouvez donc diffuser dessus votre musique ou votre vidéo !
Pour utiliser le programme, il vous faudra simplement vous assurer d'avoir lancé le démon Avahi qui implémente le protocole Bonjour (oui, c'est vraiment le nom du protocole)
Il semblerait qu'il y ait une vaste campagne de clonage de dépôts sur GitHub afin d'y injecter du code malveillant destiné à transmettre l'intégralité des variables d'environnement à l'attaquant. L'occasion de rappeler de toujours vérifier ce qu'on télécharge, en particulier quand c'est destiné à être exécuté.
Une très bonne nouvelle pour la vie privée sur le Web.
Notons également l'existence de l'extension Remove FBclid and UTM, avec laquelle cette fonctionnalité semble complémentaire.
Si vous êtes développeur⋅se, que vous utilisez Docker et Docker-Compose sur vos projets et que vous utilisez GNU/Linux, vous avez très certainement déjà eu des problèmes de permission : en effet, il n'est pas rare que Docker (exécuté avec son propre utilisateur) et votre utilisateur se marche dessus, empêchant soit l'application d'écrire dans ses propres répertoires, soit vous d'éditer les fichiers sources.
On peut être tenté de changer les permissions en 0777
, mais il y a une solution plus élégante.
À part l'étape 0, la marche à suivre est à réaliser pour chaque projet.
0. Configurer votre utilisateur
Tout d'abord, vérifiez à l'aide de la commande groups
que votre utilisateur se trouve bien dans le groupe docker
. Si ce n'est pas le cas, ajoutez le :
sudo usermod -aG docker $USER
Le groupe docker
est celui auquel appartient l'utilisateur avec lequel est exécuté le démon de Docker.
Puis fermez et rouvrez votre session. Vous pouvez vérifier à nouveau que vous vous situez bien dans le groupe.
Cette étape est un one-shot, vous n'avez plus à vous préoccuper.
1. Donner votre projet au bon utilisateur et au bon groupe
Dans un terminal, positionnez-vous à la racine de votre projet, puis modifiez l'utilisateur et le groupe auquel le projet appartient, de sorte qu'il appartienne bien à votre utilisateur ainsi que le groupe docker
:
sudo chown -R $USER:docker
2. Corriger les permissions du projet
Il ne reste plus qu'à s'assurer que vous et votre groupe possède bien les mêmes permissions de lecture et d'écriture :
# D'abord pour vous :
chmod -R u+r .
chmod -R u+w .
# Et aussi pour le groupe :
chmod -R g+r .
chmod -R g+w .
Et voilà !
C’est pas trop tôt.
C’est pas comme si ça faisait plus de 20 ans que la technologie existait et avait fait ses preuves dans de nombreux pays.