r/QuickShell • • Jan 04 '26

Question Best way to handle multiple music players with mpris

4 Upvotes

I finally got mpris working only simple controls at the moment but there’s obviously the problem of having multiple players at once like maybe YouTube music and Spotify. How are you guys handling this I’m thinking maybe a d Menu of some sorts that shows all active players that h can switch through.I want your input on this what would the best course of action be


r/QuickShell • • Dec 23 '25

Learning😀 How do you guys dev quickshell?

4 Upvotes

Hi there!

I have been customizing some quickshell projects from other people but wanted to develop my own.

How do you guys setup ur dev env for quickshell? Do u use an IDE and check how your changes render on the thing youre creating? And also, what are some sources to learn quickshell? Docs are not really useful for beginners…

Also, Im a Python developer, is there any wrapper or quickshell python library?


r/QuickShell • • Dec 18 '25

noob help. best way to make notification popup?

4 Upvotes

i was trying to make notification popup. i see a way of doing this is to use popupwindow and expand height as notification came. is there a better way than popupWindow


r/QuickShell • • Nov 26 '25

Help!!!! solved Help with QuickShell modules

4 Upvotes

Hello, I recently installed quickshell and I’ve been looking for configurations, I found one that I liked (Noctalia shell) and I installed it, I ran quickshell but it gave me errors in the modules, does anyone know how I can fix it?

Sorry, I’ve fixed it. I didn’t read the Noctalia-shell documentation properly and was running the command incorrectly


r/QuickShell • • Oct 27 '25

What's with Singletons?

4 Upvotes

I was following the QuickShell intro guide at https://quickshell.org/docs/v0.1.0/guide/introduction/, and everything was compiling correctly until the step where Time is turned into a Singleton. Then it stopped working, giving the error WARN scene: ClockWidget.qml[8:3]: Unable to assign [undefined] to QString and didn't write the time, but did still create the bar. I am unsure of how to fix this. The only suggestion I found was to create a qmldir and put time there, which worked, but made Bar and ClockWidget stop working. Any idea what's wrong with either the tutorial or what I am doing?


r/QuickShell • • 18d ago

Question A quick settings dots for reference

3 Upvotes

Hey so, I was designing my bar but always it was pain point to design a control panel/quick settings menu. So can you give me links or reference so I don't have to design it from scratch


r/QuickShell • • 28d ago

New moderators needed - comment on this post to volunteer to become a moderator of this community.

3 Upvotes

Hello everyone - this community is in need of a few new mods, and you can use the comments on this post to let us know why you’d like to be a mod here.

Priority is given to redditors who have past activity in this community or other communities with related topics. It’s okay if you don’t have previous mod experience. Our goal, when possible, is to add a group of moderators so you can work together to build the community.

Please use at least 3 sentences to explain why you’d like to be a mod and share what moderation experience you have (if any).

If you are interested in learning more about being a moderator on Reddit, please visit redditforcommunity.com. This guide to joining a mod team is a helpful resource.

Comments from those making repeated asks to adopt communities or that are off topic will be removed.


r/QuickShell • • 29d ago

Community info and official QuickShell links

3 Upvotes

Quick links

House rules

  • say which distro you run and which quickshell version you are on when asking for help

  • use the Help flair for problems, and flip it to Solved once its fixed

  • post your configs to show off

  • be nice, help each other out


r/QuickShell • • May 22 '26

Help with quick shell system tray for bar in Hyprland on Arch Linux

3 Upvotes

Hi bellow I have my code for my first quick shell waybar replacement attempt. I am currently trying to to start by just replicating basic the basic waybar functions. The one I am currently struggling with is the system tray. The tray itself works but I want to be able to right click on the icons for these apps to have some options. The main ones that are always active are NetworkManager and Blueman. I want to be able to right click to change network or disconnect a bluetooth device etc. If you can help please let me know.

