{"id":15720696,"url":"https://github.com/agiunderground/project-pequeno","last_synced_at":"2026-05-05T12:33:09.804Z","repository":{"id":244870814,"uuid":"816008439","full_name":"agiUnderground/project-pequeno","owner":"agiUnderground","description":"Patches and tutorial on how to allow line spacing less than 1 in vte-based terminals","archived":false,"fork":false,"pushed_at":"2024-06-17T22:35:29.000Z","size":3430,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T22:47:09.378Z","etag":null,"topics":["customization","fonts","gnome-terminal","gtk","linux","terminal-emulator","vte","xfce","xfce4-terminal"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agiUnderground.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-06-16T20:00:26.000Z","updated_at":"2024-06-17T22:50:10.000Z","dependencies_parsed_at":"2024-06-18T01:02:34.062Z","dependency_job_id":"94dad49c-53c0-4ab5-8dd3-843ff87f0c02","html_url":"https://github.com/agiUnderground/project-pequeno","commit_stats":null,"previous_names":["agiunderground/project-pequeno"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agiUnderground%2Fproject-pequeno","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agiUnderground%2Fproject-pequeno/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agiUnderground%2Fproject-pequeno/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agiUnderground%2Fproject-pequeno/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agiUnderground","download_url":"https://codeload.github.com/agiUnderground/project-pequeno/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246390856,"owners_count":20769476,"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":["customization","fonts","gnome-terminal","gtk","linux","terminal-emulator","vte","xfce","xfce4-terminal"],"created_at":"2024-10-03T21:59:50.888Z","updated_at":"2026-05-05T12:33:09.763Z","avatar_url":"https://github.com/agiUnderground.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# project pequeño\nPatches and tutorial on how to allow line spacing less than 1 in vte-based terminals\n\n#### Final result\n![Comment](assets/images/result.png)\n\n\u003cbr /\u003e\n\u003cbr /\u003e\nThe year is 2024, the year of the Linux desktop. Linux is so mainstream now that developers care about the user experience by not allowing them to set line spacing to some crazy value like 0.1.  \n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n![Comment](assets/images/preferences-xfce4-terminal.png)\n\n##### My reaction:\n\n![Comment](assets/images/my-reaction-1.png)\n\nBut we all know that you want that Bisqwit-like terminal:\u003cbr /\u003e\n\n\n![Comment](assets/images/Bisqwit.jpg)\n[credit](https://www.youtube.com/@Bisqwit)\n\u003cbr /\u003e\n\n##### The plan\n\n1.  Patch xfce4-terminal. Compile xfce4-terminal. Install xfce4-terminal.\n2.  Patch vte. Compile vte. Install vte.\n3.  Modify your favorite monospace font. Install font.\n\n##### Environment\n\n- Ubuntu 24.04 LTS\n- XFCE 4.18\n- X11\n\n##### Clone repos\n\n`git clone https://gitlab.xfce.org/apps/xfce4-terminal.git`\\\n`git clone https://gitlab.gnome.org/GNOME/vte.git`\\\n`git clone https://github.com/agiUnderground/project-pequeno.git`\n\nxfce4-terminal HEAD - `08918c7be45771584c9e4ad6f80253d855cac1b5`\\\nvte HEAD - `4bb767c342c099cafffb760cd0e7a255a72e9578`\n\n### Let's patch xfce4-terminal first\n\n`cd xfce4-terminal`\\\n`git apply ~/project-pequeno/assets/patches/xfce4-terminal-patch.diff`\n\nCheck the changes:\n`git diff`\n\nCommit:\n\n`git add .`\\\n`git commit -m \"Allow decimal values for cell spacing.\"`\n\nHere is what we're changing:\n\n```c\nGtkWidget*\ngtk_spin_button_new_with_range (\n  gdouble min,\n  gdouble max,\n  gdouble step\n)\n```\n\n```c\nGParamSpec*\ng_param_spec_double (\n  const gchar* name,\n  const gchar* nick,\n  const gchar* blurb,\n  gdouble minimum,\n  gdouble maximum,\n  gdouble default_value,\n  GParamFlags flags\n)\n```\n\nYou can check .diff file with the editor and apply changes manually if you want to.\nFor example you can change `step` value from `0.01` to `0.001` if you want.\n\n##### Let's compile xfce4-terminal\n\n`sudo apt install xfce4-dev-tools build-essential gtk-doc-tools autopoint`\\\n`sudo apt build-dep xfce4-terminal`\\\n`./autogen.sh`\\\n`make -j$(nproc)`\\\n`sudo make install`\n\nResult of the successful build:\n\n![Comment](assets/images/successful-terminal-build.png)\n\nNice.\n\nRight now, changing the cell spacing value to a value less than 1 has no effect. We need to patch VTE.\n\n### Let's patch vte\n\n`cd ~/vte`\\\n`git apply ~/project-pequeno/assets/patches/vte-patch.diff`\n\nCheck the changes:\n\n`git diff`\n\nCommit:\n\n`git add .`\\\n`git commit -m \"Allow decimal values for cell spacing.\"`\n\nDependencies and compilation:\n\n`sudo apt install meson cmake liblz4-dev libgtk-4-dev libsystemd-dev libgirepository1.0-dev valac`\\\n`meson _build`\\\n`ninja -C _build`\\\n`sudo ninja -C _build install`\n\nCheck out that you have fresh libs installed:\n\n`ls -lah /usr/local/lib/x86_64-linux-gnu/libvte*`\n\nMake sure that you terminal binary is linked with the new library:\\\n`ldd $(which xfce4-terminal) | grep vte`\n\nWe're literally half way there:\n\n![Comment](assets/images/cell-spacing-works.png)\n\n\n### Custom font\n\nWe need a custom font to make our new terminal somewhat usable.\n\nFirst idea was to patch rendering engine(whatever it is in this case).\\\nBut text rendering is really really complex topic, so I'm glad we can get what we need with a custom font.\n\nI'll use `JetBrains Mono`. [link](https://www.jetbrains.com/lp/mono/)\n\n`cd Downloads`\\\n`wget https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip`\\\n`unzip JetBrainsMono-2.304.zip -d jetbrains-mono`\n\nVery nice tool to inspect the fonts is `ftinspect`, you can install it with `sudo apt install freetype2-demos`.\\\nBut to modify the font we gonna use `FontForge`.\\\n`sudo apt install fontforge`\n\nStart a fontforge and choose a font `jetbrains-mono/fonts/ttf/JetBrainsMono-Regular.ttf`.\n\n![Comment](assets/images/fontforge.png)\n\nNow we need to squash symbols vertically.\n\n`Edit -\u003e Select -\u003e Select All`\n\n`Element -\u003e Transformations -\u003e Transform`\n\n`Scale -\u003e Y value 65% (for example)`\n\nCheck `Roud To Int` checkbox, to avoid unnecessary errors.\n\n![Comment](assets/images/fontforge-scale.png)\n\n`Element -\u003e Font Info`\n\nModify `Fontname` and `Name For Humans`.\\\nChoose `PS UID` from left column, check `Use UniqueID` checkbox and set `UniqueID` field to some random number value.\\\nChoose `General` from left column, set `Em Size` to `1024`.\\\nIn `Change UniqueID?` dialog choose `change`.\n\n`File -\u003e Generate Fonts...`\\\nChoose custom name and type `TrueType`.\n\n![Comment](assets/images/generate-fonts-dialog.png)\n\nIgnore `Errors detected` dialog and press `Generate` button.\n\nInstall a new font.\\\nIn my case is:\n\n`sudo cp JetBrainsMono-Regular-Pequeno.ttf /usr/share/fonts/truetype/`\n\nUpdate fonts cache:\n\n`fc-cache -vf`\n\n![Comment](assets/images/custom-font.png)\n\nDone.\n\n\n\nDisclaimer:\\\nI'm pretty sure that there are a lot of errors. Do not use it anywhere in production.\\\nThe main goal of this one evening endeavor was just to make it work.\\\nThe VTE patch is most likely not fully correct. If you already fixed it, I'm open to PRs.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagiunderground%2Fproject-pequeno","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagiunderground%2Fproject-pequeno","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagiunderground%2Fproject-pequeno/lists"}