{"id":19677863,"url":"https://github.com/joaocsilva/hammerspoon","last_synced_at":"2025-10-19T21:53:29.237Z","repository":{"id":137051622,"uuid":"354859043","full_name":"joaocsilva/hammerspoon","owner":"joaocsilva","description":"Personal configurations for Hammerspoon","archived":false,"fork":false,"pushed_at":"2023-03-13T09:30:53.000Z","size":413,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-01-10T04:41:09.778Z","etag":null,"topics":["automation","hammerspoon","lua","macos","osx"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joaocsilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-05T14:19:09.000Z","updated_at":"2022-05-19T16:28:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"372d702e-cc8a-4d4d-9aef-cf3524295359","html_url":"https://github.com/joaocsilva/hammerspoon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaocsilva%2Fhammerspoon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaocsilva%2Fhammerspoon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaocsilva%2Fhammerspoon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaocsilva%2Fhammerspoon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joaocsilva","download_url":"https://codeload.github.com/joaocsilva/hammerspoon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240987443,"owners_count":19889335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","hammerspoon","lua","macos","osx"],"created_at":"2024-11-11T17:35:32.880Z","updated_at":"2025-10-19T21:53:29.132Z","avatar_url":"https://github.com/joaocsilva.png","language":"Lua","readme":"# Configurations for [Hammerspoon](http://www.hammerspoon.org)\n\nCopy the `config.lua.dist` to `config.lua` and adapt to your needs.\n\nThe base hotkeys are always the same, configured in the file `config.lua`.\n```\nconfig.hyper = {'ctrl', 'alt', 'cmd'}\n```\n\n## Features\n\n### Menu\n\nThe menu contains an \"extended\" version that creates items for the window \nmovement and applications.\n\n![Menu](./docs/menu.png)\n\n![Menu extended](./docs/menu_extended.png)\n\n### Window movement\n\nMove and resize windows with hotkeys.\n\n| Hotkey | Direction |\n| --- | --- |\n| hyper + ← | left |\n| hyper + ← + ← | left_half |\n| hyper + → | right |\n| hyper + → + → | right_half |\n| hyper + ↑ | top |\n| hyper + ↑ + ↑ | maximize |\n| hyper + ↓ | down |\n| hyper + ↓ + ↓ | center |\n| Menu click | top_right |\n| Menu click | top_left |\n| Menu click | down_right |\n| Menu click | down_left |\n\n### Applications\n\nSet hotkeys to open applications.\n\nConfigurable in the `config.lua`.\n```\nconfig.applications = {\n  I = 'iTerm',\n  P = 'PhpStorm',\n  L = 'Sublime Text',\n}\n```\n\n### Caffeine\n\nA menu item (and submenu) that allows to prevent the system from going to sleep\nwith a timer or indefinitely.\n\nConfigurable in the `config.lua`.\n```\nconfig.menu.caffeine = {\n  {title = '10 minutes', seconds = 600},\n  {title = '30 minutes', seconds = 1800},\n  {title = '1 hour', seconds = 3600},\n  {title = '3 hours', seconds = 10800},\n}\n```\n\n### Network\n\nMenu items that shows and allows copying when clicked the Wifi name, External IP \nand Internal IP addresses.\n\n### Connected Screens\n\nA menu item that shows the connected displays.\n\n### Reload configurations\n\nWhen a `.lua` file is changed the configurations will be reloaded.\n\nHotkey: `hyper + R`\n\n### Audio\n\nForce specific input device to be always used.\n\nMute automatically when the computer wakes up.\n\nConfigurable in the `config.lua`.\n```\nconfig.audio.forceInputDevices = {\n  {\n    from = 'Anker SoundCore',\n    to = 'MacBook Pro Microphone',\n  }\n}\nconfig.audio.muteOnAwake = true\n```\n\n### Battery\n\nGet notified when: \n- Using an unknown charger (connect the charger and run \n  `hs.battery.psuSerialString()` to check the current serial).\n- Battery state is not Good.\n\nConfigurable in the `config.lua`.\n```\nconfig.battery.serial = ''\nconfig.battery.state = true\n```\n\n### Seal plugins\n\n#### Date convert\n\nFrom Time to Date, type: `1577865600`\n\n![Time to Date](./docs/time_to_date.png)\n\nFrom Date to Time, type: `2020-01-01 09:00:00`\n\n![Date to Time](./docs/date_to_time.png)\n\n#### Google translate \n\nTranslate text directly on Seal/Spotlight.\n\nThis plugin requires a [Google API key](https://cloud.google.com/translate/docs/setup) \nand is configurable in the `config.lua`.\n```\nconfig.Seal.key = 'SOME-KEY'\n```\n\nThe Usage: Type `tr` following the langcode to which you want to translate the text, \nand the text to be translate\n```\ntr [to] [text to translate]\n```\n\n![gtranslate](./docs/gtranslate.png)\n\n## Update spoons\n\nRun the script `update-spoons.sh`.\n\nThis will clone the [Spoons](https://github.com/Hammerspoon/Spoons) repo into a \ntemporary folder, apply [the patches](./patches/) and copy the result into the \n`Spoons` folder.\n\nAll the un-used Spoons are ignored in the `.gitignore`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaocsilva%2Fhammerspoon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoaocsilva%2Fhammerspoon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaocsilva%2Fhammerspoon/lists"}