{"id":22446007,"url":"https://github.com/richbl/terminal-profiles-tweaker","last_synced_at":"2026-02-10T22:04:19.640Z","repository":{"id":45413574,"uuid":"438041354","full_name":"richbl/terminal-profiles-tweaker","owner":"richbl","description":"View and edit terminal profile settings for font name/size, row size, and column size using a CLI (bash scripting)","archived":false,"fork":false,"pushed_at":"2024-12-10T22:32:21.000Z","size":36,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T07:26:04.135Z","etag":null,"topics":["bash","bash-script","cli","commmand-line","gnome","gsettings","profiles","script","shell","terminal"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richbl.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":"2021-12-13T22:16:41.000Z","updated_at":"2024-12-10T22:32:24.000Z","dependencies_parsed_at":"2025-02-01T15:40:26.071Z","dependency_job_id":"a74a2dc7-77f5-4ca4-849a-9180abb510dc","html_url":"https://github.com/richbl/terminal-profiles-tweaker","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/richbl/terminal-profiles-tweaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richbl%2Fterminal-profiles-tweaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richbl%2Fterminal-profiles-tweaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richbl%2Fterminal-profiles-tweaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richbl%2Fterminal-profiles-tweaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richbl","download_url":"https://codeload.github.com/richbl/terminal-profiles-tweaker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richbl%2Fterminal-profiles-tweaker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29319280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["bash","bash-script","cli","commmand-line","gnome","gsettings","profiles","script","shell","terminal"],"created_at":"2024-12-06T03:17:58.835Z","updated_at":"2026-02-10T22:04:19.622Z","avatar_url":"https://github.com/richbl.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gnome Terminal Profiles Tweaker (GTPT)\n\nView and bulk edit the following [Gnome Terminal](https://en.wikipedia.org/wiki/GNOME_Terminal) profile settings using the [gsettings](https://wiki.gnome.org/HowDoI/GSettings) command and a [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) script:\n\n- Font name/size (using default Pango `'filename fontsize'` format)\n- Row size (terminal height)\n- Column size (terminal width)\n\n\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://user-images.githubusercontent.com/10182110/145905455-5f94f57d-992d-4dab-a4e4-006a012ddbbc.png\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://user-images.githubusercontent.com/10182110/145905455-5f94f57d-992d-4dab-a4e4-006a012ddbbc.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/10182110/145905455-5f94f57d-992d-4dab-a4e4-006a012ddbbc.png\"\u003e\u003c/picture\u003e\n\n## Rationale\n\nBecause I like terminal profiles (themes), and I have accumulated many themes over the years, it's difficult to manage so many theme properties in a consistent manner, so I needed a programmatic way to make terminal profile property changes in bulk.\n\nSo, the use case for **GTPT** is whenever I discover a new font (or terminal height, or width, etc.) I'd like to use in my terminal sessions, or add a new terminal profile, I run this script and it very quickly updates all terminal profiles at one time.\n\n## [\u003cimg src=\"https://github.com/user-attachments/assets/4dc1e16e-3fd3-481c-9a43-b027c029dd27\" width=\"150\" /\u003e](https://github.com/richbl/a-bash-template)[Developed with a Bash Template (BaT)](https://github.com/richbl/a-bash-template)\n\n**GTPT** uses a Bash shell template (BaT) called **[A-Bash-Template](https://github.com/richbl/a-bash-template)** designed to make script development and command line argument management more robust, easier to implement, and easier to maintain. Here are a few of those features:\n\n- Dependencies checker: a routine that checks all external program dependencies (*e.g.*, [jq](https://stedolan.github.io/jq/))\n- Arguments and script details--such as script description and syntax--are stored in the [JSON](http://www.json.org/) file format (*i.e.*, `config.json`)\n- JSON queries (using [jq](https://stedolan.github.io/jq/)) handled through wrapper functions\n- A script banner function automates banner generation, reading directly from `config.json`\n- Command line arguments are parsed and tested for completeness using both short and long-format argument syntax (*e.g.*, `-f|--font`)\n- Optional command line arguments are permissible and managed through the JSON configuration file\n- Template functions organized into libraries (see the [Bash-Lib](https://github.com/richbl/bash-lib) project for details) to minimize code footprint in the main script\n\nFor more details about using a bash template, [check out the BaT sources here](https://github.com/richbl/a-bash-template).\n\n## Requirements\n\n- An operational [Bash](https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29) environment (Bash 5.1.8 used during development)\n- One additional external program:\n  - [jq](https://stedolan.github.io/jq/), for parsing the `config.json` file\n\nWhile this package was initially written and tested under Linux (Ubuntu 21.10), there should be no reason why this won't work under other shells or Unix-like operating systems that support the `gsettings` application.\n\n## Basic Usage\n\n**GTPT** is run through a command line interface, so all of the command options are made available there.\n\nHere's the default response when running `gnome_terminal_profiles_tweaker.sh` with no arguments:\n\n    $ ./gnome_terminal_profiles_tweaker.sh \n\n     |\n     |  Gnome Terminal Profiles Tweaker (GTPT)\n     |    1.0.1\n     |\n     |  Usage:\n     |    gnome_terminal_profiles_tweaker.sh [-c new_column_count] [-r new_row_count] [-f new_font]\n     |\n     |  -c, --columns  The number of columns in a newly created terminal window\n     |  -r, --rows     The number of rows in a newly created terminal window\n     |  -f, --font     Font name and size using Pango syntax: 'name size', e.g. 'Monospace 12'\n     |\n\n    220 profiles found\n\n    Profile #1 'Tomorrow Night Eighties' \u003e\u003e no changes\n    Profile #2 'gotham' \u003e\u003e no changes\n    Profile #3 'ibm3270' \u003e\u003e no changes\n    ...\n\nIn this example, the program responds by displaying the results of a `gsettings` query for all terminal profiles, but with no changes made to those profiles.\n\nWhen the optional arguments are passed, the script provides feedback on the changes made to those terminal profiles:\n\n    $ ./gnome_terminal_profiles_tweaker.sh -f 'IBM 3270 13'\n\n     |\n     |  Gnome Terminal Profiles Tweaker (GTPT)\n     |    1.0.1\n     |\n     |  Usage:\n     |    gnome_terminal_profiles_tweaker.sh [-c new_column_count] [-r new_row_count] [-f new_font]\n     |\n     |  -c, --columns  The number of columns in a newly created terminal window\n     |  -r, --rows     The number of rows in a newly created terminal window\n     |  -f, --font     Font name and size using Pango syntax: 'name size', e.g. 'Monospace 12'\n     |\n\n    220 profiles found\n\n    Profile #1 'Tomorrow Night Eighties' \u003e\u003e Font: 'Source Code Pro 11'--\u003e'IBM 3270 13'. \n    Profile #2 'gotham' \u003e\u003e Font: 'Source Code Pro 11'--\u003e'IBM 3270 13'. \n    Profile #3 'ibm3270' \u003e\u003e Font: 'Source Code Pro 11'--\u003e'IBM 3270 13'.\n    ...\n\n## Roadmap\n\n- The gsettings profile getter/setter functions in this script could be used for the bulk configuration of any number Gnome Terminal properties. If there's a good use case for adding additional functionality to **GTPT**, let me know.\n\n## IMPORTANT: This Project Uses Git Submodules \u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://user-images.githubusercontent.com/10182110/208980142-08d4cf6e-20ac-4243-ac69-e056258b0315.png\" width=\"150\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://user-images.githubusercontent.com/10182110/208980142-08d4cf6e-20ac-4243-ac69-e056258b0315.png\" width=\"150\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/10182110/208980142-08d4cf6e-20ac-4243-ac69-e056258b0315.png\" width=\"150\"\u003e\u003c/picture\u003e\n\nThis project uses [Git submodule project(s)](https://git-scm.com/book/en/v2/Git-Tools-Submodules) (located in the `bash-lib` folder) to keep this project up-to-date without manual intervention.\n\n**Be sure to clone this project with the `--recursive` switch** (`git clone --recursive https://github.com/richbl/this_project`) so any submodule project(s) will be automatically cloned as well. If you clone into this project without this switch, you'll likely see empty submodule project folders (depending on your version of Git).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichbl%2Fterminal-profiles-tweaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichbl%2Fterminal-profiles-tweaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichbl%2Fterminal-profiles-tweaker/lists"}