diff --git a/.config/nvim/lua/rocketcamel/plugins/lsp.lua b/.config/nvim/lua/rocketcamel/plugins/lsp.lua index b3f9bd7..7cf1ef3 100644 --- a/.config/nvim/lua/rocketcamel/plugins/lsp.lua +++ b/.config/nvim/lua/rocketcamel/plugins/lsp.lua @@ -75,6 +75,10 @@ local function setup_svelte() }) end +local function setup_qml() + require("lspconfig").qmlls.setup({}) +end + return { { "neovim/nvim-lspconfig", @@ -108,6 +112,7 @@ return { "clangd", "cmake", "cssls", + "qmlls", }, automatic_enable = { exclude = { "luau_lsp", "lua_ls", "svelte" } }, }) @@ -117,6 +122,7 @@ return { setup_nix() setup_java() setup_svelte() + setup_qml() end, }, } diff --git a/.config/nvim/lua/rocketcamel/plugins/treesitter.lua b/.config/nvim/lua/rocketcamel/plugins/treesitter.lua index 9d1c178..429efbc 100644 --- a/.config/nvim/lua/rocketcamel/plugins/treesitter.lua +++ b/.config/nvim/lua/rocketcamel/plugins/treesitter.lua @@ -20,6 +20,7 @@ return { "html", "templ", "go", + "qmljs", }, auto_install = true, highlight = { diff --git a/.config/quickshell/.qmlls.ini b/.config/quickshell/.qmlls.ini new file mode 120000 index 0000000..ac160f8 --- /dev/null +++ b/.config/quickshell/.qmlls.ini @@ -0,0 +1 @@ +/run/user/1000/quickshell/vfs/d51aaef3451280dfdf2f7cf03412fd13/.qmlls.ini \ No newline at end of file diff --git a/.config/quickshell/icons/nixos.png b/.config/quickshell/icons/nixos.png new file mode 100644 index 0000000..436b6ab Binary files /dev/null and b/.config/quickshell/icons/nixos.png differ diff --git a/.config/quickshell/shell.qml b/.config/quickshell/shell.qml new file mode 100644 index 0000000..bf08f1c --- /dev/null +++ b/.config/quickshell/shell.qml @@ -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 + } + } +} diff --git a/icons b/icons new file mode 100644 index 0000000..436b6ab Binary files /dev/null and b/icons differ diff --git a/nix/flake.lock b/nix/flake.lock index 9c03d05..c4598b3 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -207,6 +207,26 @@ "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": { "inputs": { "custom-fonts": "custom-fonts", @@ -215,6 +235,7 @@ "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs_2", "nixpkgs-before": "nixpkgs-before", + "quickshell": "quickshell", "sops-nix": "sops-nix", "status-bar": "status-bar" } diff --git a/nix/flake.nix b/nix/flake.nix index f492a28..e9a4511 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -26,6 +26,10 @@ url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; + quickshell = { + url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -75,6 +79,7 @@ inherit inputs; meta = { hostname = host.name; + architecture = host.architecture; }; pkgs-before = import inputs.nixpkgs-before { system = host.architecture; }; }; diff --git a/nix/modules/commonPackages.nix b/nix/modules/commonPackages.nix index 3f8b899..cf52933 100644 --- a/nix/modules/commonPackages.nix +++ b/nix/modules/commonPackages.nix @@ -21,6 +21,7 @@ roboto roboto-mono open-sans + comic-relief ]; fonts.fontDir.enable = true; commonPackages = with pkgs; [ diff --git a/nix/modules/desktop.nix b/nix/modules/desktop.nix index 5390fe3..3e009b1 100644 --- a/nix/modules/desktop.nix +++ b/nix/modules/desktop.nix @@ -3,6 +3,8 @@ lib, config, pkgs-before, + inputs, + meta, ... }: @@ -50,6 +52,7 @@ lm_sensors fanctl waypipe + inputs.quickshell.packages.${meta.architecture}.default ]; boot.kernelModules = [ "iptables" @@ -202,6 +205,8 @@ "$mod, k, movefocus, u" "$mod, j, movefocus, d" "$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, s, exec, bash -c ~/dotfiles/scripts/screenshot.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'" ]; general = { - gaps_in = 0; + gaps_in = 5; gaps_out = 10; }; dwindle = { preserve_split = true; }; decoration = { - rounding = 0; + rounding = 10; blur = { enabled = false; }; diff --git a/nix/modules/rust.nix b/nix/modules/rust.nix index 8b01251..efc7587 100644 --- a/nix/modules/rust.nix +++ b/nix/modules/rust.nix @@ -36,6 +36,9 @@ programs.nix-ld.libraries = with pkgs; [ openssl zlib + brotli + unixODBC + glib ]; }; }