{ config, lib, inputs, pkgs, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.home.programs.ironbar; in { options = { home.programs.ironbar.enable = mkEnableOption "Enables ironbar"; }; imports = [ inputs.ironbar.homeManagerModules.default ]; config = mkIf cfg.enable { programs.ironbar = { enable = true; # config = let # workspaces = { # type = "workspaces"; # all_monitors = false; # favorites = map (n: builtins.toString n) [1 2 3 4 5 6 7 8 9 10]; # hidden = ["special"]; # name_map = let # workspaces = lib.genAttrs (map (n: builtins.toString n) [1 2 3 4 5 6 7 8 9 10]); # mkColorfull = text: color: "${text}"; # "${text}"; # dotify = _: mkColorfull "●"; # c = builtins.mapAttrs dotify (import ./colors.nix).base; # in # workspaces ( # i: # if i == "1" # then c.red # else if i == "2" # then c.maroon # else if i == "3" # then c.peach # else if i == "4" # then c.yellow # else if i == "5" # then c.green # else if i == "6" # then c.teal # else if i == "7" # then c.sky # else if i == "8" # then c.sapphire # else if i == "9" # then c.blue # else if i == "10" # then c.lavender # else c.mauve # ); # }; # music = let # state_path = "${config.xdg.stateHome}/music-ctrls-state"; # show-script = pkgs.writeShellApplication { # name = "mctrls-shower"; # runtimeInputs = with pkgs; [coreutils]; # text = '' # ${pkgs.coreutils}/bin/touch ${state_path} # out=$(< ${state_path}) # if [[ $out != "show" ]]; then # echo -ne "show" > ${state_path} # fi # ''; # }; # hide-script = pkgs.writeShellApplication { # name = "mctrls-hider"; # runtimeInputs = with pkgs; [coreutils]; # text = '' # ${pkgs.coreutils}/bin/touch ${state_path} # out=$(< ${state_path}) # if [[ $out == "show" ]]; then # echo -ne "" >${state_path} # fi # ''; # }; # in { # type = "music"; # player_type = "mpris"; # format = "{title}"; # truncate = "end"; # #icons.play = "icon:media-playback-start"; # #icons.pause = "icon:media-playback-pause"; # music_dir = config.xdg.userDirs.music; # show_status_icon = false; # on_mouse_enter.cmd = "${show-script}/bin/mctrls-shower"; # on_mouse_exit.cmd = "${hide-script}/bin/mctrls-hider"; # #icon_size = 64; # #cover_image_size = 256; # }; # music_img = rec { # type = "custom"; # name = "music-img"; # class = name; # on_mouse_enter = music.on_mouse_enter; # on_mouse_exit = music.on_mouse_exit; # bar = [ # { # type = "image"; # class = name + "-img"; # #src = ''{{poll:5000:${pkgs.playerctl}/bin/playerctl metadata mpris:artUrl}}''; # src = ''{{watch:${pkgs.playerctl}/bin/playerctl -F metadata mpris:artUrl}}''; # } # ]; # }; # music_inline_controls = let # check-script = pkgs.writeShellApplication { # name = "mctrls-checker"; # runtimeInputs = with pkgs; [coreutils]; # text = let # state_path = "${config.xdg.stateHome}/music-ctrls-state"; # in '' # ${pkgs.coreutils}/bin/touch ${state_path} # if [[ $(< ${state_path}) == "show" ]]; then # exit 0 # else # exit 1 # fi # ''; # }; # play-icon-script = pkgs.writeShellApplication { # name = "pp-icon"; # runtimeInputs = [pkgs.playerctl]; # text = '' # if [[ $(${pkgs.playerctl}/bin/playerctl status) == "Playing" ]]; then # echo "" # else # echo "" # fi # ''; # }; # in rec { # type = "custom"; # name = "music-ctrls"; # class = name; # show_if = { # mode = "poll"; # interval = 1000; # cmd = "${check-script}/bin/mctrls-checker"; # }; # on_mouse_enter = music.on_mouse_enter; # on_mouse_exit = music.on_mouse_exit; # transition_type = "slide_start"; # bar = let # pctl = cmd: # "!" # + (pkgs.writeShellApplication { # name = "iron-${cmd}"; # runtimeInputs = [pkgs.playerctl]; # text = "${pkgs.playerctl}/bin/playerctl ${cmd}"; # }) # + "/bin/iron-${cmd}"; # in [ # { # type = "button"; # class = name + "-prev"; # label = "󰒮"; # on_click = pctl "previous"; # } # { # type = "button"; # class = name + "-pp"; # label = "{{poll:100:${play-icon-script}/bin/pp-icon}}"; # on_click = pctl "play-pause"; # } # { # type = "button"; # class = name + "-next"; # label = "󰒭"; # on_click = pctl "next"; # } # ]; # }; # sys_info = { # type = "sys_info"; # format = [" {cpu_percent}%" " {memory_percent}%"]; # }; # battery = { # type = "upower"; # format = "{percentage}%"; # }; # tray = {type = "tray";}; # clock = { # type = "clock"; # format = "%l:%M %P"; # }; # cava = { # type = "script"; # mode = "watch"; # cmd = # (pkgs.writeShellApplication { # name = "cava"; # runtimeInputs = [pkgs.cava pkgs.gnused]; # text = '' # printf "[general]\nframerate=160\nbars = 7\n[output]\nmethod = raw\nraw_target = /dev/stdout\ndata_format = ascii\nascii_max_range = 7\n" | cava -p /dev/stdin | sed -u 's/;//g;s/0/▁/g;s/1/▂/g;s/2/▃/g;s/3/▄/g;s/4/▅/g;s/5/▆/g;s/6/▇/g;s/7/█/g; ' # ''; # }) # + "/bin/cava"; # }; # dash = rec { # type = "custom"; # name = "nix-launcher"; # class = name; # bar = [ # { # type = "button"; # label = "󰇙 "; # on_click = "popup:toggle"; # } # ]; # popup = [ # { # type = "box"; # orientation = "v"; # widgets = [ # #{ # # type = "label"; # # label = "{{${pkgs.macchina}/bin/macchina}}"; # #} # { # type = "box"; # widgets = [ # { # type = "button"; # label = "󱗼 Applications"; # on_click = "!tuirun-toggle"; # } # { # type = "button"; # label = "󰕾 Sound"; # on_click = "!${pkgs.pavucontrol}/bin/pavucontrol"; # } # { # type = "button"; # label = "󰐥 Power"; # on_click = "!${pkgs.nwg-bar}/bin/nwg-bar"; # } # ]; # } # ]; # } # ]; # }; # left = [ # #focused # dash # workspaces # ]; # right = [ # tray # sys_info # cava # battery # clock # ]; # center = [ # music_img # music # music_inline_controls # ]; # in { # anchor_to_edges = true; # position = "top"; # start = left; # end = right; # center = center; # #center = [ # # { # # type = "label"; # # label = "random num: {{500:playerctl metadata mpris:artUrl}}"; # # } # #]; # height = 32; # icon_theme = config.gtk.iconTheme.name; # }; # style = let # built = pkgs.callPackage ./scss-pkg.nix { # src = ./styles; # entry = "main"; # }; # in '' # @import url("${built}/out.css"); # ''; }; }; }