{"id":13683037,"url":"https://github.com/gryf/tabbedalt","last_synced_at":"2025-06-21T05:35:36.634Z","repository":{"id":149006067,"uuid":"65752333","full_name":"gryf/tabbedalt","owner":"gryf","description":"Extended tabbed plugin for rxvt-unicode (urxvt)","archived":false,"fork":false,"pushed_at":"2024-12-10T18:08:42.000Z","size":150,"stargazers_count":42,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-05T08:41:22.082Z","etag":null,"topics":["perl","rxvt-unicode","tab","urxvt"],"latest_commit_sha":null,"homepage":"","language":"Perl","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/gryf.png","metadata":{"files":{"readme":"README.rst","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,"zenodo":null}},"created_at":"2016-08-15T17:46:51.000Z","updated_at":"2025-02-01T09:36:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"65d82c8b-29b0-40a2-8da7-96f98bbcc4e8","html_url":"https://github.com/gryf/tabbedalt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gryf/tabbedalt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryf%2Ftabbedalt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryf%2Ftabbedalt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryf%2Ftabbedalt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryf%2Ftabbedalt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gryf","download_url":"https://codeload.github.com/gryf/tabbedalt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryf%2Ftabbedalt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261070244,"owners_count":23105360,"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":["perl","rxvt-unicode","tab","urxvt"],"created_at":"2024-08-02T13:01:58.230Z","updated_at":"2025-06-21T05:35:31.623Z","avatar_url":"https://github.com/gryf.png","language":"Perl","funding_links":[],"categories":["Perl"],"sub_categories":[],"readme":"=========\nTabbedalt\n=========\n\nThis is modified, alternative tabbed extension for well known `urxvt-unicode`_\nterminal emulator\n\nFeatures\n--------\n\n* Possibility to add named tabs, through the X resources, which run specified\n  command or another shell (zsh/fish/ash/csh/ksh…). Without any configuration\n  only default shell is available under default (``Shift+Down``) shortcut.\n\n    .. image:: /screens/tabbed.png\n        :alt: Named tabs\n\n* Fast navigation to first ten tabs (if available) with shortcut ``Ctrl+[num]``,\n  where *num* can be 0 to 9. ``CTRL+0`` will switch to tenth tab.\n* Numbers in tabs can be switched off in by setting\n  resource:``URxvt.tabbedalt.tab-numbers: false``\n* Integrated `activity indicator`_ with additional features like colors and\n  different characters instead of simply asterisk depending on time.\n\n    .. image:: /screens/tabbed.gif\n        :alt: Indicator activity\n\n* Integrated tab renaming from `stepb`_.  Default under ``Shift+UP``, then type\n  some text and press ``RETURN`` for accept or ``ESC`` for cancel.\n* Added ability to configure own shortcuts using standard ``keysym`` urxvt\n  option. See below for examples.\n* Autohide tab when there is only one tab at the moment.\n* Ability to assign hotkey to jump to last tab.\n* Configurable confirm dialog for closing urxvt window, when there is more than\n  one tab opened or there is an process still running.\n\nInstallation\n------------\n\nCopy tabbedalt into ``~/.urxvt/ext`` directory.\n\nAdd these to your ``~/.Xdefaults``::\n\n    ! Perl extension config\n    URxvt.perl-ext: tabbedalt\n\nAnd that's it. On some systems, there might be a need to reload X resources:\n\n.. code:: shell-session\n\n   $ xrdb ~/.Xdefaults\n\nFor quickinstall and run urxvt, tabbedalt can be installed using following\ncommand:\n\n.. code:: shell-session\n\n   $ curl --create-dirs https://raw.githubusercontent.com/gryf/tabbedalt/master/tabbedalt -o ~/.urxvt/ext/tabbedalt\n   $ urxvt -pe tabbedalt\n\nor even without \"installing\" at all:\n\n.. code:: shell-session\n\n   $ curl https://raw.githubusercontent.com/gryf/tabbedalt/master/tabbedalt -o /tmp/tabbedalt\n   $ URXVT_PERL_LIB=/tmp urxvt -pe tabbedalt\n\nConfigure\n---------\n\nThere are several additional things you can set contrary to the original tabbed\nextension.\n\nNew button\n~~~~~~~~~~\n\nYou can disable ``[NEW]`` button, just to save the space. Just add following\nline to yours ``~/.Xdefaults`` file::\n\n    URxvt.tabbedalt.new-button: false\n\nColors\n~~~~~~\n\nYou can change all of the colors regarding tabs appearance. Here are defaults::\n\n   URxvt.tabbedalt.tabbar-fg: 15\n   URxvt.tabbedalt.tabbar-bg: 8\n   URxvt.tabbedalt.tab-fg: 8\n   URxvt.tabbedalt.tab-bg: 0\n   URxvt.tabbedalt.active-fg: 1\n   URxvt.tabbedalt.actives-fg: 5\n   URxvt.tabbedalt.actived-fg: 4\n\nTab activity\n~~~~~~~~~~~~\n\nTabs can change colors depending on the activity of terminal under certain tab.\nColors can be defined as described in section above. You can change the time\nfor either *group* of activity::\n\n   URxvt.tabbedalt.tabbar-timeouts: 16:.:8:::4:+\n\nThe value can should be read as colon separated fields. In this case it would\nbe read as:\n\n- 16 with symbol ``.``\n- 8 with symbol ``:``\n- 4 with symbol ``+``\n\nNumeric values means amount of seconds, on which three group of activity will\nbe triggered. Those group are:\n\n- Inactive for at least 16 seconds\n- Inactive for at least 8 seconds\n- Inactive for at least 4 seconds\n\nActivity of the tab is always represented by asterisk sign (``*``).\n\nYou can change those values but bear in mind, that first group should have\ntimeout in seconds set higher, than middle one. You can also change symbols for\nthose groups.\n\nTab activity can be disabled by setting::\n\n    URxvt.tabbedalt.disable-activity: true\n\nFlickering\n~~~~~~~~~~\n\nIf you happen to see fonts flickering on the terminal, you might want to set\nthis resource to true::\n\n   URxvt.tabbedalt.stop-flickering: true\n\nIt is false by default, and it will affect how refreshing of the tabs and\nwindows is done. I was experienced it mostly on Intel graphics, with bitmap\nfonts, but your mileage may vary.\n\nTab numbers\n~~~~~~~~~~~\n\nYou can turn off tab numbers and leave only name of the tab. Handy to save the\nspace::\n\n   URxvt.tabbedalt.tab-numbers: false\n\nAutohide\n~~~~~~~~\n\nBy default tab bar would be visible even with only one tab. To hide tab bar,\nwhen there is a single tab, the following resource need to be set to true::\n\n    URxvt.tabbedalt.autohide: true\n\nActions\n~~~~~~~\n\nThere are several actions, which tabbedalt supports:\n\n* ``new_tab`` - for tab creation\n* ``rename_tab`` - for tab title renaming\n* ``prev_tab`` - for jumping to previous tab\n* ``next_tab`` - for jumping to next tab\n* ``move_tab_left`` - for moving tab to the left\n* ``move_tab_right`` - for moving tab to the right\n* ``jump_to_tab`` - for quickly jump into specific tab\n\nSee next sections for examples. This feature was adapted from `tabbedex`_.\n\nDisable default keystrokes\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy setting::\n\n    URxvt.tabbedalt.disable-default-keys: true\n\nyou can completely remove default keystrokes for creating and navigating tabs.\nIn fact, if this resource is set to false (default), than tabbedalt will create\nseveral keysyms mapped to the actions:\n\n* ``Shift-Down``: ``new_tab`` - create tab\n* ``Shift-Up``: ``rename_tab`` - for tab title renaming\n* ``Shift-Left``: ``prev_tab`` - for jumping to previous tab\n* ``Shift-Right``: ``next_tab`` - for jumping to next tab\n* ``Shift-Left``: ``move_tab_left`` - for moving tab to the left\n* ``Control-Right``: ``move_tab_right`` - for moving tab to the right\n* ``Control-1..0``: ``jump_to_tab`` - for quickly jumping into first tenth tabs\n\nIt might be wise to define own shortcuts before disabling default keys.\n\n#. ``new_tab``\n\n   This action can have up to two arguments separated by colon, in a form::\n\n       URxvt.keysym.desired-keys: tabbedalt:new_tab:tab-title:tab-command\n\n   In this case for ``desired-keys`` shortcut there would be new tab created\n   with title set to ``tab-title``, and command which tab run as\n   ``tab-command``, for example::\n\n       URxvt.keysym.Control-t: tabbedalt:new_tab:htop:htop\n\n   where pressing control+t it will run new tab with title ``htop`` and command\n   ``htop``.\n\n   Both title and command may be omitted. If so, default title ``shell`` will\n   be used in absence of title, and default shell will be run on missing\n   command.\n\n#. ``jump_to_tab``\n\n   In this action, there is only one argument expected - number of the tab,\n   i.e.::\n\n       URxvt.keysym.Control-1: tabbedalt:jump_to_tab:1\n       URxvt.keysym.Control-2: tabbedalt:jump_to_tab:2\n       …\n       URxvt.keysym.Control-0: tabbedalt:jump_to_tab:0\n\n   Note, that tabs are indexed from 1, and tab 10th is numbered as 0.\n\n#. The rest\n\n   Al the rest of the actions (moving, jumping and renaming) are without\n   argument. For example renaming will look like this::\n\n       URxvt.keysym.Control-r: tabbedalt:rename_tab\n\nJump to last tab\n~~~~~~~~~~~~~~~~\n\nThere is a possibility to tell tabbedalt to use ``jump_to_tab`` action to jump\nto the last (rightmost) tab, instead of 10th. It can be done by setting\nresource::\n\n   URxvt.tabbedalt.zero-jump-last: true\n\nso whatever keysym is assigned to ``tabbedalt:jump_to_tab:0`` will select last\ntab, regardless if current number of tabs is more or less than 10. There is\nstill a way for selecting 10th tab, i.e.::\n\n   URxvt.tabbedalt.zero-jump-last: true\n\n   URxvt.keysym.Control-F1: tabbedalt:jump_to_tab:1\n   URxvt.keysym.Control-F2: tabbedalt:jump_to_tab:2\n   …\n   URxvt.keysym.Control-F10: tabbedalt:jump_to_tab:10\n   URxvt.keysym.Control-F11: tabbedalt:jump_to_tab:11\n   URxvt.keysym.Control-F12: tabbedalt:jump_to_tab:12\n   URxvt.keysym.Control-0: tabbedalt:jump_to_tab:0\n\nIn the example above, there are mapping for jump to tabs 1 - 12 using function\nkeys, and `Control+0` to jump whatever last tab is.\n\nConfirm closing window\n~~~~~~~~~~~~~~~~~~~~~~\n\nWhen working with tabs, sometimes user accidentally could close the window, and\nloose all the applications run on the tabs. There might be multiple tabs open,\nor just one with running process on it (i.e. some editor), where closing window\nby accident could result in data loss. To prevent this, there are two\nadditional resources that can be set. First one, disabled by default is::\n\n    URxvt.tabbedalt.confirm-quit: false\n\nWhen set to ``true`` it will either execute a message program or will display \nan urxvt overlay with the dialog directly on current tab. Note that overlay\ndialog will expect the user to either press:\n\n- ``y`` or ``enter`` key to close the window\n- ``n`` or ``escape`` key to deny closing it\n\nSecond one is to provide X dialog program::\n\n    URxvt.tabbedalt.confirm-program:\n\nIt might be whatever X program, which can accept text as an argument, and can\nprovide dialog which:\n\n- have two buttons (i.e. yes/no, ok/cancel) where first will exit dialog with 0\n  exit code and the latter will exit with whatever other number,\n- destroying the dialog also emit exit code higher than 0.\n\nSo, for example standard `xmessage`_ can be used::\n\n    URxvt.tabbedalt.confirm-program: xmessage -buttons ok:0,cancel:1\n\nor `zenity`_::\n\n    URxvt.tabbedalt.confirm-program: zenity --question --title 'Close window' --text\n\nor `kdialog`_::\n\n    URxvt.tabbedalt.confirm-program: kdialog --title 'Close window' --yesno\n\nor… any other dialog programs which fulfill the above criteria.\n\nCreating specific commands/shells\n---------------------------------\n\nLet's assume, that one want to add three kind of custom shells:\n\n* simple one (default shell in the system),\n* midnight commander,\n* root (namely - su command)\n\nA way to do this is to associate keystroke for it in ``.Xdefaults`` using\nurxvts ``keysym`` option, and the actions described above::\n\n    URxvt.keysym.Control-Shift-N: tabbedalt:new_tab:shell\n    URxvt.keysym.Control-Shift-R: tabbedalt:new_tab:root:su -\n    URxvt.keysym.Control-Shift-M: tabbedalt:new_tab:mc:mc\n\nResource values are colon separated values, which are in order:\n\n* **plugin name:command**, which in this case of creating new tab will be\n  ``tabbedalt:new_tab``.\n* **title of the tab**, it could be anything but the colon.\n* **optional command**. If omitted, default shell will be launched.\n\nRenaming tabs\n-------------\n\nOn runtime, tabs can be renamed using (by default) ``Shift+Up`` - now you can\ntype name for the tab. ``Return`` accept change, ``ESC`` cancels it. This\nfeature was taken from `stepb`_ tabbedx repository.\n\n.. _urxvt-unicode: http://software.schmorp.de/pkg/rxvt-unicode.html\n.. _activity indicator: http://mina86.com/2009/05/16/tabbed-urxvt-extension/\n.. _stepb: http://github.com/stepb/urxvt-tabbedex\n.. _tabbedex: https://github.com/mina86/urxvt-tabbedex\n.. _xmessage: https://gitlab.freedesktop.org/xorg/app/xmessage\n.. _zenity: https://wiki.gnome.org/Projects/Zenity\n.. _kdialog: https://develop.kde.org/docs/administration/kdialog\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgryf%2Ftabbedalt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgryf%2Ftabbedalt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgryf%2Ftabbedalt/lists"}