feat: add quickshell

This commit is contained in:
2026-01-18 23:37:26 -08:00
parent 68588f5d72
commit 5c3252746f
11 changed files with 169 additions and 2 deletions

View File

@@ -75,6 +75,10 @@ local function setup_svelte()
}) })
end end
local function setup_qml()
require("lspconfig").qmlls.setup({})
end
return { return {
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
@@ -108,6 +112,7 @@ return {
"clangd", "clangd",
"cmake", "cmake",
"cssls", "cssls",
"qmlls",
}, },
automatic_enable = { exclude = { "luau_lsp", "lua_ls", "svelte" } }, automatic_enable = { exclude = { "luau_lsp", "lua_ls", "svelte" } },
}) })
@@ -117,6 +122,7 @@ return {
setup_nix() setup_nix()
setup_java() setup_java()
setup_svelte() setup_svelte()
setup_qml()
end, end,
}, },
} }

View File

@@ -20,6 +20,7 @@ return {
"html", "html",
"templ", "templ",
"go", "go",
"qmljs",
}, },
auto_install = true, auto_install = true,
highlight = { highlight = {

View File

@@ -0,0 +1 @@
/run/user/1000/quickshell/vfs/d51aaef3451280dfdf2f7cf03412fd13/.qmlls.ini

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,124 @@
//qmllint disable unqualified
//qmllint disable unused-imports
//qmllint disable uncreatable-type
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import Quickshell.Io
PanelWindow {
id: root
anchors.top: true
anchors.left: true
anchors.right: true
implicitHeight: 34
color: "#1a1b26"
property int fontSize: 18
property color colBg: "#1a1b26"
property color colFg: "#a9b1d6"
property color colMuted: "#444b6a"
property color colCyan: "#0db9d7"
property color colPurple: "#ad8ee6"
property color colRed: "#f7768e"
property color colYellow: "#e0af68"
property color colBlue: "#7aa2f7"
RowLayout {
anchors.fill: parent
Rectangle {
Layout.preferredWidth: 30
Layout.preferredHeight: 28
color: "transparent"
Image {
anchors.fill: parent
source: "file:///home/luca/dotfiles/.config/quickshell/icons/nixos.png"
fillMode: Image.PreserveAspectFit
}
}
Repeater {
model: Hyprland.workspaces.values
delegate: Rectangle {
id: workspaceComponent
Layout.preferredWidth: 30
Layout.preferredHeight: parent.height
color: "transparent"
property bool isActive: modelData.focused
property int lastActive: 1
property int wsId: modelData.id
property bool isHovered: mouseHandler.containsMouse
states: [
State {
name: "active"
when: isActive
PropertyChanges {
target: workspaceComponent
color: Qt.rgba(1, 1, 1, 0.2)
}
PropertyChanges {
target: underline
color: root.colPurple
}
},
State {
name: "hovered"
when: isHovered && !isActive
PropertyChanges {
target: workspaceComponent
color: Qt.rgba(1, 1, 1, 0.1)
}
PropertyChanges {
target: underline
color: "#7aa2f7"
}
}
]
transitions: Transition {
ColorAnimation {
duration: 200
}
}
Text {
text: modelData.id
color: isActive ? "#a9b1d6" : "#7aa2f7"
font {
pixelSize: root.fontSize
bold: true
family: "Comic Relief"
}
anchors.centerIn: parent
}
Rectangle {
id: underline
width: 30
height: 3
color: root.colBg
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
}
MouseArea {
id: mouseHandler
hoverEnabled: true
anchors.fill: parent
onClicked: Hyprland.dispatch("workspace " + modelData.id)
}
}
}
Item {
Layout.fillWidth: true
}
}
}

BIN
icons Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

21
nix/flake.lock generated
View File

@@ -207,6 +207,26 @@
"type": "github" "type": "github"
} }
}, },
"quickshell": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1768689040,
"narHash": "sha256-Tlnr5BulJcMers/cb+YvmBQW4nKHjdKo9loInJkyO2k=",
"ref": "refs/heads/master",
"rev": "7a427ce1979ce7447e885c4f30129b40f3d466f5",
"revCount": 729,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"root": { "root": {
"inputs": { "inputs": {
"custom-fonts": "custom-fonts", "custom-fonts": "custom-fonts",
@@ -215,6 +235,7 @@
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nixpkgs-before": "nixpkgs-before", "nixpkgs-before": "nixpkgs-before",
"quickshell": "quickshell",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"status-bar": "status-bar" "status-bar": "status-bar"
} }

View File

@@ -26,6 +26,10 @@
url = "github:nix-community/fenix"; url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
quickshell = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
@@ -75,6 +79,7 @@
inherit inputs; inherit inputs;
meta = { meta = {
hostname = host.name; hostname = host.name;
architecture = host.architecture;
}; };
pkgs-before = import inputs.nixpkgs-before { system = host.architecture; }; pkgs-before = import inputs.nixpkgs-before { system = host.architecture; };
}; };

