Reminders on Touch Bar

Reminders on Touch Bar

Suite à des changements professionels, je viens de switcher de Mac. J'ai  dû réinstaller mes  astuces et applications pour recréer mon environnement de travail.

Comme tout développeur, on finit par configurer notre petit chez nous d'année en année. Heureusement ayant des backups dans tous les sens grâce à Seafile et Nextcloud dont je vous ai déjà parlé, je n'ai passé qu'une demi-journée à tout reconfigurer ...  Merci la fibre, mais aussi quelques scripts .sh que je complète à chaque switch de machine. Le principe que j'applique est le suivant, mes fichiers de configuration non critiques sont créés et configurés sur un repo privé (zsh, mongo ...). Un script bash va ensuite les répliquer aux bons endroits sur le Mac :).

Passons au sujet de l'article. Pendant à un moment je me demandais comment rendre cette TouchBar utile. À la suite de quelques recherches sur Product Hunt, je suis tombé sur MTRM (My Touchbar my rules). C'est un  projet OpenSource  qui permet de customiser sa TouchBar.

Pour ma part elle me permet désormais :

  • de gérer NightSwift
  • de gérer Do not Disturb
  • d'afficher la valeur du BTC
  • de lancer un terminal et de me connecter à l'un de mes serveurs
  • de gérer la luminosité et le volume (slide avec plusieurs doigts)
  • de passer en veille café :)
  • d'afficher mon prochain reminder à exécuter
  • d'afficher le nom de l'artiste en lecture

Le projet propose un ensemble d'actions de base et le reste peut-être customisé via des scripts bash ou AppleScript. Pour ma part j'ai décidé de tester Apple Script. Il est possible de configurer différentes actions.

Pour les intéressés voici un exemple de code / conf MTMR pour afficher ses derniers reminders.

MTMR

  {
    "type": "appleScriptTitledButton",
    "source": {
      "filePath": "/Users/..../Documents/reminders.applescript",
    },
    "action": "appleScript",
    "actionAppleScript": {
      "filePath": "/Users/..../Documents/remindersLaunch.applescript",
    },
    "refreshInterval": 60,
    "image": {
      "base64": "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"
    }
  },

AppleScript to get reminders

set smallSize to 12
set listName to "Pierre"

tell application "Reminders"
  set activeReminders to name of (reminders of list listName whose completed is false and priority is 1)
  if activeReminders is {} then
    set activeReminders to name of (reminders of list listName whose completed is false)
    if activeReminders is {} then
      return ""
    else
      set result to my theReduce(first item of activeReminders, smallSize)
      return result
    end if
  else
    set result to my theReduce(first item of activeReminders, smallSize)
    return result
  end if
end tell

on theReduce(theString, theNumber)
  if length of (theString) is less than theNumber then
    set result to " " & theString
  else
    set result to text 1 thru theNumber of theString
    set result to (" " & result & ".")
  end if
  return result
end theReduce

AppleScript to open reminders

tell application "Reminders"
	set newList to list "Pierre"
	show newList
	activate newList
end tell

Pour aller un plus loin, lorsque l'on travaille sur des projets OpenSource ou en équipe, il est possible via IFTT de pousser une issue créée dans une liste reminder, et donc de la voir sur sa TouchBar :). Pour ma part je récupère les différents paramètres de l'issue séparés par des "-", cela me permet via un split d'afficher uniquement ce que je désire dans la TouchBar.