{"id":21291693,"url":"https://github.com/jdtsmith/frameset-mac-frame-tabbing","last_synced_at":"2026-01-02T10:46:49.438Z","repository":{"id":66870018,"uuid":"238356313","full_name":"jdtsmith/frameset-mac-frame-tabbing","owner":"jdtsmith","description":"Enable save/restore of Mac native tab info via frameset/desktop","archived":false,"fork":false,"pushed_at":"2020-02-05T03:33:52.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-22T06:24:13.026Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","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/jdtsmith.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":"2020-02-05T03:02:55.000Z","updated_at":"2023-06-15T13:22:23.000Z","dependencies_parsed_at":"2023-05-12T09:45:25.013Z","dependency_job_id":null,"html_url":"https://github.com/jdtsmith/frameset-mac-frame-tabbing","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/jdtsmith%2Fframeset-mac-frame-tabbing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdtsmith%2Fframeset-mac-frame-tabbing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdtsmith%2Fframeset-mac-frame-tabbing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdtsmith%2Fframeset-mac-frame-tabbing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdtsmith","download_url":"https://codeload.github.com/jdtsmith/frameset-mac-frame-tabbing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243760549,"owners_count":20343649,"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":[],"created_at":"2024-11-21T13:39:23.678Z","updated_at":"2026-01-02T10:46:49.408Z","avatar_url":"https://github.com/jdtsmith.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# frameset-mac-frame-tabbing\n\nThis simple package enable saving and restoring Mac native tabs, including their positions, grouping and orientation with other tabs, etc., as part of any _frameset_ (Emacs native way of saving all frame/window and associated buffers, used e.g. by `desktop`, `desktop+` and other session management tools).  \n\nThis package is designed for and works specifically with the [emacs-mac](https://github.com/railwaycat/homebrew-emacsmacport) port and its `mac-frame-tab-group-property` commmand. \n\n\n## Installation\n\nNot yet on MELPA, so just clone the repository and `require` it, or, if you are a `use-package` user:\n\n```elisp\n;;==\u003e frameset-mac-save-tabs: Advise frameset to save and restore tab groups\n(use-package frameset-mac-save-tabs\n  :after frameset\n  :load-path \"/path/to/frameset-mac-save-tabs\")\n```\n\n## Usage\n\nAny command that saves or restores a `frameset`, including Emacs' native `desktop`, or any related session management package, will automatically save and restore mac tab information. \n\n## Example Desktop\n\nThough not really related to this package, a simple way to easily switch among many _named_ desktops is below.  Just `C-c d l` and choose among the named desktops you have saved.  By default this does _not_ auto-save the open desktop (e.g. if you forget what you are doing and wander off to something else).  But you can `C-c d s` to re-save it, or save to another name, at any time.\n\n```elisp\n;;===\u003e desktop: Some custom configs for in-built desktop sessions\n(use-package desktop\n  :bind ((\"C-c d l\" . my-desktop-load)\n\t (\"C-c d s\" . my-desktop-save)\n\t (\"C-c d a\" . desktop-save-mode))\n  :init\n  (desktop-save-mode -1)\n  (setq desktop-base-dir \"~/.emacs.d/desktops\"\n\tdesktop-files-not-to-save \"^$\")\t;allow tramp files\n  (defun my-desktop-load (name)\n    (interactive\n     (list\n      (completing-read \"Load Desktop: \"\n\t\t       (cl-remove-if\n\t\t\t(lambda (x) (string-match-p \"^\\.\\.?$\" x))\n\t\t\t(directory-files desktop-base-dir)))))\n    (desktop-change-dir (expand-file-name name desktop-base-dir)))\n  \n  (defun my-desktop-save (name)\n    (interactive\n     (list\n      (completing-read \"Write Desktop: \"\n\t\t       (cl-remove-if\n\t\t\t(lambda (x) (string-match-p \"^\\.\\.?$\" x))\n\t\t\t(directory-files desktop-base-dir))\n\t\t       nil nil (and desktop-dirname\n\t\t\t\t    (file-name-nondirectory desktop-dirname)))))\n    (setq desktop-dirname (expand-file-name name desktop-base-dir))\n    (if (file-exists-p desktop-dirname)\n\t(if (y-or-n-p (format \"Desktop %s exists, overwrite? \" name))\n\t    (progn\n\t      (desktop-save desktop-dirname)\n\t      (message \"Desktop %s saved\" name))\n\t  (message \"Cancelled\"))\n      (make-directory desktop-dirname 'parents)\n      (desktop-save desktop-dirname))))\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdtsmith%2Fframeset-mac-frame-tabbing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdtsmith%2Fframeset-mac-frame-tabbing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdtsmith%2Fframeset-mac-frame-tabbing/lists"}