Krysti.Engineer Official Chat
You are viewing an inferior version of the site because your browser does not support WebP. Do upgrade to something like Chrome or Firefox. Loading websites like this causes them to require a fallback set of images and they are almost always lower quality and larger in size.
Krystirssi v0.2

Krystirssi v0.2 - irssi theme

This is my irssi setup with a slight modification to AWL (adv_windowlist) since that script seems from my checking, no way to disable automatic generation of the bar. So first we'll begin with cloning the github repo for our ~/.irssi directory consumption.
2022-07-18T:00:00:00+00:00 July 18 2022 00:00:00

if test -d "$HOME/.irssi/"; then  cd ~/.irssi && cp config config.old; fi
git clone https://github.com/itskrystibitch/krystirssi ~/.irssi

https://github.com/itskrystibitch/krystirssi
After this all you really need to do is edit your ~/.irssi/config and connect to IRC but below there is an outline of what's what so you can read on if you like and check out what's in the repo. If you have an existing irssi installation the first command will make a backup of your config before deploying a full install of this theme.

default_color = "-1";
info_eol = "false";
replaces = { "[]=" = "%c$*%n"; };
abstracts = {
  line_start = "%m.%M-%K─%N%n ";
  timestamp = "[%K$*%n]";
  hilight = "%_$*%_";
  error = "%R$*%n";
  channel = "%_$*%_";
  nick = "%_$*%_";
  nickhost = "[$*]";
  server = "%_$*%_";
  comment = "[$*]";
  reason = "{comment $*}";
  mode = "{comment $*}";
  channick_hilight = "%C$*%n";
  chanhost_hilight = "{nickhost %c$*%n}";
  channick = "%c$*%n";
  chanhost = "{nickhost $*}";
  channelhilight = "%c$*%n";
  ban = "%c$*%n";
  msgnick = "%c<%n$0$1-%c>%n %|";
  ownmsgnick = "{msgnick $0 $1-}";
  ownnick = "$*%n";
  pubmsgnick = "{msgnick $0 $1-}";
  pubnick = "%N$*%n";
  pubmsgmenick = "{msgnick $0 $1-}";
  menick = "%Y$*%n";
  pubmsghinick = "{msgnick $1 $0$2-%n}";
  msgchannel = "%K:%c$*%n";
  privmsg = "[%R$0%K(%r$1-%K)%n] ";
  ownprivmsg = "[%r$0%K(%R$1-%K)%n] ";
  ownprivmsgnick = "{msgnick  $*}";
  ownprivnick = "%_$*%n";
  privmsgnick = "{msgnick  %R$*%n}";
  action_core = "%_ %P* $*%P";
  action = "{action_core $*} ";
  ownaction = "{action $*}";
  ownaction_target = "{action_core $0}%K:%c$1%n ";
  pvtaction = "%_ %P(*) $*%n ";
  pvtaction_query = "{action $*}";
  pubaction = "{action $*}";
  ownnotice = "%K»%n[%c$0%K(%C$1-%N%K)]%n ";
  notice = "%K-%n%c$*%K-%n ";
  pubnotice_channel = "%K:%c$*";
  pvtnotice_host = "%K(%N$*%K)";
  servernotice = "%g!$*%n ";
  ownctcp = "%K»(%c$0%K(%C$1-%K))%N ";
  ctcp = "%9%c$0%n %C$1%n $3 %9%c$4%n $5-%n";
  wallop = "%_$*%n: ";
  wallop_nick = "%n$*";
  wallop_action = "%_ * $*%n ";
  netsplit = "%R$*%n";
  netjoin = "%C$*%n";
  names_prefix = "%K│%N";
  names_nick = "(%c$0%n$1-) ";
  names_nick_op = "{names_nick $*}";
  names_nick_halfop = "{names_nick $*}";
  names_nick_voice = "{names_nick $*}";
  names_users = "[%g$*%n]\012%c┌%K──%C──────%K────-─%c--%K─-──%c───%K──%c-──%K──--%C─%K-──────";
  names_channel = "%G$*%n";
  dcc = "%g$*%n";
  dccfile = "%_$*%_";
  dccownmsg = "[%r$0%K($1-%K)%n] ";
  dccownnick = "%R$*%n";
  dccownquerynick = "%_$*%n";
  dccownaction = "{action $*}";
  dccownaction_target = "{action_core $0}%K:%c$1%n ";
  dccmsg = "[%G$1-%K(%g$0%K)%n] ";
  dccquerynick = "%G$*%n";
  dccaction = "%_ (*dcc*) $*%n %|";
  sb_background = "%N";
  sb_default_bg = "%N";
  sb_prompt_bg = "%N";
  sb_info_bg = "%N";
  sbstart = "";
  sbend = " ";
  topicsbstart = "{sbstart $*}";
  topicsbend = "{sbend $*}";
  prompt = "%c(%N$*%c)%N ";
  sb = " %c[%n$*%c]%n";
  sbmode = "(%c+%n$*)";
  sbaway = " %c[%naway%c]%n";
  sbservertag = ":$0 (change with ^X)";
  sbnickmode = "$0";
  sb_act_sep = "%c$*";
  sb_act_text = "%c$*";
  sb_act_msg = "%W$*";
  sb_act_hilight = "%y$*";
  sb_act_hilight_color = "$0$1-%n";
  sb_usercount = "{sb $1-%N}";
  sb_uc_ircops = "%_%NO%c/%N%_$*";
  sb_uc_ops = "%_o%c/%N%_$*";
  sb_uc_halfops = "%_h%c/%N%_$*";
  sb_uc_voices = "%_v%c/%N%_$*";
  sb_uc_normal = "%Nn%c/%N%n%_$*";
  sb_uc_space = " ";
};
formats = {
  "Irssi::Script::adv_windowlist" = {
    awl_display_key = "%n$H$C$S";
    awl_display_header = "";
  };
};


