Ubuntu – Make Ctrl-Alt-T to open a terminal tab if any terminal was open

command linegnome-terminalshortcut-keys

Is there a way to get Ctrl+Alt+T to open a terminal tab, if you already have an open terminal, instead of another terminal window?

I have already changed my preferences to open new terminals in tab.
(I still want the key binding to open a terminal if none are open.)

Best Answer

Here is what I've done and it did the job pretty good.

  1. change gnome-terminal preferences to default if you have changed it.
    so, set the Ctrl+Shift+t as shortcut for opening a new tab.

    enter image description here

  2. We need xdotool (it's around 30KB) install it via:

    sudo apt install xdotool
    
  3. Now create a file (e.g in your home named .custom-terminal-key.sh) and put these lines in it (Thanks to Jacob Vlijm):

    #!/bin/bash
    
    if [[ "$(xprop -id "$(xdotool getactivewindow)" WM_CLASS)" == *"gnome-terminal"* ]]; then
      sleep 0.1
      xdotool key ctrl+shift+t
    elif ! pgrep 'gnome-terminal'; then
      gnome-terminal
    fi
    

    Every time we run it, if any gnome-terminal was open, it will simulate a Ctrl+Shift+t key binding, otherwise it runs gnome-terminal.

  4. Finally we change the default behavior of Ctrl+Alt+t, instead of opening a terminal every time you press these, it will run our script.

    gsettings set org.gnome.desktop.default-applications.terminal exec '/home/USER/.custom-terminal-key.sh'
    

    Change USER with your real username.

  5. Don't forget to give our script the executable bit:

    chmod +x ~/.custom-terminal-key.sh
    

We are done.


Rollback

Whenever you changed your mind just run:

gsettings set org.gnome.desktop.default-applications.terminal exec 'gnome-terminal'

Remove our script rm ~/.custom-terminal-key.sh and xdotool: sudo apt remove xdotool.


Getting active window name