View File

@@ -21,6 +21,7 @@
roboto roboto
roboto-mono roboto-mono
open-sans open-sans
comic-relief
]; ];
fonts.fontDir.enable = true; fonts.fontDir.enable = true;
commonPackages = with pkgs; [ commonPackages = with pkgs; [

View File

@@ -3,6 +3,8 @@
lib, lib,
config, config,
pkgs-before, pkgs-before,
inputs,
meta,
... ...
}: }:
@@ -50,6 +52,7 @@
lm_sensors lm_sensors
fanctl fanctl
waypipe waypipe
inputs.quickshell.packages.${meta.architecture}.default
]; ];
boot.kernelModules = [ boot.kernelModules = [
"iptables" "iptables"
@@ -202,6 +205,8 @@
"$mod, k, movefocus, u" "$mod, k, movefocus, u"
"$mod, j, movefocus, d" "$mod, j, movefocus, d"
"$mod, Space, togglesplit" "$mod, Space, togglesplit"
"$mod SHIFT, h, movewindow, l"
"$mod SHIFT, l, movewindow, r"
"$mod SHIFT, v, exec, bash -c ~/dotfiles/scripts/copy.sh" "$mod SHIFT, v, exec, bash -c ~/dotfiles/scripts/copy.sh"
"$mod SHIFT, s, exec, bash -c ~/dotfiles/scripts/screenshot.sh" "$mod SHIFT, s, exec, bash -c ~/dotfiles/scripts/screenshot.sh"
"$mod, p, exec, bash -c ~/dotfiles/scripts/project.sh" "$mod, p, exec, bash -c ~/dotfiles/scripts/project.sh"
@@ -235,14 +240,14 @@
",XF86MonBrightnessDown, exec, bash -c 'brightnessctl s 5%- && perc=$(( \$(brightnessctl get) * 100 / \$(brightnessctl max) )) && notify-send \"Brightness\" -h int:value:\$perc -h string:synchronous:brightness -u low'" ",XF86MonBrightnessDown, exec, bash -c 'brightnessctl s 5%- && perc=$(( \$(brightnessctl get) * 100 / \$(brightnessctl max) )) && notify-send \"Brightness\" -h int:value:\$perc -h string:synchronous:brightness -u low'"
]; ];
general = { general = {
gaps_in = 0; gaps_in = 5;
gaps_out = 10; gaps_out = 10;
}; };
dwindle = { dwindle = {
preserve_split = true; preserve_split = true;
}; };
decoration = { decoration = {
rounding = 0; rounding = 10;
blur = { blur = {
enabled = false; enabled = false;
}; };

View File

@@ -36,6 +36,9 @@
programs.nix-ld.libraries = with pkgs; [ programs.nix-ld.libraries = with pkgs; [
openssl openssl
zlib zlib
brotli
unixODBC
glib
]; ];
}; };
} }