Files
lhns--steam-frame-nix/template/home.nix
T
Pierre Kisters 990ee78fe7 Add frame-controls: move window controls between bar and ⋯ menu by long press
steamFrame.dashboard.frameControls: a long press (longPressMs, default
1.5 s; a ring shows the progress from half of it) on a control under a
dashboard window or on a More Options (three-dot) menu row opens a popup
with "Show in bar", which moves that control between the window's bottom
bar and the menu, for all windows. Placement is keyed by the control's
action icon, kept in the page and its localStorage (survives SteamVR
restarts); inBar / inMenu set defaults. floatInTheater gives theater
windows the Float control back.

The popup is a scene-graph panel of its own, attached to the pressed
button's (or the menu's) anchor like SteamVR's tooltips and menu, so the
bar and menu panels don't change; the menu's focus auto-close is held back
while its popup is open. Coordinates with window-curvature through its
sfui-curv-* contract. Lookups by signature ("frame-controls" in
lib/signatures.json, check-only anchors for the rest).
2026-09-27 22:58:32 +02:00

58 lines
2.6 KiB
Nix

{ config, pkgs, username, homeDirectory, ... }: {
home.username = username; # set in flake.nix
home.homeDirectory = homeDirectory; # set in flake.nix
# Home Manager release this configuration was first written for. Don't
# change it on upgrades; see the home.stateVersion option docs.
home.stateVersion = "26.05";
targets.genericLinux.enable = true; # non-NixOS integration
programs.home-manager.enable = true; # the `home-manager` command
# Packages for your user, e.g.:
# home.packages = with pkgs; [ htop ripgrep ];
# Steam Frame fixes, see https://github.com/lhns/steam-frame-nix
# (portalFix and clipboardSync are on by default).
# steamFrame = {
# keyboardLayout = "de"; # XKB layout for the Steam session
# steamKeyboardPatch.enable = true; # Esc/Ctrl/Alt/arrows on the VR keyboard
# # VR "+" menu: sorted by name, Desktop pinned below the list, closed
# # on click, no second launch of the same program within 10 s, programs
# # as a grid of 4 columns, at most 4 rows visible:
# launcherMenu = {
# sort = true;
# pinDesktop = "bottom";
# closeOnLaunch = true;
# launchDebounce = 10;
# grid = { enable = true; columns = 4; maxRows = 4; };
# # All programs without Steam's Developer Mode (Konsole, KDE System
# # Settings, Dolphin, ... are hidden otherwise):
# showAllApps = true;
# # Icon fallbacks for programs without an icon in the menu are on by
# # default; names to provide in addition to what the scan finds:
# # iconFallbacks.extra = [ "system-file-manager" ];
# };
# # SteamVR dashboard windows: resizable up to 4x (stock 2x), pushed
# # back up to 10 m in the world / 12 m in theater mode (stock 5 / 6 m):
# dashboard = {
# windowMaxScale = 4.0;
# windowDistance.world.max = 10.0;
# windowDistance.theater.max = 12.0;
# # X button on the Steam window: back to the previous window, or
# # just the dashboard bar:
# steamCloseButton.enable = true;
# # Curvature per window: click the "Toggle Curvature" row of a
# # window's More Options menu (or its bar button) to toggle, drag
# # up/down to adjust (with controller haptics):
# windowCurvature.enable = true;
# # Long press a control under a window (or a three-dot menu row) to
# # move it between the bar and the three-dot menu:
# frameControls.enable = true;
# };
# firefox.enable = true; # launcher for the Firefox Flatpak
# # Hidden from the "+" menu (with Steam Developer Mode on):
# hiddenApps = [ "lxterminal" "cmake-gui" "firewall-config" "renderdoc" ];
# };
}