feat: add mangowc

This commit is contained in:
tux
2026-02-24 14:49:39 +05:30
parent 5f72ba716d
commit ea7b6bcdef
6 changed files with 329 additions and 6 deletions

87
flake.lock generated
View File

@@ -297,6 +297,24 @@
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1765835352,
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
@@ -311,7 +329,7 @@
"type": "github"
}
},
"flake-parts_2": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"nur",
@@ -944,6 +962,28 @@
"type": "github"
}
},
"mango": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"scenefx": "scenefx"
},
"locked": {
"lastModified": 1771671174,
"narHash": "sha256-5yOc1wyqRPUBrKHyjxgKHjCIUA4WEiLpWhW1l6cOrdA=",
"owner": "DreamMaoMao",
"repo": "mango",
"rev": "5f6f014debb8af0fc27b2a52f2569d984ada3ef9",
"type": "github"
},
"original": {
"owner": "DreamMaoMao",
"repo": "mango",
"type": "github"
}
},
"nix-formatter-pack": {
"inputs": {
"nixpkgs": [
@@ -1059,7 +1099,7 @@
"nixcord": {
"inputs": {
"flake-compat": "flake-compat_5",
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_7"
},
"locked": {
@@ -1206,6 +1246,21 @@
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1748740939,
"narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
@@ -1220,7 +1275,7 @@
"type": "github"
}
},
"nixpkgs-lib_2": {
"nixpkgs-lib_3": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
@@ -1496,7 +1551,7 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts_3",
"nixpkgs": "nixpkgs_11"
},
"locked": {
@@ -1515,7 +1570,7 @@
},
"parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
"nixpkgs-lib": "nixpkgs-lib_3"
},
"locked": {
"lastModified": 1768135262,
@@ -1566,6 +1621,7 @@
"hyprland-plugins": "hyprland-plugins",
"impermanence": "impermanence",
"lan-mouse": "lan-mouse",
"mango": "mango",
"nix-index-database": "nix-index-database",
"nix-on-droid": "nix-on-droid",
"nix-secrets": "nix-secrets",
@@ -1667,6 +1723,27 @@
"type": "github"
}
},
"scenefx": {
"inputs": {
"nixpkgs": [
"mango",
"nixpkgs"
]
},
"locked": {
"lastModified": 1750785057,
"narHash": "sha256-tGX6j4W91rcb+glXJo43sjPI9zQvPotonknG1BdihR4=",
"owner": "wlrfx",
"repo": "scenefx",
"rev": "3a6cfb12e4ba97b43326357d14f7b3e40897adfc",
"type": "github"
},
"original": {
"owner": "wlrfx",
"repo": "scenefx",
"type": "github"
}
},
"scss-reset": {
"flake": false,
"locked": {

View File

@@ -160,6 +160,10 @@
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
mango = {
url = "github:DreamMaoMao/mango";
inputs.nixpkgs.follows = "nixpkgs";
};
vicinae-extensions = {
url = "github:vicinaehq/extensions";
inputs.nixpkgs.follows = "nixpkgs";

View File

@@ -17,6 +17,7 @@
../../modules/nixos/desktop
../../modules/nixos/desktop/awesome
../../modules/nixos/desktop/hyprland
../../modules/nixos/desktop/mango
../../modules/nixos/virtualisation
../../modules/nixos/steam.nix
../../modules/nixos/obs-studio.nix
@@ -282,7 +283,7 @@
supergfxd = {
enable = true;
settings = {
mode = "Integrated";
mode = "Hybrid";
vfio_enable = false;
vfio_save = false;
always_reboot = false;

View File

@@ -2,6 +2,7 @@
imports = [
../../modules/home/desktop/awesome
../../modules/home/desktop/hyprland
../../modules/home/desktop/mango
../../modules/home/desktop/vicinae
../../modules/home/desktop/utils
../../modules/home/picom

View File

@@ -0,0 +1,214 @@
{inputs, ...}: {
imports = [
inputs.mango.hmModules.mango
];
wayland.windowManager.mango = {
enable = true;
settings = ''
# Monitors
monitorrule = name:eDP-1, width:2560, height:1440, refresh:165, x:0, y:10, vrr:1
monitorrule = name:HDMI-A-1, width:2560, height:1440, refresh:100, x:0, y:-1440, vrr:1
# Keyboard
repeat_rate = 25
repeat_delay = 600
numlockon = 0
xkb_rules_layout = us
# Trackpad
disable_trackpad = 0
tap_to_click = 1
tap_and_drag = 1
drag_lock = 1
trackpad_natural_scrolling = 1
disable_while_typing = 1
left_handed = 0
middle_button_emulation = 0
swipe_min_threshold = 1
# Mouse
mouse_natural_scrolling = 0
accel_profile = 0
# Theme
border_radius = 8
no_radius_when_single = 0
focused_opacity = 1.0
unfocused_opacity = 1.0
# Scroller Layout Setting
scroller_structs = 0
scroller_default_proportion = 0.5
scroller_ignore_proportion_single = 0
scroller_default_proportion_single = 1.0
# Master-Stack Layout Setting
new_is_master = 0
default_mfact = 0.5
default_nmaster = 1
smartgaps = 0
# Overview Setting
hotarea_size = 10
enable_hotarea = 1
ov_tab_mode = 0
overviewgappi = 15
overviewgappo = 15
# layouts
tagrule = id:1, layout_name:tile
tagrule = id:2, layout_name:tile
tagrule = id:3, layout_name:tile
tagrule = id:4, layout_name:tile
tagrule = id:5, layout_name:tile
tagrule = id:6, layout_name:scroller
# Keybindings
mousebind = SUPER, btn_left, moveresize, curmove
mousebind = SUPER, btn_right, moveresize, curresize
gesturebind = none, left, 3, viewtoright_have_client
gesturebind = none, right, 3, viewtoleft_have_client
gesturebind = none, up, 3, toggleoverview
gesturebind = none, down, 3, toggleoverview
# apps
bind = SUPER, Return, spawn, wezterm
bind = SUPER, Space, spawn, vicinae toggle
bind = SUPER, B, spawn, brave
bind = SUPER, V, spawn, vicinae vicinae://extensions/vicinae/clipboard/history
bind = SUPER+SHIFT, W, spawn, vicinae vicinae://extensions/sovereign/awww-switcher/wpgrid
# WM
bind = SUPER, Q, killclient
bind = SUPER+SHIFT, R, reload_config
bind = SUPER+SHIFT, F, togglefullscreen
bind = SUPER+SHIFT, Space, togglefloating
bind = ALT, Tab, toggleoverview
bind = ALT+SHIFT, minus, incgaps, -1
bind = ALT+SHIFT, equal, incgaps, 1
bind = ALT+SHIFT, R, togglegaps
# switch layout
bind = SUPER+SHIFT, H, setlayout, tile
bind = SUPER+SHIFT, V, setlayout, vertical_tile
bind = SUPER+SHIFT, S, setlayout, scroller
# resize client
bind = SUPER+CTRL, Up, resizewin, +0, -50
bind = SUPER+CTRL, Down, resizewin, +0, +50
bind = SUPER+CTRL, Left, resizewin, -50, +0
bind = SUPER+CTRL, Right, resizewin, +50, +0
# swap client
bind = SUPER+SHIFT, Up, exchange_client, up
bind = SUPER+SHIFT, Down, exchange_client, down
bind = SUPER+SHIFT, Left, exchange_client, left
bind = SUPER+SHIFT, Right, exchange_client, right
# switch client focus
bind = SUPER, Tab, focusstack, next
bind = SUPER, Left, focusdir, left
bind = SUPER, Right, focusdir, right
bind = SUPER, Up, focusdir, up
bind = SUPER, Down, focusdir, down
# switch view
bind = SUPER, 1, view, 1, 0
bind = SUPER, 2, view, 2, 0
bind = SUPER, 3, view, 3, 0
bind = SUPER, 4, view, 4, 0
bind = SUPER, 5, view, 5, 0
bind = SUPER, 6, view, 6, 0
# move client to the tag with focus
bind = SUPER+SHIFT, 1, tagsilent, 1, 0
bind = SUPER+SHIFT, 2, tagsilent, 2, 0
bind = SUPER+SHIFT, 3, tagsilent, 3, 0
bind = SUPER+SHIFT, 4, tagsilent, 4, 0
bind = SUPER+SHIFT, 5, tagsilent, 5, 0
bind = SUPER+SHIFT, 6, tagsilent, 6, 0
# move client to the tag without focus
bind = SUPER+ALT, 1, tag, 1, 0
bind = SUPER+ALT, 2, tag, 2, 0
bind = SUPER+ALT, 3, tag, 3, 0
bind = SUPER+ALT, 4, tag, 4, 0
bind = SUPER+ALT, 5, tag, 5, 0
bind = SUPER+ALT, 6, tag, 6, 0
# Window effect
blur = 0
blur_layer = 0
blur_optimized = 1
blur_params_num_passes = 2
blur_params_radius = 5
blur_params_noise = 0.02
blur_params_brightness = 0.9
blur_params_contrast = 0.9
blur_params_saturation = 1.2
shadows = 0
layer_shadows = 0
shadow_only_floating = 1
shadows_size = 10
shadows_blur = 15
shadows_position_x = 0
shadows_position_y = 0
shadowscolor = 0x000000ff
# Animation
animations = 1
layer_animations = 1
animation_type_open = slide
animation_type_close = fade
animation_fade_in = 1
animation_fade_out = 1
tag_animation_direction = 1
zoom_initial_ratio = 0.3
zoom_end_ratio = 0.8
fadein_begin_opacity = 0.5
fadeout_begin_opacity = 0.8
animation_duration_move = 100
animation_duration_open = 100
animation_duration_close = 100
animation_duration_tag = 200
animation_duration_focus = 0
animation_curve_open = 0.46, 1.0, 0.29, 1
animation_curve_move = 0.46, 1.0, 0.29, 1
animation_curve_tag = 0.46, 1.0, 0.29, 1
animation_curve_close = 0.08, 0.92, 0, 1
animation_curve_focus = 0.46, 1.0, 0.29, 1
animation_curve_opafadeout = 0.5, 0.5, 0.5, 0.5
animation_curve_opafadein = 0.46, 1.0, 0.29, 1
# Appearance
borderpx = 0
gappih = 10
gappiv = 10
gappoh = 10
gappov = 10
rootcolor = 0x201b14ff
bordercolor = 0x444444ff
focuscolor = 0xc9b890ff
maximizescreencolor = 0x89aa61ff
urgentcolor = 0xad401fff
scratchpadcolor = 0x516c93ff
globalcolor = 0xb153a7ff
overlaycolor = 0x14a57cff
# Misc
adaptive_sync = 1
syncobj_enable = 1
exec-once = awww-daemon
exec-once = kdeconnectd
exec-once = kdeconnect-indicator
exec-once = dbus-update-activation-environment --systemd --all; systemctl --user reset-failed && systemctl --user start mango-session.target
'';
};
}

View File

@@ -0,0 +1,26 @@
{
inputs,
pkgs,
lib,
...
}: {
imports = [
inputs.mango.nixosModules.mango
];
programs.mango.enable = true;
xdg.portal = {
enable = lib.mkDefault true;
extraPortals = with pkgs; [
hyprland-git.xdg-desktop-portal-hyprland
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
config.mango = {
default = lib.mkForce ["hyprland" "gtk"];
"org.freedesktop.impl.portal.ScreenCast" = lib.mkForce ["hyprland"];
"org.freedesktop.impl.portal.ScreenShot" = lib.mkForce ["hyprland"];
};
};
}