This is basically how the client will print our setup, you can check out the formats.txt if you want to change anything. A key change will be the 'replaces' object. Change the examples %c variable with something you'd like from the mentioned formats.txt for a quick look then save and /reload to put the script change into effect.

servers = (
  {
    address = "irc.yourserver.com";
    chatnet = "YourNet";
    port = "6697";
    autoconnect = "yes";
    use_tls = "yes";
    tls_verify = "no";
  }
);

chatnets = {
  YourNet = {
    type = "IRC";
    nick = "YourNick";
    username = "youruser";
    autosendcmd = "/msg nickserv identify YourNSPassword";
  };
};

channels = (
  { name = "#channel1"; chatnet = "YourNet"; autojoin = "Yes"; },
  { name = "#channel2"; chatnet = "YourNet"; autojoin = "Yes"; }
);

aliases = {
  ATAG = "WINDOW SERVER";
  ADDALLCHANS = "SCRIPT EXEC foreach my \\$channel (Irssi::channels()) { Irssi::command(\"CHANNEL ADD -auto \\$channel->{visible_name} \\$channel->{server}->{tag} \\$channel->{key}\")\\;}";
  B = "BAN";
  BACK = "AWAY";
  BANS = "BAN";
  BYE = "QUIT";
  C = "CLEAR";
  CALC = "EXEC - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi";
  CHAT = "DCC CHAT";
  CS = "QUOTE CS";
  DATE = "TIME";
  DEHIGHLIGHT = "DEHILIGHT";
  DESCRIBE = "ACTION";
  DHL = "DEHILIGHT";
  EXEMPTLIST = "MODE $C +e";
  EXIT = "QUIT";
  GOTO = "SCROLLBACK GOTO";
  HIGHLIGHT = "HILIGHT";
  HL = "HILIGHT";
  HOST = "USERHOST";
  INVITELIST = "MODE $C +I";
  J = "JOIN";
  K = "KICK";
  KB = "KICKBAN";
  KN = "KNOCKOUT";
  LAST = "LASTLOG";
  LEAVE = "PART";
  M = "MSG";
  MS = "QUOTE MS";
  MUB = "UNBAN *";
  N = "NAMES";
  NMSG = "^MSG";
  NS = "QUOTE NS";
  OS = "QUOTE OS";
  P = "PART";
  Q = "QUERY";
  RESET = "SET -default";
  RUN = "SCRIPT LOAD";
  SAY = "MSG *";
  SB = "SCROLLBACK";
  SBAR = "STATUSBAR";
  SHELP = "QUOTE HELP";
  SIGNOFF = "QUIT";
  SV = "MSG * Irssi $J ($V)/Krystirssi - https://irssi.org";
  T = "TOPIC";
  UB = "UNBAN";
  UMODE = "MODE $N";
  UNSET = "SET -clear";
  W = "WHO";
  WC = "WINDOW CLOSE";
  WG = "WINDOW GOTO";
  WJOIN = "JOIN -window";
  WI = "WHOIS";
  WII = "WHOIS $0 $0";
  WL = "WINDOW LIST";
  WN = "WINDOW NEW HIDDEN";
  WQUERY = "QUERY -window";
  WW = "WHOWAS";
};