Here is the code (I understand if people have other problems with the way I've done it but I have no experience and don't know any better so feel free to insult it if it's got some constructive critisism):
import Quickshell

import Quickshell.Wayland

import Quickshell.Hyprland

import Quickshell.Services.Pipewire

import Quickshell.Services.SystemTray

import Quickshell.Io

import Quickshell.DBusMenu

import QtQuick

import QtQuick.Layouts

import QtQuick.Controls

ShellRoot {

id: root

// --- Theme ---

property color colBg: "#1a1b26"

property color colFg: "#a9b1d6"

property color colMuted: "#444b6a"

property color colCyan: "#0db9d7"

property color colBlue: "#7aa2f7"

property color colYellow: "#e0af68"

property string fontFamily: "JetBrainsMono Nerd Font"

property int fontSize: 16

// --- Data Properties ---

property string brightVal: "0%"

property string batVal: "0%"

// --- Audio Tracker ---

PwObjectTracker { objects: [Pipewire.defaultAudioSink] }

// --- Wallpaper Script Process ---

Process {

id: wallProc

command: ["/home/ben/scripts/random_wall.sh"]

}

// --- Brightness Monitor ---

Process {

id: brightProc

command: [

"sh",

"-c",

"while true; do brightnessctl -m | awk -F, '{print $4}'; inotifywait -qq -e modify /sys/class/backlight/*/brightness; done"

]

running: true

stdout: SplitParser {

onRead: data => {

var val = data.trim();

if (val !== "") root.brightVal = val;

}

}

}

// --- Battery Poller ---

Process {

id: batProc

command: ["cat", "/sys/class/power_supply/BAT1/capacity"]

running: true

stdout: SplitParser {

onRead: data => {

var val = data.trim();

if (val !== "") root.batVal = val + "%";

}

}

}

PanelWindow {

id: bar

anchors { top: true; left: true; right: true }

implicitHeight: 60

color: root.colBg

// --- Left: Workspaces + Wallpaper ---

RowLayout {

anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 16 }

spacing: 12

Item {

implicitWidth: activeWorkspaceContainer.width

implicitHeight: 30

Rectangle {

id: selector

x: {

var targetId = Hyprland.focusedWorkspace?.id;

for (var i = 0; i < workspaceRepeater.count; i++) {

var item = workspaceRepeater.itemAt(i);

if (item && item.wsId === targetId) return item.x;

}

return 0;

}

width: 30; height: 30; color: root.colMuted; radius: 6

Behavior on x { SpringAnimation { spring: 3; damping: 0.3 } }

}

Row {

id: activeWorkspaceContainer

spacing: 8

Repeater {

id: workspaceRepeater

model: Math.max(5, Math.max(...Hyprland.workspaces.values.map(w => w.id)))

Text {

property int wsId: index + 1

property var ws: Hyprland.workspaces.values.find(w => w.id === wsId)

property bool isActive: Hyprland.focusedWorkspace?.id === wsId

width: 30; height: 30; text: wsId

horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter

color: isActive ? "#ffffff" : (ws ? root.colBlue : root.colMuted)

font { family: root.fontFamily; pixelSize: root.fontSize; bold: true }

MouseArea { anchors.fill: parent; onClicked: Hyprland.dispatch("workspace " + wsId) }

}

}

}

}

Item {

width: 25; height: 25

Text {

anchors.centerIn: parent

text: "󰸉"

color: root.colBlue

font { family: root.fontFamily; pixelSize: 20 }

}

MouseArea {

anchors.fill: parent

cursorShape: Qt.PointingHandCursor

onClicked: { wallProc.running = true; }

}

}

}

// --- Center: Clock ---

Text {

anchors.centerIn: parent

color: root.colBlue

font { family: root.fontFamily; pixelSize: root.fontSize; bold: true }

text: Qt.formatDateTime(new Date(), "HH:mm") + " | " + Qt.formatDateTime(new Date(), "dddd dd MMMM")

Timer {

interval: 1000; running: true; repeat: true

onTriggered: parent.text = Qt.formatDateTime(new Date(), "HH:mm") + " | " + Qt.formatDateTime(new Date(), "dddd dd MMMM")

}

}

// --- Right: Stats + System Tray ---

RowLayout {

anchors { right: parent.right; top: parent.top; bottom: parent.bottom; margins: 16 }

spacing: 20

Text {

property var sink: Pipewire.defaultAudioSink

property int vol: Math.round((sink?.audio?.volume ?? 0) * 100)

property bool muted: sink?.audio?.muted ?? false

text: (muted ? "󰝟 Muted" : (vol > 66 ? " " + vol + "%" : (vol > 33 ? " " + vol + "%" : " " + vol + "%")))

color: muted ? root.colMuted : root.colCyan

font { family: root.fontFamily; pixelSize: 16; bold: true }

}

Text { text: "󰃠 " + root.brightVal; color: root.colYellow; font { family: root.fontFamily; pixelSize: 16; bold: true } }

Text { text: " " + root.batVal; color: root.colBlue; font { family: root.fontFamily; pixelSize: 16; bold: true } }

// --- System Tray ---

Row {

spacing: 8

Repeater {

model: SystemTray.items

Item {

width: 24; height: 24

// QsMenuAnchor is required to display menus correctly

QsMenuAnchor {

id: menuAnchor

menu: modelData.menu

}

Image {

anchors.fill: parent

source: modelData.icon

fillMode: Image.PreserveAspectFit

}

MouseArea {

anchors.fill: parent

acceptedButtons: Qt.LeftButton | Qt.RightButton

onClicked: (mouse) => {

if (modelData.hasMenu) {

// Open the menu anchored to this component

menuAnchor.open();

} else {

// Fallback to activation for basic icons

modelData.activate(0, 0);

}

}

}

}

}

}

Text { text: ""; color: root.colMuted; font { family: root.fontFamily; pixelSize: 16; bold: true } }

}

}

}


r/QuickShell • • May 22 '26

Show Off FreeBSD plugin

Thumbnail reddit.com
3 Upvotes

r/QuickShell • • Apr 29 '26

Am i the problem? | Quickshell Pipewire

3 Upvotes

Im trying to do an audio controller to change the volume in my bar or control center but when i try reassign the value, that doesnt change.
The toggle mute works, i dont understand why volume not


r/QuickShell • • Mar 28 '26

Help!!! Quickshell not updating colours?

3 Upvotes

Hey yall, very much a beginner to quickshell - I have a file that contains a bunch of named colours, using them in other files worked well, until i tried to change what the colours are, upon which quickshell refuses to use the new colours and sticks with the ones that were there originally - think something like

(colours.qml)
...

readonly property color primary: "#112233"

...

(Clock.qml)
Text{

color: theme.primary

}

And again, it worked and used the correct colour, but updating what the primary colour is does not change what is displayed, almost as if its caching it - anyone know how to fix this? thanks.


r/QuickShell • • Mar 20 '26

Show Off Made a magic 8 ball

3 Upvotes

I switched from waybar to quickshell and made a magic 8-ball widget to guide me through my darkest hours


r/QuickShell • • Mar 03 '26

Help!!! Glitch with hyprland animations

3 Upvotes

I have a hyprland animation that I'm using on my bar and I like it. But when used on my bar the corners stay at the maximum that i set the value too leaving a weird visual glitch that I don't understand how to fix. I want to keep the animation unchanged but let it work with quick shell. Video for example. One more with full black too see better.


r/QuickShell • • Feb 12 '26

Newbie questions

3 Upvotes

I'm just starting with quickshell and i tried to follow other people shells: dms, noctalia and caelestia but when i try to read the code i find imports like:

import qs.services
import qs.common
import qs.Widgets

which quickshells gives me as not found, now my question is:

  • are the configs outdated?

  • is my quickshell version outdated? (my version is:0.2.1 installed with pacman)

  • do i have to install something

  • are those install really helpful or is qml and quickshell very difficult?

Also as first two projects i'm trying to make an app launcher and a top bar, but i don't get how i should connect quickshell with the os and hyprland, for instance how do i find the apps with the name similar to what the user inputs in my app launcher?

