geplaatst door: Robert
https://www.macfreak.nl/modules/news/images/Safari-BigSur-icoon.jpg
Tip: in één keer meerdere tabs in een nieuw venster in Safari
Als je lekker actief bent op het internet dan heb je al snel erg veel tabs open in Safari. Daarom heeft Apple in Safari de mogelijkheid ingebouwd om in één oogopslag al je open tabs te laten zien, in de schermafbeelding hieronder rechtsboven te zien, bij het blauwe pijltje.

Maar als je erg veel tabs open hebt dan helpt die optie niet, want met teveel kleine weergaves zie je op een gegeven moment toch niet meer wat je zoekt.
https://www.macfreak.nl/modules/news/images/zArt.SafariTabsButtonArrow.jpg
Tip: in één keer meerdere tabs in een nieuw venster in Safari

klik of tap voor grotere versies

Dan is het vaak het makkelijkst om een aantal tabs in een nieuw venster te zetten, maar daarvoor heeft Apple niets handigs ingebouwd. De oplossing is dit script, dat de actieve tab samen met alle tabs rechts daarvan in één klap in een nieuw venster opent.

Het originele idee is van Daring Fireball’s John Gruber, daarna ‘opgepoetst’ door Leon Cowle. Maar de versie onderaan de pagina van ‘VRic-on-github’ is volgens mij de meest elegante oplossing.

Dit script kopiëren en plakken in een nieuw venster in Script Editor (staat op iedere Mac) en dat dan bewaren als een app is voldoende. Je kan het dan willekeurig waar op je Mac plaatsen, als je Dock nog niet al te vol is kan je het dan daarna daarin plaatsen, zodat je het altijd bij de hand hebt.

https://www.macfreak.nl/modules/news/images/zArt.SafariTabsToNewWindowScriptScreenshot.jpg
Tip: in één keer meerdere tabs in een nieuw venster in Safari




 #Tip #Safari #macOS
Klik hier voor informatie over het onder de aandacht brengen van producten of diensten op MacFreak.
geplaatst door: Abby
Oh, haha, ik wist niet eens dat die functie in Safari zat, wat handig!
Dus dank voor dit artikel :thumbs-up:, ook al was die niet gericht op die basisfunctie.
geplaatst door: mcmt
Je kan het script ook aanpassen met multi-selectie uit een lijstje, zoals in onderstaand voorbeeld.
Move Safari Tabs.png Tip: in één keer meerdere tabs in een nieuw venster in Safari

Jammer genoeg lijkt AppleScript op het eerste zicht geen nette oplossing aan te bieden voor pinned tabs.

-- Status: draft

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

on tabNames(tabs)
set names to {}

repeat with eachTab in tabs
set end of names to name of eachTab
end repeat

return names
end tabNames

on filterTabs(tabs, names)
set filteredTabs to {}

repeat with eachName in names
repeat with eachTab in tabs
if (name of eachTab) as text = eachName as text then
set end of filteredTabs to eachTab
end if
end repeat
end repeat

return filteredTabs
end filterTabs

on selectTabs(tabs)
set names to choose from list tabNames(tabs) with prompt "Select tabs to move" with multiple selections allowed

if names is false then
return {}
else
return filterTabs(tabs, names)
end if
end selectTabs

tell application "Safari"
set selectedTabs to selectTabs(tabs of window 1) of me

if selectedTabs is not {} then
make new document

set newWindow to window 1
set initialTabCount to count tabs of newWindow

repeat with eachTab in reverse of selectedTabs
move eachTab to after tab initialTabCount of newWindow
end repeat
tell newWindow to close tab initialTabCount
end if
end tell

Een wat compactere (en minder verbose) versie in JXA vind je hieronder.

// Status: Draft

function selectTabs(app) {
const tabs = app.windows[0].tabs()
const names = app.chooseFromList(tabs.map(tab => tab.name()),
{ withPrompt: "Select tabs to move", multipleSelectionsAllowed: true })

return names ? tabs.filter(tab => names.includes(tab.name())) : []
}

function newWindow(app) {
app.documents.push(app.Document())

return app.windows[0]
}

function run(input, parameters) {
const app = Application("Safari")
app.includeStandardAdditions = true
const tabs = selectTabs(app)

if (tabs.length > 0) {
const window = newWindow(app)

tabs.forEach(tab => window.tabs.push(app.Tab({url: tab.url})))
window.tabs[window.tabs.length - tabs.length - 1].close()
tabs.reverse().forEach(tab => tab.close())
}
}
Bewerkt: 8 december 2023 - 17:55 door mcmt