{"id":17685691,"url":"https://github.com/rami3l/ouverture","last_synced_at":"2025-03-12T16:34:16.658Z","repository":{"id":37873376,"uuid":"298331550","full_name":"rami3l/Ouverture","owner":"rami3l","description":"A default application modifier for macOS.","archived":true,"fork":false,"pushed_at":"2024-03-18T10:39:05.000Z","size":91,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-13T11:41:54.568Z","etag":null,"topics":["default-application","duti","mac","macos","ouverture","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rami3l.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-09-24T16:14:53.000Z","updated_at":"2024-05-06T01:20:39.000Z","dependencies_parsed_at":"2024-01-22T10:56:32.998Z","dependency_job_id":"093f27e9-424c-4f88-800e-059576ea567d","html_url":"https://github.com/rami3l/Ouverture","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2FOuverture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2FOuverture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2FOuverture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rami3l%2FOuverture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rami3l","download_url":"https://codeload.github.com/rami3l/Ouverture/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243252625,"owners_count":20261439,"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":["default-application","duti","mac","macos","ouverture","swift"],"created_at":"2024-10-24T10:28:44.369Z","updated_at":"2025-03-12T16:34:16.239Z","avatar_url":"https://github.com/rami3l.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ouverture\n\n\u003e /uvɛʀtyʀ/ nf. opening\n\n`Ouverture` is a macOS utility aiming to facilitate the process of inspecting and modifying the default handlers of file types and URL schemes.\n\nWarning: This project is still in its early days. Use it with care!\n\n## Contents\n\n- [Ouverture](#ouverture)\n  - [Contents](#contents)\n  - [Building \u0026 Installation](#building--installation)\n  - [Usage By Example](#usage-by-example)\n    - [Set default handler: `ovt bind`](#set-default-handler-ovt-bind)\n    - [Check file/URL support: `ovt check`](#check-fileurl-support-ovt-check)\n    - [Get bundle ID: `ovt id`](#get-bundle-id-ovt-id)\n    - [Look up file/URL claimer(s): `ovt lookup`](#look-up-fileurl-claimers-ovt-lookup)\n    - [Get app path: `ovt which`](#get-app-path-ovt-which)\n    - [UTI utilities: `ovt uti`](#uti-utilities-ovt-uti)\n\n## Building \u0026 Installation\n\n- `homebrew` install:\n  \n  ```bash\n  brew install rami3l/tap/ouverture\n  ```\n\n- Build from source:\n  \n  ```bash\n  # The recommended way is to use `mint`, so we will install it first:\n  brew install mint\n\n  # To install the latest release:\n  mint install rami3l/Ouverture\n\n  # To live on the bleeding edge:\n  mint install rami3l/Ouverture@master\n  ```\n\n## Usage By Example\n\nThe use of this project is mainly around `UTI`s ([what's this?](https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html)) and URL Schemes.\nYou can find a complete list of UTIs [here](https://escapetech.eu/manuals/qdrop/uti.html), and a list of URL schemes [here](https://en.wikipedia.org/wiki/List_of_URI_schemes).\n\n### Set default handler: `ovt bind`\n\n- Set default handler by bundle path:\n\n    ```bash\n    # URL schemes end with `://`\n    ovt bind path /Applications/Safari.app/ http://\n\n    # UTIs are reverse domain names\n    ovt bind path /Applications/Safari.app/ com.adobe.pdf\n\n    # Extensions start with a `.`\n    ovt bind path /Applications/Safari.app/ .pdf\n\n    # ... or you can simply omit the `.`\n    ovt bind path /Applications/Safari.app/\n\n    # `path` can also be omitted here\n    ovt bind /Applications/Safari.app/ pdf\n    ```\n\n- Set default handler by bundle ID:\n\n    ```bash\n    # See above, just use `ovt bind id` this time\n    ovt bind id com.apple.Safari http://\n    ```\n\n### Check file/URL support: `ovt check`\n\nFind all the file types or URL schemes supported by an app bundle.\n\n- Check support by bundle path:\n\n    ```bash\n    ovt check path /Applications/IINA.app # =\u003e File Extensions: 3g2, 3gp, aa3, aac, ...\n\n    # `path` can be omitted here\n    ovt check /Applications/IINA.app/\n    ```\n\n- Check support by bundle ID:\n\n    ```bash\n    # See above, just use `ovt check id` this time\n    ovt check id com.apple.Safari # =\u003e File Extensions: css, download, gif, ...\n    ```\n\n### Get bundle ID: `ovt id`\n\n```bash\novt id /Applications/Safari.app/ # =\u003e com.apple.Safari\n```\n\n### Look up file/URL claimer(s): `ovt lookup`\n\nFind all the app bundles which have claimed some file type or URL scheme.\n\n```bash\n# URL schemes end with `://`\novt lookup http:// # =\u003e com.apple.Safari, ...\n\n# UTIs are reverse domain names\novt lookup com.adobe.pdf # =\u003e com.apple.Preview, ...\n\n# Extensions start with a `.`\novt lookup .pdf # =\u003e com.apple.Preview, ...\n\n# ... or you can simply omit the `.`\novt lookup pdf # =\u003e com.apple.Preview, ...\n```\n\n### Get app path: `ovt which`\n\n```bash\n# This will return a list of all possible paths\novt which com.apple.Safari\n\n# Use `--lucky` if you want the first one only\novt which com.apple.Safari --lucky # =\u003e /Applications/Safari.app\n```\n\n### UTI utilities: `ovt uti`\n\n- Get the UTI of a file extension:\n\n  ```bash\n  ovt uti from-ext .pdf # =\u003e com.adobe.pdp\n\n  # ... or you can simply omit the `.`\n  ovt uti from-ext pdf # =\u003e com.adobe.pdf\n  ```\n\n- Get the possible extension(s) of a UTI:\n\n  ```bash\n  ovt uti to-ext public.mpeg-4 # =\u003e mp4, mpeg4\n\n  # Use `--lucky` if you want the first one only\n  ovt uti to-ext public.mpeg-4 --lucky # =\u003e mp4\n  ```\n\n- Get the parent(s) of a UTI:\n\n  ```bash\n  ovt uti parent public.mpeg-4 # =\u003e public.movie\n  ```\n\n- Get the description string of a UTI:\n\n  ```bash\n  # This might not work on some machines\n  ovt uti describe public.mpeg-4 # =\u003e MPEG-4 movie\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frami3l%2Fouverture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frami3l%2Fouverture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frami3l%2Fouverture/lists"}