4

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.)

Jacob Vlijm
  • 85,475
KT12
  • 265

2 Answers2

3

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

Jacob Vlijm
  • 85,475
Ravexina
  • 57,256
0

Here is a simple way that worked for me on Ubuntu 22:

  1. Install the dependency wm-ctrl with sudo apt install wmctrl
  2. Write a script .custom-terminal-key.sh and place it in under your home directory ~:
#!/bin/bash

win_id=$(wmctrl -l | grep "Terminal" | awk '{print $1}')

if [ -n "$win_id" ]; then wmctrl -ia "$win_id" else gnome-terminal & fi

  1. Allow the file to be executed using
chmod +x .custom-terminal-key.sh
  1. Open up Settings > Keyboard > View and Customize Shortcuts > Custom Shortcuts (scroll to bottom) Navigate to Custom Shortcuts

  2. Add a shortcut with any name, the command /home/USER/.custom-terminal-key.sh, and bind it to Ctrl-Alt-T Add Terminal Shortcut