statusbar = {
  items = {
    barstart = "{sbstart}";
    barend = "{sbend}";
    topicbarstart = "{topicsbstart}";
    topicbarend = "{topicsbend}";
    stat_start_top = "%C┌%c─%K-%N";
    stat_start_middle = "%C│  ";
    stat_start_bottom = "%C└%c─%K-%N%c";
    time = "time %9$Z";
    user = "%c$[1]cumode%N$N %c[%N+$usermode%n%c] ";
    window = "%c(%n{sbmode $itemname: (%W$M%n)}%c)%n ";
    away = "{sbaway $A}";
    channel = "%c%n$itemname %c[%N+$M%n%c]%n";
    winref = "%c[%Nwin%c/%N%9$winref%N%c]";
    window_empty = "{sb %wWindow%K:%W $winref {sbservertag %w$tag}}";
    prompt = "%C└%c─%K-%N%c[%NKrystirssi%c]%n ";
    prompt_empty = "%K<%W$winname%n%K>%n ";
    topic = "%K[%Ct:%Ki%N$C%K]%N $topic";
    topic_empty = " %W%n irssi v$J - K-irrsi v0.02a";
    server_host = "%C└%c─%K-%N%c[%N$tag%c]%N ";
    stat_pre_end_top = " %K-%N%c─%C┐%M";
    stat_pre_end_bottom = " %K-%N%c─%C┘%N";
    stat_pre_end_middle = "%C│%N";
    stat_end_top = "%C┌%K---%C┐";
    stat_end_bottom = "%C└%K---%C┘";
    stat_end_middle = "%C│%n %M♥%N %C│%n";
    lag = "%Nlag%c/%N%9$0-%N ";
    act = "%c(%Nact%n%9$0-%N%c)%N";
    more = "-- MOAR! :D -- ";
  };

  default = {

    window = { disabled = "yes"; };
    window_inact = {

      type = "window";
      placement = "bottom";
      position = "1";
      visible = "inactive";

      items = {
        barstart = { priority = "100"; };
        window = { };
        window_empty = { };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };

    prompt = {

      type = "root";
      placement = "bottom";
      position = "100";
      visible = "always";

      items = {
        server_host = { priority = "100"; };
        input = { priority = "10"; };
        stat_pre_end_bottom = { alignment = "right"; };
        stat_end_bottom = { alignment = "right"; };
      };
    };

    topic = {

      type = "root";
      placement = "top";
      position = "1";
      visible = "always";

      items = {
        topicbarstart = { priority = "100"; };
        topic = { };
        topic_empty = { };
        topicbarend = { priority = "100"; alignment = "right"; };

      };
    };
    #bottom bar
    info1 = {
      items = {
        stat_start_middle = { };
        time = { };
        barstart = { };
        awl_0 = { };
        barend = { };
        lag = { priority = "100"; alignment = "right"; };
        more = { priority = "100"; alignment = "right"; };
        stat_pre_end_middle = { priority = "100"; alignment = "right"; };
        stat_end_middle = { priority = "100"; alignment = "right"; };
      };
      position = "1";
      placement = "bottom";
    };
    #top bar
    window2 = {
      items = {
        stat_start_top = { };
        user = { };
        channel = { };
        usercount = { };
        winref = { };
        typing_notice = { };
        awaylcnt = { };
        away = { };
        #act = { };
        stat_pre_end_top = { priority = "100"; alignment = "right"; };
        stat_end_top = { priority = "100"; alignment = "right"; };
      };
      position = "0";
    };
  };
};
settings = {
  "irc/core" = {
    lag_check_time = "10s";
    ctcp_version_reply = "irssi v$J - Krystirrsi v0.02a - (FreeBSD/$sysarch)";
    usermode = "+iwx";
    cmds_max_at_once = "0";
    cmd_queue_speed = "0ms";
    ban_type = "host";
  };
  "perl/core/scripts" = {
    usercount_show_halfops = "yes";
    ho_lusercount_format = "%c$c%K/%c$D %K(%c$i%K:%c$d%K)";
    usercount_show_ircops = "yes";
    awl_hide_data = "2";
    awl_shared_sbar = "OFF";
    awl_viewer = "no";
    awl_placement = "top"; # in case you don't modify adv_windowlist
    awl_viewer_launch = "no";
  };
  "fe-text" = {
    actlist_sort = "refnum";
    lag_min_show = "1";
    scrollback_lines = "5000";
  };
  "fe-common/core" = {
    theme = "krysti";
    use_status_window = "no";
    use_msgs_window = "no";
    autocreate_query_level = "DCCMSGS MSGS";
    completion_char = ",";
    term_charset = "utf-8";
    autolog = "no";
    autolog_path = "~/irclogs/%Y/$tag/$0.%m-%d.log";
  };
};


Modify this to fit your needs for connecting to a network and save it to ~/.irssi/config in addition to this you should download the usercount script from the official irssi script git repo and adv_windowlist and place them in ~/.irssi/scripts with symlinks in ~/.irssi/scripts/autorun

sub add_statusbar {
    for (@_) {
        # add subs
        my $l = set $_;
        {
            my $close = $_;
            no strict 'refs';
            *{$l} = sub { awl($close, @_) };
        }
        Irssi::command("^statusbar $l reset");
        Irssi::command("statusbar $l enable");
        if (lc $S{placement} eq 'top') {
            Irssi::command("statusbar $l placement top");
        }
        if (my $x = $S{position}) {
            Irssi::command("statusbar $l position $x");
        }
        Irssi::command("statusbar $l add -priority 100 -alignment left barstart");
        Irssi::command("statusbar $l add $l");
        Irssi::command("statusbar $l add -priority 100 -alignment right barend");
        Irssi::command("statusbar $l disable");
        Irssi::statusbar_item_register($l, '$0', $l);
        $statusbars{$_} = 1;
        Irssi::command("statusbar $l enable");
        # The modified line you will want to add to disable the initial status bar that this script generates.
        Irssi::command("statusbar awl_0 disable");
		# End mod
    }
}

Because of the nature of adv_windowlist it will generate statusbars for you, which is fine, well and dandy until you do it like this script is doing it. If you implement awl = { } into a statusbar block and disable the auto-generated block it will override that and create two statusbars. I don't see a way to disable this factor in any settings. You don't want to get rid of the statusbar's creation procedure because we will be referencing it inside of our statusbar we're building. After this is disabled the awl object is referenced inside the info1 statusbar object.
Krystirssi v0.2

Contact Krysti

@itskrystibitch Twitter Photo
GitHub:
@itskrystibitch
IRC:
Official Chat
Direct.Me:
@Krysti
Ko-fi:
@Krysti
Photos:
Virtual Krysti
E-Mail / Notify of errors:
coder [@] krysti.engineer
Please be patient contacting me, I don't really check much of social media or anything. If you use the IRC be sure to stick around because that's how IRC works, silly. :P