{"id":18908307,"url":"https://github.com/chbrown/plist-utils","last_synced_at":"2026-04-25T23:35:24.676Z","repository":{"id":66189327,"uuid":"126075189","full_name":"chbrown/plist-utils","owner":"chbrown","description":"Tools for manipulating files/streams in Apple's \"property list\" format","archived":false,"fork":false,"pushed_at":"2020-09-23T17:17:32.000Z","size":8,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-01T01:12:58.687Z","etag":null,"topics":["apple","macos","plist","xml"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/chbrown.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":"2018-03-20T20:00:46.000Z","updated_at":"2024-12-03T06:02:03.000Z","dependencies_parsed_at":"2023-03-27T23:49:34.744Z","dependency_job_id":null,"html_url":"https://github.com/chbrown/plist-utils","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/chbrown/plist-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chbrown%2Fplist-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chbrown%2Fplist-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chbrown%2Fplist-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chbrown%2Fplist-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chbrown","download_url":"https://codeload.github.com/chbrown/plist-utils/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chbrown%2Fplist-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32280979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["apple","macos","plist","xml"],"created_at":"2024-11-08T09:25:36.082Z","updated_at":"2026-04-25T23:35:24.660Z","avatar_url":"https://github.com/chbrown.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# plist-utils\n\nInstall with [GNU Stow](https://www.gnu.org/software/stow/):\n\n    git clone https://github.com/chbrown/plist-utils\n    cd plist-utils\n    stow -t /usr/local/bin bin\n\n\n### `plprint`\n\nConvert a file in Apple's \"property list format\" into XML (whether binary or already XML),\nthen pretty print with `xmllint`.\nThe plist file can be supplied as a single argument, or on `/dev/stdin`.\n\n    plprint Config.plist\n\n\n### `pljson`\n\nSimplify the XML of the given plist file with XMLStarlet,\nreplacing `\u003cdata\u003e` and `\u003cdate\u003e` elements with `\u003cstring\u003e` elements,\nand convert to JSON.\n\n    pljson Config.plist\n\n\n### `plxml`\n\nConvert each of the specified Apple Property List files to `XML` in-place,\npreserving file timestamps and permissions.\n\n    plxml settings.bin.plist\n\n\n## Recipes\n\nThe macOS `airport` utility has a scan option, `-s`,\nbut by default, the output is unstructured and difficult to manipulate.\nThe `-x` option produces XML that contains a _lot_ more information in structured (if verbose) `plist` format.\n\nUsing `pljson` and a few other commands,\nwe can sort the available networks with strongest (largest RSSI) connections first:\n\n    airport -s -x \\\n    | iconv -f macroman -t UTF-8 \\\n    | pljson \\\n    | jq -c '.[] | {SSID_STR,BSSID,RSSI,CHANNEL,CHANNEL_FLAGS,CAPABILITIES}' \\\n    | mlr --ijson --opprint sort -nr RSSI\n\nPipeline components:\n\n1. `airport -s -x`:\n   Run a network scan and produce XML output.\n2. `iconv`:\n   Convert encoding from Mac-Roman to UTF-8.\n   Sometimes networks advertise names that are not UTF-8, which `airport` doesn't convert,\n   despite clearly denoting the encoding as `UTF-8` in the XML declaration.\n3. [`pljson`](#pljson):\n   Convert property list format to JSON.\n4. [`jq`](https://stedolan.github.io/jq/):\n   Flatten the top-level array and select just a few fields from each network dictionary.\n5. [`mlr`](https://johnkerl.org/miller/doc/):\n   Read in JSON and output whitespace-aligned tabular output, sorted by descending RSSI.\n   RSSI ranges from -100 (weakest) to 0 (strongest).\n\n   | RSSI | Description       |\n   |-----:|:------------------|\n   |    0 | impossibly strong |\n   |  -30 | amazing           |\n   |  -70 | average           |\n   |  -90 | unusable          |\n\n\n## License\n\nCopyright 2017-2018 Christopher Brown.\n[MIT Licensed](https://chbrown.github.io/licenses/MIT/#2017-2018).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchbrown%2Fplist-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchbrown%2Fplist-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchbrown%2Fplist-utils/lists"}