{"id":26214842,"url":"https://github.com/charlierobin/google-mail-wrapper","last_synced_at":"2026-03-15T22:02:36.284Z","repository":{"id":195480598,"uuid":"692473341","full_name":"charlierobin/google-mail-wrapper","owner":"charlierobin","description":"A Macintosh app wrapper for GMail accounts","archived":false,"fork":false,"pushed_at":"2023-09-18T06:30:33.000Z","size":148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-09-18T07:26:29.450Z","etag":null,"topics":["gmail"],"latest_commit_sha":null,"homepage":"","language":"Xojo","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/charlierobin.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}},"created_at":"2023-09-16T15:32:32.000Z","updated_at":"2023-09-18T07:26:31.162Z","dependencies_parsed_at":"2023-09-18T07:26:30.814Z","dependency_job_id":"4465dcfd-079f-403d-bdc9-a391ecaf5bb3","html_url":"https://github.com/charlierobin/google-mail-wrapper","commit_stats":null,"previous_names":["charlierobin/google-mail-wrapper"],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charlierobin%2Fgoogle-mail-wrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charlierobin%2Fgoogle-mail-wrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charlierobin%2Fgoogle-mail-wrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charlierobin%2Fgoogle-mail-wrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charlierobin","download_url":"https://codeload.github.com/charlierobin/google-mail-wrapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243196619,"owners_count":20251861,"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":["gmail"],"created_at":"2025-03-12T10:18:40.942Z","updated_at":"2025-12-26T22:58:36.591Z","avatar_url":"https://github.com/charlierobin.png","language":"Xojo","funding_links":[],"categories":[],"sub_categories":[],"readme":"# google mail wrapper\n\nAlmost the same as https://github.com/charlierobin/proton-mail-app-wrapper, with just a couple of small differences.\n\nEssentially a DesktopHTMLViewer set in a window, with the URL set to\n\n`https://mail.google.com/mail/u/0/#inbox`\n\nThe first time you launch the app, the web view will try to load the URL above, and Google steer you through the standard Google authentication process.\n\nAs with the Proton Mail app wrapper, when you quit a very simple JSON preferences is saved in your `~/Library/Preferences` directory:\n\n`~/Library/Preferences/com.charlierobin.gmail.json`\n\nThis preferences just contains the position and size of the app window, so you don’t have to keep repositioning it in between app launch sessions.\n\nAll the DesktopHTMLViewer files, ie: cookies, cached HTML/Javascript/CSS/other web content like images etc, are saved in the following directories:\n\n\n`~/Library/Caches/com.charlierobin.gmail`\n\n`~/Library/Cookies/com.charlierobin.gmail.binarycookies`\n\n`~/Library/WebKit/com.charlierobin.gmail`\n\n\nThere’s also a standard Apple `Saved Application State` file written:\n\n`~/Library/Saved Application State/com.charlierobin.gmail.savedState`\n\nAll these state/cookie files etc are separate from the \"standard\" Safari history/cookie/storage files on your Mac, and are therefore unaffected if you clear your Safari browsing data.\n\n(Obviously if you do want to \"reset\" the wrapper app, you need to delete all the files/folders above. If you do that, the next time you launch you'll have to do the Google authentication process etc all over again starting from scratch. Probably a feature I should add as a menu command, so it can be done simply, rather than manually by the user having to poke around in the guts of their own machine.)\n\nNote the the names of all the above files depends on the Bundle Identifier that was used when compiling the app, so in my case it was `com.charlierobin.gmail`.\n\n\u003cimg width=\"380\" alt=\"Screenshot 2023-09-16 at 12 35 26\" src=\"https://github.com/charlierobin/google-mail-wrapper/assets/10506323/56a6767d-a401-4ea8-b8f8-a918e7485af8\"\u003e\n\nIf you wanted something different, you change the identifier and re-build.\n\nIf you want to run multiple copies of the app, each handling a different GMail account, you will need to compile a version of the app for each account, with a unique bundle ID.\n\nIn other words, to be able to simulataneously work with gmail_account_1@gmail.com, gmail_account_2@gmail.com and gmail_account_3@gmail.com, you need three wrapper apps:\n\n\nGMail 1 (with bundle id of, say: com.mydomain.gmail.account1)\n\nGMail 2 (with bundle id of, say: com.mydomain.gmail.account2)\n\nGMail 3 (with bundle id of, say: com.mydomain.gmail.account3)\n\n\n(But it doesn't really matter what the app names and bundle IDs are, as long as they are unique.)\n\nThis is a screenshot of all the files/directories that the app creates. (As you can see, in addition to those mentioned above, there's some `/private/var/folders/...` content):\n\n\u003cimg width=\"1064\" alt=\"Screenshot 2023-09-18 at 08 04 04\" src=\"https://github.com/charlierobin/google-mail-wrapper/assets/10506323/45321e07-7aa1-4d64-b6ad-770979604d3d\"\u003e\n\nAs with the Proton Mail app, there is a simple RegEx that looks at the page title and sees if there are unread emails, playing a notification sound if anything is found.\n\nThe only other minor difference between the Proton Mail wrapper and this app is that I needed to add a fake `UserAgent` string to the web control, as GMail wouldn't show the modern UI without it, and kept reverting to the \"basic\" HTML version. So I suppose if for some reason you wanted to force the wrapper app to show only this basic GMail version you could comment this line out and re-build:\n\n`self.Web.UserAgent = \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15\"`\n\n(I just copied and pasted the user agent string from a random version of Safari, and it seems to work okay.)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlierobin%2Fgoogle-mail-wrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharlierobin%2Fgoogle-mail-wrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlierobin%2Fgoogle-mail-wrapper/lists"}