Chrome: abre nuevas pestañas junto a la actual

En mi Mac, Chrome abre las pestañas de ⌘T al final. Quería abrirlas junto a la que estaba usando, sin otra extensión. Como ya uso Hammerspoon, añadí un atajo solo para Chrome.

Con B activa:

Antes: A | B | C
⌘T:    A | B | Nueva | C

La nueva pestaña queda seleccionada. Esto cambia ⌘T; el botón + sigue funcionando como siempre.

Configuración de Hammerspoon

El código completo y las instrucciones también están en GitHub Gist.

Con Hammerspoon instalado, guarda esto en ~/.hammerspoon/chrome-tabs.lua:

-- Chrome: Cmd-T opens and selects a tab immediately after the active tab.
local chromeBundleID = "com.google.Chrome"
local log = hs.logger.new("chrome-tabs", "info")

chromeNewTabHotkey = hs.hotkey.new({"cmd"}, "t", function()
    local ok, _, details = hs.osascript.applescript([[
        tell application "Google Chrome"
            if (count of windows) = 0 then
                make new window
            else
                tell front window
                    set currentIndex to active tab index
                    make new tab at after tab currentIndex with properties {URL:"chrome://newtab/"}
                    set active tab index to currentIndex + 1
                end tell
            end if
        end tell
    ]])
    if not ok then
        log.e(hs.inspect(details))
        hs.alert.show("No se pudo abrir la pestaña de Chrome. Consulta la consola de Hammerspoon.")
    end
end)

local function updateHotkey()
    local app = hs.application.frontmostApplication()
    if app and app:bundleID() == chromeBundleID then
        chromeNewTabHotkey:enable()
    else
        chromeNewTabHotkey:disable()
    end
end

-- Retain the watcher and hotkey across garbage collection.
chromeTabWatcher = hs.application.watcher.new(function(_, event)
    if event == hs.application.watcher.activated
        or event == hs.application.watcher.deactivated then
        updateHotkey()
    end
end)
chromeTabWatcher:start()
updateHotkey()

Añade esta línea a tu ~/.hammerspoon/init.lua existente:

dofile(hs.configdir .. "/chrome-tabs.lua")

Elige Hammerspoon → Reload Config. Si macOS lo pide, permite que Hammerspoon controle Chrome.

Cómo funciona

Lua gestiona el atajo y detecta qué aplicación está activa. El código que parece inglés dentro de [[ ... ]] es AppleScript guardado como texto. hs.osascript.applescript lo ejecuta para controlar Chrome. active tab index es la posición de la pestaña seleccionada, contando desde 1.

Comprobé el orden de las pestañas en Chrome y repetí la prueba tras recargar. El atajo también se desactivó correctamente fuera de Chrome.

Publicado el

Conectemos

Estoy en GitHub, Discord y X