Set terminal title to active buffer name and hotlist items.
Author: xt
— Version: 0.9
— License: GPL-3.0-or-later
For WeeChat ≥ 0.3.0.
Tags: terminal, py2, py3
Added: 2009-05-10
— Updated: 2017-07-14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | ''' Title-setter ''' # -*- coding: utf-8 -*- # # Copyright (c) 2009 by xt <xt@bash.no> # # 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/>. # # # Set screen title # (this script requires WeeChat 0.3.0 or newer) # # History: # 2016-03-31, devkev # version 0.9, Make hotlist optional # 2016-05-01, Ferus # version 0.8, Add ability to prefix and suffix the title, current # buffer, and hotlist buffers. As well as specify hotlist separator # 2016-02-05, ixti # version 0.7, Add Python3 support # 2015-06-07, t3chguy # version 0.6, Strip Colour Codes from Title # 2012-12-09, WakiMiko # version 0.5, update title when switching window (for WeeChat >= 0.3.7) # 2009-06-18, xt # version 0.4, option to use short_name # 2009-06-15, xt # version 0.3, free infolist # 2009-05-15, xt # version 0.2: add names from hotlist to title # 2009-05-10, xt <xt@bash.no> # version 0.1: initial release import weechat as w SCRIPT_NAME = "title" SCRIPT_AUTHOR = "xt <xt@bash.no>" SCRIPT_VERSION = "0.9" SCRIPT_LICENSE = "GPL3" SCRIPT_DESC = "Set screen title to current buffer name + hotlist items with configurable priority level" # script options settings = { "title_priority" : '2', "short_name" : 'on', "hotlist_separator" : ':', "title_prefix" : '[WeeChat ${info:version}] ', "title_suffix" : '', "hotlist_number_prefix": '', "hotlist_number_suffix": '', "hotlist_buffer_prefix": '', "hotlist_buffer_suffix": '', "current_buffer_prefix": '', "current_buffer_suffix": '', "show_hotlist" : 'on', } hooks = ( 'buffer_switch', 'window_switch', 'hotlist_*', ) def update_title(data, signal, signal_data): ''' The callback that adds title. ''' # prefix title = w.config_get_plugin('title_prefix') # current buffer title += w.config_get_plugin('current_buffer_prefix') if w.config_get_plugin('short_name') == 'on': title += w.buffer_get_string(w.current_buffer(), 'short_name') else: title += w.buffer_get_string(w.current_buffer(), 'name') title += w.config_get_plugin('current_buffer_suffix') if w.config_get_plugin('show_hotlist') == 'on': # hotlist buffers hotlist = w.infolist_get('hotlist', '', '') pnumber = w.config_get_plugin('hotlist_number_prefix') snumber = w.config_get_plugin('hotlist_number_suffix') pname = w.config_get_plugin('hotlist_buffer_prefix') sname = w.config_get_plugin('hotlist_buffer_suffix') separator = w.config_get_plugin('hotlist_separator') while w.infolist_next(hotlist): priority = w.infolist_integer(hotlist, 'priority') if priority >= int(w.config_get_plugin('title_priority')): number = w.infolist_integer(hotlist, 'buffer_number') thebuffer = w.infolist_pointer(hotlist, 'buffer_pointer') name = w.buffer_get_string(thebuffer, 'short_name') title += ' {0}{1}{2}{3}{4}{5}{6}'.format(pnumber, \ number, snumber, separator, pname, name, sname) w.infolist_free(hotlist) # suffix title += w.config_get_plugin('title_suffix') title = w.string_remove_color(title, '') w.window_set_title(title) return w.WEECHAT_RC_OK if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, "", ""): for option, default_value in settings.items(): if not w.config_is_set_plugin(option): w.config_set_plugin(option, default_value) for hook in hooks: w.hook_signal(hook, 'update_title', '') update_title('', '', '') |