mirror of
https://github.com/tuxdotrs/nixos-config.git
synced 2025-07-06 17:56:35 +05:30
137 lines
4.3 KiB
Nix
137 lines
4.3 KiB
Nix
{pkgs, ...}: let
|
|
bg = "default";
|
|
fg = "default";
|
|
bg2 = "brightblack";
|
|
fg2 = "white";
|
|
color = c: "#{@${c}}";
|
|
|
|
indicator = let
|
|
accent = color "indicator_color";
|
|
content = " ";
|
|
in "#[reverse,fg=${accent}]#{?client_prefix,${content},}";
|
|
|
|
current_window = let
|
|
accent = color "main_accent";
|
|
index = "#[reverse,fg=${accent},bg=${fg}] #I ";
|
|
name = "#[fg=${bg2},bg=${fg2}] #W ";
|
|
# flags = "#{?window_flags,#{window_flags}, }";
|
|
in "${index}${name}";
|
|
|
|
window_status = let
|
|
accent = color "window_color";
|
|
index = "#[reverse,fg=${accent},bg=${fg}] #I ";
|
|
name = "#[fg=${bg2},bg=${fg2}] #W ";
|
|
# flags = "#{?window_flags,#{window_flags}, }";
|
|
in "${index}${name}";
|
|
|
|
battery = let
|
|
percentage = pkgs.writeShellScript "percentage" (
|
|
if pkgs.stdenv.isDarwin
|
|
then ''
|
|
echo $(pmset -g batt | grep -o "[0-9]\+%" | tr '%' ' ')
|
|
''
|
|
else ''
|
|
path="/org/freedesktop/UPower/devices/DisplayDevice"
|
|
echo $(${pkgs.upower}/bin/upower -i $path | grep -o "[0-9]\+%" | tr '%' ' ')
|
|
''
|
|
);
|
|
state = pkgs.writeShellScript "state" (
|
|
if pkgs.stdenv.isDarwin
|
|
then ''
|
|
echo $(pmset -g batt | awk '{print $4}')
|
|
''
|
|
else ''
|
|
path="/org/freedesktop/UPower/devices/DisplayDevice"
|
|
echo $(${pkgs.upower}/bin/upower -i $path | grep state | awk '{print $2}')
|
|
''
|
|
);
|
|
icon = pkgs.writeShellScript "icon" ''
|
|
percentage=$(${percentage})
|
|
state=$(${state})
|
|
if [ "$state" == "charging" ] || [ "$state" == "fully-charged" ]; then echo ""
|
|
elif [ $percentage -ge 75 ]; then echo ""
|
|
elif [ $percentage -ge 50 ]; then echo ""
|
|
elif [ $percentage -ge 25 ]; then echo ""
|
|
elif [ $percentage -ge 0 ]; then echo ""
|
|
fi
|
|
'';
|
|
color = pkgs.writeShellScript "color" ''
|
|
percentage=$(${percentage})
|
|
state=$(${state})
|
|
if [ "$state" == "charging" ] || [ "$state" == "fully-charged" ]; then echo "green"
|
|
elif [ $percentage -ge 75 ]; then echo "green"
|
|
elif [ $percentage -ge 50 ]; then echo "${fg2}"
|
|
elif [ $percentage -ge 30 ]; then echo "yellow"
|
|
elif [ $percentage -ge 0 ]; then echo "red"
|
|
fi
|
|
'';
|
|
in "#[fg=#(${color})]#(${icon}) #[fg=${fg}]#(${percentage})%";
|
|
|
|
pwd = let
|
|
accent = color "main_accent";
|
|
icon = "#[fg=${accent}] ";
|
|
format = "#[fg=${fg}]#{b:pane_current_path}";
|
|
in "${icon}${format}";
|
|
|
|
git = let
|
|
icon = pkgs.writeShellScript "branch" ''
|
|
git -C "$1" branch && echo " "
|
|
'';
|
|
branch = pkgs.writeShellScript "branch" ''
|
|
git -C "$1" rev-parse --abbrev-ref HEAD
|
|
'';
|
|
in "#[fg=magenta]#(${icon} #{pane_current_path})#(${branch} #{pane_current_path})";
|
|
|
|
separator = "#[fg=${fg}]|";
|
|
in {
|
|
programs.tmux = {
|
|
enable = true;
|
|
baseIndex = 1;
|
|
escapeTime = 0;
|
|
mouse = true;
|
|
extraConfig = ''
|
|
set-option -sa terminal-overrides ",xterm*:Tc"
|
|
set-option -g status-position top
|
|
unbind r
|
|
bind r source-file ~/.config/tmux/tmux.conf
|
|
|
|
# remap prefix from C-b to C-Space
|
|
# unbind C-b
|
|
# set -g prefix C-Space
|
|
# bind C-Space send-prefix
|
|
|
|
# split panes using | and -
|
|
unbind '"'
|
|
unbind %
|
|
bind | split-window -h
|
|
bind - split-window -v
|
|
|
|
# Start windows and panes at 1, not 0
|
|
set -g base-index 1
|
|
set -g pane-base-index 1
|
|
set-window-option -g pane-base-index 1
|
|
set-option -g renumber-windows on
|
|
|
|
# switch panes using Alt-arrow without prefix
|
|
bind -n M-Left select-pane -L
|
|
bind -n M-Right select-pane -R
|
|
bind -n M-Up select-pane -U
|
|
bind -n M-Down select-pane -D
|
|
|
|
set-option -g default-terminal "screen-256color"
|
|
set-option -g status-right-length 100
|
|
set-option -g @indicator_color "yellow"
|
|
set-option -g @window_color "magenta"
|
|
set-option -g @main_accent "blue"
|
|
set-option -g pane-active-border fg=black
|
|
set-option -g pane-border-style fg=black
|
|
set-option -g status-style "bg=${bg} fg=${fg}"
|
|
set-option -g status-left "${indicator}"
|
|
set-option -g status-right "${git} ${pwd} ${separator} ${battery}"
|
|
set-option -g window-status-current-format "${current_window}"
|
|
set-option -g window-status-format "${window_status}"
|
|
set-option -g window-status-separator ""
|
|
'';
|
|
};
|
|
}
|