See devalias-beeper-css-hacks.css for the customisations I am using myself.
You'll also find a number of hacks/techniques on my theme issue:
- Improving UI/UX for users with lots of favourites
DES-10976 - Improving UI/UX with the Custom CSS TextArea
DES-10977 - Add an 'external link' icon next to the 'Chat Networks' 'tab' in the main 'Settings' dialog
DES-10656 - Reduce the 'in your face' bright/colourful/'glare' from the network icons on the new 'View Space Bar in side panel' lab
DES-10915 - Add the 🔗 emoji after the 'Chat Networks' item in the main settings menu + remove extra noise from settings menu
Community RequestDES-10656 - Remove the 'Archive' button from the new 'beeper spaces sidebar'
Community Request - Hide the floating 'Archived' and 'Sweep' buttons in the new 'beeper space sidebar'
+Community ContributionDES-10914 - Change the network icons in the new 'beeper space sidebar' to use the old lineart icons
DES-10915 - With the 'new' 'Beeper Space Sidebar', hide the floating 'open archive' button, and always show the floating 'Archive All Read Messages' button
DES-11233 - Reduce the size of the 'new' 'Beeper Space Sidebar' + it's 'chat network' buttons
Community Request - Hide Left Panel/Sidebar While Chat Is Open
Community Request - Change the
min-widthof the Left 'Inbox' Side PanelCommunity Contribution - Ensure full image preview is visible, rather than a zoomed part of it
- Change the colours of existing
svgimages embedded in the DOMCommunity Request - Beeper Spacebar Icon Modifications
Community Contribution - Hide the Pin/Unpin and/or 'Archive' buttons that appear on hover of each chat room in inbox
Community Request - Hide the help question mark above the left hand sidebar
Community Request - Hiding the white border to the right of the left hand sidebar
Community Contribution - etc
- https://www.beeper.com/
- https://github.com/beeper/themes
-
Community Themes
- https://github.com/beeper/themes#how-to-use-themes
-
Click Themes -> select the theme you would like to try
-
Select the text content and copy. This code is called CSS.
-
Open Beeper Desktop -> Settings -> Appearance
-
Paste what you copied earlier into the box and hit Apply
-
- beeper/themes#6
-
A few custom theme hacks for improving Inbox Favourites (max-height, scrollable, reduce avatar size, etc)
-
- beeper/themes#7
- https://github.com/beeper/themes/pull/7/files
-
Reusable css that could be added onto other themes for additional functionality
-
- Announcement Tweet: https://twitter.com/_devalias/status/1651766148046921728
- Reddit Thread: https://www.reddit.com/r/beeper/comments/13cezdc/beeper_ui_ux_hacksimprovements_via_custom_themes/
- https://github.com/0xdevalias/chatgpt-source-watch : Analyzing the evolution of ChatGPT's codebase through time with curated archives and scripts.
- Debugging Electron Apps (and related memory issues) (0xdevalias gist)
- Reverse Engineering Webpack Apps (0xdevalias gist)
- Reverse engineering ChatGPT's frontend web app + deep dive explorations of the code (0xdevalias gist)
- Deobfuscating / Unminifying Obfuscated Web App Code (0xdevalias gist)
- Bypassing Cloudflare, Akamai, etc (0xdevalias gist)
mxMatrixClientPeg.matrixClienteg. to send a message:
const roomId = "!KlacjKWnARbprTLuRM:nova.chat";
mxMatrixClientPeg.matrixClient.sendMessage(roomId, {
msgtype: "m.text",
body: "This is a test message sent using mxMatrixClientPeg.matrixClient.sendMessage"
})const el = $('#matrixchat > .mx_MatrixChat_wrapper > .mx_MatrixChat > .bp_LeftPanel > .bp_LeftPanel_contentWrapper > .bp_LeftPanel_content > .rooms')
const elProps = Object.getOwnPropertyNames(el);
const elReactFiberKey = elProps.filter(k => k.includes('__reactFiber'))
const elReactPropsKey = elProps.filter(k => k.includes('__reactProps'))
const elReactInternals = {
reactFiber: el[elReactFiberKey],
reactProps: el[elReactPropsKey],
}
//console.log(elReactInternals)
const UnreadList = elReactInternals.reactProps.children[3].props.children[0]
const ReadList = elReactInternals.reactProps.children[3].props.children[1]
console.log('Inbox Chats', UnreadList.props.unreads)
// (303) [Room, Room, ...]
console.log('Archived Chats', ReadList.props.rooms)
// (1633) [Room, Room, ...]// Inbox - Favourites List
$$('.rooms > .favourites [data-type="bp_RoomTile"]')
// Inbox - Favourites List - Unread
$$('.rooms > .favourites .isUnread[data-type="bp_RoomTile"]')
// Inbox - Favourites List - Muted
$$('.rooms > .favourites .isMuted[data-type="bp_RoomTile"]')
// Inbox Chats
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]')
// Inbox Chats - Favourite
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]:has([data-src="img/beeper/heart-filled16.b7ad82d.svg"])')
// Inbox Chats - Pinned
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]:has([data-src="img/beeper/pin-filled16.b7cb2af.svg"])')
// Inbox Chats - Not Pinned
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]:not(:has([data-src="img/beeper/pin-filled16.b7cb2af.svg"]))')
// Inbox - Unread - Favourite-Avatar
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .favourite-avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon')
// Inbox - Unread - Avatar
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon')
// Inbox - Unread - Combined
$$('.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .favourite-avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon, .rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon')This is a bit of a hacky WIP / PoC, but it seems to do the trick:
/*************************/
/* Counting Chat Types */
/************************/
/* Initialize counters */
.rooms {
counter-reset: unread favourite pinned not-pinned;
}
/* Increment favorites */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] [data-src="img/beeper/heart-filled16.b7ad82d.svg"] {
counter-increment: favourite;
}
/* Increment pinned */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] [data-src="img/beeper/pin-filled16.b7cb2af.svg"] {
counter-increment: pinned;
}
/* Increment not pinned */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]:not(:has([data-src="img/beeper/pin-filled16.b7cb2af.svg"])) {
counter-increment: not-pinned;
}
/* Increment unread */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .favourite-avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon,
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] > div > .avatar+div > div > div > span:not(.bp_icon)+span > .bp_icon {
counter-increment: unread;
}
/* Show Counters */
/*.rooms::after {
content: "Counters: Unread (" counter(unread) "), Favourite (" counter(favourite) "), Pinned (" counter(pinned) "), Not-Pinned (" counter(not-pinned) ")"
}*/
.rooms::after {
content: "Unread (" counter(unread) "), Not-Pinned (" counter(not-pinned) ")";
font-size: 10px;
position: absolute;
top: calc(31vh - 2px);
left: calc(8vw - 4px);
background-color: dimgrey;
}
/* Set position to relative for the hovered element */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"] {
position: relative;
}
/* Show the not-pinned counter on hover */
.rooms > .rooms_scroll-container [data-type="bp_RoomTile"]:hover::before {
content: "Not-Pinned above: " counter(not-pinned);
font-size: 10px;
white-space: nowrap;
position: absolute;
bottom: 5px;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
border-radius: 3px;
padding: 2px;
background-color: dimgrey;
}














May I "request" an update for all the new useless buttons that bloat the screen since the latest update, please? 😅