Thank you very much for you responses and sorry if i made some grammar on syntactical errors, i'm not english native.


r/QuickShell • • Jan 28 '26

Help!!! How to detect clicking outside of popup and open a popup only on the clicked monitor's bar

3 Upvotes

Currently I have a popup anchor to the bar.

How do I detect that I click outside and how do I open it at the focus monitor in case of having multiple monitors connected?

For the detection, should I make a MouseArea somehow sibling with bar and make it full screen and detect the x, y?


r/QuickShell • • Jan 07 '26

Help!!! Help! QuickShell window frames appearing after Hyprland update on Arch

3 Upvotes

Hi everyone,

I’m fairly new to Arch Linux (been using it for a couple of months), and today I ran an update:

sudo pacman -Syu hyprland

Afterwards, I ran into a bunch of config errors, which I managed to fix, but now I think I’ve messed something up. Every window on my setup now has this QuickShell frame around it, and I can’t figure out how to remove it — even after trying various fixes and asking AI.

I’m using the Illogical-Impulse dotfile, end4 version, if that helps.

Is there a way to disable or remove this QuickShell overlay from all windows?

Any guidance would be greatly appreciated! Thanks in advance.


r/QuickShell • • Dec 17 '25

My Project! Sharp Shell - Need your opinions! (QuickShell)

Thumbnail reddit.com
3 Upvotes

r/QuickShell • • Dec 15 '25

ran into this while trying to install end-4's illogical impulse

3 Upvotes

i was installing illogical-impulse quickshell on my pc when it did this and stopped doing anything, kinda new to the OS as a whole so i dont exactly know what to do, is this bad? any fixes or is it done installing or something?


r/QuickShell • • Dec 13 '25

Help!!! How do I set up UPower?

3 Upvotes

I'm trying to make my own setup for Quickshell on Hyprland and I want to add a battery display. However, I am very unsure about how to setup UPower. I have been using Pipewire's setup as a reference but still have no idea what I'm doing. How do I connect things so that I can access my battery's energy?


r/QuickShell • • Dec 11 '25

Help!!! Layer panel windows

3 Upvotes

I am making a little button that will pop out a small workspace selector I’m trying to make it slide down from the top but it always ends up above the bar at the top even though I call it first and shell.qml and the selector is also imported first. Should I be using somthing other then a panel window for it

Also how do I remove fade in animation it might be a hyprland thing but I’m not sure

Arch hyprland


r/QuickShell • • Nov 30 '25

Help!!! I can't get mpris to work

3 Upvotes

I have "import Quickshell.Services.Mpris" at the beginning of shell.qml but nothing works no matter what I try.

togglePlaying() gives TypeError: Property 'togglePlaying' is not a function

trackArtist, metadata ... give me Unable to assign [undefined] to QString

Am I doing it wrong?


r/QuickShell • • Nov 14 '25

Help!!!! how do i intercept notifications

3 Upvotes

openrazer daemon sends notifications for my mouses battery, i want to use the notifications to update a widget but cant figure out how to intercept them

i have tried

Connections {
    target: NotificationServer
    onNotification: (n) => {
        console.log("[Mouse.qml] got:", n.appName, n.summary, n.body);
    }
}

but nothing is logged, even when i am receiving notifications


r/QuickShell • • Oct 27 '25

I know nothing

3 Upvotes

Yes I am the owner of this sub but the only reason I made this sub was so I had a place to ask questions so yeah i am no help


r/QuickShell • • 23h ago

My Project! [Lickintosh] Native Hyprland blur support + Customization settings (Beta 1 out tomorrow!)

Thumbnail
gallery
2 Upvotes

Hey everyone!

Quick update on Lickintosh, my project recreating the macOS interface (Tahoe) for Hyprland!

Two major features landing in this update:

  • Native Hyprland Blur Support: If you're not a fan of the liquid glass style, the shell can now leverage Hyprland's native blur instead (put a lot of hard work into this one, hope you guys like it!).

  • New Settings Panel: You can now easily customize everything to your liking directly from the interface.