So of course, shortly after posting this, I finally figured it out.
For me, the xml / html tag solution never worked.
But defining them in a separate `descriptionStyles` array did.
For example:
chrome.omnibox.onInputChanged.addListener((text, suggest) => {
search(text, { limit: 20 })
.then((results) => {
const bookmarkSuggestions = results.map((bookmark) => ({
content: bookmark.url,
description: `${bookmark.title} ${bookmark.desc} (${bookmark.url})`,
descriptionStyles: [
{ offset: 0, type: 'match', length: bookmark.title.length },
{
offset: bookmark.title.length,
type: 'dim',
length: bookmark.desc.length + 1,
},
{
offset: bookmark.title.length + bookmark.desc.length + 2,
type: 'url',
length: bookmark.url.length + 2,
},
],
}))
suggest(bookmarkSuggestions)
})
.catch((error) => {
console.error(error)
})
})