Skip to content

Instantly share code, notes, and snippets.

@Underdoge
Last active December 3, 2022 22:51
Show Gist options
  • Save Underdoge/e5e0b7d3cf4361729a80afebfecd825f to your computer and use it in GitHub Desktop.
Save Underdoge/e5e0b7d3cf4361729a80afebfecd825f to your computer and use it in GitHub Desktop.
Weechat hlpvitem.py script fixed for python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2009-2014 Sébastien Helleu <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
# Item with highlight/private messages.
#
# After loading this script, you can add item "hlpv" to your status
# bar with command:
# /set weechat.bar.status.items [+tab]
# then complete string by adding for example (without quotes): ",[hlpv]"
#
# History:
#
# 2014-05-10, Sébastien Helleu <[email protected]>
# version 0.3: change hook_print callback argument type of
# displayed/highlight (WeeChat >= 1.0)
# 2012-01-03, Sébastien Helleu <[email protected]>:
# version 0.2: make script compatible with Python 3.x
# 2009-10-02, Sebastien Helleu <[email protected]>:
# version 0.1: initial release
#
SCRIPT_NAME = "hlpvitem"
SCRIPT_AUTHOR = "Sebastien Helleu <[email protected]>"
SCRIPT_VERSION = "0.3"
SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Item with highlight/private messages"
import_ok = True
try:
import weechat
except:
print("This script must be run under WeeChat.")
print("Get WeeChat now at: http://www.weechat.org/")
import_ok = False
# script options
hlpv_settings = {
"show_all_buffers" : "off", # off = hidden buffers only
"buffer_number" : "on", # display buffer number before name
"buffer_short_name" : "on", # use buffer short name (if off, use full name)
"highlight" : "on", # display highlights in item
"private" : "on", # display privates in item
"string_highlight" : "", # string displayed for highlight message (before buffer)
"string_private" : "", # string displayed for private message (before buffer)
"string_delimiter" : " > ", # delimiter between prefix and message
"color_string_highlight": "", # color for string_highlight (by default == weechat.color.status_data_highlight)
"color_string_private" : "", # color for string_private (by default == weechat.color.status_data_private)
"color_buffer_number" : "", # color for buffer number (by default == weechat.color.status_highlight/private)
"color_buffer_name" : "default", # color for buffer name
"color_prefix" : "white", # color for prefix
"color_delimiter" : "cyan", # color for delimiter
"color_message" : "default", # color for message
"visible_seconds" : "7", # amount of seconds each message is visible
}
hlpv_messages = []
def say(s, buffer=""):
"""Display message."""
weechat.prnt(buffer, "%s" % (s))
def hlpv_timer():
weechat.hook_timer(int(weechat.config_get_plugin("visible_seconds")) * 1000, 0, 1, "hlpv_timer_cb", "")
def hlpv_timer_cb(data, remaining_calls):
""" Called when a message must be removed from list. """
global hlpv_messages
if len(hlpv_messages):
hlpv_messages.pop(0)
weechat.bar_item_update("hlpv")
if len(hlpv_messages) > 0:
hlpv_timer()
return weechat.WEECHAT_RC_OK
def hlpv_item_add(buffer, highlight, prefix, message):
""" Add message to list of messages (will be displayed by item). """
global hlpv_messages
if highlight:
color_type = weechat.config_string(weechat.config_get("weechat.color.status_data_highlight"))
color_string_highlight = weechat.config_get_plugin("color_string_highlight")
if color_string_highlight == "":
color_string_highlight = color_type
string_prefix = "%s%s" % (weechat.color(color_string_highlight),
weechat.config_get_plugin("string_highlight"))
else:
color_type = weechat.config_string(weechat.config_get("weechat.color.status_data_private"))
color_string_private = weechat.config_get_plugin("color_string_private")
if color_string_private == "":
color_string_private = color_type
string_prefix = "%s%s" % (weechat.color(color_string_private),
weechat.config_get_plugin("string_private"))
color_delimiter = weechat.color(weechat.config_get_plugin("color_delimiter"))
if weechat.config_get_plugin("buffer_number") == "on":
color_buffer_number = weechat.config_get_plugin("color_buffer_number")
if color_buffer_number == "":
color_buffer_number = color_type
buffer_number = "%s%s%s:" % (weechat.color(color_buffer_number),
weechat.buffer_get_integer(buffer, "number"),
color_delimiter)
else:
buffer_number = ""
color_buffer_name = weechat.color(weechat.config_get_plugin("color_buffer_name"))
if weechat.config_get_plugin("buffer_short_name") == "on":
buffer_name = weechat.buffer_get_string(buffer, "short_name")
else:
buffer_name = weechat.buffer_get_string(buffer, "name")
color_prefix = weechat.color(weechat.config_get_plugin("color_prefix"))
string_delimiter = weechat.config_get_plugin("string_delimiter")
color_message = weechat.color(weechat.config_get_plugin("color_message"))
string = "%s%s%s%s%s%s" % (color_prefix, "",color_delimiter,"",color_message, message)
if len(hlpv_messages) == 0:
hlpv_timer()
hlpv_messages.append(string)
weechat.bar_item_update("hlpv")
def hlpv_print_cb(data, buffer, date, tags, displayed, highlight, prefix, message):
""" Called when a message is printed. """
tagslist = tags.split(",")
show_all_buffers = weechat.config_get_plugin("show_all_buffers")
num_displayed = weechat.buffer_get_integer(buffer, "num_displayed")
if num_displayed == 0 or show_all_buffers == "on":
highlight_enabled = weechat.config_get_plugin("highlight")
private_enabled = weechat.config_get_plugin("private")
if (int(highlight) and (highlight_enabled == "on")):
say(prefix+" "+message,weechat.current_buffer())
if (("notify_private" in tagslist) and (private_enabled == "on")):
message = str(message)[0:message.find("(")-1:] + ":" + str(message)[message.find(")")+3::]
say(prefix+" "+message,weechat.current_buffer())
return weechat.WEECHAT_RC_OK
def hlpv_item_cb(data, buffer, args):
""" Callback for building hlpv item. """
global hlpv_messages
if len(hlpv_messages) > 0:
return hlpv_messages[0]
return ""
if __name__ == "__main__" and import_ok:
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC,
"", ""):
# set default settings
for option, default_value in hlpv_settings.items():
if not weechat.config_is_set_plugin(option):
weechat.config_set_plugin(option, default_value)
# new item
weechat.bar_item_new('hlpv', 'hlpv_item_cb', '')
# hook all printed messages
weechat.hook_print("", "", "", 1, "hlpv_print_cb", "")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment