Skip to content

Instantly share code, notes, and snippets.

@fortserious
Last active July 11, 2025 02:01
Show Gist options
  • Save fortserious/aee38888a9c672c27682fa43940588fa to your computer and use it in GitHub Desktop.
Save fortserious/aee38888a9c672c27682fa43940588fa to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name outlook quick actions hotfix
// @namespace www.rossdoran.com
// @version 1.10
// @description m$.gfy
// @match https://outlook.office.com/mail/*
// @match https://outlook.live.com/*
// @require https://gist.githubusercontent.com/mjblay/18d34d861e981b7785e407c3b443b99b/raw/debc0e6d4d537ac228d1d71f44b1162979a5278c/waitForKeyElements.js
// @run-at document-start
// ==/UserScript==
// when updating this script - search for ".hDNlA.lHRXq.iZbPU.JCRRb.G1NES"
waitForKeyElements (".WP8_u .UWVIR", moveQuickActions);
waitForKeyElements(".gReZN", moveDeleteAction); // comment out this line to keep the delete quick action on the right
function navigateToInbox(elem)
{
elem.onclick = ()=> { document.querySelector("button[aria-label='Close']").click(); };
}
function detach(node) {
return node.parentElement.removeChild(node);
}
function moveDeleteAction(elem)
{
let parent = elem.closest(`.hDNlA.lHRXq.iZbPU.JCRRb.G1NES,
.hDNlA.lHRXq.IjQyD.JCRRb.G1NES,
.hDNlA.lHRXq.epBmH.IMyk_,
.zKDWD.YbB6r.IKvQi.IjQyD.JCRRb.cSOXK.G1NES,
.zKDWD.YbB6r.IKvQi.IjQyD.JCRRb.G1NES,
.zKDWD.YbB6r.IKvQi.iZbPU.JCRRb.G1NES,
.zKDWD.YbB6r.IKvQi.iZbPU.wZij3.G1NES,
.zKDWD.YbB6r.IKvQi.IjQyD.EhiOs.wZij3.G1NES,
.zKDWD.YbB6r.IKvQi.epBmH.EhiOs,
.zKDWD.IKvQi.IjQyD.JCRRb.G1NES,
.zKDWD.IKvQi.iZbPU.JCRRb._KLsp.G1NES,
.zKDWD.IKvQi.iZbPU.JCRRb.G1NES,
.zKDWD.IKvQi.gPZmZ.JCRRb.G1NES,
.zKDWD.IKvQi.epBmH,
.lHRXq.hDNlA.IjQyD.JCRRb.DLvHz.G1NES,
.lHRXq.hDNlA.IjQyD.JCRRb.G1NES,
.lHRXq.hDNlA.gPZmZ.JCRRb.G1NES
`); // different for pinned, flagged, returning to inbox after deleting, etc.
if (parent)
{
console.log("TRASHFIND", parent);
var newParent = parent.querySelector(`
.XG5Jd.y1E5h.zItCb,
.XG5Jd.hQj7T,
.OD8Ue.hQj7T,
.xc0ZS.hQj7T
`).firstChild;
if (newParent)
{
newParent.append(detach(elem));
}
}
}
function moveQuickActions(elem)
{
let parent = elem.closest(
`.XG5Jd.y1E5h.zItCb,
.XG5Jd.hQj7T,
.xc0ZS.hQj7T,
.OD8Ue.hQj7T`); // parent element of left items
if (parent)
{
var newParent = parent.firstChild; // append to first child of left item parent
if (newParent)
{
newParent.append(detach(elem));
}
}
}
@fortserious
Copy link
Author

The delete icon shifted back for me, so I've updated 1.8 to include the new class. It's unfortunate that there's no real way to future proof this - any change they make is gonna re-obfuscate the class names, which means another update is required. I could query the selectors by title, like "button[title='Mark as unread']", but then that would break for anyone whose language isn't English. Oh well. Let me know if it doesn't work.

As a bit of cleanup, I also removed the Inbox redirect link, as they seem to have fixed that, and removed the ribbon hider too. Let me know if you need either of those back for whatever reason.

@Peppins32
Copy link

Thanks a lot, it work! ;-)

@NinjaDuckie
Copy link

Thanks again for this Ross.

@Peppins32
Copy link

It's changed again and then doesn't work again, thanks microsoft uff :/

@fortserious
Copy link
Author

fortserious commented Feb 12, 2025

Updated 1.9 which fixes the delete icon, sorry for the delay.

Edit: And patched to 1.10 to fix delete icons on pinned messages as well.

@Peppins32
Copy link

Thanks a lot!!

@NewVicious
Copy link

No working again, but I added the new classes and it works, but now there is extra space between the buttons.

.lHRXq.hDNlA.gPZmZ.phGIG.G1NES,
.lHRXq.hDNlA.IjQyD.phGIG.DLvHz.G1NES,
image

Any fix?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment