diff --git a/.gitignore b/.gitignore index 1b254025..cf19e71c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ !/.config/ !/.gnupg/ +!/.weechat/ !/.ssh/ !/.zsh/ !/AUR/ diff --git a/.weechat/.gitignore b/.weechat/.gitignore new file mode 100644 index 00000000..ffd2223e --- /dev/null +++ b/.weechat/.gitignore @@ -0,0 +1,36 @@ +/* +/*/ +!/.gitignore + +!/alias.conf +!/buflist.conf +!/charset.conf +!/exec.conf +!/fifo.conf +!/fset.conf +!/guile.conf +!/irc.conf +!/logger.conf +!/lua.conf +!/perl.conf +!/plugins.conf +!/python.conf +!/relay.conf +!/ruby.conf +!/script.conf +!/sec.conf +!/spell.conf +!/tcl.conf +!/trigger.conf +!/weechat.conf +!/xfer.conf + +!/guile/ +!/logs/ +!/lua/ +!/perl/ +!/python/ +!/ruby/ +!/script/ +!/tcl/ +!/xfer/ diff --git a/.weechat/alias.conf b/.weechat/alias.conf new file mode 100644 index 00000000..0a02da3b --- /dev/null +++ b/.weechat/alias.conf @@ -0,0 +1,47 @@ +# +# weechat -- alias.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[cmd] +AAWAY = "allserv /away" +ANICK = "allserv /nick" +BEEP = "print -beep" +BYE = "quit" +C = "buffer clear" +CHAT = "dcc chat" +CL = "buffer clear" +CLOSE = "buffer close" +EXIT = "quit" +IG = "ignore" +J = "join" +K = "kick" +KB = "kickban" +LEAVE = "part" +M = "msg" +MSGBUF = "command -buffer $1 * /input send $2-" +MUB = "unban *" +N = "names" +Q = "query" +REDRAW = "window refresh" +SAY = "msg *" +SIGNOFF = "quit" +T = "topic" +UB = "unban" +UMODE = "mode $nick" +V = "command core version" +W = "who" +WC = "window close" +WI = "whois" +WII = "whois $1 $1" +WM = "window merge" +WW = "whowas" + +[completion] +MSGBUF = "%(buffers_plugins_names)" diff --git a/.weechat/buflist.conf b/.weechat/buflist.conf new file mode 100644 index 00000000..d285f892 --- /dev/null +++ b/.weechat/buflist.conf @@ -0,0 +1,39 @@ +# +# weechat -- buflist.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +add_newline = on +auto_scroll = 50 +display_conditions = "${buffer.hidden}==0" +enabled = on +mouse_jump_visited_buffer = off +mouse_move_buffer = on +mouse_wheel = on +nick_prefix = off +nick_prefix_empty = on +signals_refresh = "" +sort = "number,-active" + +[format] +buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}" +buffer_current = "${color:,blue}${format_buffer}" +hotlist = " ${color:green}(${hotlist}${color:green})" +hotlist_highlight = "${color:magenta}" +hotlist_low = "${color:white}" +hotlist_message = "${color:brown}" +hotlist_none = "${color:default}" +hotlist_private = "${color:green}" +hotlist_separator = "${color:default}," +indent = " " +lag = " ${color:green}[${color:brown}${lag}${color:green}]" +name = "${name}" +nick_prefix = "${color_nick_prefix}${nick_prefix}" +number = "${color:green}${number}${if:${number_displayed}?.: }" diff --git a/.weechat/charset.conf b/.weechat/charset.conf new file mode 100644 index 00000000..00d304cd --- /dev/null +++ b/.weechat/charset.conf @@ -0,0 +1,18 @@ +# +# weechat -- charset.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[default] +decode = "iso-8859-1" +encode = "" + +[decode] + +[encode] diff --git a/.weechat/exec.conf b/.weechat/exec.conf new file mode 100644 index 00000000..9e1b4f1e --- /dev/null +++ b/.weechat/exec.conf @@ -0,0 +1,19 @@ +# +# weechat -- exec.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[command] +default_options = "" +purge_delay = 0 +shell = "${env:SHELL}" + +[color] +flag_finished = lightred +flag_running = lightgreen diff --git a/.weechat/fifo.conf b/.weechat/fifo.conf new file mode 100644 index 00000000..904985df --- /dev/null +++ b/.weechat/fifo.conf @@ -0,0 +1,14 @@ +# +# weechat -- fifo.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[file] +enabled = on +path = "%h/weechat_fifo" diff --git a/.weechat/fset.conf b/.weechat/fset.conf new file mode 100644 index 00000000..668266c9 --- /dev/null +++ b/.weechat/fset.conf @@ -0,0 +1,95 @@ +# +# weechat -- fset.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +auto_unmark = off +condition_catch_set = "${count} >= 1" +export_help_default = on +format_number = 1 +marked_string = "*" +scroll_horizontal = 10 +show_plugins_desc = off +sort = "~name" +unmarked_string = " " +use_color_value = off +use_keys = on +use_mute = off + +[format] +export_help = "# ${description2}" +export_option = "/set ${name} ${quoted_value}" +export_option_null = "/unset ${name}" +option1 = "" +option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}" + +[color] +default_value = default +default_value_selected = white +description = default +description_selected = white +file = default +file_changed = brown +file_changed_selected = yellow +file_selected = white +help_default_value = white +help_description = default +help_name = white +help_quotes = darkgray +help_values = default +index = cyan +index_selected = lightcyan +line_marked_bg1 = default +line_marked_bg2 = default +line_selected_bg1 = blue +line_selected_bg2 = red +marked = brown +marked_selected = yellow +max = default +max_selected = white +min = default +min_selected = white +name = default +name_changed = brown +name_changed_selected = yellow +name_selected = white +option = default +option_changed = brown +option_changed_selected = yellow +option_selected = white +parent_name = default +parent_name_selected = white +parent_value = cyan +parent_value_selected = lightcyan +quotes = darkgray +quotes_changed = default +quotes_changed_selected = white +quotes_selected = default +section = default +section_changed = brown +section_changed_selected = yellow +section_selected = white +string_values = default +string_values_selected = white +title_count_options = cyan +title_current_option = lightcyan +title_filter = yellow +title_marked_options = lightgreen +title_sort = white +type = green +type_selected = lightgreen +unmarked = default +unmarked_selected = white +value = cyan +value_changed = brown +value_changed_selected = yellow +value_selected = lightcyan +value_undef = magenta +value_undef_selected = lightmagenta diff --git a/.weechat/guile.conf b/.weechat/guile.conf new file mode 100644 index 00000000..07a4910e --- /dev/null +++ b/.weechat/guile.conf @@ -0,0 +1,14 @@ +# +# weechat -- guile.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/irc.conf b/.weechat/irc.conf new file mode 100644 index 00000000..dce0eefc --- /dev/null +++ b/.weechat/irc.conf @@ -0,0 +1,203 @@ +# +# weechat -- irc.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +buffer_open_before_autojoin = on +buffer_open_before_join = off +buffer_switch_autojoin = on +buffer_switch_join = on +color_nicks_in_names = off +color_nicks_in_nicklist = off +color_nicks_in_server_messages = on +color_pv_nick_like_channel = on +ctcp_time_format = "%a, %d %b %Y %T %z" +display_away = local +display_ctcp_blocked = on +display_ctcp_reply = on +display_ctcp_unknown = on +display_host_join = on +display_host_join_local = on +display_host_quit = on +display_join_message = "329,332,333,366" +display_old_topic = on +display_pv_away_once = on +display_pv_back = on +display_pv_warning_address = off +highlight_channel = "$nick" +highlight_pv = "$nick" +highlight_server = "$nick" +highlight_tags_restrict = "irc_privmsg,irc_notice" +item_channel_modes_hide_args = "k" +item_display_server = buffer_plugin +item_nick_modes = on +item_nick_prefix = on +join_auto_add_chantype = off +msgbuffer_fallback = current +new_channel_position = none +new_pv_position = none +nick_completion_smart = speakers +nick_mode = prefix +nick_mode_empty = off +nicks_hide_password = "nickserv" +notice_as_pv = auto +notice_welcome_redirect = on +notice_welcome_tags = "" +notify_tags_ison = "notify_message" +notify_tags_whois = "notify_message" +part_closes_buffer = off +pv_buffer = independent +pv_tags = "notify_private" +raw_messages = 256 +server_buffer = merge_with_core +smart_filter = on +smart_filter_account = on +smart_filter_chghost = on +smart_filter_delay = 5 +smart_filter_join = on +smart_filter_join_unmask = 30 +smart_filter_mode = "+" +smart_filter_nick = on +smart_filter_quit = on +temporary_servers = off +topic_strip_colors = off + +[color] +input_nick = lightcyan +item_channel_modes = default +item_lag_counting = default +item_lag_finished = yellow +item_nick_modes = default +message_account = cyan +message_chghost = brown +message_join = green +message_kick = red +message_quit = red +mirc_remap = "1,-1:darkgray" +nick_prefixes = "y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue" +notice = green +reason_kick = default +reason_quit = default +topic_current = default +topic_new = white +topic_old = default + +[network] +autoreconnect_delay_growing = 2 +autoreconnect_delay_max = 600 +ban_mask_default = "*!$ident@$host" +colors_receive = on +colors_send = on +lag_check = 60 +lag_max = 1800 +lag_min_show = 500 +lag_reconnect = 300 +lag_refresh_interval = 1 +notify_check_ison = 1 +notify_check_whois = 5 +sasl_fail_unavailable = on +send_unknown_commands = off +whois_double_nick = off + +[msgbuffer] + +[ctcp] + +[ignore] + +[server_default] +addresses = "" +anti_flood_prio_high = 2 +anti_flood_prio_low = 2 +autoconnect = off +autojoin = "" +autoreconnect = on +autoreconnect_delay = 10 +autorejoin = off +autorejoin_delay = 30 +away_check = 0 +away_check_max_nicks = 25 +capabilities = "" +charset_message = message +command = "" +command_delay = 0 +connection_timeout = 60 +ipv6 = on +local_hostname = "" +msg_kick = "" +msg_part = "WeeChat ${info:version}" +msg_quit = "WeeChat ${info:version}" +nicks = "dustvoice,dustvoice1,dustvoice2,dustvoice3,dustvoice4" +nicks_alternate = on +notify = "" +password = "" +proxy = "" +realname = "" +sasl_fail = continue +sasl_key = "" +sasl_mechanism = plain +sasl_password = "" +sasl_timeout = 15 +sasl_username = "" +split_msg_max_length = 512 +ssl = off +ssl_cert = "" +ssl_dhkey_size = 2048 +ssl_fingerprint = "" +ssl_password = "" +ssl_priorities = "NORMAL:-VERS-SSL3.0" +ssl_verify = on +usermode = "" +username = "dustvoice" + +[server] +freenode.addresses = "irc.freenode.net" +freenode.proxy +freenode.ipv6 +freenode.ssl +freenode.ssl_cert +freenode.ssl_password +freenode.ssl_priorities +freenode.ssl_dhkey_size +freenode.ssl_fingerprint +freenode.ssl_verify +freenode.password +freenode.capabilities +freenode.sasl_mechanism +freenode.sasl_username +freenode.sasl_password +freenode.sasl_key +freenode.sasl_timeout +freenode.sasl_fail +freenode.autoconnect +freenode.autoreconnect +freenode.autoreconnect_delay +freenode.nicks +freenode.nicks_alternate +freenode.username +freenode.realname +freenode.local_hostname +freenode.usermode +freenode.command +freenode.command_delay +freenode.autojoin +freenode.autorejoin +freenode.autorejoin_delay +freenode.connection_timeout +freenode.anti_flood_prio_high +freenode.anti_flood_prio_low +freenode.away_check +freenode.away_check_max_nicks +freenode.msg_kick +freenode.msg_part +freenode.msg_quit +freenode.notify +freenode.split_msg_max_length +freenode.charset_message diff --git a/.weechat/logger.conf b/.weechat/logger.conf new file mode 100644 index 00000000..d0d3218d --- /dev/null +++ b/.weechat/logger.conf @@ -0,0 +1,36 @@ +# +# weechat -- logger.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +backlog = 20 +backlog_conditions = "" + +[color] +backlog_end = default +backlog_line = default + +[file] +auto_log = on +color_lines = off +flush_delay = 120 +fsync = off +info_lines = off +mask = "$plugin.$name.weechatlog" +name_lower_case = on +nick_prefix = "" +nick_suffix = "" +path = "%h/logs/" +replacement_char = "_" +time_format = "%Y-%m-%d %H:%M:%S" + +[level] + +[mask] diff --git a/.weechat/logs/core.weechat.weechatlog b/.weechat/logs/core.weechat.weechatlog new file mode 100644 index 00000000..e6185824 --- /dev/null +++ b/.weechat/logs/core.weechat.weechatlog @@ -0,0 +1,435 @@ +2020-01-29 20:15:43 New key binding (context "default"): meta2-1;5P => /bar scroll buflist * -100% +2020-01-29 20:15:43 New key binding (context "default"): meta2-1;5Q => /bar scroll buflist * +100% +2020-01-29 20:15:43 New key binding (context "default"): meta-meta-OQ => /bar scroll buflist * e +2020-01-29 20:15:43 New key binding (context "default"): meta2-1;3Q => /bar scroll buflist * e +2020-01-29 20:15:43 New key binding (context "default"): meta2-1;3P => /bar scroll buflist * b +2020-01-29 20:15:43 New key binding (context "default"): meta-meta-OP => /bar scroll buflist * b +2020-01-29 20:15:43 New key binding (context "default"): meta-OQ => /bar scroll buflist * +100% +2020-01-29 20:15:43 New key binding (context "default"): meta-OP => /bar scroll buflist * -100% +2020-01-29 20:15:43 New key binding (context "default"): meta-meta2-12~ => /bar scroll buflist * e +2020-01-29 20:15:43 New key binding (context "default"): meta-meta2-11~ => /bar scroll buflist * b +2020-01-29 20:15:43 New key binding (context "default"): meta2-12^ => /bar scroll buflist * +100% +2020-01-29 20:15:43 New key binding (context "default"): meta2-12~ => /bar scroll buflist * +100% +2020-01-29 20:15:43 New key binding (context "default"): meta2-11^ => /bar scroll buflist * -100% +2020-01-29 20:15:43 New key binding (context "default"): meta2-11~ => /bar scroll buflist * -100% +2020-01-29 20:15:43 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, perl, python, relay, script, trigger, xfer +2020-01-29 20:15:47 script: downloading list of scripts... +2020-01-29 20:15:48 script: 364 scripts for WeeChat 2.7 +2020-01-29 20:15:48 python: loading script "/home/dustvoice/.weechat/python/vimode.py" +2020-01-29 20:15:48 python: registered script "vimode", version 0.7 (Add vi/vim-like modes and keybindings to WeeChat.) +2020-01-29 20:15:48 [vimode.py] Problematic keybindings detected: +2020-01-29 20:15:48 [vimode.py] meta-jmeta-f -> /buffer - +2020-01-29 20:15:48 [vimode.py] meta-jmeta-l -> /buffer + +2020-01-29 20:15:48 [vimode.py] meta-jmeta-r -> /server raw +2020-01-29 20:15:48 [vimode.py] meta-jmeta-s -> /server jump +2020-01-29 20:15:48 [vimode.py] meta-wmeta-meta2-A -> /window up +2020-01-29 20:15:48 [vimode.py] meta-wmeta-meta2-B -> /window down +2020-01-29 20:15:48 [vimode.py] meta-wmeta-meta2-C -> /window right +2020-01-29 20:15:48 [vimode.py] meta-wmeta-meta2-D -> /window left +2020-01-29 20:15:48 [vimode.py] meta-wmeta2-1;3A -> /window up +2020-01-29 20:15:48 [vimode.py] meta-wmeta2-1;3B -> /window down +2020-01-29 20:15:48 [vimode.py] meta-wmeta2-1;3C -> /window right +2020-01-29 20:15:48 [vimode.py] meta-wmeta2-1;3D -> /window left +2020-01-29 20:15:48 [vimode.py] meta-wmeta-b -> /window balance +2020-01-29 20:15:48 [vimode.py] meta-wmeta-s -> /window swap +2020-01-29 20:15:48 [vimode.py] These keybindings may conflict with vimode. +2020-01-29 20:15:48 [vimode.py] You can remove problematic key bindings and add recommended ones by using /vimode bind_keys, or only list them with /vimode bind_keys --list +2020-01-29 20:15:48 [vimode.py] For help, see: https://github.com/GermainZ/weechat-vimode/blob/master/FAQ.md#problematic-key-bindings +2020-01-29 20:15:48 [vimode.py] To force disable warnings, you can set plugins.var.python.vimode.no_warn to 'on' +2020-01-29 20:15:51 Running commands: +2020-01-29 20:15:51 Key "ctrl-W" unbound (context: "default") +2020-01-29 20:15:51 New key binding (context "default"): ctrl-W => /input delete_previous_word +2020-01-29 20:15:51 New key binding (context "default"): ctrl-^ => /input jump_last_buffer_displayed +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wh => /window left +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wj => /window down +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wk => /window up +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wl => /window right +2020-01-29 20:15:51 New key binding (context "default"): ctrl-W= => /window balance +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wx => /window swap +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Ws => /window splith +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wv => /window splitv +2020-01-29 20:15:51 New key binding (context "default"): ctrl-Wq => /window merge +2020-01-29 20:15:51 Key "meta-jmeta-f" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-jmeta-l" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-jmeta-r" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-jmeta-s" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-meta2-A" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-meta2-B" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-meta2-C" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-meta2-D" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta2-1;3A" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta2-1;3B" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta2-1;3C" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta2-1;3D" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-b" unbound (context: "default") +2020-01-29 20:15:51 Key "meta-wmeta-s" unbound (context: "default") +2020-01-29 20:15:51 Done. +2020-01-29 20:16:09 Option changed: plugins.var.python.vimode.mode_indicator_normal_color_bg = "blue" +2020-01-29 20:16:50 Option changed: weechat.bar.input.items = "mode_indicator+[input_prompt]+(away),[input_search],[input_paste],input_text,[vi_buffer]" (default: "[input_prompt]+(away),[input_search],[input_paste],input_text") +2020-01-29 20:18:21 Option changed: weechat.bar.status.items = "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion,cmd_completion" (default: "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion") +2020-01-29 20:18:31 Option changed: plugins.var.python.vimode.search_vim = "on" +2020-01-29 20:18:41 irc: server freenode added +2020-01-29 20:19:26 =!= Too few arguments for command "/query" (help on command: /help query) +2020-01-29 20:19:28 fifo: pipe closed +2020-01-29 20:19:28 python: scripts unloaded +2020-01-29 20:20:50 python scripts loaded: vimode +2020-01-29 20:20:50 script: 364 scripts for WeeChat 2.7 +2020-01-29 20:20:50 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, perl, python, relay, script, trigger, xfer +2020-01-29 20:21:14 =!= Too few arguments for command "/msg" (help on command: /help msg) +2020-01-29 20:22:13 =!= Too few arguments for command "/query" (help on command: /help query) +2020-01-29 20:22:15 fifo: pipe closed +2020-01-29 20:22:15 python: scripts unloaded +2020-03-03 14:38:34 python scripts loaded: vimode +2020-03-03 14:38:34 script: downloading list of scripts... +2020-03-03 14:38:34 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, tcl, trigger, xfer +2020-03-03 14:38:34 script: 364 scripts for WeeChat 2.7.1 +2020-03-03 14:38:39 =!= You can not write text in this buffer +2020-03-03 14:45:50 fifo: pipe closed +2020-03-03 14:45:50 python: scripts unloaded +2020-05-17 11:59:12 python scripts loaded: vimode +2020-05-17 11:59:12 script: downloading list of scripts... +2020-05-17 11:59:12 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-05-17 11:59:17 script: 364 scripts for WeeChat 2.8 +2020-05-17 14:53:31 python: scripts unloaded +2020-08-08 21:02:26 New key binding (context "default"): meta-B => /buflist toggle +2020-08-08 21:02:26 =!= python: wrong arguments for function "bar_new" (script: vimode) +2020-08-08 21:02:26 python: stdout/stderr (vimode): TypeError: function takes exactly 16 arguments (15 given) +2020-08-08 21:02:26 python: stdout/stderr (vimode): The above exception was the direct cause of the following exception: +2020-08-08 21:02:26 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-08 21:02:26 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1855, in +2020-08-08 21:02:26 python: stdout/stderr (vimode): weechat.bar_new("vi_line_numbers", "on", "0", "window", "", "left", +2020-08-08 21:02:26 python: stdout/stderr (vimode): SystemError: returned a result with an error set +2020-08-08 21:02:26 =!= python: unable to parse file "/home/dustvoice/.weechat/python/autoload/vimode.py" +2020-08-08 21:02:26 script: downloading list of scripts... +2020-08-08 21:02:26 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-08 21:02:27 script: 364 scripts for WeeChat 2.9 +2020-08-08 21:02:34 =!= irc: command "join" must be executed on irc buffer (server, channel or private) +2020-08-09 20:31:28 New key binding (context "default"): meta-B => /buflist toggle +2020-08-09 20:31:28 =!= python: wrong arguments for function "bar_new" (script: vimode) +2020-08-09 20:31:28 python: stdout/stderr (vimode): TypeError: function takes exactly 16 arguments (15 given) +2020-08-09 20:31:28 python: stdout/stderr (vimode): The above exception was the direct cause of the following exception: +2020-08-09 20:31:28 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:31:28 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1855, in +2020-08-09 20:31:28 python: stdout/stderr (vimode): weechat.bar_new("vi_line_numbers", "on", "0", "window", "", "left", +2020-08-09 20:31:28 python: stdout/stderr (vimode): SystemError: returned a result with an error set +2020-08-09 20:31:28 =!= python: unable to parse file "/home/dustvoice/.weechat/python/autoload/vimode.py" +2020-08-09 20:31:28 script: 364 scripts for WeeChat 2.9 +2020-08-09 20:31:28 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 20:31:34 python: script removed: /home/dustvoice/.weechat/python/autoload/vimode.py +2020-08-09 20:31:34 python: script removed: /home/dustvoice/.weechat/python/vimode.py +2020-08-09 20:31:38 script: script "vimode.py" is already installed and up-to-date +2020-08-09 20:31:49 =!= Error: unknown command "/vimode" (type /help for help) +2020-08-09 20:31:58 python scripts loaded: vimode +2020-08-09 20:31:58 script: 364 scripts for WeeChat 2.9 +2020-08-09 20:31:58 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 20:32:07 Running commands: +2020-08-09 20:32:07 Key "ctrl-W" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-W => /input delete_previous_word +2020-08-09 20:32:07 Key "ctrl-^" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-^ => /input jump_last_buffer_displayed +2020-08-09 20:32:07 Key "ctrl-Wh" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wh => /window left +2020-08-09 20:32:07 Key "ctrl-Wj" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wj => /window down +2020-08-09 20:32:07 Key "ctrl-Wk" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wk => /window up +2020-08-09 20:32:07 Key "ctrl-Wl" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wl => /window right +2020-08-09 20:32:07 Key "ctrl-W=" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-W= => /window balance +2020-08-09 20:32:07 Key "ctrl-Wx" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wx => /window swap +2020-08-09 20:32:07 Key "ctrl-Ws" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Ws => /window splith +2020-08-09 20:32:07 Key "ctrl-Wv" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wv => /window splitv +2020-08-09 20:32:07 Key "ctrl-Wq" unbound (context: "default") +2020-08-09 20:32:07 New key binding (context "default"): ctrl-Wq => /window merge +2020-08-09 20:32:07 Done. +2020-08-09 20:32:11 Running commands: +2020-08-09 20:32:11 Key "ctrl-W" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-W => /input delete_previous_word +2020-08-09 20:32:11 Key "ctrl-^" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-^ => /input jump_last_buffer_displayed +2020-08-09 20:32:11 Key "ctrl-Wh" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wh => /window left +2020-08-09 20:32:11 Key "ctrl-Wj" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wj => /window down +2020-08-09 20:32:11 Key "ctrl-Wk" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wk => /window up +2020-08-09 20:32:11 Key "ctrl-Wl" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wl => /window right +2020-08-09 20:32:11 Key "ctrl-W=" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-W= => /window balance +2020-08-09 20:32:11 Key "ctrl-Wx" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wx => /window swap +2020-08-09 20:32:11 Key "ctrl-Ws" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Ws => /window splith +2020-08-09 20:32:11 Key "ctrl-Wv" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wv => /window splitv +2020-08-09 20:32:11 Key "ctrl-Wq" unbound (context: "default") +2020-08-09 20:32:11 New key binding (context "default"): ctrl-Wq => /window merge +2020-08-09 20:32:11 Done. +2020-08-09 20:32:30 Option changed: plugins.var.python.vimode.mode_indicator_normal_color_bg = "blue" +2020-08-09 20:33:04 Option changed: weechat.bar.input.items = "mode_indicator+[input_prompt]+(away),[input_search],[input_paste],input_text,[vi_buffer]" (default: "[input_prompt]+(away),[input_search],[input_paste],input_text") +2020-08-09 20:33:27 Option changed: weechat.bar.status.items = "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion,cmd_completion" (default: "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion") +2020-08-09 20:33:36 Option changed: plugins.var.python.vimode.search_vim = "on" +2020-08-09 20:34:32 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:32 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1302, in cb_key_combo_default +2020-08-09 20:34:32 python: stdout/stderr (vimode): VI_KEYS[vi_keys](buf, input_line, cur, count) +2020-08-09 20:34:32 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 918, in key_semicolon +2020-08-09 20:34:32 python: stdout/stderr (vimode): globals()[func](False) +2020-08-09 20:34:32 python: stdout/stderr (vimode): KeyError: 'cb_motion_None' +2020-08-09 20:34:32 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:32 =!= python: function "cb_vi_buffer" must return a valid value +2020-08-09 20:34:32 =!= python: error in function "cb_vi_buffer" +2020-08-09 20:34:33 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:33 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:33 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:33 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:33 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:33 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:33 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:33 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:33 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:33 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:33 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:33 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:33 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:33 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:33 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:34 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:34 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:34 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:34 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:34 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:35 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:35 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:35 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:35 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:35 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:36 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:36 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:36 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:36 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:36 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:36 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:36 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:36 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:36 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:36 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:36 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:36 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:36 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:36 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:36 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:36 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:36 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:36 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:36 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:36 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:37 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:37 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:37 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:37 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:37 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:34:38 python: stdout/stderr (vimode): Traceback (most recent call last): +2020-08-09 20:34:38 python: stdout/stderr (vimode): File "/home/dustvoice/.weechat/python/autoload/vimode.py", line 1255, in cb_key_combo_default +2020-08-09 20:34:38 python: stdout/stderr (vimode): vi_buffer += keys +2020-08-09 20:34:38 python: stdout/stderr (vimode): TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' +2020-08-09 20:34:38 =!= python: error in function "cb_key_combo_default" +2020-08-09 20:35:26 python: scripts unloaded +2020-08-09 20:35:30 [vimode.py] tmux/screen users, see: https://github.com/GermainZ/weechat-vimode/blob/master/FAQ.md#esc-key-not-being-detected-instantly +2020-08-09 20:35:30 [vimode.py] To force disable warnings, you can set plugins.var.python.vimode.no_warn to 'on' +2020-08-09 20:35:30 python scripts loaded: vimode +2020-08-09 20:35:30 script: 364 scripts for WeeChat 2.9 +2020-08-09 20:35:30 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 21:11:41 [vimode.py] tmux/screen users, see: https://github.com/GermainZ/weechat-vimode/blob/master/FAQ.md#esc-key-not-being-detected-instantly +2020-08-09 21:11:41 [vimode.py] To force disable warnings, you can set plugins.var.python.vimode.no_warn to 'on' +2020-08-09 21:11:41 python scripts loaded: vimode +2020-08-09 21:11:41 script: 364 scripts for WeeChat 2.9 +2020-08-09 21:11:41 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 21:12:23 python: scripts unloaded +2020-08-09 21:23:12 [vimode.py] tmux/screen users, see: https://github.com/GermainZ/weechat-vimode/blob/master/FAQ.md#esc-key-not-being-detected-instantly +2020-08-09 21:23:12 [vimode.py] To force disable warnings, you can set plugins.var.python.vimode.no_warn to 'on' +2020-08-09 21:23:12 python scripts loaded: vimode +2020-08-09 21:23:12 script: 364 scripts for WeeChat 2.9 +2020-08-09 21:23:12 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 21:23:33 Option changed: plugins.var.python.vimode.no_warn = "on" +2020-08-09 21:23:41 python: scripts unloaded +2020-08-09 21:23:42 python scripts loaded: vimode +2020-08-09 21:23:42 script: 364 scripts for WeeChat 2.9 +2020-08-09 21:23:42 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 21:23:48 Options saved to sec.conf +2020-08-09 21:23:48 Options saved to weechat.conf +2020-08-09 21:23:48 Options saved to plugins.conf +2020-08-09 21:23:48 Options saved to charset.conf +2020-08-09 21:23:48 Options saved to logger.conf +2020-08-09 21:23:48 Options saved to exec.conf +2020-08-09 21:23:48 Options saved to trigger.conf +2020-08-09 21:23:48 Options saved to spell.conf +2020-08-09 21:23:48 Options saved to alias.conf +2020-08-09 21:23:48 Options saved to buflist.conf +2020-08-09 21:23:48 Options saved to fifo.conf +2020-08-09 21:23:48 Options saved to xfer.conf +2020-08-09 21:23:48 Options saved to irc.conf +2020-08-09 21:23:48 Options saved to relay.conf +2020-08-09 21:23:48 Options saved to guile.conf +2020-08-09 21:23:48 Options saved to lua.conf +2020-08-09 21:23:48 Options saved to perl.conf +2020-08-09 21:23:48 Options saved to python.conf +2020-08-09 21:23:48 Options saved to ruby.conf +2020-08-09 21:23:48 Options saved to script.conf +2020-08-09 21:23:48 Options saved to fset.conf +2020-08-09 21:23:52 =!= Too few arguments for command "/query" (help on command: /help query) +2020-08-09 21:23:56 =!= irc: command "quiet" must be executed on irc buffer (server, channel or private) +2020-08-09 21:23:59 python: scripts unloaded +2020-08-09 21:38:54 python scripts loaded: vimode +2020-08-09 21:38:54 script: 364 scripts for WeeChat 2.9 +2020-08-09 21:38:54 Plugins loaded: alias, buflist, charset, exec, fifo, fset, guile, irc, logger, lua, perl, python, relay, ruby, script, spell, trigger, xfer +2020-08-09 21:39:06 Options saved to sec.conf +2020-08-09 21:39:06 Options saved to weechat.conf +2020-08-09 21:39:06 Options saved to plugins.conf +2020-08-09 21:39:06 Options saved to charset.conf +2020-08-09 21:39:06 Options saved to logger.conf +2020-08-09 21:39:06 Options saved to exec.conf +2020-08-09 21:39:06 Options saved to trigger.conf +2020-08-09 21:39:06 Options saved to spell.conf +2020-08-09 21:39:06 Options saved to alias.conf +2020-08-09 21:39:06 Options saved to buflist.conf +2020-08-09 21:39:06 Options saved to fifo.conf +2020-08-09 21:39:06 Options saved to xfer.conf +2020-08-09 21:39:06 Options saved to irc.conf +2020-08-09 21:39:06 Options saved to relay.conf +2020-08-09 21:39:06 Options saved to guile.conf +2020-08-09 21:39:06 Options saved to lua.conf +2020-08-09 21:39:06 Options saved to perl.conf +2020-08-09 21:39:06 Options saved to python.conf +2020-08-09 21:39:06 Options saved to ruby.conf +2020-08-09 21:39:06 Options saved to script.conf +2020-08-09 21:39:06 Options saved to fset.conf diff --git a/.weechat/logs/irc.freenode.#archlinux.weechatlog b/.weechat/logs/irc.freenode.#archlinux.weechatlog new file mode 100644 index 00000000..09445a68 --- /dev/null +++ b/.weechat/logs/irc.freenode.#archlinux.weechatlog @@ -0,0 +1,542 @@ +2020-08-08 21:03:20 --> dustvoice (~dustvoice@89-201-247-206.dsl.optinet.hr) has joined #archlinux +2020-08-08 21:03:20 -- Topic for #archlinux is "Welcome to Arch Linux, Good Luck: https://archlinux.org | Rules: https://goo.gl/XWFreH | Pastebins: see !paste | status.archlinux.org | Installing? New `base` package; read the install guide carefully" +2020-08-08 21:03:20 -- Topic set by phrik (~phrik@archlinux/bot/phrik) on Fri, 24 Jul 2020 22:12:54 +2020-08-08 21:03:20 -- Channel #archlinux: 1720 nicks (1 op, 0 voices, 1719 normals) +2020-08-08 21:03:21 -- Channel created on Sun, 15 Feb 2004 06:08:31 +2020-08-08 21:03:28 --> xtro (~xtro@cpe-104-173-141-189.socal.res.rr.com) has joined #archlinux +2020-08-08 21:03:45 <-- lizr (~lizr@1.83.104.248) has quit (Ping timeout: 240 seconds) +2020-08-08 21:04:09 <-- seankhliao (~seankhlia@233.19.90.34.bc.googleusercontent.com) has quit (Quit: it can't be DNS?! it's always DNS!!!) +2020-08-08 21:04:34 --> seankhliao (~seankhlia@233.19.90.34.bc.googleusercontent.com) has joined #archlinux +2020-08-08 21:05:38 santost12 the second display is still showing the "corruption". i installed QXL driver and everything else except the for the AMD GPU. im about to do that. windows says no other monitors were detected. +2020-08-08 21:06:12 --> Lenny_ (lenny@srv3.blesmrt.net) has joined #archlinux +2020-08-08 21:06:16 <-- Elodin (~weechat@unaffiliated/padawan) has quit (Ping timeout: 256 seconds) +2020-08-08 21:06:17 --> lizr (~lizr@1.83.106.58) has joined #archlinux +2020-08-08 21:06:39 dustvoice Is there an IRC chat where I could recieve some support regarding zfs? Because the AUR package `zfs-utils` doesn't compile for me, but I suppose this isn't the right channel to ask, cause ZFS isn't officially supported +2020-08-08 21:07:05 CompanionCube there's #zfsonlinux +2020-08-08 21:07:21 NetSysFire you can also ask alis +2020-08-08 21:07:37 sheep did you check the comments on its AUR page? +2020-08-08 21:07:49 --> chepaz (~chepaz@195.245.21.236) has joined #archlinux +2020-08-08 21:09:06 <-- desmu (~desmu@2a02:908:391:8260:3c1:9333:2bd5:4202) has quit (Ping timeout: 246 seconds) +2020-08-08 21:09:38 <-- Garb0 (~Garb0@unaffiliated/garb0) has quit (Remote host closed the connection) +2020-08-08 21:09:53 dustvoice sheep: Yes, but I didn't find a solution unfortunately +2020-08-08 21:10:04 -- SpinTronix is now known as SpinTronix_ +2020-08-08 21:10:29 sheep how much RAM do you have? +2020-08-08 21:10:32 dustvoice I think I'll try to hit them people up in #zfsonlinux, cause the upstream git repo doesn't compile as well +2020-08-08 21:10:46 <-- seankhliao (~seankhlia@233.19.90.34.bc.googleusercontent.com) has quit (Quit: it can't be DNS?! it's always DNS!!!) +2020-08-08 21:10:50 <-- Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has quit (Read error: Connection reset by peer) +2020-08-08 21:10:53 --> seankhliao (~seankhlia@233.19.90.34.bc.googleusercontent.com) has joined #archlinux +2020-08-08 21:10:56 dustvoice sheep: 64G should be enough ':) +2020-08-08 21:10:58 sheep if gcc is segfaulting then either it ran out of memory or there's some really obscure compiler bug happening +2020-08-08 21:11:18 --> Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has joined #archlinux +2020-08-08 21:11:35 MacGyver dustvoice: If you're actually on arch, zfs isn't *that* out there that nobody here would be willing to help you just because it's an AUR package. +2020-08-08 21:11:41 dustvoice hmm ok. compiler bug could be the issue, or gcc does weird stuff with the RAM... Will try another run and monitor mem usage... +2020-08-08 21:12:07 MacGyver I applaud the effort to search for a "more appropriate" channel but I think the risk of being shouted at in this case is rather small. +2020-08-08 21:12:50 <-- m1cr0xf7 (~m1cr0xf7@41.46.131.90) has quit (Quit: leaving) +2020-08-08 21:13:40 dustvoice MacGyver: Yes I'm on arch. I know I could probably get some support here, but I'm always asking if there is a more appropriate channel first. I'll try some runs, maybe even do a memtest. I've got no hurry regarding this. Nilfs2 is nice, but I would love to run ZFS really. +2020-08-08 21:14:10 --> quitman (~master@217-64-148-87.pool.ovpn.com) has joined #archlinux +2020-08-08 21:14:17 <-- ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has left #archlinux +2020-08-08 21:14:25 --> Al3v (~arch@85-76-145-47-nat.elisa-mobile.fi) has joined #archlinux +2020-08-08 21:14:52 NetSysFire do you have some debug information? +2020-08-08 21:16:34 santost12 MacGyver: this is what i was talking about earlier: https://postimg.cc/Q9KmNskT +2020-08-08 21:16:36 phrik Title: 1 — Postimage.org (at postimg.cc) +2020-08-08 21:19:35 Strykar dustvoice: post the error you get while compiling the aur package +2020-08-08 21:20:04 -- SpinTronix_ is now known as SpinTronix +2020-08-08 21:20:40 MacGyver santost12: Hmright. Hunting this is difficult. Apparently there's also a potential problem if you *do* have virtual GPUs enabled and boot with the AMD GPU passed through & enabled; so you could try rebooting, disabling the QXL GPU, then starting the VM. +2020-08-08 21:21:18 dustvoice Another weird issue I'm encountering on the Lenovo Yoga Laptop of my mother, I also tried this on is that sometimes the screen just starts to flicker. It's an Intel integrated graphics card. I first thought it was some issue with her Manjaro install and/or my portable Arch install, but as I tried to look at some journals and therefore booted into the archiso, the problem still occured. On my +2020-08-08 21:21:18 dustvoice portable arch install (just an arch install on a USB) it only occurs, after I enter my password for LUKS. It also happens more often during normal usage, after the display gets woken from sleep. I can reproduce it 70% of the time by forcing the standby with `xset dpms force standby`. The flicker starts slowly and then increases in frequency. In approx. 3s one can't see sh*t. I've also tried with +2020-08-08 21:21:18 dustvoice `nomodeset` etc. without success. Several reboots resolve the error temporarily. Sorry for opening up 2 issues at the same time, but I gotta admit those 2 problems are slowly but steadily driving me insane. And sorry for the wall of text. I can offer cookies for compensation +2020-08-08 21:21:19 MacGyver santost12: You're beyond my expertise in issues with AMD GPUs though so at this point I'm merely interpreting any results from https://www.reddit.com/r/VFIO/search?q=AMD%20code%2043&restrict_sr=1 +2020-08-08 21:21:21 phrik Title: reddit.com: search results - AMD code 43 (at www.reddit.com) +2020-08-08 21:21:22 <-- panikovsky (~panikovsk@5.139.149.148) has quit (Quit: Leaving) +2020-08-08 21:21:30 <-- djapo (~archie@unaffiliated/djapo) has quit (Remote host closed the connection) +2020-08-08 21:21:50 dustvoice Strykar: It was indeed a segfault +2020-08-08 21:22:09 dustvoice Weird thing is, I just brute-force tried it like 6 times and magically it somehow worked +2020-08-08 21:22:24 <-- akar (~akar@2a01:e0a:d5:f450:d253:ae33:86a:84dc) has quit (Ping timeout: 246 seconds) +2020-08-08 21:22:28 dustvoice I have no idea. Maybe it's indeed a mem issue. Will run a memtest tonight just for good measure +2020-08-08 21:22:46 MacGyver santost12: Oh, also, you should make sure you're passing through *all* the devices in that card's IOMMU-group. +2020-08-08 21:22:53 MacGyver santost12: Including the audio device on the GPU. +2020-08-08 21:23:32 dustvoice Well I'm gonna try to build the zfs-dkms package now. If I'm understanding stuff correctly, I therefore won't need zfs-linux right? I can use a normal linux kernel and use zfs-dkms with it right? +2020-08-08 21:23:38 <-- simbioz (~simbioz@unaffiliated/simbioz) has quit (Ping timeout: 265 seconds) +2020-08-08 21:23:42 dustvoice Or would it be recommended to use the zfs-linux kernel +2020-08-08 21:23:51 Tom^ dustvoice: https://wiki.archlinux.org/index.php/intel_graphics#Screen_flickering +2020-08-08 21:23:52 phrik Title: Intel graphics - ArchWiki (at wiki.archlinux.org) +2020-08-08 21:24:00 MacGyver Either should work if you're on [core]/linux. +2020-08-08 21:24:03 --> djapo (~archie@unaffiliated/djapo) has joined #archlinux +2020-08-08 21:24:04 Tom^ dustvoice: i915.enable_psr=0 +2020-08-08 21:24:13 MacGyver dkms will build fine for the official kernels. +2020-08-08 21:24:29 dustvoice MacGyver: So also for linux-zen? +2020-08-08 21:24:33 MacGyver The prebuilt packages are usually only there as an additional convenience. +2020-08-08 21:24:38 MacGyver No, not for linux-zen. +2020-08-08 21:24:43 MacGyver That's a different kernel. +2020-08-08 21:24:52 dustvoice Tom^: Thanks will look into it, but I'm pretty sure I tried the i915 option. +2020-08-08 21:24:55 MacGyver So only dkms would work there. +2020-08-08 21:25:04 MacGyver Unless somebody provides zfs-linux-zen. +2020-08-08 21:25:09 ryzokuken I'd been wondering what people have been using for quickly accessible dictionaries akin to some other OSes. +2020-08-08 21:25:19 ryzokuken dmenu with a script that hooks up to a dict? +2020-08-08 21:25:49 ryzokuken and from *a* dict, I mean dict(1) lol +2020-08-08 21:25:56 dustvoice MacGyver: Oh ok. So just there's no misunderstanding, the dkms version also won't work with linux-zen? Not that I require the zen kernel. I can also run the stock linux kernel +2020-08-08 21:27:24 MacGyver The dkms-version will work for any kernel for which you have the headers. +2020-08-08 21:27:35 MacGyver The prebuilt version for linux will not work for linux-zen. +2020-08-08 21:27:53 santost12 MacGyver: still nothing but thank you for the suggestions and help. i tried disabling QXL and then i removed it. i used RDP and same error +2020-08-08 21:27:54 dustvoice MacGyver: Thanks for the info. I assumed this, but having some confirmation is always helpful +2020-08-08 21:28:15 santost12 im going to buy another hard drive for windows. +2020-08-08 21:28:41 --> nabukadnezar43 (~mmturk@85.102.37.217) has joined #archlinux +2020-08-08 21:29:42 dustvoice Tom^: After reading your provided wiki article, I'm not so sure, I tried, but possibly *wanted* to try the kernel parameter. Will try it out after grabbing some food. Thanks to you guys anyways. Helpful as always. +2020-08-08 21:29:59 --> Szadek (~Szadek@193.27.14.37) has joined #archlinux +2020-08-08 21:31:04 <-- nabukadnezar43 (~mmturk@85.102.37.217) has quit (Client Quit) +2020-08-08 21:31:56 -- SpinTronix is now known as SpinTronix_ +2020-08-08 21:32:01 --> ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has joined #archlinux +2020-08-08 21:32:30 <-- ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has left #archlinux +2020-08-08 21:33:08 <-- santost12 (~santost12@2001:5b0:2a59:2508:f3ca:aae8:33ca:bfd1) has quit (Quit: reboot) +2020-08-08 21:34:55 <-- scrumplex_ (~quassel@p200300d27708cc00dea632fffe541a61.dip0.t-ipconnect.de) has quit (Quit: Quassel - Signing Off) +2020-08-08 21:35:36 <-- irc_user (uid423822@gateway/web/irccloud.com/x-vksrowldhkawixkp) has quit (Quit: Connection closed for inactivity) +2020-08-08 21:35:40 <-- sa02irc (~mbax@155-079-043-212.ip-addr.inexio.net) has quit (Remote host closed the connection) +2020-08-08 21:35:59 --> scrumplex (~quassel@pd95d4310.dip0.t-ipconnect.de) has joined #archlinux +2020-08-08 21:37:30 --> ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has joined #archlinux +2020-08-08 21:37:39 --> santost12 (~santost12@2001:5b0:2a59:2508:f3ca:aae8:33ca:bfd1) has joined #archlinux +2020-08-08 21:37:53 --> ricus (~kiike@unaffiliated/ricus) has joined #archlinux +2020-08-08 21:40:06 --> Alakzadeh (~Alak@unaffiliated/alakzadeh) has joined #archlinux +2020-08-08 21:40:15 --> simbioz (~simbioz@unaffiliated/simbioz) has joined #archlinux +2020-08-08 21:42:06 <-- djapo (~archie@unaffiliated/djapo) has quit (Ping timeout: 260 seconds) +2020-08-08 21:44:42 mattfly hmm when is libreoffice 7 arriving on arch? where do you look for this? +2020-08-08 21:45:27 mattfly or have it... +2020-08-08 21:45:29 sheep mattfly: you'll see it in pacman when it's available. Otherwise there's no public tracking +2020-08-08 21:45:36 mattfly oh ok +2020-08-08 21:45:37 sheep besides the svn/git repos +2020-08-08 21:46:07 sheep given how large libreoffice is and how many dependencies it has, it will probably take a few days +2020-08-08 21:46:46 sheep if you want immediate notifications about the source package being updated, you could subscribe to the arch-commits mailing list +2020-08-08 21:47:08 heftig post-factum: yes, once I get back to my desk (all my access keys are on a yubikey) +2020-08-08 21:47:42 post-factum heftig: ok. i've already created a bug-request for that and updated another bug +2020-08-08 21:47:45 <-- Kruppt (~Kruppt@50.111.30.170) has quit (Remote host closed the connection) +2020-08-08 21:48:30 heftig post-factum: yes, thanks. they're already on my to-do list +2020-08-08 21:50:28 --> linux_dream (~isaac@unaffiliated/linux-dream/x-5839402) has joined #archlinux +2020-08-08 21:50:58 <-- fstd (~fstd@unaffiliated/fisted) has quit (Ping timeout: 260 seconds) +2020-08-08 21:51:06 <-- skinkie (~skinkie@konink.de) has left #archlinux +2020-08-08 21:51:11 <-- Szadek (~Szadek@193.27.14.37) has quit (Ping timeout: 246 seconds) +2020-08-08 21:51:13 <-- _illy_ (~illyohs@70-237-10-37.lightspeed.cntmoh.sbcglobal.net) has quit (Quit: WeeChat 2.9) +2020-08-08 21:51:15 --> fstd (~fstd@unaffiliated/fisted) has joined #archlinux +2020-08-08 21:51:45 --> Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-yekebhqdbtfjhbeu) has joined #archlinux +2020-08-08 21:51:45 <-- Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-yekebhqdbtfjhbeu) has quit (Excess Flood) +2020-08-08 21:52:11 -- SpinTronix_ is now known as SpinTronix +2020-08-08 21:52:14 --> Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-nzapgtuhmzsvcxpr) has joined #archlinux +2020-08-08 21:52:14 <-- Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-nzapgtuhmzsvcxpr) has quit (Excess Flood) +2020-08-08 21:52:45 <-- Jesin (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) has quit (Quit: Leaving) +2020-08-08 21:52:47 --> Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-kllsefaqgumjtdck) has joined #archlinux +2020-08-08 21:52:47 <-- Pidgeotto (drowsyivy@gateway/shell/tilde.team/x-kllsefaqgumjtdck) has quit (Excess Flood) +2020-08-08 21:55:39 <-- florent (~florent@2a01:e0a:409:1890:deed:2ade:b95:9d8f) has quit (Read error: Connection reset by peer) +2020-08-08 21:56:12 <-- Satin (~satina@unaffiliated/satin) has quit (Quit: don't press me there!) +2020-08-08 21:56:12 <-- Inu (~Inu@unaffiliated/inu) has quit (Quit: woof) +2020-08-08 21:56:12 <-- warsh (~warsh@unaffiliated/warsh) has quit (Quit: smell ya later) +2020-08-08 21:56:46 <-- fyrgebraec (~enceladus@sp137-h04-128-78-140-174.dsl.sta.abo.bbox.fr) has quit (Ping timeout: 246 seconds) +2020-08-08 21:58:02 <-- Zeyphros (~Zeyphros@2a02:908:1016:f40:2d8:61ff:fe55:26be) has quit (Quit: WeeChat 2.9) +2020-08-08 21:58:27 --> easo2k (a@unaffiliated/easo2k) has joined #archlinux +2020-08-08 21:58:36 --> Satin (~satina@unaffiliated/satin) has joined #archlinux +2020-08-08 21:58:45 --> henninb (~user@63.226.173.112) has joined #archlinux +2020-08-08 21:58:46 <-- Trashlord (~trash@wikipedia/Sentient-Planet) has quit (Quit: "True ignorance is not the absence of knowledge, but the refusal to acquire it.") +2020-08-08 21:59:46 -- ireadallthelogs is now known as sevu +2020-08-08 22:00:32 <-- Carduus (~Carduus@pc199.phh.uni-kiel.de) has quit (Quit: leaving) +2020-08-08 22:00:33 --> Cirrus_Minor (~Cirrus_Mi@CAcert/Cirrus-Minor) has joined #archlinux +2020-08-08 22:00:42 <-- henninb (~user@63.226.173.112) has quit (Remote host closed the connection) +2020-08-08 22:01:15 --> ttyX (~ttyX@unaffiliated/ttyx) has joined #archlinux +2020-08-08 22:01:32 <-- kaguya (~kaguya@jkvlon0504w-grc-08-70-27-8-63.dsl.bell.ca) has quit (Quit: WeeChat 2.9) +2020-08-08 22:01:34 --> Inu (~Inu@unaffiliated/inu) has joined #archlinux +2020-08-08 22:01:59 drathir_tor not sure, but from curiosity isnt community/perl-test-simple should replace the perl-test-tester in dependencies bc of conflicting files ? +2020-08-08 22:02:04 --> warsh (~warsh@unaffiliated/warsh) has joined #archlinux +2020-08-08 22:02:09 <-- santost12 (~santost12@2001:5b0:2a59:2508:f3ca:aae8:33ca:bfd1) has quit (Quit: quit) +2020-08-08 22:02:30 --> Carduus (~Carduus@pc199.phh.uni-kiel.de) has joined #archlinux +2020-08-08 22:04:02 <-- heat_ (~heat@sortix/contributor/heat) has quit (Ping timeout: 260 seconds) +2020-08-08 22:04:19 -- SpinTronix is now known as SpinTronix_ +2020-08-08 22:05:10 drathir_tor or its like replaces not apply to packages no longer included/existing in repositories... ? +2020-08-08 22:05:29 jonathon mattfly: I can point you to some packages if you want; I build it a couple of days ago for myself. +2020-08-08 22:05:49 sheep drathir_tor: I'm not sure what you're asking or what you mean by "bc of conflicting files". can you show us the full output of pacman? +2020-08-08 22:06:16 drathir_tor sheep: k one sec... +2020-08-08 22:06:53 <-- C5OK5Y (~C5OK5Y@ip-78-102-149-138.net.upcbroadband.cz) has quit (Quit: C5OK5Y) +2020-08-08 22:07:46 --> ilhanraja (~ilhanraja@104.37.129.153) has joined #archlinux +2020-08-08 22:07:46 --> kalbasit (~kalbasit@unaffiliated/kalbasit) has joined #archlinux +2020-08-08 22:08:21 <-- _thelion_ (~matthias@93-82-97-54.adsl.highway.telekom.at) has quit (Quit: WeeChat 2.8) +2020-08-08 22:09:14 <-- Alakzadeh (~Alak@unaffiliated/alakzadeh) has quit (Quit: WeeChat 2.9) +2020-08-08 22:09:22 -- SpinTronix_ is now known as SpinTronix +2020-08-08 22:09:53 <-- finnmark (~finnmark@2a0c:f040:0:2790::4d) has quit (Ping timeout: 272 seconds) +2020-08-08 22:10:28 drathir_tor sheep: there You go https://gist.github.com/b7cc117147c46b2982586a0cf4a45506 +2020-08-08 22:10:30 phrik Title: conflicting__perl-test-simple_with_perl-test-tester · GitHub (at gist.github.com) +2020-08-08 22:11:47 --> Jesin (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) has joined #archlinux +2020-08-08 22:11:49 sheep drathir_tor: the perl-test-tester package doesn't exist in the repos anymore. I think perl-test-simple should replace it +2020-08-08 22:11:55 --> Phrenic (~cailean@static-198-54-128-77.cust.tzulo.com) has joined #archlinux +2020-08-08 22:11:58 --> semeion (~semeion@unaffiliated/semeion) has joined #archlinux +2020-08-08 22:12:41 bentglasstube so I reinstalled arch entirely and I'm still having performance issues in x +2020-08-08 22:12:43 <-- Thaodan (~Thaodan@thaodan.de) has quit (Quit: ZNC - https://znc.in) +2020-08-08 22:13:06 drathir_tor bentglasstube: dmesg spamming any errors ? +2020-08-08 22:13:27 bentglasstube no, nothing interesting in there that I see +2020-08-08 22:13:28 --> Thaodan (~Thaodan@thaodan.de) has joined #archlinux +2020-08-08 22:13:42 bentglasstube nothing interesting in xorg log either +2020-08-08 22:13:46 Phrenic What's the irc command for font help? +2020-08-08 22:14:11 sheep Phrenic: there isn't one +2020-08-08 22:14:58 NetSysFire bentglasstube: what performance issues? +2020-08-08 22:15:14 --> desmu (~desmu@2a02:908:391:8260:3c1:9333:2bd5:4202) has joined #archlinux +2020-08-08 22:15:16 drathir_tor bentglasstube: from curiosity does glxgears affected as well ? +2020-08-08 22:15:21 <-- J_Darnley (~J_Darnley@d51A44418.access.telenet.be) has quit (Ping timeout: 265 seconds) +2020-08-08 22:15:25 Namarrgon Phrenic: plain english works best; explain your issue +2020-08-08 22:15:42 bentglasstube mouse movement is super choppy mostly +2020-08-08 22:16:10 NetSysFire what gpu? +2020-08-08 22:16:15 Namarrgon bentglasstube: did you try with nouveau instead of the blob? +2020-08-08 22:16:17 bentglasstube seems to be since I updated things a couple days ago, so I assume gpu drivers +2020-08-08 22:16:21 --> mr_sm1th (~mr_sm1111@94-215-58-197.cable.dynamic.v4.ziggo.nl) has joined #archlinux +2020-08-08 22:16:36 bentglasstube I was going to try nouveau next, but it doesn't support much on my gpu +2020-08-08 22:16:39 mr_sm1th I'm trying to update with pacman, but I'm getting "error: sublime-text: key "F57D4F59BD3DF454" is unknown" +2020-08-08 22:16:52 Namarrgon mr_sm1th: which repo do you get that package from? +2020-08-08 22:16:53 mr_sm1th rm -rf /etc/pacman.d/gnupg doesn't work +2020-08-08 22:16:54 bentglasstube 01:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER] (rev a1) +2020-08-08 22:17:04 --> J_Darnley (~J_Darnley@d51a44418.access.telenet.be) has joined #archlinux +2020-08-08 22:17:07 Phrenic I'm just missing some characters. Just looking for some font packages that provide good coverage for more obscure icons and characters. +2020-08-08 22:17:13 mr_sm1th Namarrgon, I'm not installing sublime-text, it's long gone from my system, but it seems to have left some files that break pacman +2020-08-08 22:17:29 Namarrgon mr_sm1th: post the full pacman -Syu --debug output +2020-08-08 22:17:44 bentglasstube glxgears looks choppy too, but stdout reports 60fps +2020-08-08 22:18:04 drathir_tor mr_sm1th: that most likely not help You wipe all keys maybe instead go try reinstal archlinux-keyring... +2020-08-08 22:18:13 mr_sm1th I did that +2020-08-08 22:18:20 mr_sm1th !paste +2020-08-08 22:18:21 phrik Paste short snippets (up to 3 lines) in channel. Please do NOT use pastebin.com or paste.ubuntu.com -- some good, sane paste services are http://ix.io, https://paste.rs, https://bpaste.net and https://gist.github.com. See !ix or !rs for an easy way to paste from a pipe. +2020-08-08 22:18:31 Namarrgon !pastepacman +2020-08-08 22:18:32 phrik LC_ALL=C pacman --debug |& tee >(curl -F 'f:1=<-' ix.io) +2020-08-08 22:18:51 <-- patrick96 (~Patrick@polybar/patrick) has quit (Read error: Connection reset by peer) +2020-08-08 22:18:51 mr_sm1th this seems to be the relevant part https://bpa.st/4DOQ +2020-08-08 22:18:51 phrik Title: View paste 4DOQ (at bpa.st) +2020-08-08 22:19:13 <-- mrbanie (~mrbanie@unaffiliated/mrbanie) has quit (Ping timeout: 265 seconds) +2020-08-08 22:19:25 sheep is there a sublime-text repo in your pacman.conf? +2020-08-08 22:19:51 Namarrgon post the full output +2020-08-08 22:19:55 mr_sm1th Ok yeah that was it +2020-08-08 22:19:58 mr_sm1th Thank you +2020-08-08 22:20:08 <-- segurb (~segurb@unaffiliated/segurb) has quit (Quit: https://i.imgur.com/xrUtDu3.gif) +2020-08-08 22:20:11 mr_sm1th Namarrgon, there was 500+ lines of new repos being added ':) +2020-08-08 22:20:30 Namarrgon why do you have so many mirrors in your mirrorlist? +2020-08-08 22:20:54 drathir_tor O,O' +2020-08-08 22:21:29 mr_sm1th Ehm +2020-08-08 22:21:36 mr_sm1th I have one for every country it seems +2020-08-08 22:21:47 mr_sm1th Generated on 2019-02-01 +2020-08-08 22:22:22 mr_sm1th Anyway, thank you :) +2020-08-08 22:23:04 <-- Phrenic (~cailean@static-198-54-128-77.cust.tzulo.com) has left #archlinux +2020-08-08 22:23:41 --> patrick96 (~Patrick@polybar/patrick) has joined #archlinux +2020-08-08 22:24:35 <-- jgbyrne (~jgbyrne@host86-164-149-194.range86-164.btcentralplus.com) has quit (Ping timeout: 240 seconds) +2020-08-08 22:24:38 <-- andril (~andril@2601:586:8400:a:eddb:2518:3553:6011) has quit (Quit: WeeChat 2.9) +2020-08-08 22:25:16 j0hannes I shutdown my laptop before a flight and restarted it afterwards; now the Network Connections status bar entry in KDE is gone and in the system configuration I don't find any of the previously existing connections (VPN etc.) anymore +2020-08-08 22:25:33 <-- dvx_ (~dvx@82.113.48.124) has quit (Quit: dvx_) +2020-08-08 22:25:34 j0hannes ip a lists the wifi adapter as DOWN +2020-08-08 22:26:37 NetSysFire did you updated anything? check pacman.log +2020-08-08 22:26:53 NetSysFire also check that you didnt push a hw button, like the airplane mode one if you have something like this +2020-08-08 22:27:04 --> jgbyrne (~jgbyrne@host86-164-149-194.range86-164.btcentralplus.com) has joined #archlinux +2020-08-08 22:28:14 --> akar (~akar@2a01:e0a:d5:f450:d253:ae33:86a:84dc) has joined #archlinux +2020-08-08 22:28:35 --> Brocellous (~Brocellou@unaffiliated/brocellous) has joined #archlinux +2020-08-08 22:30:42 <-- qin (~qin@unaffiliated/soalokin) has quit (Ping timeout: 256 seconds) +2020-08-08 22:30:51 <-- sevu (~sevu@2a01:c22:a80a:200:781d:24ff:fed2:5c17) has quit (Ping timeout: 244 seconds) +2020-08-08 22:31:50 <-- SanskritFritz (~quassel@2E8B45C2.catv.pool.telekom.hu) has quit (Ping timeout: 256 seconds) +2020-08-08 22:32:34 --> MarcinWieczorek (~marcin@afoe197.neoplus.adsl.tpnet.pl) has joined #archlinux +2020-08-08 22:33:02 <-- klokken (~klokken@unaffiliated/klokken) has quit (Quit: klokken) +2020-08-08 22:33:19 j0hannes NetSysFire: there is an Fn key combination to toggle wifi, but it never worked under Arch +2020-08-08 22:33:33 <-- ilhanraja (~ilhanraja@104.37.129.153) has quit (Quit: My MacBook has gone to sleep. ZZZzzz…) +2020-08-08 22:34:03 NetSysFire what is your specific device? +2020-08-08 22:34:09 NetSysFire check rfkill just in case +2020-08-08 22:34:25 <-- semeion (~semeion@unaffiliated/semeion) has quit (Ping timeout: 240 seconds) +2020-08-08 22:35:03 --> cnsvc (~cnsvc@gateway/tor-sasl/cnsvc) has joined #archlinux +2020-08-08 22:36:12 --> mrbanie (~mrbanie@unaffiliated/mrbanie) has joined #archlinux +2020-08-08 22:36:30 --> semeion (~semeion@unaffiliated/semeion) has joined #archlinux +2020-08-08 22:37:43 _Warl0ck does anyone know how to do a subshell with fish? like: (command) +2020-08-08 22:38:16 _Warl0ck wal requires "(cat ~/.cache/wal/sequences &)" to be in your shell config, but fish doesn't support that syntax and I can't find an equivalent +2020-08-08 22:38:58 dreisner yo dawg, i heard you like subshells. +2020-08-08 22:39:09 --> ilhanraja (~ilhanraja@104.37.129.153) has joined #archlinux +2020-08-08 22:39:29 _Warl0ck you heard right +2020-08-08 22:39:36 dreisner can't see why you need the explicit ( ) subshell if you're backgrounding the thing... +2020-08-08 22:39:59 dreisner then again, i've no idea what "wal" is. +2020-08-08 22:40:08 NetSysFire there is also a fish channel +2020-08-08 22:40:10 _Warl0ck yeah the thing is removing the parens causes other isssues, it seems to spew character codes into the active shell session +2020-08-08 22:40:14 NetSysFire the official one is not on freenode though +2020-08-08 22:40:16 _Warl0ck I asked there, it's kinda dead +2020-08-08 22:40:24 bentglasstube nouveau drivers don't have the performance issues +2020-08-08 22:40:29 bentglasstube so I guess I'm sticking with them +2020-08-08 22:40:32 bentglasstube thanks for the suggestion +2020-08-08 22:40:46 dreisner ...but adding the subshell doesn't change that. +2020-08-08 22:40:51 dreisner FD inheritance is a thing. +2020-08-08 22:41:02 _Warl0ck dreisner: wal just applies a system wide colorscheme, and that line echoes the color chars +2020-08-08 22:41:19 dreisner and why does this have to be fish? +2020-08-08 22:41:27 <-- kaivai (~kaivai@104.158.156.144) has quit (Ping timeout: 265 seconds) +2020-08-08 22:41:32 dreisner isn't wal the one executing this? +2020-08-08 22:41:47 _Warl0ck because that's my every day shell, and fish needs to source the colors so each shell I open is themed +2020-08-08 22:41:56 _Warl0ck wal just creates the colorscheme itself +2020-08-08 22:42:16 _Warl0ck dreisner: removing the perens is directly responsible for this issue: https://github.com/liuchengxu/vista.vim/issues/297 +2020-08-08 22:42:17 bentglasstube nouveau seems to have some different problems not understanding left and right displays though +2020-08-08 22:42:18 phrik Title: [vista.vim] Fail to decode from JSON: · Issue #297 · liuchengxu/vista.vim · GitHub (at github.com) +2020-08-08 22:42:37 --> sevu (~sevu@x4d0d8e0b.dyn.telefonica.de) has joined #archlinux +2020-08-08 22:43:06 <-- mimiku (~mimiku@gateway/tor-sasl/mimiku) has quit (Quit: mimiku) +2020-08-08 22:43:06 <-- KeiraT (~k4ra@gateway/tor-sasl/k4ra) has quit (Quit: KeiraT) +2020-08-08 22:43:20 dreisner that makes even less sense +2020-08-08 22:43:40 bentglasstube wow, this is really strange. I used xrandr to arrange my displays correctly, but now if I click on something on the left monitor, it clicks in that position on the right monitor (and vice versa) +2020-08-08 22:43:56 _Warl0ck I never said it made sense dreisner, im confused as well +2020-08-08 22:44:02 --> largetni (largetni@gateway/vpn/privateinternetaccess/largetni) has joined #archlinux +2020-08-08 22:44:19 --> tatsumaru (~tatsumaru@87.227.201.106) has joined #archlinux +2020-08-08 22:44:19 dreisner now we're talking about bad json? because of a missing subshell? +2020-08-08 22:44:52 <-- zalt_ (~devp@unaffiliated/lambda443) has quit (Ping timeout: 256 seconds) +2020-08-08 22:45:08 _Warl0ck dreisner: I believe it's because the cat command throws some characters into the terminal to change its color, which it does, but for some reason they are not handled correctly and it interferes with other stuff +2020-08-08 22:45:17 Namarrgon bentglasstube: nouveau probably doesn't work too well on that gpu, brace for more bugs +2020-08-08 22:45:19 tatsumaru hey guys, my computer uses a usb printer that's connected to my mom's pc and is shared and this works fine I can print as expected. however I just installed xsane in order to use the scan function as well and when I start xsane it says - no devices found. how can I help xsane also detect the shared printer? +2020-08-08 22:45:21 dreisner yes, that's what cat does.... +2020-08-08 22:45:33 bentglasstube nouveau doesn't work, nvidia drivers don't work +2020-08-08 22:45:34 dreisner adding a subshell doesn't magically change where the output goes. +2020-08-08 22:45:36 bentglasstube what is this 1990 +2020-08-08 22:45:44 Namarrgon bentglasstube: this is nvidia +2020-08-08 22:45:53 _Warl0ck dreisner: https://github.com/liuchengxu/vista.vim/issues/297 +2020-08-08 22:45:55 phrik Title: [vista.vim] Fail to decode from JSON: · Issue #297 · liuchengxu/vista.vim · GitHub (at github.com) +2020-08-08 22:46:03 dreisner _Warl0ck: you already posted that +2020-08-08 22:46:05 _Warl0ck it says it "hides shell job control messages" +2020-08-08 22:46:11 bentglasstube I suppose I can just swap which ports the monitors are plugged into +2020-08-08 22:46:25 _Warl0ck whoops meant to paste https://github.com/dylanaraps/pywal/wiki/Getting-Started#applying-the-theme-to-new-terminals +2020-08-08 22:46:27 phrik Title: Getting Started · dylanaraps/pywal Wiki · GitHub (at github.com) +2020-08-08 22:46:31 dreisner does fish emit job control message? +2020-08-08 22:47:16 dreisner i'm not even sure why you need to background this. +2020-08-08 22:47:20 dreisner it's not a continuous stream. +2020-08-08 22:47:29 _Warl0ck Googling it returned no results. Knowing fish, they just call it something different +2020-08-08 22:47:32 <-- sahej (~sahej@103.208.70.146) has quit (Remote host closed the connection) +2020-08-08 22:47:52 _Warl0ck I think it's backgrounded so the shell isn't blocked for a few ms every time it starts +2020-08-08 22:48:01 dreisner a few ms!? how big is this file? +2020-08-08 22:48:15 dreisner should file a bug against wal so that it only reads stdout, not stdout and stderr. +2020-08-08 22:48:22 _Warl0ck I'm just going off the comment in that link: # Alternative (blocks terminal for 0-3ms) +2020-08-08 22:48:25 _Warl0ck cat ~/.cache/wal/sequences +2020-08-08 22:48:32 --> eoli3n (~eoli3n@pop.92-184-102-30.mobile.abo.orange.fr) has joined #archlinux +2020-08-08 22:49:15 dreisner 0ms is pretty short. 3ms is too. i doubt you'd actually notice it. +2020-08-08 22:50:19 _Warl0ck yeah, it is pretty short. Seems to remove the error for now +2020-08-08 22:50:34 dreisner im responsible for a ip geolocation service which has a 5ms SLA at about 20M QPS. if we fail the SLA we start losing money (thousands of dollars) every seconds. surely 3ms is tolerable for you to open a shell. +2020-08-08 22:50:45 _Warl0ck I would like to know how to do subshells in fish anyways. I use them ib my bash scripts all the time +2020-08-08 22:50:57 --> samantaz (~samantaz@lfbn-rou-1-143-136.w83-114.abo.wanadoo.fr) has joined #archlinux +2020-08-08 22:51:10 Namarrgon they don't have a channel on freenode? +2020-08-08 22:51:28 dreisner it's too fucked of a shell to offer such basic functionality: https://github.com/fish-shell/fish-shell/issues/1439 +2020-08-08 22:51:29 <-- ttyX (~ttyX@unaffiliated/ttyx) has quit (Quit: Leaving) +2020-08-08 22:51:32 phrik Title: Provide subshell like functionality · Issue #1439 · fish-shell/fish-shell · GitHub (at github.com) +2020-08-08 22:52:10 --> mimiku (~mimiku@gateway/tor-sasl/mimiku) has joined #archlinux +2020-08-08 22:52:15 --> KeiraT (~k4ra@gateway/tor-sasl/k4ra) has joined #archlinux +2020-08-08 22:52:16 _Warl0ck It's great for an everyday use shell, manpage completions, git integration, etc, but for anything complex and portable I just use bash +2020-08-08 22:52:21 tatsumaru any help with the xsane issue please? +2020-08-08 22:52:44 --> heat_ (~heat@sortix/contributor/heat) has joined #archlinux +2020-08-08 22:53:01 --> Szybet (b97f165f@gateway/web/cgi-irc/kiwiirc.com/ip.185.127.22.95) has joined #archlinux +2020-08-08 22:55:00 --> xulfer (uid452788@gateway/web/irccloud.com/x-mimtcsfurjcndwhu) has joined #archlinux +2020-08-08 22:55:17 --> halv (~halv@p200300d3c712cb00458bde521f41c34b.dip0.t-ipconnect.de) has joined #archlinux +2020-08-08 22:56:20 --> boottp (~boottp@2-235-73-104.ip227.fastwebnet.it) has joined #archlinux +2020-08-08 22:57:43 <-- boottp (~boottp@2-235-73-104.ip227.fastwebnet.it) has quit (Client Quit) +2020-08-08 22:58:44 _Warl0ck dreisner: scratch that, I am still getting the garbage json issue with the plain cat command. I think it just needs to be run in the background somehow +2020-08-08 22:59:04 <-- beelzebuzz (~rasputin@gateway/tor-sasl/beelzebuzz) has quit (Ping timeout: 240 seconds) +2020-08-08 22:59:13 dustvoice tatsumaru: Never tried scanning with my printer unfortunately O.o +2020-08-08 22:59:41 tatsumaru well it has a scanner in it +2020-08-08 22:59:51 sheep tatsumaru: what do you get from "pacman -Q linux" and "uname -r"? +2020-08-08 23:00:06 <-- halv (~halv@p200300d3c712cb00458bde521f41c34b.dip0.t-ipconnect.de) has quit (Client Quit) +2020-08-08 23:00:24 tatsumaru sheep, linux 5.7.12.arch1-1 and 5.7.12-arch1-1 +2020-08-08 23:00:29 dustvoice Sorry for sounding sarcastic. My printer has a scanner included too. I really didn't try scanning. I don't know how I navigated around that to be perfectly honest. So really O.o +2020-08-08 23:00:43 sheep so it's not an issue with a kernel mismatch +2020-08-08 23:00:55 <-- ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has left #archlinux +2020-08-08 23:00:55 <-- billybigrigger (~billybigr@S0106000c292e42fd.cg.shawcable.net) has quit (Quit: The Lounge - https://thelounge.chat) +2020-08-08 23:01:01 tatsumaru my mom's pc also has arch with the latest updates and the printer/scanner works fine there with xsane +2020-08-08 23:01:15 sheep are sane-airscan and ipp-usb installed? +2020-08-08 23:01:55 --> kernschrott (~kernschro@p57917920.dip0.t-ipconnect.de) has joined #archlinux +2020-08-08 23:02:03 tatsumaru sheep, no +2020-08-08 23:02:18 --> Ruuchan (~Ruuchan@unaffiliated/ruuchan) has joined #archlinux +2020-08-08 23:03:46 tatsumaru maybe I need to share the scanner separately from the printer even though they are the same device? +2020-08-08 23:03:56 sheep install sane-airscan and ipp-usb +2020-08-08 23:04:07 tatsumaru sheep, installed them, now? +2020-08-08 23:04:32 sheep systemctl daemon-reload; systemctl enable --now ipp-usb +2020-08-08 23:04:44 --> ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has joined #archlinux +2020-08-08 23:04:58 --> Ruuchan_ (~Ruuchan@unaffiliated/ruuchan) has joined #archlinux +2020-08-08 23:05:11 --> ttyX (~ttyX@unaffiliated/ttyx) has joined #archlinux +2020-08-08 23:05:13 <-- Ar|stote|is (~quassel@2a02:587:9a03:661f:d8f8:f8ff:febf:1da6) has quit (Ping timeout: 260 seconds) +2020-08-08 23:05:26 --> boottp_ (~boottp@2-235-73-104.ip227.fastwebnet.it) has joined #archlinux +2020-08-08 23:05:31 --> beelzebuzz (~rasputin@gateway/tor-sasl/beelzebuzz) has joined #archlinux +2020-08-08 23:05:56 <-- boottp_ (~boottp@2-235-73-104.ip227.fastwebnet.it) has quit (Remote host closed the connection) +2020-08-08 23:05:58 --> GI_Jack (~GI_Jack@pdpc/supporter/active/gi-jack) has joined #archlinux +2020-08-08 23:06:12 tatsumaru sheep, https://dpaste.org/YG1e +2020-08-08 23:06:14 phrik Title: dpaste/YG1e (Bash) (at dpaste.org) +2020-08-08 23:06:24 sheep ignore that +2020-08-08 23:06:25 <-- Ruuchan (~Ruuchan@unaffiliated/ruuchan) has quit (Ping timeout: 240 seconds) +2020-08-08 23:06:43 sheep it might be a service that is activated on demand by dbus +2020-08-08 23:06:48 sheep now try using xsane again +2020-08-08 23:06:54 <-- Szybet (b97f165f@gateway/web/cgi-irc/kiwiirc.com/ip.185.127.22.95) has quit (Quit: Connection closed) +2020-08-08 23:07:14 tatsumaru nope, still can't find the scanner +2020-08-08 23:07:29 sheep does lsusb find the scanner? +2020-08-08 23:07:32 --> boottp (~boottp@2-235-73-104.ip227.fastwebnet.it) has joined #archlinux +2020-08-08 23:07:58 <-- kernschrott (~kernschro@p57917920.dip0.t-ipconnect.de) has quit (Ping timeout: 260 seconds) +2020-08-08 23:08:00 tatsumaru well it's not connected to this PC so should it? +2020-08-08 23:08:02 <-- binTrl_ (~binaryTra@47.29.106.122) has quit (Ping timeout: 265 seconds) +2020-08-08 23:08:10 --> kernschrott (~kernschro@x4e301927.dyn.telefonica.de) has joined #archlinux +2020-08-08 23:08:16 sheep you said it was a usb scanner, right? +2020-08-08 23:08:28 sheep oh wait +2020-08-08 23:08:30 tatsumaru yeah but it's connect to my mom's pc and my mom's pc is sharing the printer with my pc +2020-08-08 23:08:38 sheep what protocol is that PC using to share the scanner? +2020-08-08 23:08:44 tatsumaru ipp +2020-08-08 23:09:15 sheep is saned sharing it? +2020-08-08 23:09:43 --> agregory (~agregory@c-98-207-137-206.hsd1.ca.comcast.net) has joined #archlinux +2020-08-08 23:09:45 tatsumaru not sure what you mean +2020-08-08 23:09:45 --> binTrl (~binaryTra@47.29.106.122) has joined #archlinux +2020-08-08 23:09:53 tatsumaru I used cups to share it +2020-08-08 23:10:01 <-- linux_dream (~isaac@unaffiliated/linux-dream/x-5839402) has quit (Quit: WeeChat 2.9) +2020-08-08 23:10:24 sheep I think cups would only share the printer function +2020-08-08 23:10:44 sheep try something like https://wiki.archlinux.org/index.php/SANE#Sharing_your_scanner_over_a_network +2020-08-08 23:10:45 phrik Title: SANE - ArchWiki (at wiki.archlinux.org) +2020-08-08 23:12:33 --> pnd (~un@104.221.66.247) has joined #archlinux +2020-08-08 23:13:19 --> pardoides (xfnw@gateway/shell/tilde.team/x-vkgqjydhrezactzj) has joined #archlinux +2020-08-08 23:13:26 <-- pardoides (xfnw@gateway/shell/tilde.team/x-vkgqjydhrezactzj) has left #archlinux +2020-08-08 23:13:42 --> Szadek (~Szadek@185.213.155.168) has joined #archlinux +2020-08-08 23:17:08 <-- ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has left #archlinux +2020-08-08 23:17:21 --> ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has joined #archlinux +2020-08-08 23:18:36 <-- ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has left #archlinux +2020-08-08 23:18:40 tatsumaru sheep, this worked, thanks a lot ! :) +2020-08-08 23:19:03 --> Szybet (b97f165f@gateway/web/cgi-irc/kiwiirc.com/ip.185.127.22.95) has joined #archlinux +2020-08-08 23:19:13 --> ShadowKyogre (~ShadowKyo@unaffiliated/shadowkyogre) has joined #archlinux +2020-08-08 23:21:01 <-- tatsumaru (~tatsumaru@87.227.201.106) has left #archlinux +2020-08-08 23:22:50 <-- mariuszskon_ (~mariuszsk@103.107.198.100) has quit (Ping timeout: 256 seconds) +2020-08-08 23:23:40 <-- Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has quit (Quit: Megver83) +2020-08-08 23:23:44 --> Kilroo (~Kilroo@71.71.105.78) has joined #archlinux +2020-08-08 23:23:53 <-- frostschutz (~frostschu@55d40828.access.ecotel.net) has quit (Remote host closed the connection) +2020-08-08 23:23:59 --> Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has joined #archlinux +2020-08-08 23:24:32 --> mariuszskon_ (~mariuszsk@103.107.198.100) has joined #archlinux +2020-08-08 23:25:26 --> incentive (~rbatty@unaffiliated/incentive) has joined #archlinux +2020-08-08 23:25:40 <-- vuoto (~vuoto@80.71.142.174) has quit (Quit: WeeChat 2.9-dev) +2020-08-08 23:26:37 <-- xdarklight (~freenode@unaffiliated/xdarklight) has quit (Quit: ZNC - http://znc.in) +2020-08-08 23:26:55 <-- myr463 (~myr463@2a01:cb11:20:5700:9eeb:e8ff:fec4:afbf) has quit (Quit: myr463) +2020-08-08 23:28:10 <-- gffa (~unknown@unaffiliated/gffa) has quit (Quit: sleep) +2020-08-08 23:29:42 j0hannes NetSysFire: it's an Intel 8265/8275, rfkill doesn't report any blocking +2020-08-08 23:30:05 --> xdarklight (~freenode@unaffiliated/xdarklight) has joined #archlinux +2020-08-08 23:31:29 dustvoice The mighty ArchWiki strikes again I see. Truly a holy pool of knowledge. Never ceases to impress +2020-08-08 23:36:07 <-- edlou (uid413273@gateway/web/irccloud.com/x-qzjwcxojxigavqfv) has quit (Quit: Connection closed for inactivity) +2020-08-08 23:36:10 <-- xdarklight (~freenode@unaffiliated/xdarklight) has quit (Quit: ZNC - http://znc.in) +2020-08-08 23:37:07 <-- Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has quit (Quit: Megver83) +2020-08-08 23:37:31 --> Megver83 (~Icedove@pc-88-170-100-190.cm.vtr.net) has joined #archlinux +2020-08-08 23:37:49 <-- heat_ (~heat@sortix/contributor/heat) has quit (Remote host closed the connection) +2020-08-08 23:38:06 --> xdarklight (~freenode@unaffiliated/xdarklight) has joined #archlinux +2020-08-08 23:38:22 --> heat (~heat@sortix/contributor/heat) has joined #archlinux +2020-08-08 23:38:54 <-- kalbasit (~kalbasit@unaffiliated/kalbasit) has quit (Remote host closed the connection) +2020-08-08 23:40:59 <-- leonjza (~user@unaffiliated/leonjza) has quit (Ping timeout: 240 seconds) +2020-08-08 23:41:00 <-- sorcus (~sorcus@2a01:7e01:e002:8ffc:caf2:ef3d:542:bc0e) has quit (Ping timeout: 246 seconds) +2020-08-08 23:41:08 --> shiki (~sevu@2a01:c22:a851:7b00:781d:24ff:fed2:5c17) has joined #archlinux +2020-08-08 23:42:50 <-- eoli3n (~eoli3n@pop.92-184-102-30.mobile.abo.orange.fr) has quit (Ping timeout: 265 seconds) +2020-08-08 23:43:27 --> lesterknome_ (~lesterkno@c-24-125-54-168.hsd1.ga.comcast.net) has joined #archlinux +2020-08-08 23:43:34 <-- sevu (~sevu@x4d0d8e0b.dyn.telefonica.de) has quit (Ping timeout: 256 seconds) +2020-08-08 23:45:50 <-- lesterknome (~lesterkno@196.247.50.108) has quit (Ping timeout: 256 seconds) +2020-08-08 23:46:01 <-- MarcinWieczorek (~marcin@afoe197.neoplus.adsl.tpnet.pl) has quit (Quit: ZNC 1.7.5 - https://znc.in) +2020-08-08 23:46:24 --> danielrparks (~danielrpa@2600:1700:3f7b:200::25) has joined #archlinux +2020-08-08 23:48:41 <-- Volgaar (~volgaar@alyon-652-1-189-82.w109-213.abo.wanadoo.fr) has quit (Ping timeout: 256 seconds) +2020-08-08 23:49:39 dreisner _Warl0ck: still makes no sense if you understand shells, *and* it contradicts the manual you linked. +2020-08-08 23:50:20 dreisner _Warl0ck: the rational explanation at this point would either be: appear to be a syntax error or some (further) absurdity of fish. +2020-08-08 23:50:41 bentglasstube does anyone know what packages are required to get ardour's general midi plugin to work? +2020-08-08 23:51:28 bentglasstube I got it to work by installing all of pro-audio but that seems a bit heavy handed +2020-08-08 23:52:23 dustvoice Gotta admit, this kind of stuff was why I dropped fish and switched to zsh. +2020-08-08 23:52:40 NetSysFire i like using zsh but i use bash for all my scripts +2020-08-08 23:53:23 danielrparks that's how I bet I would too. I've been using bash for way too long to not use its syntax +2020-08-08 23:53:42 <-- clone11 (~clone@072-189-253-117.res.spectrum.com) has quit (Read error: Connection reset by peer) +2020-08-08 23:54:05 dustvoice I have no problem with a different syntax. But it would be nice if it was a complete and coherent syntax instead of random shit like this +2020-08-08 23:54:47 danielrparks I actually missed it, but I can imagine, there's some pretty weird stuff in shell syntax +2020-08-08 23:54:54 --> Raptor_Mayhem (~bckempa@173-25-175-1.client.mchsi.com) has joined #archlinux +2020-08-08 23:55:11 <-- Raptor_Mayhem (~bckempa@173-25-175-1.client.mchsi.com) has quit (Client Quit) +2020-08-08 23:55:18 --> Szadek_ (~Szadek@185.213.155.164) has joined #archlinux +2020-08-08 23:55:42 --> wrycode (~user@cpe-98-26-105-140.nc.res.rr.com) has joined #archlinux +2020-08-08 23:55:51 dustvoice I use bash for scripts, bc of compatibility and stuff too. But zsh with autocompletion and oh-my-zsh shenanigans is the closest I got to fish's autocompletion which I have to admit is very good. +2020-08-08 23:56:27 <-- ilhanraja (~ilhanraja@104.37.129.153) has quit (Quit: My MacBook has gone to sleep. ZZZzzz…) +2020-08-08 23:56:59 --> ilhanraja (~ilhanraja@104.37.129.153) has joined #archlinux +2020-08-08 23:57:10 <-- Szadek (~Szadek@185.213.155.168) has quit (Ping timeout: 256 seconds) +2020-08-09 00:01:05 --> sudoforge (~sudoforge@cpepool8acmts1-40.sanbrunocable.com) has joined #archlinux +2020-08-09 00:01:08 <-- Szadek_ (~Szadek@185.213.155.164) has quit (Quit: WeeChat 2.9) +2020-08-09 00:01:39 <-- stoopkid (uid137696@gateway/web/irccloud.com/x-ovoenamfruuvvzfa) has quit (Quit: Connection closed for inactivity) +2020-08-09 00:01:40 mefistofeles dustvoice: I recommend dropping oh-my-zsh and using something like spaceship or starship +2020-08-09 00:01:43 mefistofeles :P +2020-08-09 00:01:46 mefistofeles you will never look back +2020-08-09 00:02:06 danielrparks noted for when I eventually switch to zsh +2020-08-09 00:02:56 <-- ramses (~ramses@nat-35.starnet.cz) has quit (Quit: ramses) +2020-08-09 00:03:26 NetSysFire i made my zshrc myself. 4/10 would not recommend. i still dont understand all the completion options +2020-08-09 00:03:28 dustvoice mefistofeles: O.o so... you... tell me that my completely individually crafted and configured, finally working zsh is not worthy enough >.> Guess I'll check this Star Wars shit out. You surely are the devil +2020-08-09 00:03:38 --> billybigrigger (~billybigr@S0106000c292e42fd.cg.shawcable.net) has joined #archlinux +2020-08-09 00:03:58 mefistofeles dustvoice: oh, maybe it is enough :) +2020-08-09 00:04:11 <-- pinpox (~pinpox@xdsl-87-79-223-244.nc.de) has quit (Ping timeout: 240 seconds) +2020-08-09 00:04:17 mefistofeles but oh-my-zsh is known for being slow, but if you have fiddle with it enough it may be good already +2020-08-09 00:04:28 <-- shiki (~sevu@2a01:c22:a851:7b00:781d:24ff:fed2:5c17) has quit (Ping timeout: 244 seconds) +2020-08-09 00:05:52 --> pinpox (~pinpox@xdsl-78-34-240-220.nc.de) has joined #archlinux +2020-08-09 00:08:09 --> leonjza (~user@unaffiliated/leonjza) has joined #archlinux +2020-08-09 00:09:02 --> sevu (~sevu@2a01:c23:6446:d800:781d:24ff:fed2:5c17) has joined #archlinux +2020-08-09 00:09:06 <-- ilhanraja (~ilhanraja@104.37.129.153) has quit (Quit: My MacBook has gone to sleep. ZZZzzz…) +2020-08-09 00:10:43 dustvoice Well it's alright. This is the rabbit hole of arch. Optimizing and tweaking all the time. And when you FINALLY think you FINALLY have it... BOOM something new enters the room... I tweak my dotfiles all the time. Especially since I'm trying to vim-bind everything. Ironically I'm also in the search for another IRC Client while typing this in WeeChat. The gods have no mercy +2020-08-09 00:10:43 <-- martian67 (~martian67@about/linux/regular/martian67) has quit (Ping timeout: 240 seconds) +2020-08-09 00:11:36 NetSysFire customizing things is fine. you are optimizing your machine for yourself basically. i recommend to automate your dotfile deployment and similar tasks +2020-08-09 00:13:15 <-- sevu (~sevu@2a01:c23:6446:d800:781d:24ff:fed2:5c17) has quit (Ping timeout: 244 seconds) +2020-08-09 00:13:38 --> martian67 (~martian67@about/linux/regular/martian67) has joined #archlinux +2020-08-09 00:13:51 --> sevu (~sevu@2a01:c22:3457:ae00:781d:24ff:fed2:5c17) has joined #archlinux +2020-08-09 00:13:56 <-- fweht (uid404746@gateway/web/irccloud.com/x-lwjaphdrpnykbaks) has quit (Quit: Connection closed for inactivity) +2020-08-09 00:14:29 dustvoice Well I've basically got a dotfiles repo with submodules that I can simply clone into my home and I'm ready to go. For everything else I've got a custom guide, which I'm knowing by heart by now. Automated dotfile deployment never kind of met all my expectations, so I'd rather do things manually +2020-08-09 00:14:47 --> darkstardevx (~darkstard@2601:1c2:300:c8a0::da15) has joined #archlinux +2020-08-09 00:15:25 --> emptiedsoul (~emptiedso@109.225.40.181) has joined #archlinux +2020-08-09 00:15:58 NetSysFire personally i hate settings things up manually. i dont trust my hands anymore, there will be typos. it will save me some time, especially because typos are frustrating and hard to debug +2020-08-09 00:16:56 <-- emptiedsoul (~emptiedso@109.225.40.181) has quit (Quit: WeeChat 2.9) +2020-08-09 00:17:04 danielrparks I love setting things up, but I agree typos can be little demons that come to bite you later +2020-08-09 00:17:33 dustvoice well, new install, git init, set remote with upstream and pull. And I'm off to a great start +2020-08-09 00:17:50 dustvoice well not entirely... git submodule update --recursive --init helps too +2020-08-09 00:18:04 <-- Szybet (b97f165f@gateway/web/cgi-irc/kiwiirc.com/ip.185.127.22.95) has quit (Quit: Connection closed) +2020-08-09 00:18:24 dustvoice And a smartcard, to have my keys. Portable af ':] +2020-08-09 00:18:45 <-- Carduus (~Carduus@pc199.phh.uni-kiel.de) has quit (Ping timeout: 240 seconds) +2020-08-09 00:19:17 <-- nkuld4 (~nkuld4@2601:447:8100:ce0:af7a:1c40:84f8:e6f7) has quit (Ping timeout: 260 seconds) +2020-08-09 00:19:57 --> zuntik (~thomas@2001:8a0:7f61:a300:2004:2f84:c7cc:e585) has joined #archlinux +2020-08-09 00:20:03 zuntik hieelo. +2020-08-09 00:20:07 NetSysFire !give zuntik welcome +2020-08-09 00:20:07 zuntik *Hello +2020-08-09 00:20:08 phrik zuntik: Welcome to #archlinux, tell us how you fucked up. +2020-08-09 00:20:32 zuntik haha thanks phrik +2020-08-09 00:20:34 NetSysFire i have a ton of custom stuff. selfmade conky widgets, hacky scripts and ugly configs. it would take me a long time to deploy them +2020-08-09 00:20:38 NetSysFire !give zuntik bot +2020-08-09 00:20:39 phrik zuntik: I'm a bot! ~does the binary solo~ 00001 000011 0000111 +2020-08-09 00:20:54 --> ilhanraja (~ilhanraja@104.37.129.153) has joined #archlinux +2020-08-09 00:21:07 --> nessonic (~nessonic@2601:247:c480:24e0::98dc) has joined #archlinux +2020-08-09 00:21:17 <-- desmu (~desmu@2a02:908:391:8260:3c1:9333:2bd5:4202) has quit (Remote host closed the connection) +2020-08-09 00:21:22 zuntik I have a question about fstab: I'm runnig archlinuxarm on my raspberrypi 4 +2020-08-09 00:21:31 NetSysFire !alarm +2020-08-09 00:21:32 phrik If you're here because of an issue with your Raspberry Pi or other ARM device, join #archlinux-arm. +2020-08-09 00:21:32 <-- rileyreid (~ugjka@m90-139-71-66.cust.tele2.lv) has quit (Ping timeout: 256 seconds) +2020-08-09 00:21:44 dustvoice I love that alarm xD +2020-08-09 00:21:47 zuntik ah nothing wrong with the pi +2020-08-09 00:21:58 Scimmia of course not +2020-08-09 00:22:14 Scimmia Arch just doesn't run on it, it's x86_64 only +2020-08-09 00:22:22 zuntik I just don't understand why the root partition is not listed in fstab +2020-08-09 00:22:27 zuntik only the boot partition +2020-08-09 00:22:35 zuntik that's all I want to know +2020-08-09 00:22:48 zuntik fstab has only one entry +2020-08-09 00:22:52 zuntik why is this? +2020-08-09 00:23:00 dustvoice Well you could always make your own entry? +2020-08-09 00:23:06 Scimmia ask your distro, since they're the ones that set it up +2020-08-09 00:23:12 <-- HuntsMan (~hunts@unaffiliated/huntsman) has quit (Quit: Konversation terminated!) +2020-08-09 00:23:16 danielrparks you're probably using the root= command-line argument to tell the kernel where the root filesystem is, so you don't need it in fstab? +2020-08-09 00:23:33 --> mluser-home (~mluser-ho@cpe-107-11-253-108.columbus.res.rr.com) has joined #archlinux +2020-08-09 00:23:40 NetSysFire !notarch +2020-08-09 00:23:41 phrik This channel is for Arch Linux support only. Also see https://wiki.archlinux.org/index.php/Code_of_conduct#Arch_Linux_distribution_support_.2Aonly.2A +2020-08-09 00:23:43 dustvoice It's not that we don't wonna help, it's just that with custom distros, in this case archlinux-arm do custom stuff +2020-08-09 00:24:11 dustvoice So we don't know what special quirks archlinux-arm might have cause we run x86_64 +2020-08-09 00:24:45 --> andril (~andril@2601:586:8400:a:488e:8cac:da17:904) has joined #archlinux +2020-08-09 00:24:56 <-- mluser-home (~mluser-ho@cpe-107-11-253-108.columbus.res.rr.com) has quit (Read error: Connection reset by peer) +2020-08-09 00:25:04 zuntik yes yes. I understand. I asked here because I expected the question to be general. I think the reply I got here is satisfactory: the bootloader booted it +2020-08-09 00:25:14 zuntik I just want to make sure that if I add my own entry there +2020-08-09 00:25:21 zuntik it will mount +2020-08-09 00:25:28 --> HuntsMan (~hunts@unaffiliated/huntsman) has joined #archlinux +2020-08-09 00:25:35 zuntik I'll ask the other channel then. thank you! +2020-08-09 00:26:13 dustvoice Yes. If you really need it, making an fstab entry is pretty easy +2020-08-09 00:26:14 --> mluser-home (~mluser-ho@cpe-107-11-253-108.columbus.res.rr.com) has joined #archlinux +2020-08-09 00:27:11 dustvoice You will have to do it many more times probably while running arch 'xO +2020-08-09 00:27:19 <-- Al3v (~arch@85-76-145-47-nat.elisa-mobile.fi) has quit (Quit: Leaving) +2020-08-09 00:27:26 zuntik dustvoice: I want to boot 2 partitions that are on a huge external hard drive: one that is exfat and the other will be btrfs (necessary packages are installed) +2020-08-09 00:27:43 zuntik auto mount I should say +2020-08-09 00:28:24 <-- aw1 (~aw1@unaffiliated/aw1) has quit (Quit: Leaving) +2020-08-09 00:28:27 zuntik thank you all! +2020-08-09 00:29:17 <-- purist (~purist@gateway/tor-sasl/purist) has quit (Remote host closed the connection) +2020-08-09 00:29:37 <-- alexherbo2 (~alexherbo@lmontsouris-659-1-2-186.w193-248.abo.wanadoo.fr) has quit (Ping timeout: 264 seconds) +2020-08-09 00:30:03 --> purist (~purist@gateway/tor-sasl/purist) has joined #archlinux +2020-08-09 00:32:11 <-- danielrparks (~danielrpa@2600:1700:3f7b:200::25) has quit (Quit: Leaving) +2020-08-09 00:32:17 j0hannes I still can't find any reason why my wifi isnt't working anymore; journalctl says rfkill1: found Wi-Fi radio killswitch, what does that mean? +2020-08-09 00:33:13 binTrl I'm getting "Cannot create atjob file /var/spool/atd/a0000601961f3a: Permission denied" while running at, /var/spool : http://ix.io/2tC8 any idea what's wrong ? +2020-08-09 00:33:37 --> ttyX_ (~ttyX@unaffiliated/ttyx) has joined #archlinux +2020-08-09 00:33:41 NetSysFire j0hannes: do you have a hw switch which toggles your wifi? also rfkill list +2020-08-09 00:33:52 dustvoice j0hannes: The message you posted shouldn't be the most unusual. +2020-08-09 00:34:33 <-- pnd (~un@104.221.66.247) has quit (Ping timeout: 265 seconds) +2020-08-09 00:34:44 NetSysFire they asked the question a few hours ago, i told them to do the rfkill stuff and to search for any relevant buttons that may do things +2020-08-09 00:35:06 NetSysFire what device is this? +2020-08-09 00:35:56 <-- ttyX (~ttyX@unaffiliated/ttyx) has quit (Ping timeout: 256 seconds) +2020-08-09 20:35:21 --> dustvoice (~dustvoice@89-201-184-177.dsl.optinet.hr) has joined #archlinux +2020-08-09 20:35:21 -- Topic for #archlinux is "Welcome to Arch Linux, Good Luck: https://archlinux.org | Rules: https://goo.gl/XWFreH | Pastebins: see !paste | status.archlinux.org | Installing? New `base` package; read the install guide carefully" +2020-08-09 20:35:21 -- Topic set by phrik (~phrik@archlinux/bot/phrik) on Fri, 24 Jul 2020 22:12:54 +2020-08-09 20:35:21 -- Channel #archlinux: 1725 nicks (2 ops, 0 voices, 1723 normals) +2020-08-09 20:35:24 -- Channel created on Sun, 15 Feb 2004 06:08:31 diff --git a/.weechat/logs/irc.freenode.#latex.weechatlog b/.weechat/logs/irc.freenode.#latex.weechatlog new file mode 100644 index 00000000..d7d2030d --- /dev/null +++ b/.weechat/logs/irc.freenode.#latex.weechatlog @@ -0,0 +1,48 @@ +2020-05-17 11:59:51 --> dustvoice (~dustvoice@200116b82055020098f1e36c648e2070.dip.versatel-1u1.de) has joined #latex +2020-05-17 11:59:51 -- Topic for #latex is "Please provide a minimal working example | FAQ: http://texfaq.org | Ask donald-bot about ,,lshort | For previews, ask donald-bot about ,,texbot | listings package for source code. Due to spam only registered users can speak" +2020-05-17 11:59:51 -- Topic set by mh_le (~Mads@unaffiliated/mhle/x-0173978) on Thu, 27 Feb 2020 19:38:49 +2020-05-17 11:59:51 -- Channel #latex: 268 nicks (1 op, 0 voices, 267 normals) +2020-05-17 11:59:51 -- PvNotice(ChanServ): Hi and Welcome to #LaTeX! Before you ask, please read the FAQ at http://faq.tug.org and the documentation at http://www.tug.org/begin.html +2020-05-17 11:59:53 -- Channel created on Sun, 26 Nov 2006 07:42:42 +2020-05-17 12:08:15 dustvoice Hope this is the right place to ask. I'm currently pretty happy with my latex document but one thing is really annoying me and I can't seem to find a solution on the internet. \texttt, as well as \mintedinline don't seem to do linebreaks correctly. The generated PDF can be found under https://git.dustvoice.de/DustVoice/DustArch/raw/branch/master/latex/Documentation.pdf. On page 26 an example of a +2020-05-17 12:08:15 dustvoice non occuring but needed linebreak in \mintedinline can be seen, on page 27 an example for \texttt. The source code can be found under https://git.dustvoice.de/DustVoice/DustArch/src/branch/master/latex/Documentation.tex with the page 26 example being on line 739 and the page 27 one on line 757. I would love to resolve this last issue I can't seem to get working. I am compiling using xelatex. Thanks +2020-05-17 12:08:15 dustvoice in advace +2020-05-17 12:08:51 dustvoice EDIT: Sorry its \mintinline not \mintedinline +2020-05-17 12:16:45 hrnz btw I use arch +2020-05-17 12:19:03 hrnz anyway, font selection does not change hyphenation, but I wouldn't know how to hyphenate /usr/share/zoneinfo either +2020-05-17 12:19:22 hrnz I don't know whether \mintinline is breakable but it's probably in the manual +2020-05-17 12:20:39 hrnz you can propose possible hyphenation points like this: /usr/\-share/\-zone\-info +2020-05-17 12:20:45 hrnz but seriously, don't break that. +2020-05-17 12:24:52 dustvoice Yeah thought about that too, but would it be possible somehow, to make latex put 'too long' texttt lines on the next line or smth? +2020-05-17 12:24:55 <-- Logical-Boysenbe (~Thunderbi@net-2-37-185-98.cust.vodafonedsl.it) has quit (Quit: Logical-Boysenbe) +2020-05-17 12:25:24 dustvoice Cause if I have to handle all those things manually, I feel more like working in Word than LaTeX +2020-05-17 12:27:03 dustvoice I also tried enabling an option of the 'hyphenat' package, but it just lead to a situation where half of the texttt worked like intended and the other half didn't +2020-05-17 12:27:12 dustvoice Thanks btw for the fast response +2020-05-17 12:27:40 hrnz \texttt just sets its argument in the tt font. +2020-05-17 12:28:35 dustvoice ah I see. Well how would one resolve such an issue in the LaTeX world ':) +2020-05-17 12:28:51 dustvoice Hyphenation really does seem to be a bad idea +2020-05-17 12:29:11 dustvoice but I don't know if a linebreak before such a long texttt would make sense either +2020-05-17 12:29:58 dustvoice In addition to it not being automatic. Or is there a way to make LaTeX break before the texttt automatically if it's "too long" +2020-05-17 12:30:16 dustvoice I'm lost x_X +2020-05-17 12:33:44 dustvoice Yeah I understand it now. Wouldn't work either if it wasn' +2020-05-17 12:33:48 dustvoice t in tt fon +2020-05-17 12:33:53 dustvoice *font +2020-05-17 12:35:05 dustvoice But the question still stands as to how one would normally resolve such an issue. Linebreak before the non-hyphenatable word would still be the most reasonable way to do it in my opinion, but I might be completely wrong... +2020-05-17 12:41:12 --> linux_dream (~isaac@unaffiliated/linux-dream/x-5839402) has joined #latex +2020-05-17 12:46:32 <-- sagax (~sagax_nb@213.138.71.146) has quit (Remote host closed the connection) +2020-05-17 12:48:24 --> greedom (~greedom@2001:16b8:2e72:df00:add6:6775:6cee:d440) has joined #latex +2020-05-17 12:59:50 dustvoice Alright so I tried using \allowbreak{} to allow a linebreak to occur within /usr/share/zoneinfo (/usr/\allowbreak{}share/\allowbreak{}zoneinfo) and it works ... kind of ... Cause one line below it, it looks ugly af. It breaks the word, but so "late" that it still overfills the line +2020-05-17 13:00:49 dustvoice See https://git.dustvoice.de/DustVoice/DustArch/raw/branch/master/latex/Documentation.pdf page 27 for the problem again. +2020-05-17 13:01:41 dustvoice And https://git.dustvoice.de/DustVoice/DustArch/src/branch/master/latex/Documentation.tex line 754 for the source +2020-05-17 13:01:55 dustvoice Thanks again for the help. Really appreciate it +2020-05-17 13:54:47 <-- jkwnki (~jkwnki@p200300CD472B60001E1BB5FFFE7A47F7.dip0.t-ipconnect.de) has quit (Ping timeout: 260 seconds) +2020-05-17 14:01:09 --> barteks2x (~barteks2x@c137-123.icpnet.pl) has joined #latex +2020-05-17 14:01:15 <-- linux_dream (~isaac@unaffiliated/linux-dream/x-5839402) has quit (Quit: WeeChat 2.8) +2020-05-17 14:03:12 <-- aliss (~ypm@238.red-88-22-57.staticip.rima-tde.net) has quit (Quit: WeeChat 2.8) +2020-05-17 14:03:41 --> aliss (~ypm@238.red-88-22-57.staticip.rima-tde.net) has joined #latex +2020-05-17 14:52:27 dustvoice exit +2020-05-17 14:52:32 dustvoice oops +2020-05-17 14:52:37 dustvoice \leave +2020-05-17 14:53:21 --> jkwnki (~jkwnki@p200300CD472B60001E1BB5FFFE7A47F7.dip0.t-ipconnect.de) has joined #latex +2020-05-17 14:53:27 <-- dustvoice (~dustvoice@200116b82055020098f1e36c648e2070.dip.versatel-1u1.de) has left #latex ("WeeChat 2.8") +2020-05-17 14:53:31 -- irc: disconnected from server diff --git a/.weechat/logs/irc.server.freenode.weechatlog b/.weechat/logs/irc.server.freenode.weechatlog new file mode 100644 index 00000000..71afb6ec --- /dev/null +++ b/.weechat/logs/irc.server.freenode.weechatlog @@ -0,0 +1,528 @@ +2020-01-29 20:18:46 -- irc: connecting to server irc.freenode.net/6667... +2020-01-29 20:18:46 -- irc: connected to irc.freenode.net/6667 (2600:3c02::f03c:91ff:fe59:7d2e) +2020-01-29 20:18:46 -- moon.freenode.net: *** Looking up your hostname... +2020-01-29 20:18:46 -- moon.freenode.net: *** Checking Ident +2020-01-29 20:18:46 -- moon.freenode.net: *** Couldn't look up your hostname +2020-01-29 20:18:55 -- moon.freenode.net: *** No Ident response +2020-01-29 20:18:55 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-01-29 20:18:55 -- Your host is moon.freenode.net[2600:3c02::f03c:91ff:fe59:7d2e/6667], running version ircd-seven-1.1.9 +2020-01-29 20:18:55 -- This server was created Thu Dec 19 2019 at 20:29:30 UTC +2020-01-29 20:18:55 -- moon.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-01-29 20:18:55 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-01-29 20:18:55 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 SAFELIST ELIST=CTU CPRIVMSG :are supported by this server +2020-01-29 20:18:55 -- CNOTICE WHOX ETRACE KNOCK :are supported by this server +2020-01-29 20:18:55 -- There are 103 users and 86883 invisible on 30 servers +2020-01-29 20:18:55 -- 33 :IRC Operators online +2020-01-29 20:18:55 -- 5 :unknown connection(s) +2020-01-29 20:18:55 -- 51395 :channels formed +2020-01-29 20:18:55 -- I have 6103 clients and 1 servers +2020-01-29 20:18:55 -- 6103 6267 :Current local users 6103, max 6267 +2020-01-29 20:18:55 -- 86986 87738 :Current global users 86986, max 87738 +2020-01-29 20:18:55 -- Highest connection count: 6268 (6267 clients) (195915 connections received) +2020-01-29 20:18:55 -- - moon.freenode.net Message of the Day - +2020-01-29 20:18:55 -- - Welcome to moon.freenode.net in Atlanta, GA, US! Thanks to +2020-01-29 20:18:55 -- - Linode for sponsoring this server! +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - MOON, ELIZABETH (1945-) Born in South Texas, USA, +2020-01-29 20:18:55 -- - Elizabeth Moon is an American science fiction and fantasy +2020-01-29 20:18:55 -- - author with over 20 published works. Her novel The Speed +2020-01-29 20:18:55 -- - Of Dark received the Arthur C. Clarke and Nebula Awards in 2003 +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - Welcome to freenode - supporting the free and open source +2020-01-29 20:18:55 -- - software communities since 1998. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - By connecting to freenode you indicate that you have read and +2020-01-29 20:18:55 -- - accept our policies and guidelines as set out on https://freenode.net +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - In the event that you observe behaviour that contravenes our policies, +2020-01-29 20:18:55 -- - please notify a volunteer staff member via private message, or send us an +2020-01-29 20:18:55 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-01-29 20:18:55 -- - situation within a reasonable period of time, and we may request further +2020-01-29 20:18:55 -- - information or, as appropriate, involve other parties such as channel operators +2020-01-29 20:18:55 -- - Group Contacts representing an on-topic group. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - freenode runs an open proxy scanner. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - If you are looking for assistance, you may be able to find a list of +2020-01-29 20:18:55 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-01-29 20:18:55 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-01-29 20:18:55 -- - any of us at any time. Please note that freenode predominantly provides +2020-01-29 20:18:55 -- - assistance via private message, and while we have a network channel the +2020-01-29 20:18:55 -- - primary venue for support requests is via private message to a member +2020-01-29 20:18:55 -- - of the volunteer staff team. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-01-29 20:18:55 -- - the project, or the communities that we host. The majority of such notices +2020-01-29 20:18:55 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-01-29 20:18:55 -- - do not miss them. Important messages relating to the freenode project, including +2020-01-29 20:18:55 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-01-29 20:18:55 -- - global notices. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - Representing an on-topic project? Don't forget to register, more information +2020-01-29 20:18:55 -- - can be found on the https://freenode.net website under "Group Registration". +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-01-29 20:18:55 -- - network going for close to two decades. +2020-01-29 20:18:55 -- - +2020-01-29 20:18:55 -- - Thank you for using freenode! +2020-01-29 20:18:55 -- End of /MOTD command. +2020-01-29 20:18:55 -- User mode [+i] by dustvoice +2020-01-29 20:18:55 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-01-29 20:18:55 -- freenode-connect (frigg@freenode/utility-bot/frigg): Welcome to freenode. To protect the network all new connections will be scanned for vulnerabilities. This will not harm your computer, and vulnerable hosts will be notified. +2020-01-29 20:18:55 -- CTCP requested by freenode-connect: VERSION +2020-01-29 20:18:55 -- CTCP reply to freenode-connect: VERSION WeeChat 2.7 (Dec 26 2019 01:32:21) +2020-01-29 20:19:28 -- irc: disconnected from server +2020-01-29 20:20:53 -- irc: connecting to server irc.freenode.net/6667... +2020-01-29 20:20:53 -- irc: connected to irc.freenode.net/6667 (2600:3c02::f03c:91ff:fe59:7d2e) +2020-01-29 20:20:54 -- moon.freenode.net: *** Looking up your hostname... +2020-01-29 20:20:54 -- moon.freenode.net: *** Checking Ident +2020-01-29 20:20:54 -- moon.freenode.net: *** Couldn't look up your hostname +2020-01-29 20:21:00 -- moon.freenode.net: *** No Ident response +2020-01-29 20:21:00 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-01-29 20:21:00 -- Your host is moon.freenode.net[2600:3c02::f03c:91ff:fe59:7d2e/6667], running version ircd-seven-1.1.9 +2020-01-29 20:21:00 -- This server was created Thu Dec 19 2019 at 20:29:30 UTC +2020-01-29 20:21:00 -- moon.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-01-29 20:21:00 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-01-29 20:21:00 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 SAFELIST ELIST=CTU CPRIVMSG :are supported by this server +2020-01-29 20:21:00 -- CNOTICE WHOX ETRACE KNOCK :are supported by this server +2020-01-29 20:21:00 -- There are 102 users and 86881 invisible on 30 servers +2020-01-29 20:21:00 -- 33 :IRC Operators online +2020-01-29 20:21:00 -- 3 :unknown connection(s) +2020-01-29 20:21:00 -- 51399 :channels formed +2020-01-29 20:21:00 -- I have 6104 clients and 1 servers +2020-01-29 20:21:00 -- 6104 6267 :Current local users 6104, max 6267 +2020-01-29 20:21:00 -- 86983 87738 :Current global users 86983, max 87738 +2020-01-29 20:21:00 -- Highest connection count: 6268 (6267 clients) (195919 connections received) +2020-01-29 20:21:00 -- - moon.freenode.net Message of the Day - +2020-01-29 20:21:00 -- - Welcome to moon.freenode.net in Atlanta, GA, US! Thanks to +2020-01-29 20:21:00 -- - Linode for sponsoring this server! +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - MOON, ELIZABETH (1945-) Born in South Texas, USA, +2020-01-29 20:21:00 -- - Elizabeth Moon is an American science fiction and fantasy +2020-01-29 20:21:00 -- - author with over 20 published works. Her novel The Speed +2020-01-29 20:21:00 -- - Of Dark received the Arthur C. Clarke and Nebula Awards in 2003 +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - Welcome to freenode - supporting the free and open source +2020-01-29 20:21:00 -- - software communities since 1998. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - By connecting to freenode you indicate that you have read and +2020-01-29 20:21:00 -- - accept our policies and guidelines as set out on https://freenode.net +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - In the event that you observe behaviour that contravenes our policies, +2020-01-29 20:21:00 -- - please notify a volunteer staff member via private message, or send us an +2020-01-29 20:21:00 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-01-29 20:21:00 -- - situation within a reasonable period of time, and we may request further +2020-01-29 20:21:00 -- - information or, as appropriate, involve other parties such as channel operators +2020-01-29 20:21:00 -- - Group Contacts representing an on-topic group. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - freenode runs an open proxy scanner. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - If you are looking for assistance, you may be able to find a list of +2020-01-29 20:21:00 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-01-29 20:21:00 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-01-29 20:21:00 -- - any of us at any time. Please note that freenode predominantly provides +2020-01-29 20:21:00 -- - assistance via private message, and while we have a network channel the +2020-01-29 20:21:00 -- - primary venue for support requests is via private message to a member +2020-01-29 20:21:00 -- - of the volunteer staff team. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-01-29 20:21:00 -- - the project, or the communities that we host. The majority of such notices +2020-01-29 20:21:00 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-01-29 20:21:00 -- - do not miss them. Important messages relating to the freenode project, including +2020-01-29 20:21:00 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-01-29 20:21:00 -- - global notices. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - Representing an on-topic project? Don't forget to register, more information +2020-01-29 20:21:00 -- - can be found on the https://freenode.net website under "Group Registration". +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-01-29 20:21:00 -- - network going for close to two decades. +2020-01-29 20:21:00 -- - +2020-01-29 20:21:00 -- - Thank you for using freenode! +2020-01-29 20:21:00 -- End of /MOTD command. +2020-01-29 20:21:00 -- User mode [+i] by dustvoice +2020-01-29 20:21:00 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-01-29 20:21:01 -- freenode-connect (frigg@freenode/utility-bot/frigg): Welcome to freenode. To protect the network all new connections will be scanned for vulnerabilities. This will not harm your computer, and vulnerable hosts will be notified. +2020-01-29 20:21:01 -- CTCP requested by freenode-connect: VERSION +2020-01-29 20:21:01 -- CTCP reply to freenode-connect: VERSION WeeChat 2.7 (Dec 26 2019 01:32:21) +2020-01-29 20:21:07 -- MSG(NickServ): identify **************** +2020-01-29 20:21:07 -- NickServ (NickServ@services.): You are now identified for dustvoice. +2020-01-29 20:21:18 -- MSG(NickServ): help +2020-01-29 20:21:19 -- NickServ (NickServ@services.): ***** NickServ Help ***** +2020-01-29 20:21:19 -- NickServ (NickServ@services.): NickServ allows users to 'register' a nickname, and stop +2020-01-29 20:21:19 -- NickServ (NickServ@services.): others from using that nick. NickServ allows the owner of a +2020-01-29 20:21:19 -- NickServ (NickServ@services.): nickname to disconnect a user from the network that is using +2020-01-29 20:21:19 -- NickServ (NickServ@services.): their nickname. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): +2020-01-29 20:21:19 -- NickServ (NickServ@services.): For more information on a command, type: +2020-01-29 20:21:19 -- NickServ (NickServ@services.): /msg NickServ help +2020-01-29 20:21:19 -- NickServ (NickServ@services.): For a verbose listing of all commands, type: +2020-01-29 20:21:19 -- NickServ (NickServ@services.): /msg NickServ help commands +2020-01-29 20:21:19 -- NickServ (NickServ@services.): +2020-01-29 20:21:19 -- NickServ (NickServ@services.): The following commands are available: +2020-01-29 20:21:19 -- NickServ (NickServ@services.): GHOST Reclaims use of a nickname. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): GROUP Adds a nickname to your account. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): IDENTIFY Identifies to services for a nickname. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): INFO Displays information on registrations. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): LISTCHANS Lists channels that you have access to. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): REGISTER Registers a nickname. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): RELEASE Releases a services enforcer. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): SENDPASS Email registration passwords. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): SET Sets various control flags. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): UNGROUP Removes a nickname from your account. +2020-01-29 20:21:19 -- NickServ (NickServ@services.): +2020-01-29 20:21:19 -- NickServ (NickServ@services.): Other commands: ACC, ACCESS, CERT, DROP, HELP, LISTLOGINS, +2020-01-29 20:21:19 -- NickServ (NickServ@services.): LISTOWNMAIL, LOGOUT, REGAIN, SETPASS, STATUS, +2020-01-29 20:21:19 -- NickServ (NickServ@services.): TAXONOMY, VACATION, VERIFY +2020-01-29 20:21:19 -- NickServ (NickServ@services.): ***** End of Help ***** +2020-01-29 20:21:31 -- MSG(NickServ): SETPASS +2020-01-29 20:21:32 -- NickServ (NickServ@services.): Insufficient parameters for SETPASS. +2020-01-29 20:21:32 -- NickServ (NickServ@services.): Syntax: SETPASS +2020-01-29 20:21:51 -- MSG(NickServ): SET +2020-01-29 20:21:51 -- NickServ (NickServ@services.): Insufficient parameters for SET. +2020-01-29 20:21:52 -- NickServ (NickServ@services.): Syntax: SET +2020-01-29 20:21:55 -- MSG(NickServ): SET PASS +2020-01-29 20:21:55 -- NickServ (NickServ@services.): Invalid set command. Use /msg NickServ HELP SET for a command listing. +2020-01-29 20:22:00 -- MSG(NickServ): HELP SET +2020-01-29 20:22:00 -- NickServ (NickServ@services.): ***** NickServ Help ***** +2020-01-29 20:22:00 -- NickServ (NickServ@services.): Help for SET: +2020-01-29 20:22:00 -- NickServ (NickServ@services.): +2020-01-29 20:22:00 -- NickServ (NickServ@services.): SET allows you to set various control flags +2020-01-29 20:22:00 -- NickServ (NickServ@services.): for nicknames that change the way certain +2020-01-29 20:22:00 -- NickServ (NickServ@services.): operations are performed on them. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): +2020-01-29 20:22:00 -- NickServ (NickServ@services.): The following subcommands are available: +2020-01-29 20:22:00 -- NickServ (NickServ@services.): ACCOUNTNAME Changes your account name. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): EMAIL Changes your e-mail address. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): EMAILMEMOS Forwards incoming memos to your e-mail address. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): ENFORCE Enables or disables automatic protection of a nickname. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): HIDEMAIL Hides your e-mail address. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): NEVEROP Prevents you from being added to access lists. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): NOMEMO Disables the ability to receive memos. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): NOOP Prevents services from setting modes upon you automatically. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): PASSWORD Changes the password associated with your account. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): PRIVATE Hides information about you from other users. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): PROPERTY Manipulates metadata entries associated with an account. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): PUBKEY Changes your ECDSA-NIST256p-CHALLENGE public key. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): QUIETCHG Allows you to opt-out of channel change messages. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): +2020-01-29 20:22:00 -- NickServ (NickServ@services.): For more information, use /msg NickServ HELP SET command. +2020-01-29 20:22:00 -- NickServ (NickServ@services.): ***** End of Help ***** +2020-01-29 20:22:10 -- MSG(NickServ): SET PASSWORD ******** +2020-01-29 20:22:10 -- NickServ (NickServ@services.): The password for dustvoice has been changed to 53295564. +2020-01-29 20:22:15 -- irc: disconnected from server +2020-03-03 14:38:43 -- irc: connecting to server irc.freenode.net/6667... +2020-03-03 14:38:44 -- irc: connected to irc.freenode.net/6667 (130.185.232.126) +2020-03-03 14:38:44 -- hitchcock.freenode.net: *** Looking up your hostname... +2020-03-03 14:38:44 -- hitchcock.freenode.net: *** Checking Ident +2020-03-03 14:38:44 -- hitchcock.freenode.net: *** Found your hostname +2020-03-03 14:38:52 -- hitchcock.freenode.net: *** No Ident response +2020-03-03 14:38:52 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-03-03 14:38:52 -- Your host is hitchcock.freenode.net[130.185.232.126/6667], running version ircd-seven-1.1.9 +2020-03-03 14:38:52 -- This server was created Wed Dec 18 2019 at 01:00:47 UTC +2020-03-03 14:38:52 -- hitchcock.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-03-03 14:38:52 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-03-03 14:38:52 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 WHOX SAFELIST ELIST=CTU :are supported by this server +2020-03-03 14:38:52 -- ETRACE CPRIVMSG CNOTICE KNOCK :are supported by this server +2020-03-03 14:38:52 -- There are 92 users and 85465 invisible on 30 servers +2020-03-03 14:38:52 -- 31 :IRC Operators online +2020-03-03 14:38:52 -- 66 :unknown connection(s) +2020-03-03 14:38:52 -- 42472 :channels formed +2020-03-03 14:38:52 -- I have 4578 clients and 1 servers +2020-03-03 14:38:52 -- 4578 5552 :Current local users 4578, max 5552 +2020-03-03 14:38:52 -- 85557 87738 :Current global users 85557, max 87738 +2020-03-03 14:38:52 -- Highest connection count: 5553 (5552 clients) (602247 connections received) +2020-03-03 14:38:52 -- - hitchcock.freenode.net Message of the Day - +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - Welcome to hitchcock.freenode.net in Sofia, Bulgaria, EU, kindly sponsored by +2020-03-03 14:38:52 -- - Elemental TV (www.elemental.tv) +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - HITCHCOCK, SIR ALFRED [1899 - 1980] Born in Essex, +2020-03-03 14:38:52 -- - England, Sir Alfred Hitchcock was a noted film director +2020-03-03 14:38:52 -- - and producer. Over a long career he pioneered many modern +2020-03-03 14:38:52 -- - techniques in film-making, made more than 50 feature films, +2020-03-03 14:38:52 -- - and influenced many present-day directors and producers. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - Welcome to freenode - supporting the free and open source +2020-03-03 14:38:52 -- - software communities since 1998. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - By connecting to freenode you indicate that you have read and +2020-03-03 14:38:52 -- - accept our policies and guidelines as set out on https://freenode.net +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - In the event that you observe behaviour that contravenes our policies, +2020-03-03 14:38:52 -- - please notify a volunteer staff member via private message, or send us an +2020-03-03 14:38:52 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-03-03 14:38:52 -- - situation within a reasonable period of time, and we may request further +2020-03-03 14:38:52 -- - information or, as appropriate, involve other parties such as channel operators +2020-03-03 14:38:52 -- - Group Contacts representing an on-topic group. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - freenode runs an open proxy scanner. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - If you are looking for assistance, you may be able to find a list of +2020-03-03 14:38:52 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-03-03 14:38:52 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-03-03 14:38:52 -- - any of us at any time. Please note that freenode predominantly provides +2020-03-03 14:38:52 -- - assistance via private message, and while we have a network channel the +2020-03-03 14:38:52 -- - primary venue for support requests is via private message to a member +2020-03-03 14:38:52 -- - of the volunteer staff team. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-03-03 14:38:52 -- - the project, or the communities that we host. The majority of such notices +2020-03-03 14:38:52 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-03-03 14:38:52 -- - do not miss them. Important messages relating to the freenode project, including +2020-03-03 14:38:52 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-03-03 14:38:52 -- - global notices. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - Representing an on-topic project? Don't forget to register, more information +2020-03-03 14:38:52 -- - can be found on the https://freenode.net website under "Group Registration". +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-03-03 14:38:52 -- - network going for close to two decades. +2020-03-03 14:38:52 -- - +2020-03-03 14:38:52 -- - Thank you for using freenode! +2020-03-03 14:38:52 -- End of /MOTD command. +2020-03-03 14:38:52 -- User mode [+i] by dustvoice +2020-03-03 14:38:52 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-03-03 14:39:02 -- MSG(NickServ): identify **************** +2020-03-03 14:39:02 -- NickServ (NickServ@services.): Invalid password for dustvoice. +2020-03-03 14:39:10 -- MSG(NickServ): identify ******** +2020-03-03 14:39:10 -- NickServ (NickServ@services.): You are now identified for dustvoice. +2020-03-03 14:39:11 -- NickServ (NickServ@services.): 1 failed login since last login. +2020-03-03 14:39:11 -- NickServ (NickServ@services.): Last failed attempt from: dustvoice!~dustvoice@p509754c8.dip0.t-ipconnect.de on Mar 03 13:39:01 2020. +2020-03-03 14:39:20 -- bspwm: No such channel +2020-03-03 14:39:31 -- bspwm: No such channel +2020-03-03 14:45:50 -- irc: disconnected from server +2020-05-17 11:59:30 -- irc: connecting to server irc.freenode.net/6667... +2020-05-17 11:59:30 -- irc: connected to irc.freenode.net/6667 (2001:6b0:e:2a18::119) +2020-05-17 11:59:30 -- leguin.freenode.net: *** Looking up your hostname... +2020-05-17 11:59:30 -- leguin.freenode.net: *** Checking Ident +2020-05-17 11:59:30 -- leguin.freenode.net: *** No Ident response +2020-05-17 11:59:30 -- leguin.freenode.net: *** Found your hostname +2020-05-17 11:59:30 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-05-17 11:59:30 -- Your host is leguin.freenode.net[2001:6b0:e:2a18::119/6667], running version ircd-seven-1.1.9 +2020-05-17 11:59:30 -- This server was created Wed Feb 19 2020 at 12:18:38 UTC +2020-05-17 11:59:30 -- leguin.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-05-17 11:59:30 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-05-17 11:59:30 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 CPRIVMSG CNOTICE KNOCK :are supported by this server +2020-05-17 11:59:30 -- ETRACE SAFELIST ELIST=CTU WHOX MONITOR=100 :are supported by this server +2020-05-17 11:59:30 -- There are 98 users and 81201 invisible on 30 servers +2020-05-17 11:59:30 -- 38 :IRC Operators online +2020-05-17 11:59:30 -- 2 :unknown connection(s) +2020-05-17 11:59:30 -- 44433 :channels formed +2020-05-17 11:59:30 -- I have 4247 clients and 1 servers +2020-05-17 11:59:30 -- 4247 7957 :Current local users 4247, max 7957 +2020-05-17 11:59:30 -- 81299 89000 :Current global users 81299, max 89000 +2020-05-17 11:59:30 -- Highest connection count: 7958 (7957 clients) (362587 connections received) +2020-05-17 11:59:30 -- - leguin.freenode.net Message of the Day - +2020-05-17 11:59:30 -- - Welcome to leguin.freenode.net in Umeå, Sweden, EU! Thanks to +2020-05-17 11:59:30 -- - the Academic Computer Club at Umeå University for sponsoring +2020-05-17 11:59:30 -- - this server! +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - LE GUIN, URSULA K. (1929-2018) Born in Berkeley, California, +2020-05-17 11:59:30 -- - Ursula Le Guin was an American author primarily known for +2020-05-17 11:59:30 -- - her Science Fiction and Fantasy. She was awarded the Hugo +2020-05-17 11:59:30 -- - and Nebula awards, and was best known for her Earthsea +2020-05-17 11:59:30 -- - and Hainish series. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - Welcome to freenode - supporting the free and open source +2020-05-17 11:59:30 -- - software communities since 1998. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - By connecting to freenode you indicate that you have read and +2020-05-17 11:59:30 -- - accept our policies and guidelines as set out on https://freenode.net +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - In the event that you observe behaviour that contravenes our policies, +2020-05-17 11:59:30 -- - please notify a volunteer staff member via private message, or send us an +2020-05-17 11:59:30 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-05-17 11:59:30 -- - situation within a reasonable period of time, and we may request further +2020-05-17 11:59:30 -- - information or, as appropriate, involve other parties such as channel operators +2020-05-17 11:59:30 -- - Group Contacts representing an on-topic group. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - freenode runs an open proxy scanner. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - If you are looking for assistance, you may be able to find a list of +2020-05-17 11:59:30 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-05-17 11:59:30 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-05-17 11:59:30 -- - any of us at any time. Please note that freenode predominantly provides +2020-05-17 11:59:30 -- - assistance via private message, and while we have a network channel the +2020-05-17 11:59:30 -- - primary venue for support requests is via private message to a member +2020-05-17 11:59:30 -- - of the volunteer staff team. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-05-17 11:59:30 -- - the project, or the communities that we host. The majority of such notices +2020-05-17 11:59:30 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-05-17 11:59:30 -- - do not miss them. Important messages relating to the freenode project, including +2020-05-17 11:59:30 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-05-17 11:59:30 -- - global notices. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - Representing an on-topic project? Don't forget to register, more information +2020-05-17 11:59:30 -- - can be found on the https://freenode.net website under "Group Registration". +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-05-17 11:59:30 -- - network going for close to two decades. +2020-05-17 11:59:30 -- - +2020-05-17 11:59:30 -- - Thank you for using freenode! +2020-05-17 11:59:30 -- End of /MOTD command. +2020-05-17 11:59:30 -- User mode [+i] by dustvoice +2020-05-17 11:59:30 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-05-17 11:59:39 -- MSG(NickServ): identify ******** +2020-05-17 11:59:39 -- NickServ (NickServ@services.): You are now identified for dustvoice. +2020-05-17 14:53:31 -- irc: disconnected from server +2020-08-08 21:02:41 -- irc: connecting to server irc.freenode.net/6667... +2020-08-08 21:02:41 -- irc: connected to irc.freenode.net/6667 (38.229.70.22) +2020-08-08 21:02:41 -- card.freenode.net: *** Looking up your hostname... +2020-08-08 21:02:41 -- card.freenode.net: *** Checking Ident +2020-08-08 21:02:41 -- card.freenode.net: *** Found your hostname +2020-08-08 21:02:49 -- card.freenode.net: *** No Ident response +2020-08-08 21:02:49 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-08-08 21:02:49 -- Your host is card.freenode.net[38.229.70.22/6667], running version ircd-seven-1.1.9 +2020-08-08 21:02:49 -- This server was created Sun Jul 12 2020 at 20:44:33 UTC +2020-08-08 21:02:49 -- card.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-08-08 21:02:49 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-08-08 21:02:49 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 KNOCK CPRIVMSG CNOTICE :are supported by this server +2020-08-08 21:02:49 -- MONITOR=100 WHOX SAFELIST ELIST=CTU ETRACE :are supported by this server +2020-08-08 21:02:49 -- There are 105 users and 79840 invisible on 30 servers +2020-08-08 21:02:49 -- 44 :IRC Operators online +2020-08-08 21:02:49 -- 45 :unknown connection(s) +2020-08-08 21:02:49 -- 45226 :channels formed +2020-08-08 21:02:49 -- I have 4096 clients and 1 servers +2020-08-08 21:02:49 -- 4096 4327 :Current local users 4096, max 4327 +2020-08-08 21:02:49 -- 79945 87480 :Current global users 79945, max 87480 +2020-08-08 21:02:49 -- Highest connection count: 4328 (4327 clients) (274342 connections received) +2020-08-08 21:02:49 -- - card.freenode.net Message of the Day - +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - Welcome to card.freenode.net in Washington, DC, US, kindly sponsored by +2020-08-08 21:02:49 -- - Team Cymru (http://www.team-cymru.org). +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - CARD, ORSON SCOTT [1951-]. Born in Richland, Washington, Card grew up in +2020-08-08 21:02:49 -- - California, Arizona, and Utah. He lived in Brazil for two years as an unpaid +2020-08-08 21:02:49 -- - missionary for the Mormon Church. Author of the Ender and Alvin Maker books, +2020-08-08 21:02:49 -- - Card's science fiction and fantasy work is strongly influenced by his Mormon +2020-08-08 21:02:49 -- - cultural background. The first author to win the Hugo and Nebula novel awards +2020-08-08 21:02:49 -- - two years in a row, Card currently lives in Greensboro, North Carolina, US. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - Welcome to freenode - supporting the free and open source +2020-08-08 21:02:49 -- - software communities since 1998. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - By connecting to freenode you indicate that you have read and +2020-08-08 21:02:49 -- - accept our policies and guidelines as set out on https://freenode.net +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - In the event that you observe behaviour that contravenes our policies, +2020-08-08 21:02:49 -- - please notify a volunteer staff member via private message, or send us an +2020-08-08 21:02:49 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-08-08 21:02:49 -- - situation within a reasonable period of time, and we may request further +2020-08-08 21:02:49 -- - information or, as appropriate, involve other parties such as channel operators +2020-08-08 21:02:49 -- - Group Contacts representing an on-topic group. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - freenode runs an open proxy scanner. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - If you are looking for assistance, you may be able to find a list of +2020-08-08 21:02:49 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-08-08 21:02:49 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-08-08 21:02:49 -- - any of us at any time. Please note that freenode predominantly provides +2020-08-08 21:02:49 -- - assistance via private message, and while we have a network channel the +2020-08-08 21:02:49 -- - primary venue for support requests is via private message to a member +2020-08-08 21:02:49 -- - of the volunteer staff team. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-08-08 21:02:49 -- - the project, or the communities that we host. The majority of such notices +2020-08-08 21:02:49 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-08-08 21:02:49 -- - do not miss them. Important messages relating to the freenode project, including +2020-08-08 21:02:49 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-08-08 21:02:49 -- - global notices. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - Representing an on-topic project? Don't forget to register, more information +2020-08-08 21:02:49 -- - can be found on the https://freenode.net website under "Group Registration". +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-08-08 21:02:49 -- - network going for close to two decades. +2020-08-08 21:02:49 -- - +2020-08-08 21:02:49 -- - Thank you for using freenode! +2020-08-08 21:02:49 -- End of /MOTD command. +2020-08-08 21:02:49 -- User mode [+i] by dustvoice +2020-08-08 21:02:49 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-08-08 21:02:50 -- freenode-connect (frigg@freenode/utility-bot/frigg): Welcome to freenode. To protect the network all new connections will be scanned for vulnerabilities. This will not harm your computer, and vulnerable hosts will be notified. +2020-08-08 21:02:50 -- CTCP requested by freenode-connect: VERSION +2020-08-08 21:02:50 -- CTCP reply to freenode-connect: VERSION WeeChat 2.9 (Jul 19 2020 06:32:47) +2020-08-08 21:03:01 -- MSG(NickServ): identify ******** +2020-08-08 21:03:02 -- NickServ (NickServ@services.): You are now identified for dustvoice. +2020-08-09 20:34:48 -- irc: connecting to server irc.freenode.net/6667... +2020-08-09 20:34:48 -- irc: connected to irc.freenode.net/6667 (162.213.39.42) +2020-08-09 20:34:48 -- weber.freenode.net: *** Looking up your hostname... +2020-08-09 20:34:49 -- weber.freenode.net: *** Checking Ident +2020-08-09 20:34:49 -- weber.freenode.net: *** Found your hostname +2020-08-09 20:34:54 -- weber.freenode.net: *** No Ident response +2020-08-09 20:34:54 -- Welcome to the freenode Internet Relay Chat Network dustvoice +2020-08-09 20:34:54 -- Your host is weber.freenode.net[162.213.39.42/6667], running version ircd-seven-1.1.9 +2020-08-09 20:34:54 -- This server was created Wed Dec 18 2019 at 21:37:52 UTC +2020-08-09 20:34:54 -- weber.freenode.net ircd-seven-1.1.9 DOQRSZaghilopsuwz CFILMPQSbcefgijklmnopqrstuvz bkloveqjfI +2020-08-09 20:34:54 -- CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode STATUSMSG=@+ CALLERID=g CASEMAPPING=rfc1459 :are supported by this server +2020-08-09 20:34:54 -- CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz CLIENTVER=3.0 SAFELIST ELIST=CTU KNOCK :are supported by this server +2020-08-09 20:34:54 -- CPRIVMSG CNOTICE WHOX ETRACE MONITOR=100 :are supported by this server +2020-08-09 20:34:54 -- There are 103 users and 79816 invisible on 30 servers +2020-08-09 20:34:54 -- 43 :IRC Operators online +2020-08-09 20:34:54 -- 28 :unknown connection(s) +2020-08-09 20:34:54 -- 45139 :channels formed +2020-08-09 20:34:54 -- I have 4098 clients and 1 servers +2020-08-09 20:34:54 -- 4098 7419 :Current local users 4098, max 7419 +2020-08-09 20:34:54 -- 79919 90930 :Current global users 79919, max 90930 +2020-08-09 20:34:54 -- Highest connection count: 7420 (7419 clients) (2083372 connections received) +2020-08-09 20:34:54 -- - weber.freenode.net Message of the Day - +2020-08-09 20:34:54 -- - Welcome to weber.freenode.net in California, USA. +2020-08-09 20:34:54 -- - Thanks to https://www.cloudsigma.com/ for sponsoring +2020-08-09 20:34:54 -- - this server! +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - WEBER, DAVID M. (1952-), an American fantasy and scifi +2020-08-09 20:34:54 -- - author. Best known for his 'Honor Harrington' series, his +2020-08-09 20:34:54 -- - works span several genres, including alternate history, +2020-08-09 20:34:54 -- - epic fantasy, military scifi and space opera. He's also +2020-08-09 20:34:54 -- - done wargame design mainly for the StarFire tabletop +2020-08-09 20:34:54 -- - boardgame series, a job which later evolved into the novel, +2020-08-09 20:34:54 -- - 'Insurrection' (collaboration with Steve White, published +2020-08-09 20:34:54 -- - in 1990). +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - Welcome to freenode - supporting the free and open source +2020-08-09 20:34:54 -- - software communities since 1998. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - By connecting to freenode you indicate that you have read and +2020-08-09 20:34:54 -- - accept our policies and guidelines as set out on https://freenode.net +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - In the event that you observe behaviour that contravenes our policies, +2020-08-09 20:34:54 -- - please notify a volunteer staff member via private message, or send us an +2020-08-09 20:34:54 -- - e-mail to complaints@freenode.net -- we will do our best to address the +2020-08-09 20:34:54 -- - situation within a reasonable period of time, and we may request further +2020-08-09 20:34:54 -- - information or, as appropriate, involve other parties such as channel operators +2020-08-09 20:34:54 -- - Group Contacts representing an on-topic group. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - freenode runs an open proxy scanner. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - If you are looking for assistance, you may be able to find a list of +2020-08-09 20:34:54 -- - volunteer staff on '/stats p' (shows only on-call staff) or by joining +2020-08-09 20:34:54 -- - #freenode and using the '/who freenode/staff/*' command. You may message +2020-08-09 20:34:54 -- - any of us at any time. Please note that freenode predominantly provides +2020-08-09 20:34:54 -- - assistance via private message, and while we have a network channel the +2020-08-09 20:34:54 -- - primary venue for support requests is via private message to a member +2020-08-09 20:34:54 -- - of the volunteer staff team. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - From time to time, volunteer staff may send server-wide notices relating to +2020-08-09 20:34:54 -- - the project, or the communities that we host. The majority of such notices +2020-08-09 20:34:54 -- - will be sent as wallops, and you can '/mode +w' to ensure that you +2020-08-09 20:34:54 -- - do not miss them. Important messages relating to the freenode project, including +2020-08-09 20:34:54 -- - notices of upcoming maintenance and other scheduled downtime will be issued as +2020-08-09 20:34:54 -- - global notices. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - Representing an on-topic project? Don't forget to register, more information +2020-08-09 20:34:54 -- - can be found on the https://freenode.net website under "Group Registration". +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - Thank you also to our server sponsors for the sustained support in keeping the +2020-08-09 20:34:54 -- - network going for close to two decades. +2020-08-09 20:34:54 -- - +2020-08-09 20:34:54 -- - Thank you for using freenode! +2020-08-09 20:34:54 -- End of /MOTD command. +2020-08-09 20:34:54 -- User mode [+i] by dustvoice +2020-08-09 20:34:54 -- NickServ (NickServ@services.): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify . +2020-08-09 20:34:54 -- freenode-connect (frigg@freenode/utility-bot/frigg): Welcome to freenode. To protect the network all new connections will be scanned for vulnerabilities. This will not harm your computer, and vulnerable hosts will be notified. +2020-08-09 20:34:54 -- CTCP requested by freenode-connect: VERSION +2020-08-09 20:34:54 -- CTCP reply to freenode-connect: VERSION WeeChat 2.9 (Jul 19 2020 06:32:47) +2020-08-09 20:34:58 -- MSG(NickServ): identify ******** +2020-08-09 20:35:01 -- NickServ (NickServ@services.): You are now identified for dustvoice. diff --git a/.weechat/lua.conf b/.weechat/lua.conf new file mode 100644 index 00000000..fa4966b2 --- /dev/null +++ b/.weechat/lua.conf @@ -0,0 +1,14 @@ +# +# weechat -- lua.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/perl.conf b/.weechat/perl.conf new file mode 100644 index 00000000..31924b91 --- /dev/null +++ b/.weechat/perl.conf @@ -0,0 +1,14 @@ +# +# weechat -- perl.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/plugins.conf b/.weechat/plugins.conf new file mode 100644 index 00000000..b8a80bbb --- /dev/null +++ b/.weechat/plugins.conf @@ -0,0 +1,56 @@ +# +# weechat -- plugins.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[var] +python.vimode.copy_clipboard_cmd = "xclip -selection c" +python.vimode.imap_esc = "" +python.vimode.imap_esc_timeout = "1000" +python.vimode.line_number_prefix = "" +python.vimode.line_number_suffix = " " +python.vimode.mode_indicator_cmd_color = "white" +python.vimode.mode_indicator_cmd_color_bg = "cyan" +python.vimode.mode_indicator_insert_color = "white" +python.vimode.mode_indicator_insert_color_bg = "blue" +python.vimode.mode_indicator_normal_color = "white" +python.vimode.mode_indicator_normal_color_bg = "blue" +python.vimode.mode_indicator_prefix = "" +python.vimode.mode_indicator_replace_color = "white" +python.vimode.mode_indicator_replace_color_bg = "red" +python.vimode.mode_indicator_search_color = "white" +python.vimode.mode_indicator_search_color_bg = "magenta" +python.vimode.mode_indicator_suffix = "" +python.vimode.no_warn = "on" +python.vimode.paste_clipboard_cmd = "xclip -selection c -o" +python.vimode.search_vim = "on" +python.vimode.user_mappings = "" + +[desc] +python.vimode.copy_clipboard_cmd = "command used to copy to clipboard; must read input from stdin (default: "xclip -selection c")" +python.vimode.imap_esc = "use alternate mapping to enter Normal mode while in Insert mode; having it set to 'jk' is similar to `:imap jk ` in vim (default: "")" +python.vimode.imap_esc_timeout = "time in ms to wait for the imap_esc sequence to complete (default: "1000")" +python.vimode.line_number_prefix = "prefix for line numbers (default: "")" +python.vimode.line_number_suffix = "suffix for line numbers (default: " ")" +python.vimode.mode_indicator_cmd_color = "color for mode indicator in Command mode (default: "white")" +python.vimode.mode_indicator_cmd_color_bg = "background color for mode indicator in Command mode (default: "cyan")" +python.vimode.mode_indicator_insert_color = "color for mode indicator in Insert mode (default: "white")" +python.vimode.mode_indicator_insert_color_bg = "background color for mode indicator in Insert mode (default: "blue")" +python.vimode.mode_indicator_normal_color = "color for mode indicator in Normal mode (default: "white")" +python.vimode.mode_indicator_normal_color_bg = "background color for mode indicator in Normal mode (default: "gray")" +python.vimode.mode_indicator_prefix = "prefix for the bar item mode_indicator (default: "")" +python.vimode.mode_indicator_replace_color = "color for mode indicator in Replace mode (default: "white")" +python.vimode.mode_indicator_replace_color_bg = "background color for mode indicator in Replace mode (default: "red")" +python.vimode.mode_indicator_search_color = "color for mode indicator in Search mode (default: "white")" +python.vimode.mode_indicator_search_color_bg = "background color for mode indicator in Search mode (default: "magenta")" +python.vimode.mode_indicator_suffix = "suffix for the bar item mode_indicator (default: "")" +python.vimode.no_warn = "don't warn about problematic keybindings and tmux/screen (default: "off")" +python.vimode.paste_clipboard_cmd = "command used to paste clipboard; must output content to stdout (default: "xclip -selection c -o")" +python.vimode.search_vim = "allow n/N usage after searching (requires an extra to return to normal mode) (default: "off")" +python.vimode.user_mappings = "see the `:nmap` command in the README for more info; please do not modify this field manually unless you know what you're doing (default: "")" diff --git a/.weechat/python.conf b/.weechat/python.conf new file mode 100644 index 00000000..187b778d --- /dev/null +++ b/.weechat/python.conf @@ -0,0 +1,14 @@ +# +# weechat -- python.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/python/autoload/vimode.py b/.weechat/python/autoload/vimode.py new file mode 120000 index 00000000..c6303a5c --- /dev/null +++ b/.weechat/python/autoload/vimode.py @@ -0,0 +1 @@ +../vimode.py \ No newline at end of file diff --git a/.weechat/python/vimode.py b/.weechat/python/vimode.py new file mode 100644 index 00000000..873c5d74 --- /dev/null +++ b/.weechat/python/vimode.py @@ -0,0 +1,1882 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2014 Germain Z. +# +# 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 . +# + +# +# Add vi/vim-like modes to WeeChat. +# + + +import csv +import json +import os +import re +import subprocess +try: + from StringIO import StringIO +except ImportError: + from io import StringIO +import time + +import weechat + + +# Script info. +# ============ + +SCRIPT_NAME = "vimode" +SCRIPT_AUTHOR = "GermainZ " +SCRIPT_VERSION = "0.8" +SCRIPT_LICENSE = "GPL3" +SCRIPT_DESC = ("Add vi/vim-like modes and keybindings to WeeChat.") + + +# Global variables. +# ================= + +# General. +# -------- + +# Halp! Halp! Halp! +GITHUB_BASE = "https://github.com/GermainZ/weechat-vimode/blob/master/" +README_URL = GITHUB_BASE + "README.md" +FAQ_KEYBINDINGS = GITHUB_BASE + "FAQ.md#problematic-key-bindings" +FAQ_ESC = GITHUB_BASE + "FAQ.md#esc-key-not-being-detected-instantly" + +# Holds the text of the tab-completions for the command-line mode. +cmd_compl_text = "" +# Holds the original text of the command-line mode, used for completion. +cmd_text_orig = None +# Index of current suggestion, used for completion. +cmd_compl_pos = 0 +# Used for command-line mode history. +cmd_history = [] +cmd_history_index = 0 +# Used to store the content of the input line when going into COMMAND mode. +input_line_backup = {} +# Mode we're in. One of INSERT, NORMAL, REPLACE, COMMAND or SEARCH. +# SEARCH is only used if search_vim is enabled. +mode = "INSERT" +# Holds normal commands (e.g. "dd"). +vi_buffer = "" +# See `cb_key_combo_default()`. +esc_pressed = 0 +# See `cb_key_pressed()`. +last_signal_time = 0 +# See `start_catching_keys()` for more info. +catching_keys_data = {'amount': 0} +# Used for ; and , to store the last f/F/t/T motion. +last_search_motion = {'motion': None, 'data': None} +# Used for undo history. +undo_history = {} +undo_history_index = {} +# Holds mode colors (loaded from vimode_settings). +mode_colors = {} + +# Script options. +vimode_settings = { + 'no_warn': ("off", ("don't warn about problematic keybindings and " + "tmux/screen")), + 'copy_clipboard_cmd': ("xclip -selection c", + ("command used to copy to clipboard; must read " + "input from stdin")), + 'paste_clipboard_cmd': ("xclip -selection c -o", + ("command used to paste clipboard; must output " + "content to stdout")), + 'imap_esc': ("", ("use alternate mapping to enter Normal mode while in " + "Insert mode; having it set to 'jk' is similar to " + "`:imap jk ` in vim")), + 'imap_esc_timeout': ("1000", ("time in ms to wait for the imap_esc " + "sequence to complete")), + 'search_vim': ("off", ("allow n/N usage after searching (requires an extra" + " to return to normal mode)")), + 'user_mappings': ("", ("see the `:nmap` command in the README for more " + "info; please do not modify this field manually " + "unless you know what you're doing")), + 'mode_indicator_prefix': ("", "prefix for the bar item mode_indicator"), + 'mode_indicator_suffix': ("", "suffix for the bar item mode_indicator"), + 'mode_indicator_normal_color': ("white", + "color for mode indicator in Normal mode"), + 'mode_indicator_normal_color_bg': ("gray", + ("background color for mode indicator " + "in Normal mode")), + 'mode_indicator_insert_color': ("white", + "color for mode indicator in Insert mode"), + 'mode_indicator_insert_color_bg': ("blue", + ("background color for mode indicator " + "in Insert mode")), + 'mode_indicator_replace_color': ("white", + "color for mode indicator in Replace mode"), + 'mode_indicator_replace_color_bg': ("red", + ("background color for mode indicator " + "in Replace mode")), + 'mode_indicator_cmd_color': ("white", + "color for mode indicator in Command mode"), + 'mode_indicator_cmd_color_bg': ("cyan", + ("background color for mode indicator in " + "Command mode")), + 'mode_indicator_search_color': ("white", + "color for mode indicator in Search mode"), + 'mode_indicator_search_color_bg': ("magenta", + ("background color for mode indicator " + "in Search mode")), + 'line_number_prefix': ("", "prefix for line numbers"), + 'line_number_suffix': (" ", "suffix for line numbers") +} + + +# Regex patterns. +# --------------- + +WHITESPACE = re.compile(r"\s") +IS_KEYWORD = re.compile(r"[a-zA-Z0-9_@À-ÿ]") +REGEX_MOTION_LOWERCASE_W = re.compile(r"\b\S|(?<=\s)\S") +REGEX_MOTION_UPPERCASE_W = re.compile(r"(?<=\s)\S") +REGEX_MOTION_UPPERCASE_E = re.compile(r"\S(?!\S)") +REGEX_MOTION_UPPERCASE_B = REGEX_MOTION_UPPERCASE_E +REGEX_MOTION_G_UPPERCASE_E = REGEX_MOTION_UPPERCASE_W +REGEX_MOTION_CARRET = re.compile(r"\S") +REGEX_INT = r"[0-9]" +REGEX_MAP_KEYS_1 = { + re.compile("<([^>]*-)Left>", re.IGNORECASE): '<\\1\x01[[D>', + re.compile("<([^>]*-)Right>", re.IGNORECASE): '<\\1\x01[[C>', + re.compile("<([^>]*-)Up>", re.IGNORECASE): '<\\1\x01[[A>', + re.compile("<([^>]*-)Down>", re.IGNORECASE): '<\\1\x01[[B>', + re.compile("", re.IGNORECASE): '\x01[[D', + re.compile("", re.IGNORECASE): '\x01[[C', + re.compile("", re.IGNORECASE): '\x01[[A', + re.compile("", re.IGNORECASE): '\x01[[B' +} +REGEX_MAP_KEYS_2 = { + re.compile(r"]*)>", re.IGNORECASE): '\x01\\1', + re.compile(r"]*)>", re.IGNORECASE): '\x01[\\1' +} + +# Regex used to detect problematic keybindings. +# For example: meta-wmeta-s is bound by default to ``/window swap``. +# If the user pressed Esc-w, WeeChat will detect it as meta-w and will not +# send any signal to `cb_key_combo_default()` just yet, since it's the +# beginning of a known key combo. +# Instead, `cb_key_combo_default()` will receive the Esc-ws signal, which +# becomes "ws" after removing the Esc part, and won't know how to handle it. +REGEX_PROBLEMATIC_KEYBINDINGS = re.compile(r"meta-\w(meta|ctrl)") + + +# Vi commands. +# ------------ + +def cmd_nmap(args): + """Add a user-defined key mapping. + + Some (but not all) vim-like key codes are supported to simplify things for + the user: , , , , and . + + See Also: + `cmd_unmap()`. + """ + args = args.strip() + if not args: + mappings = vimode_settings['user_mappings'] + if mappings: + weechat.prnt("", "User-defined key mappings:") + for key, mapping in mappings.items(): + weechat.prnt("", "{} -> {}".format(key, mapping)) + else: + weechat.prnt("", "nmap: no mapping found.") + elif not " " in args: + weechat.prnt("", "nmap syntax -> :nmap {lhs} {rhs}") + else: + key, mapping = args.split(" ", 1) + # First pass of replacements. We perform two passes as a simple way to + # avoid incorrect replacements due to dictionaries not being + # insertion-ordered prior to Python 3.7. + for regex, repl in REGEX_MAP_KEYS_1.items(): + key = regex.sub(repl, key) + mapping = regex.sub(repl, mapping) + # Second pass of replacements. + for regex, repl in REGEX_MAP_KEYS_2.items(): + key = regex.sub(repl, key) + mapping = regex.sub(repl, mapping) + mappings = vimode_settings['user_mappings'] + mappings[key] = mapping + weechat.config_set_plugin('user_mappings', json.dumps(mappings)) + vimode_settings['user_mappings'] = mappings + +def cmd_nunmap(args): + """Remove a user-defined key mapping. + + See Also: + `cmd_map()`. + """ + args = args.strip() + if not args: + weechat.prnt("", "nunmap syntax -> :unmap {lhs}") + else: + key = args + for regex, repl in REGEX_MAP_KEYS_1.items(): + key = regex.sub(repl, key) + for regex, repl in REGEX_MAP_KEYS_2.items(): + key = regex.sub(repl, key) + mappings = vimode_settings['user_mappings'] + if key in mappings: + del mappings[key] + weechat.config_set_plugin('user_mappings', json.dumps(mappings)) + vimode_settings['user_mappings'] = mappings + else: + weechat.prnt("", "nunmap: No such mapping") + +# See Also: `cb_exec_cmd()`. +VI_COMMAND_GROUPS = {('h', 'help'): "/help", + ('qa', 'qall', 'quita', 'quitall'): "/exit", + ('q', 'quit'): "/close", + ('w', 'write'): "/save", + ('bN', 'bNext', 'bp', 'bprevious'): "/buffer -1", + ('bn', 'bnext'): "/buffer +1", + ('bd', 'bdel', 'bdelete'): "/close", + ('b#',): "/input jump_last_buffer_displayed", + ('b', 'bu', 'buf', 'buffer'): "/buffer", + ('sp', 'split'): "/window splith", + ('vs', 'vsplit'): "/window splitv", + ('nm', 'nmap'): cmd_nmap, + ('nun', 'nunmap'): cmd_nunmap} + +VI_COMMANDS = dict() +for T, v in VI_COMMAND_GROUPS.items(): + VI_COMMANDS.update(dict.fromkeys(T, v)) + + +# Vi operators. +# ------------- + +# Each operator must have a corresponding function, called "operator_X" where +# X is the operator. For example: `operator_c()`. +VI_OPERATORS = ["c", "d", "y"] + + +# Vi motions. +# ----------- + +# Vi motions. Each motion must have a corresponding function, called +# "motion_X" where X is the motion (e.g. `motion_w()`). +# See Also: `SPECIAL_CHARS`. +VI_MOTIONS = ["w", "e", "b", "^", "$", "h", "l", "W", "E", "B", "f", "F", "t", + "T", "ge", "gE", "0"] + +# Special characters for motions. The corresponding function's name is +# converted before calling. For example, "^" will call `motion_carret` instead +# of `motion_^` (which isn't allowed because of illegal characters). +SPECIAL_CHARS = {'^': "carret", + '$': "dollar"} + + +# Methods for vi operators, motions and key bindings. +# =================================================== + +# Documented base examples: +# ------------------------- + +def operator_base(buf, input_line, pos1, pos2, overwrite): + """Operator method example. + + Args: + buf (str): pointer to the current WeeChat buffer. + input_line (str): the content of the input line. + pos1 (int): the starting position of the motion. + pos2 (int): the ending position of the motion. + overwrite (bool, optional): whether the character at the cursor's new + position should be overwritten or not (for inclusive motions). + Defaults to False. + + Notes: + Should be called "operator_X", where X is the operator, and defined in + `VI_OPERATORS`. + Must perform actions (e.g. modifying the input line) on its own, + using the WeeChat API. + + See Also: + For additional examples, see `operator_d()` and + `operator_y()`. + """ + # Get start and end positions. + start = min(pos1, pos2) + end = max(pos1, pos2) + # Print the text the operator should go over. + weechat.prnt("", "Selection: %s" % input_line[start:end]) + +def motion_base(input_line, cur, count): + """Motion method example. + + Args: + input_line (str): the content of the input line. + cur (int): the position of the cursor. + count (int): the amount of times to multiply or iterate the action. + + Returns: + A tuple containing three values: + int: the new position of the cursor. + bool: True if the motion is inclusive, False otherwise. + bool: True if the motion is catching, False otherwise. + See `start_catching_keys()` for more info on catching motions. + + Notes: + Should be called "motion_X", where X is the motion, and defined in + `VI_MOTIONS`. + Must not modify the input line directly. + + See Also: + For additional examples, see `motion_w()` (normal motion) and + `motion_f()` (catching motion). + """ + # Find (relative to cur) position of next number. + pos = get_pos(input_line, REGEX_INT, cur, True, count) + # Return the new (absolute) cursor position. + # This motion is exclusive, so overwrite is False. + return cur + pos, False + +def key_base(buf, input_line, cur, count): + """Key method example. + + Args: + buf (str): pointer to the current WeeChat buffer. + input_line (str): the content of the input line. + cur (int): the position of the cursor. + count (int): the amount of times to multiply or iterate the action. + + Notes: + Should be called `key_X`, where X represents the key(s), and defined + in `VI_KEYS`. + Must perform actions on its own (using the WeeChat API). + + See Also: + For additional examples, see `key_a()` (normal key) and + `key_r()` (catching key). + """ + # Key was pressed. Go to Insert mode (similar to "i"). + set_mode("INSERT") + + +# Operators: +# ---------- + +def operator_d(buf, input_line, pos1, pos2, overwrite=False): + """Delete text from `pos1` to `pos2` from the input line. + + If `overwrite` is set to True, the character at the cursor's new position + is removed as well (the motion is inclusive). + + See Also: + `operator_base()`. + """ + start = min(pos1, pos2) + end = max(pos1, pos2) + if overwrite: + end += 1 + input_line = list(input_line) + del input_line[start:end] + input_line = "".join(input_line) + weechat.buffer_set(buf, "input", input_line) + set_cur(buf, input_line, pos1) + +def operator_c(buf, input_line, pos1, pos2, overwrite=False): + """Delete text from `pos1` to `pos2` from the input and enter Insert mode. + + If `overwrite` is set to True, the character at the cursor's new position + is removed as well (the motion is inclusive.) + + See Also: + `operator_base()`. + """ + operator_d(buf, input_line, pos1, pos2, overwrite) + set_mode("INSERT") + +def operator_y(buf, input_line, pos1, pos2, _): + """Yank text from `pos1` to `pos2` from the input line. + + See Also: + `operator_base()`. + """ + start = min(pos1, pos2) + end = max(pos1, pos2) + cmd = vimode_settings['copy_clipboard_cmd'] + proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE) + proc.communicate(input=input_line[start:end].encode()) + + +# Motions: +# -------- + +def motion_0(input_line, cur, count): + """Go to the first character of the line. + + See Also; + `motion_base()`. + """ + return 0, False, False + +def motion_w(input_line, cur, count): + """Go `count` words forward and return position. + + See Also: + `motion_base()`. + """ + pos = get_pos(input_line, REGEX_MOTION_LOWERCASE_W, cur, True, count) + if pos == -1: + return len(input_line), False, False + return cur + pos, False, False + +def motion_W(input_line, cur, count): + """Go `count` WORDS forward and return position. + + See Also: + `motion_base()`. + """ + pos = get_pos(input_line, REGEX_MOTION_UPPERCASE_W, cur, True, count) + if pos == -1: + return len(input_line), False, False + return cur + pos, False, False + +def motion_e(input_line, cur, count): + """Go to the end of `count` words and return position. + + See Also: + `motion_base()`. + """ + for _ in range(max(1, count)): + found = False + pos = cur + for pos in range(cur + 1, len(input_line) - 1): + # Whitespace, keep going. + if WHITESPACE.match(input_line[pos]): + pass + # End of sequence made from 'iskeyword' characters only, + # or end of sequence made from non 'iskeyword' characters only. + elif ((IS_KEYWORD.match(input_line[pos]) and + (not IS_KEYWORD.match(input_line[pos + 1]) or + WHITESPACE.match(input_line[pos + 1]))) or + (not IS_KEYWORD.match(input_line[pos]) and + (IS_KEYWORD.match(input_line[pos + 1]) or + WHITESPACE.match(input_line[pos + 1])))): + found = True + cur = pos + break + # We're at the character before the last and we still found nothing. + # Go to the last character. + if not found: + cur = pos + 1 + return cur, True, False + +def motion_E(input_line, cur, count): + """Go to the end of `count` WORDS and return cusor position. + + See Also: + `motion_base()`. + """ + pos = get_pos(input_line, REGEX_MOTION_UPPERCASE_E, cur, True, count) + if pos == -1: + return len(input_line), False, False + return cur + pos, True, False + +def motion_b(input_line, cur, count): + """Go `count` words backwards and return position. + + See Also: + `motion_base()`. + """ + # "b" is just "e" on inverted data (e.g. "olleH" instead of "Hello"). + pos_inv = motion_e(input_line[::-1], len(input_line) - cur - 1, count)[0] + pos = len(input_line) - pos_inv - 1 + return pos, True, False + +def motion_B(input_line, cur, count): + """Go `count` WORDS backwards and return position. + + See Also: + `motion_base()`. + """ + new_cur = len(input_line) - cur + pos = get_pos(input_line[::-1], REGEX_MOTION_UPPERCASE_B, new_cur, + count=count) + if pos == -1: + return 0, False, False + pos = len(input_line) - (pos + new_cur + 1) + return pos, True, False + +def motion_ge(input_line, cur, count): + """Go to end of `count` words backwards and return position. + + See Also: + `motion_base()`. + """ + # "ge is just "w" on inverted data (e.g. "olleH" instead of "Hello"). + pos_inv = motion_w(input_line[::-1], len(input_line) - cur - 1, count)[0] + pos = len(input_line) - pos_inv - 1 + return pos, True, False + +def motion_gE(input_line, cur, count): + """Go to end of `count` WORDS backwards and return position. + + See Also: + `motion_base()`. + """ + new_cur = len(input_line) - cur - 1 + pos = get_pos(input_line[::-1], REGEX_MOTION_G_UPPERCASE_E, new_cur, + True, count) + if pos == -1: + return 0, False, False + pos = len(input_line) - (pos + new_cur + 1) + return pos, True, False + +def motion_h(input_line, cur, count): + """Go `count` characters to the left and return position. + + See Also: + `motion_base()`. + """ + return max(0, cur - max(count, 1)), False, False + +def motion_l(input_line, cur, count): + """Go `count` characters to the right and return position. + + See Also: + `motion_base()`. + """ + return cur + max(count, 1), False, False + +def motion_carret(input_line, cur, count): + """Go to first non-blank character of line and return position. + + See Also: + `motion_base()`. + """ + pos = get_pos(input_line, REGEX_MOTION_CARRET, 0) + return pos, False, False + +def motion_dollar(input_line, cur, count): + """Go to end of line and return position. + + See Also: + `motion_base()`. + """ + pos = len(input_line) + return pos, False, False + +def motion_f(input_line, cur, count): + """Go to `count`'th occurence of character and return position. + + See Also: + `motion_base()`. + """ + return start_catching_keys(1, "cb_motion_f", input_line, cur, count) + +def cb_motion_f(update_last=True): + """Callback for `motion_f()`. + + Args: + update_last (bool, optional): should `last_search_motion` be updated? + Set to False when calling from `key_semicolon()` or `key_comma()` + so that the last search motion isn't overwritten. + Defaults to True. + + See Also: + `start_catching_keys()`. + """ + global last_search_motion + pattern = catching_keys_data['keys'] + pos = get_pos(catching_keys_data['input_line'], re.escape(pattern), + catching_keys_data['cur'], True, + catching_keys_data['count']) + catching_keys_data['new_cur'] = max(0, pos) + catching_keys_data['cur'] + if update_last: + last_search_motion = {'motion': "f", 'data': pattern} + cb_key_combo_default(None, None, "") + +def motion_F(input_line, cur, count): + """Go to `count`'th occurence of char to the right and return position. + + See Also: + `motion_base()`. + """ + return start_catching_keys(1, "cb_motion_F", input_line, cur, count) + +def cb_motion_F(update_last=True): + """Callback for `motion_F()`. + + Args: + update_last (bool, optional): should `last_search_motion` be updated? + Set to False when calling from `key_semicolon()` or `key_comma()` + so that the last search motion isn't overwritten. + Defaults to True. + + See Also: + `start_catching_keys()`. + """ + global last_search_motion + pattern = catching_keys_data['keys'] + cur = len(catching_keys_data['input_line']) - catching_keys_data['cur'] + pos = get_pos(catching_keys_data['input_line'][::-1], + re.escape(pattern), + cur, + False, + catching_keys_data['count']) + catching_keys_data['new_cur'] = catching_keys_data['cur'] - max(0, pos + 1) + if update_last: + last_search_motion = {'motion': "F", 'data': pattern} + cb_key_combo_default(None, None, "") + +def motion_t(input_line, cur, count): + """Go to `count`'th occurence of char and return position. + + The position returned is the position of the character to the left of char. + + See Also: + `motion_base()`. + """ + return start_catching_keys(1, "cb_motion_t", input_line, cur, count) + +def cb_motion_t(update_last=True): + """Callback for `motion_t()`. + + Args: + update_last (bool, optional): should `last_search_motion` be updated? + Set to False when calling from `key_semicolon()` or `key_comma()` + so that the last search motion isn't overwritten. + Defaults to True. + + See Also: + `start_catching_keys()`. + """ + global last_search_motion + pattern = catching_keys_data['keys'] + pos = get_pos(catching_keys_data['input_line'], re.escape(pattern), + catching_keys_data['cur'] + 1, + True, catching_keys_data['count']) + pos += 1 + if pos > 0: + catching_keys_data['new_cur'] = pos + catching_keys_data['cur'] - 1 + else: + catching_keys_data['new_cur'] = catching_keys_data['cur'] + if update_last: + last_search_motion = {'motion': "t", 'data': pattern} + cb_key_combo_default(None, None, "") + +def motion_T(input_line, cur, count): + """Go to `count`'th occurence of char to the left and return position. + + The position returned is the position of the character to the right of + char. + + See Also: + `motion_base()`. + """ + return start_catching_keys(1, "cb_motion_T", input_line, cur, count) + +def cb_motion_T(update_last=True): + """Callback for `motion_T()`. + + Args: + update_last (bool, optional): should `last_search_motion` be updated? + Set to False when calling from `key_semicolon()` or `key_comma()` + so that the last search motion isn't overwritten. + Defaults to True. + + See Also: + `start_catching_keys()`. + """ + global last_search_motion + pattern = catching_keys_data['keys'] + pos = get_pos(catching_keys_data['input_line'][::-1], re.escape(pattern), + (len(catching_keys_data['input_line']) - + (catching_keys_data['cur'] + 1)) + 1, + True, catching_keys_data['count']) + pos += 1 + if pos > 0: + catching_keys_data['new_cur'] = catching_keys_data['cur'] - pos + 1 + else: + catching_keys_data['new_cur'] = catching_keys_data['cur'] + if update_last: + last_search_motion = {'motion': "T", 'data': pattern} + cb_key_combo_default(None, None, "") + + +# Keys: +# ----- + +def key_cc(buf, input_line, cur, count): + """Delete line and start Insert mode. + + See Also: + `key_base()`. + """ + weechat.command("", "/input delete_line") + set_mode("INSERT") + +def key_C(buf, input_line, cur, count): + """Delete from cursor to end of line and start Insert mode. + + See Also: + `key_base()`. + """ + weechat.command("", "/input delete_end_of_line") + set_mode("INSERT") + +def key_yy(buf, input_line, cur, count): + """Yank line. + + See Also: + `key_base()`. + """ + cmd = vimode_settings['copy_clipboard_cmd'] + proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE) + proc.communicate(input=input_line.encode()) + +def key_p(buf, input_line, cur, count): + """Paste text. + + See Also: + `key_base()`. + """ + cmd = vimode_settings['paste_clipboard_cmd'] + weechat.hook_process(cmd, 10 * 1000, "cb_key_p", weechat.current_buffer()) + +def cb_key_p(data, command, return_code, output, err): + """Callback for fetching clipboard text and pasting it.""" + buf = "" + this_buffer = data + if output != "": + buf += output.strip() + if return_code == 0: + my_input = weechat.buffer_get_string(this_buffer, "input") + pos = weechat.buffer_get_integer(this_buffer, "input_pos") + my_input = my_input[:pos] + buf + my_input[pos:] + pos += len(buf) + weechat.buffer_set(this_buffer, "input", my_input) + weechat.buffer_set(this_buffer, "input_pos", str(pos)) + return weechat.WEECHAT_RC_OK + +def key_i(buf, input_line, cur, count): + """Start Insert mode. + + See Also: + `key_base()`. + """ + set_mode("INSERT") + +def key_a(buf, input_line, cur, count): + """Move cursor one character to the right and start Insert mode. + + See Also: + `key_base()`. + """ + set_cur(buf, input_line, cur + 1, False) + set_mode("INSERT") + +def key_A(buf, input_line, cur, count): + """Move cursor to end of line and start Insert mode. + + See Also: + `key_base()`. + """ + set_cur(buf, input_line, len(input_line), False) + set_mode("INSERT") + +def key_I(buf, input_line, cur, count): + """Move cursor to first non-blank character and start Insert mode. + + See Also: + `key_base()`. + """ + pos, _, _ = motion_carret(input_line, cur, 0) + set_cur(buf, input_line, pos) + set_mode("INSERT") + +def key_G(buf, input_line, cur, count): + """Scroll to specified line or bottom of buffer. + + See Also: + `key_base()`. + """ + if count > 0: + # This is necessary to prevent weird scroll jumps. + weechat.command("", "/window scroll_top") + weechat.command("", "/window scroll %s" % (count - 1)) + else: + weechat.command("", "/window scroll_bottom") + +def key_r(buf, input_line, cur, count): + """Replace `count` characters under the cursor. + + See Also: + `key_base()`. + """ + start_catching_keys(1, "cb_key_r", input_line, cur, count, buf) + +def cb_key_r(): + """Callback for `key_r()`. + + See Also: + `start_catching_keys()`. + """ + global catching_keys_data + input_line = list(catching_keys_data['input_line']) + count = max(catching_keys_data['count'], 1) + cur = catching_keys_data['cur'] + if cur + count <= len(input_line): + for _ in range(count): + input_line[cur] = catching_keys_data['keys'] + cur += 1 + input_line = "".join(input_line) + weechat.buffer_set(catching_keys_data['buf'], "input", input_line) + set_cur(catching_keys_data['buf'], input_line, cur - 1) + catching_keys_data = {'amount': 0} + +def key_R(buf, input_line, cur, count): + """Start Replace mode. + + See Also: + `key_base()`. + """ + set_mode("REPLACE") + +def key_tilda(buf, input_line, cur, count): + """Switch the case of `count` characters under the cursor. + + See Also: + `key_base()`. + """ + input_line = list(input_line) + count = max(1, count) + while count and cur < len(input_line): + input_line[cur] = input_line[cur].swapcase() + count -= 1 + cur += 1 + input_line = "".join(input_line) + weechat.buffer_set(buf, "input", input_line) + set_cur(buf, input_line, cur) + +def key_alt_j(buf, input_line, cur, count): + """Go to WeeChat buffer. + + Called to preserve WeeChat's alt-j buffer switching. + + This is only called when alt-j is pressed after pressing Esc, because + \x01\x01j is received in key_combo_default which becomes \x01j after + removing the detected Esc key. + If Esc isn't the last pressed key, \x01j is directly received in + key_combo_default. + """ + start_catching_keys(2, "cb_key_alt_j", input_line, cur, count) + +def cb_key_alt_j(): + """Callback for `key_alt_j()`. + + See Also: + `start_catching_keys()`. + """ + global catching_keys_data + weechat.command("", "/buffer " + catching_keys_data['keys']) + catching_keys_data = {'amount': 0} + +def key_semicolon(buf, input_line, cur, count, swap=False): + """Repeat last f, t, F, T `count` times. + + Args: + swap (bool, optional): if True, the last motion will be repeated in the + opposite direction (e.g. "f" instead of "F"). Defaults to False. + + See Also: + `key_base()`. + """ + global catching_keys_data, vi_buffer + catching_keys_data = ({'amount': 0, + 'input_line': input_line, + 'cur': cur, + 'keys': last_search_motion['data'], + 'count': count, + 'new_cur': 0, + 'buf': buf}) + # Swap the motion's case if called from key_comma. + if swap: + motion = last_search_motion['motion'].swapcase() + else: + motion = last_search_motion['motion'] + func = "cb_motion_%s" % motion + vi_buffer = motion + globals()[func](False) + +def key_comma(buf, input_line, cur, count): + """Repeat last f, t, F, T in opposite direction `count` times. + + See Also: + `key_base()`. + """ + key_semicolon(buf, input_line, cur, count, True) + +def key_u(buf, input_line, cur, count): + """Undo change `count` times. + + See Also: + `key_base()`. + """ + buf = weechat.current_buffer() + if buf not in undo_history: + return + for _ in range(max(count, 1)): + if undo_history_index[buf] > -len(undo_history[buf]): + undo_history_index[buf] -= 1 + input_line = undo_history[buf][undo_history_index[buf]] + weechat.buffer_set(buf, "input", input_line) + else: + break + +def key_ctrl_r(buf, input_line, cur, count): + """Redo change `count` times. + + See Also: + `key_base()`. + """ + if buf not in undo_history: + return + for _ in range(max(count, 1)): + if undo_history_index[buf] < -1: + undo_history_index[buf] += 1 + input_line = undo_history[buf][undo_history_index[buf]] + weechat.buffer_set(buf, "input", input_line) + else: + break + + +# Vi key bindings. +# ================ + +# String values will be executed as normal WeeChat commands. +# For functions, see `key_base()` for reference. +VI_KEYS = {'j': "/window scroll_down", + 'k': "/window scroll_up", + 'G': key_G, + 'gg': "/window scroll_top", + 'x': "/input delete_next_char", + 'X': "/input delete_previous_char", + 'dd': "/input delete_line", + 'D': "/input delete_end_of_line", + 'cc': key_cc, + 'C': key_C, + 'i': key_i, + 'a': key_a, + 'A': key_A, + 'I': key_I, + 'yy': key_yy, + 'p': key_p, + 'gt': "/buffer -1", + 'K': "/buffer -1", + 'gT': "/buffer +1", + 'J': "/buffer +1", + 'r': key_r, + 'R': key_R, + '~': key_tilda, + 'nt': "/bar scroll nicklist * -100%", + 'nT': "/bar scroll nicklist * +100%", + '\x01[[A': "/input history_previous", + '\x01[[B': "/input history_next", + '\x01[[C': "/input move_next_char", + '\x01[[D': "/input move_previous_char", + '\x01[[H': "/input move_beginning_of_line", + '\x01[[F': "/input move_end_of_line", + '\x01[[5~': "/window page_up", + '\x01[[6~': "/window page_down", + '\x01[[3~': "/input delete_next_char", + '\x01[[2~': key_i, + '\x01M': "/input return", + '\x01?': "/input move_previous_char", + ' ': "/input move_next_char", + '\x01[j': key_alt_j, + '\x01[1': "/buffer *1", + '\x01[2': "/buffer *2", + '\x01[3': "/buffer *3", + '\x01[4': "/buffer *4", + '\x01[5': "/buffer *5", + '\x01[6': "/buffer *6", + '\x01[7': "/buffer *7", + '\x01[8': "/buffer *8", + '\x01[9': "/buffer *9", + '\x01[0': "/buffer *10", + '\x01^': "/input jump_last_buffer_displayed", + '\x01D': "/window page_down", + '\x01U': "/window page_up", + '\x01Wh': "/window left", + '\x01Wj': "/window down", + '\x01Wk': "/window up", + '\x01Wl': "/window right", + '\x01W=': "/window balance", + '\x01Wx': "/window swap", + '\x01Ws': "/window splith", + '\x01Wv': "/window splitv", + '\x01Wq': "/window merge", + ';': key_semicolon, + ',': key_comma, + 'u': key_u, + '\x01R': key_ctrl_r} + +# Add alt-j bindings. +for i in range(10, 99): + VI_KEYS['\x01[j%s' % i] = "/buffer %s" % i + + +# Key handling. +# ============= + +def cb_key_pressed(data, signal, signal_data): + """Detect potential Esc presses. + + Alt and Esc are detected as the same key in most terminals. The difference + is that Alt signal is sent just before the other pressed key's signal. + We therefore use a timeout (50ms) to detect whether Alt or Esc was pressed. + """ + global last_signal_time + last_signal_time = time.time() + if signal_data == "\x01[": + # In 50ms, check if any other keys were pressed. If not, it's Esc! + weechat.hook_timer(50, 0, 1, "cb_check_esc", + "{:f}".format(last_signal_time)) + return weechat.WEECHAT_RC_OK + +def cb_check_esc(data, remaining_calls): + """Check if the Esc key was pressed and change the mode accordingly.""" + global esc_pressed, vi_buffer, catching_keys_data + # Not perfect, would be better to use direct comparison (==) but that only + # works for py2 and not for py3. + if abs(last_signal_time - float(data)) <= 0.000001: + esc_pressed += 1 + if mode == "SEARCH": + weechat.command("", "/input search_stop_here") + set_mode("NORMAL") + # Cancel any current partial commands. + vi_buffer = "" + catching_keys_data = {'amount': 0} + weechat.bar_item_update("vi_buffer") + return weechat.WEECHAT_RC_OK + +def cb_key_combo_default(data, signal, signal_data): + """Eat and handle key events when in Normal mode, if needed. + + The key_combo_default signal is sent when a key combo is pressed. For + example, alt-k will send the "\x01[k" signal. + + Esc is handled a bit differently to avoid delays, see `cb_key_pressed()`. + """ + global esc_pressed, vi_buffer, cmd_compl_text, cmd_text_orig, \ + cmd_compl_pos, cmd_history_index + + # If Esc was pressed, strip the Esc part from the pressed keys. + # Example: user presses Esc followed by i. This is detected as "\x01[i", + # but we only want to handle "i". + keys = signal_data + if esc_pressed or esc_pressed == -2: + if keys.startswith("\x01[" * esc_pressed): + # Multiples of 3 seem to "cancel" themselves, + # e.g. Esc-Esc-Esc-Alt-j-11 is detected as "\x01[\x01[\x01" + # followed by "\x01[j11" (two different signals). + if signal_data == "\x01[" * 3: + esc_pressed = -1 # `cb_check_esc()` will increment it to 0. + else: + esc_pressed = 0 + # This can happen if a valid combination is started but interrupted + # with Esc, such as Ctrl-W→Esc→w which would send two signals: + # "\x01W\x01[" then "\x01W\x01[w". + # In that case, we still need to handle the next signal ("\x01W\x01[w") + # so we use the special value "-2". + else: + esc_pressed = -2 + keys = keys.split("\x01[")[-1] # Remove the "Esc" part(s). + # Ctrl-Space. + elif keys == "\x01@": + set_mode("NORMAL") + return weechat.WEECHAT_RC_OK_EAT + + # Clear the undo history for this buffer on . + if keys == "\x01M": + buf = weechat.current_buffer() + clear_undo_history(buf) + + # Detect imap_esc presses if any. + if mode == "INSERT": + imap_esc = vimode_settings['imap_esc'] + if not imap_esc: + return weechat.WEECHAT_RC_OK + if (imap_esc.startswith(vi_buffer) and + imap_esc[len(vi_buffer):len(vi_buffer)+1] == keys): + vi_buffer += keys + weechat.bar_item_update("vi_buffer") + weechat.hook_timer(int(vimode_settings['imap_esc_timeout']), 0, 1, + "cb_check_imap_esc", vi_buffer) + elif (vi_buffer and imap_esc.startswith(vi_buffer) and + imap_esc[len(vi_buffer):len(vi_buffer)+1] != keys): + vi_buffer = "" + weechat.bar_item_update("vi_buffer") + # imap_esc sequence detected -- remove the sequence keys from the + # Weechat input bar and enter Normal mode. + if imap_esc == vi_buffer: + buf = weechat.current_buffer() + input_line = weechat.buffer_get_string(buf, "input") + cur = weechat.buffer_get_integer(buf, "input_pos") + input_line = (input_line[:cur-len(imap_esc)+1] + + input_line[cur:]) + weechat.buffer_set(buf, "input", input_line) + set_cur(buf, input_line, cur-len(imap_esc)+1, False) + set_mode("NORMAL") + vi_buffer = "" + weechat.bar_item_update("vi_buffer") + return weechat.WEECHAT_RC_OK_EAT + return weechat.WEECHAT_RC_OK + + # We're in Replace mode — allow "normal" key presses (e.g. "a") and + # overwrite the next character with them, but let the other key presses + # pass normally (e.g. backspace, arrow keys, etc). + if mode == "REPLACE": + if len(keys) == 1: + weechat.command("", "/input delete_next_char") + elif keys == "\x01?": + weechat.command("", "/input move_previous_char") + return weechat.WEECHAT_RC_OK_EAT + return weechat.WEECHAT_RC_OK + + # We're catching keys! Only "normal" key presses interest us (e.g. "a"), + # not complex ones (e.g. backspace). + if len(keys) == 1 and catching_keys_data['amount']: + catching_keys_data['keys'] += keys + catching_keys_data['amount'] -= 1 + # Done catching keys, execute the callback. + if catching_keys_data['amount'] == 0: + globals()[catching_keys_data['callback']]() + vi_buffer = "" + weechat.bar_item_update("vi_buffer") + return weechat.WEECHAT_RC_OK_EAT + + # We're in command-line mode. + if mode == "COMMAND": + buf = weechat.current_buffer() + cmd_text = weechat.buffer_get_string(buf, "input") + weechat.hook_timer(1, 0, 1, "cb_check_cmd_mode", "") + # Return key. + if keys == "\x01M": + weechat.hook_timer(1, 0, 1, "cb_exec_cmd", cmd_text) + if len(cmd_text) > 1 and (not cmd_history or + cmd_history[-1] != cmd_text): + cmd_history.append(cmd_text) + cmd_history_index = 0 + set_mode("NORMAL") + buf = weechat.current_buffer() + input_line = input_line_backup[buf]['input_line'] + weechat.buffer_set(buf, "input", input_line) + set_cur(buf, input_line, input_line_backup[buf]['cur'], False) + # Up arrow. + elif keys == "\x01[[A": + if cmd_history_index > -len(cmd_history): + cmd_history_index -= 1 + cmd_text = cmd_history[cmd_history_index] + weechat.buffer_set(buf, "input", cmd_text) + set_cur(buf, cmd_text, len(cmd_text), False) + # Down arrow. + elif keys == "\x01[[B": + if cmd_history_index < -1: + cmd_history_index += 1 + cmd_text = cmd_history[cmd_history_index] + else: + cmd_history_index = 0 + cmd_text = ":" + weechat.buffer_set(buf, "input", cmd_text) + set_cur(buf, cmd_text, len(cmd_text), False) + # Tab key. No completion when searching ("/"). + elif keys == "\x01I" and cmd_text[0] == ":": + if cmd_text_orig is None: + input_ = list(cmd_text) + del input_[0] + cmd_text_orig = "".join(input_) + cmd_compl_list = [] + for cmd in VI_COMMANDS.keys(): + if cmd.startswith(cmd_text_orig): + cmd_compl_list.append(cmd) + if cmd_compl_list: + curr_suggestion = cmd_compl_list[cmd_compl_pos] + cmd_text = ":%s" % curr_suggestion + cmd_compl_list[cmd_compl_pos] = weechat.string_eval_expression( + "${color:bold}%s${color:-bold}" % curr_suggestion, + {}, {}, {}) + cmd_compl_text = ", ".join(cmd_compl_list) + cmd_compl_pos = (cmd_compl_pos + 1) % len(cmd_compl_list) + weechat.buffer_set(buf, "input", cmd_text) + set_cur(buf, cmd_text, len(cmd_text), False) + # Input. + else: + cmd_compl_text = "" + cmd_text_orig = None + cmd_compl_pos = 0 + weechat.bar_item_update("cmd_completion") + if keys in ["\x01M", "\x01[[A", "\x01[[B"]: + cmd_compl_text = "" + return weechat.WEECHAT_RC_OK_EAT + else: + return weechat.WEECHAT_RC_OK + # Enter command mode. + elif keys in [":", "/"]: + if keys == "/": + weechat.command("", "/input search_text_here") + if not weechat.config_string_to_boolean( + vimode_settings['search_vim']): + return weechat.WEECHAT_RC_OK + else: + buf = weechat.current_buffer() + cur = weechat.buffer_get_integer(buf, "input_pos") + input_line = weechat.buffer_get_string(buf, "input") + input_line_backup[buf] = {'input_line': input_line, 'cur': cur} + input_line = ":" + weechat.buffer_set(buf, "input", input_line) + set_cur(buf, input_line, 1, False) + set_mode("COMMAND") + cmd_compl_text = "" + cmd_text_orig = None + cmd_compl_pos = 0 + return weechat.WEECHAT_RC_OK_EAT + + # Add key to the buffer. + vi_buffer += keys + weechat.bar_item_update("vi_buffer") + if not vi_buffer: + return weechat.WEECHAT_RC_OK + + # Check if the keys have a (partial or full) match. If so, also get the + # keys without the count. (These are the actual keys we should handle.) + # After that, `vi_buffer` is only used for display purposes — only + # `vi_keys` is checked for all the handling. + # If no matches are found, the keys buffer is cleared. + matched, vi_keys, count = get_keys_and_count(vi_buffer) + if not matched: + vi_buffer = "" + return weechat.WEECHAT_RC_OK_EAT + # Check if it's a command (user defined key mapped to a :cmd). + if vi_keys.startswith(":"): + weechat.hook_timer(1, 0, 1, "cb_exec_cmd", "{} {}".format(vi_keys, + count)) + vi_buffer = "" + return weechat.WEECHAT_RC_OK_EAT + # It's a WeeChat command (user defined key mapped to a /cmd). + if vi_keys.startswith("/"): + weechat.command("", vi_keys) + vi_buffer = "" + return weechat.WEECHAT_RC_OK_EAT + + buf = weechat.current_buffer() + input_line = weechat.buffer_get_string(buf, "input") + cur = weechat.buffer_get_integer(buf, "input_pos") + + # It's a default mapping. If the corresponding value is a string, we assume + # it's a WeeChat command. Otherwise, it's a method we'll call. + if vi_keys in VI_KEYS: + if vi_keys not in ['u', '\x01R']: + add_undo_history(buf, input_line) + if isinstance(VI_KEYS[vi_keys], str): + for _ in range(max(count, 1)): + # This is to avoid crashing WeeChat on script reloads/unloads, + # because no hooks must still be running when a script is + # reloaded or unloaded. + if (VI_KEYS[vi_keys] == "/input return" and + input_line.startswith("/script ")): + return weechat.WEECHAT_RC_OK + weechat.command("", VI_KEYS[vi_keys]) + current_cur = weechat.buffer_get_integer(buf, "input_pos") + set_cur(buf, input_line, current_cur) + else: + VI_KEYS[vi_keys](buf, input_line, cur, count) + # It's a motion (e.g. "w") — call `motion_X()` where X is the motion, then + # set the cursor's position to what that function returned. + elif vi_keys in VI_MOTIONS: + if vi_keys in SPECIAL_CHARS: + func = "motion_%s" % SPECIAL_CHARS[vi_keys] + else: + func = "motion_%s" % vi_keys + end, _, _ = globals()[func](input_line, cur, count) + set_cur(buf, input_line, end) + # It's an operator + motion (e.g. "dw") — call `motion_X()` (where X is + # the motion), then we call `operator_Y()` (where Y is the operator) + # with the position `motion_X()` returned. `operator_Y()` should then + # handle changing the input line. + elif (len(vi_keys) > 1 and + vi_keys[0] in VI_OPERATORS and + vi_keys[1:] in VI_MOTIONS): + add_undo_history(buf, input_line) + if vi_keys[1:] in SPECIAL_CHARS: + func = "motion_%s" % SPECIAL_CHARS[vi_keys[1:]] + else: + func = "motion_%s" % vi_keys[1:] + pos, overwrite, catching = globals()[func](input_line, cur, count) + # If it's a catching motion, we don't want to call the operator just + # yet -- this code will run again when the motion is complete, at which + # point we will. + if not catching: + oper = "operator_%s" % vi_keys[0] + globals()[oper](buf, input_line, cur, pos, overwrite) + # The combo isn't completed yet (e.g. just "d"). + else: + return weechat.WEECHAT_RC_OK_EAT + + # We've already handled the key combo, so clear the keys buffer. + if not catching_keys_data['amount']: + vi_buffer = "" + weechat.bar_item_update("vi_buffer") + return weechat.WEECHAT_RC_OK_EAT + +def cb_check_imap_esc(data, remaining_calls): + """Clear the imap_esc sequence after some time if nothing was pressed.""" + global vi_buffer + if vi_buffer == data: + vi_buffer = "" + weechat.bar_item_update("vi_buffer") + return weechat.WEECHAT_RC_OK + +def cb_key_combo_search(data, signal, signal_data): + """Handle keys while search mode is active (if search_vim is enabled).""" + if not weechat.config_string_to_boolean(vimode_settings['search_vim']): + return weechat.WEECHAT_RC_OK + if mode == "COMMAND": + if signal_data == "\x01M": + set_mode("SEARCH") + return weechat.WEECHAT_RC_OK_EAT + elif mode == "SEARCH": + if signal_data == "\x01M": + set_mode("NORMAL") + else: + if signal_data == "n": + weechat.command("", "/input search_next") + elif signal_data == "N": + weechat.command("", "/input search_previous") + # Start a new search. + elif signal_data == "/": + weechat.command("", "/input search_stop_here") + set_mode("NORMAL") + weechat.command("", "/input search_text_here") + return weechat.WEECHAT_RC_OK_EAT + return weechat.WEECHAT_RC_OK + +# Callbacks. +# ========== + +# Bar items. +# ---------- + +def cb_vi_buffer(data, item, window): + """Return the content of the vi buffer (pressed keys on hold).""" + return vi_buffer + +def cb_cmd_completion(data, item, window): + """Return the text of the command line.""" + return cmd_compl_text + +def cb_mode_indicator(data, item, window): + """Return the current mode (INSERT/NORMAL/REPLACE/...).""" + return "{}{}{}{}{}".format( + weechat.color(mode_colors[mode]), + vimode_settings['mode_indicator_prefix'], mode, + vimode_settings['mode_indicator_suffix'], weechat.color("reset")) + +def cb_line_numbers(data, item, window): + """Fill the line numbers bar item.""" + bar_height = weechat.window_get_integer(window, "win_chat_height") + content = "" + for i in range(1, bar_height + 1): + content += "{}{}{}\n".format(vimode_settings['line_number_prefix'], i, + vimode_settings['line_number_suffix']) + return content + +# Callbacks for the line numbers bar. +# ................................... + +def cb_update_line_numbers(data, signal, signal_data): + """Call `cb_timer_update_line_numbers()` when switching buffers. + + A timer is required because the bar item is refreshed before the new buffer + is actually displayed, so ``win_chat_height`` would refer to the old + buffer. Using a timer refreshes the item after the new buffer is displayed. + """ + weechat.hook_timer(10, 0, 1, "cb_timer_update_line_numbers", "") + return weechat.WEECHAT_RC_OK + +def cb_timer_update_line_numbers(data, remaining_calls): + """Update the line numbers bar item.""" + weechat.bar_item_update("line_numbers") + return weechat.WEECHAT_RC_OK + + +# Config. +# ------- + +def cb_config(data, option, value): + """Script option changed, update our copy.""" + option_name = option.split(".")[-1] + if option_name in vimode_settings: + vimode_settings[option_name] = value + if option_name == 'user_mappings': + load_user_mappings() + if "_color" in option_name: + load_mode_colors() + return weechat.WEECHAT_RC_OK + +def load_mode_colors(): + mode_colors.update({ + 'NORMAL': "{},{}".format( + vimode_settings['mode_indicator_normal_color'], + vimode_settings['mode_indicator_normal_color_bg']), + 'INSERT': "{},{}".format( + vimode_settings['mode_indicator_insert_color'], + vimode_settings['mode_indicator_insert_color_bg']), + 'REPLACE': "{},{}".format( + vimode_settings['mode_indicator_replace_color'], + vimode_settings['mode_indicator_replace_color_bg']), + 'COMMAND': "{},{}".format( + vimode_settings['mode_indicator_cmd_color'], + vimode_settings['mode_indicator_cmd_color_bg']), + 'SEARCH': "{},{}".format( + vimode_settings['mode_indicator_search_color'], + vimode_settings['mode_indicator_search_color_bg']) + }) + +def load_user_mappings(): + """Load user-defined mappings.""" + mappings = {} + if vimode_settings['user_mappings']: + mappings.update(json.loads(vimode_settings['user_mappings'])) + vimode_settings['user_mappings'] = mappings + + +# Command-line execution. +# ----------------------- + +def cb_exec_cmd(data, remaining_calls): + """Translate and execute our custom commands to WeeChat command.""" + # Process the entered command. + data = list(data) + del data[0] + data = "".join(data) + # s/foo/bar command. + if data.startswith("s/"): + cmd = data + parsed_cmd = next(csv.reader(StringIO(cmd), delimiter="/", + escapechar="\\")) + pattern = re.escape(parsed_cmd[1]) + repl = parsed_cmd[2] + repl = re.sub(r"([^\\])&", r"\1" + pattern, repl) + flag = None + if len(parsed_cmd) == 4: + flag = parsed_cmd[3] + count = 1 + if flag == "g": + count = 0 + buf = weechat.current_buffer() + input_line = weechat.buffer_get_string(buf, "input") + input_line = re.sub(pattern, repl, input_line, count) + weechat.buffer_set(buf, "input", input_line) + # Shell command. + elif data.startswith("!"): + weechat.command("", "/exec -buffer shell %s" % data[1:]) + # Commands like `:22`. This should start cursor mode (``/cursor``) and take + # us to the relevant line. + elif data.isdigit(): + line_number = int(data) + hdata_window = weechat.hdata_get("window") + window = weechat.current_window() + x = weechat.hdata_integer(hdata_window, window, "win_chat_x") + y = (weechat.hdata_integer(hdata_window, window, "win_chat_y") + + (line_number - 1)) + weechat.command("", "/cursor go {},{}".format(x, y)) + # Check againt defined commands. + elif data: + raw_data = data + data = data.split(" ", 1) + cmd = data[0] + args = "" + if len(data) == 2: + args = data[1] + if cmd in VI_COMMANDS: + if isinstance(VI_COMMANDS[cmd], str): + weechat.command("", "%s %s" % (VI_COMMANDS[cmd], args)) + else: + VI_COMMANDS[cmd](args) + else: + # Check for commands not sepearated by space (e.g. "b2") + for i in range(1, len(raw_data)): + tmp_cmd = raw_data[:i] + tmp_args = raw_data[i:] + if tmp_cmd in VI_COMMANDS and tmp_args.isdigit(): + weechat.command("", "%s %s" % (VI_COMMANDS[tmp_cmd], + tmp_args)) + return weechat.WEECHAT_RC_OK + # No vi commands found, run the command as WeeChat command + weechat.command("", "/{} {}".format(cmd, args)) + return weechat.WEECHAT_RC_OK + +def cb_vimode_go_to_normal(data, buf, args): + set_mode("NORMAL") + return weechat.WEECHAT_RC_OK + +# Script commands. +# ---------------- + +def cb_vimode_cmd(data, buf, args): + """Handle script commands (``/vimode ``).""" + # ``/vimode`` or ``/vimode help`` + if not args or args == "help": + weechat.prnt("", "[vimode.py] %s" % README_URL) + # ``/vimode bind_keys`` or ``/vimode bind_keys --list`` + elif args.startswith("bind_keys"): + infolist = weechat.infolist_get("key", "", "default") + weechat.infolist_reset_item_cursor(infolist) + commands = ["/key unbind ctrl-W", + "/key bind ctrl-W /input delete_previous_word", + "/key bind ctrl-^ /input jump_last_buffer_displayed", + "/key bind ctrl-Wh /window left", + "/key bind ctrl-Wj /window down", + "/key bind ctrl-Wk /window up", + "/key bind ctrl-Wl /window right", + "/key bind ctrl-W= /window balance", + "/key bind ctrl-Wx /window swap", + "/key bind ctrl-Ws /window splith", + "/key bind ctrl-Wv /window splitv", + "/key bind ctrl-Wq /window merge"] + while weechat.infolist_next(infolist): + key = weechat.infolist_string(infolist, "key") + if re.match(REGEX_PROBLEMATIC_KEYBINDINGS, key): + commands.append("/key unbind %s" % key) + if args == "bind_keys": + weechat.prnt("", "Running commands:") + for command in commands: + weechat.command("", command) + weechat.prnt("", "Done.") + elif args == "bind_keys --list": + weechat.prnt("", "Listing commands we'll run:") + for command in commands: + weechat.prnt("", " %s" % command) + weechat.prnt("", "Done.") + return weechat.WEECHAT_RC_OK + + +# Helpers. +# ======== + +# Motions/keys helpers. +# --------------------- + +def get_pos(data, regex, cur, ignore_cur=False, count=0): + """Return the position of `regex` match in `data`, starting at `cur`. + + Args: + data (str): the data to search in. + regex (pattern): regex pattern to search for. + cur (int): where to start the search. + ignore_cur (bool, optional): should the first match be ignored if it's + also the character at `cur`? + Defaults to False. + count (int, optional): the index of the match to return. Defaults to 0. + + Returns: + int: position of the match. -1 if no matches are found. + """ + # List of the *positions* of the found patterns. + matches = [m.start() for m in re.finditer(regex, data[cur:])] + pos = -1 + if count: + if len(matches) > count - 1: + if ignore_cur and matches[0] == 0: + if len(matches) > count: + pos = matches[count] + else: + pos = matches[count - 1] + elif matches: + if ignore_cur and matches[0] == 0: + if len(matches) > 1: + pos = matches[1] + else: + pos = matches[0] + return pos + +def set_cur(buf, input_line, pos, cap=True): + """Set the cursor's position. + + Args: + buf (str): pointer to the current WeeChat buffer. + input_line (str): the content of the input line. + pos (int): the position to set the cursor to. + cap (bool, optional): if True, the `pos` will shortened to the length + of `input_line` if it's too long. Defaults to True. + """ + if cap: + pos = min(pos, len(input_line) - 1) + weechat.buffer_set(buf, "input_pos", str(pos)) + +def start_catching_keys(amount, callback, input_line, cur, count, buf=None): + """Start catching keys. Used for special commands (e.g. "f", "r"). + + amount (int): amount of keys to catch. + callback (str): name of method to call once all keys are caught. + input_line (str): input line's content. + cur (int): cursor's position. + count (int): count, e.g. "2" for "2fs". + buf (str, optional): pointer to the current WeeChat buffer. + Defaults to None. + + `catching_keys_data` is a dict with the above arguments, as well as: + keys (str): pressed keys will be added under this key. + new_cur (int): the new cursor's position, set in the callback. + + When catching keys is active, normal pressed keys (e.g. "a" but not arrows) + will get added to `catching_keys_data` under the key "keys", and will not + be handled any further. + Once all keys are caught, the method defined in the "callback" key is + called, and can use the data in `catching_keys_data` to perform its action. + """ + global catching_keys_data + if "new_cur" in catching_keys_data: + new_cur = catching_keys_data['new_cur'] + catching_keys_data = {'amount': 0} + return new_cur, True, False + catching_keys_data = ({'amount': amount, + 'callback': callback, + 'input_line': input_line, + 'cur': cur, + 'keys': "", + 'count': count, + 'new_cur': 0, + 'buf': buf}) + return cur, False, True + +def get_keys_and_count(combo): + """Check if `combo` is a valid combo and extract keys/counts if so. + + Args: + combo (str): pressed keys combo. + + Returns: + matched (bool): True if the combo has a (partial or full) match, False + otherwise. + combo (str): `combo` with the count removed. These are the actual keys + we should handle. User mappings are also expanded. + count (int): count for `combo`. + """ + # Look for a potential match (e.g. "d" might become "dw" or "dd" so we + # accept it, but "d9" is invalid). + matched = False + # Digits are allowed at the beginning (counts or "0"). + count = 0 + if combo.isdigit(): + matched = True + elif combo and combo[0].isdigit(): + count = "" + for char in combo: + if char.isdigit(): + count += char + else: + break + combo = combo.replace(count, "", 1) + count = int(count) + # It's a user defined key. Expand it. + if combo in vimode_settings['user_mappings']: + combo = vimode_settings['user_mappings'][combo] + # It's a WeeChat command. + if not matched and combo.startswith("/"): + matched = True + # Check against defined keys. + if not matched: + for key in VI_KEYS: + if key.startswith(combo): + matched = True + break + # Check against defined motions. + if not matched: + for motion in VI_MOTIONS: + if motion.startswith(combo): + matched = True + break + # Check against defined operators + motions. + if not matched: + for operator in VI_OPERATORS: + if combo.startswith(operator): + # Check for counts before the motion (but after the operator). + vi_keys_no_op = combo[len(operator):] + # There's no motion yet. + if vi_keys_no_op.isdigit(): + matched = True + break + # Get the motion count, then multiply the operator count by + # it, similar to vim's behavior. + elif vi_keys_no_op and vi_keys_no_op[0].isdigit(): + motion_count = "" + for char in vi_keys_no_op: + if char.isdigit(): + motion_count += char + else: + break + # Remove counts from `vi_keys_no_op`. + combo = combo.replace(motion_count, "", 1) + motion_count = int(motion_count) + count = max(count, 1) * motion_count + # Check against defined motions. + for motion in VI_MOTIONS: + if motion.startswith(combo[1:]): + matched = True + break + return matched, combo, count + + +# Other helpers. +# -------------- + +def set_mode(arg): + """Set the current mode and update the bar mode indicator.""" + global mode + buf = weechat.current_buffer() + input_line = weechat.buffer_get_string(buf, "input") + if mode == "INSERT" and arg == "NORMAL": + add_undo_history(buf, input_line) + mode = arg + # If we're going to Normal mode, the cursor must move one character to the + # left. + if mode == "NORMAL": + cur = weechat.buffer_get_integer(buf, "input_pos") + set_cur(buf, input_line, cur - 1, False) + weechat.bar_item_update("mode_indicator") + +def cb_check_cmd_mode(data, remaining_calls): + """Exit command mode if user erases the leading ':' character.""" + buf = weechat.current_buffer() + cmd_text = weechat.buffer_get_string(buf, "input") + if not cmd_text: + set_mode("NORMAL") + return weechat.WEECHAT_RC_OK + +def add_undo_history(buf, input_line): + """Add an item to the per-buffer undo history.""" + if buf in undo_history: + if not undo_history[buf] or undo_history[buf][-1] != input_line: + undo_history[buf].append(input_line) + undo_history_index[buf] = -1 + else: + undo_history[buf] = ['', input_line] + undo_history_index[buf] = -1 + +def clear_undo_history(buf): + """Clear the undo history for a given buffer.""" + undo_history[buf] = [''] + undo_history_index[buf] = -1 + +def print_warning(text): + """Print warning, in red, to the current buffer.""" + weechat.prnt("", ("%s[vimode.py] %s" % (weechat.color("red"), text))) + +def check_warnings(): + """Warn the user about problematic key bindings and tmux/screen.""" + user_warned = False + # Warn the user about problematic key bindings that may conflict with + # vimode. + # The solution is to remove these key bindings, but that's up to the user. + infolist = weechat.infolist_get("key", "", "default") + problematic_keybindings = [] + while weechat.infolist_next(infolist): + key = weechat.infolist_string(infolist, "key") + command = weechat.infolist_string(infolist, "command") + if re.match(REGEX_PROBLEMATIC_KEYBINDINGS, key): + problematic_keybindings.append("%s -> %s" % (key, command)) + if problematic_keybindings: + user_warned = True + print_warning("Problematic keybindings detected:") + for keybinding in problematic_keybindings: + print_warning(" %s" % keybinding) + print_warning("These keybindings may conflict with vimode.") + print_warning("You can remove problematic key bindings and add" + " recommended ones by using /vimode bind_keys, or only" + " list them with /vimode bind_keys --list") + print_warning("For help, see: %s" % FAQ_KEYBINDINGS) + del problematic_keybindings + # Warn tmux/screen users about possible Esc detection delays. + if "STY" in os.environ or "TMUX" in os.environ: + if user_warned: + weechat.prnt("", "") + user_warned = True + print_warning("tmux/screen users, see: %s" % FAQ_ESC) + if (user_warned and not + weechat.config_string_to_boolean(vimode_settings['no_warn'])): + if user_warned: + weechat.prnt("", "") + print_warning("To force disable warnings, you can set" + " plugins.var.python.vimode.no_warn to 'on'") + + +# Main script. +# ============ + +if __name__ == "__main__": + weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, + SCRIPT_LICENSE, SCRIPT_DESC, "", "") + # Warn the user if he's using an unsupported WeeChat version. + VERSION = weechat.info_get("version_number", "") + if int(VERSION) < 0x01000000: + print_warning("Please upgrade to WeeChat ≥ 1.0.0. Previous versions" + " are not supported.") + # Set up script options. + for option, value in list(vimode_settings.items()): + if weechat.config_is_set_plugin(option): + vimode_settings[option] = weechat.config_get_plugin(option) + else: + weechat.config_set_plugin(option, value[0]) + vimode_settings[option] = value[0] + weechat.config_set_desc_plugin(option, + "%s (default: \"%s\")" % (value[1], + value[0])) + load_user_mappings() + load_mode_colors() + # Warn the user about possible problems if necessary. + if not weechat.config_string_to_boolean(vimode_settings['no_warn']): + check_warnings() + # Create bar items and setup hooks. + weechat.bar_item_new("mode_indicator", "cb_mode_indicator", "") + weechat.bar_item_new("cmd_completion", "cb_cmd_completion", "") + weechat.bar_item_new("vi_buffer", "cb_vi_buffer", "") + weechat.bar_item_new("line_numbers", "cb_line_numbers", "") + if int(VERSION) >= 0x02090000: + weechat.bar_new("vi_line_numbers", "on", "0", "window", "", "left", + "vertical", "vertical", "0", "0", "default", "default", + "default", "default", "0", "line_numbers") + else: + weechat.bar_new("vi_line_numbers", "on", "0", "window", "", "left", + "vertical", "vertical", "0", "0", "default", "default", + "default", "0", "line_numbers") + weechat.hook_config("plugins.var.python.%s.*" % SCRIPT_NAME, "cb_config", + "") + weechat.hook_signal("key_pressed", "cb_key_pressed", "") + weechat.hook_signal("key_combo_default", "cb_key_combo_default", "") + weechat.hook_signal("key_combo_search", "cb_key_combo_search", "") + weechat.hook_signal("buffer_switch", "cb_update_line_numbers", "") + weechat.hook_command("vimode", SCRIPT_DESC, "[help | bind_keys [--list]]", + " help: show help\n" + "bind_keys: unbind problematic keys, and bind" + " recommended keys to use in WeeChat\n" + " --list: only list changes", + "help || bind_keys |--list", + "cb_vimode_cmd", "") + weechat.hook_command("vimode_go_to_normal", + ("This command can be used for key bindings to go to " + "normal mode."), + "", "", "", "cb_vimode_go_to_normal", "") + # Remove obsolete bar. + vi_cmd_bar = weechat.bar_search("vi_cmd") + weechat.bar_remove(vi_cmd_bar) diff --git a/.weechat/relay.conf b/.weechat/relay.conf new file mode 100644 index 00000000..341b8112 --- /dev/null +++ b/.weechat/relay.conf @@ -0,0 +1,59 @@ +# +# weechat -- relay.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +auto_open_buffer = on +raw_messages = 256 + +[color] +client = cyan +status_active = lightblue +status_auth_failed = lightred +status_connecting = yellow +status_disconnected = lightred +status_waiting_auth = brown +text = default +text_bg = default +text_selected = white + +[network] +allow_empty_password = off +allowed_ips = "" +auth_timeout = 60 +bind_address = "" +clients_purge_delay = 0 +compression_level = 6 +ipv6 = on +max_clients = 5 +nonce_size = 16 +password = "" +password_hash_algo = "*" +password_hash_iterations = 100000 +ssl_cert_key = "%h/ssl/relay.pem" +ssl_priorities = "NORMAL:-VERS-SSL3.0" +totp_secret = "" +totp_window = 0 +websocket_allowed_origins = "" + +[irc] +backlog_max_minutes = 1440 +backlog_max_number = 256 +backlog_since_last_disconnect = on +backlog_since_last_message = off +backlog_tags = "irc_privmsg" +backlog_time_format = "[%H:%M] " + +[weechat] +commands = "" + +[port] + +[path] diff --git a/.weechat/ruby.conf b/.weechat/ruby.conf new file mode 100644 index 00000000..f6de7fbf --- /dev/null +++ b/.weechat/ruby.conf @@ -0,0 +1,14 @@ +# +# weechat -- ruby.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/script.conf b/.weechat/script.conf new file mode 100644 index 00000000..121f1891 --- /dev/null +++ b/.weechat/script.conf @@ -0,0 +1,56 @@ +# +# weechat -- script.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +columns = "%s %n %V %v %u | %d | %t" +diff_color = on +diff_command = "auto" +display_source = on +quiet_actions = on +sort = "i,p,n" +translate_description = on +use_keys = on + +[color] +status_autoloaded = cyan +status_held = white +status_installed = lightcyan +status_obsolete = lightmagenta +status_popular = yellow +status_running = lightgreen +status_unknown = lightred +text = default +text_bg = default +text_bg_selected = red +text_date = default +text_date_selected = white +text_delimiters = default +text_description = default +text_description_selected = white +text_extension = default +text_extension_selected = white +text_name = cyan +text_name_selected = lightcyan +text_selected = white +text_tags = brown +text_tags_selected = yellow +text_version = magenta +text_version_loaded = default +text_version_loaded_selected = white +text_version_selected = lightmagenta + +[scripts] +autoload = on +cache_expire = 1440 +download_timeout = 30 +hold = "" +path = "%h/script" +url = "https://weechat.org/files/plugins.xml.gz" diff --git a/.weechat/script/plugins.xml.gz b/.weechat/script/plugins.xml.gz new file mode 100644 index 00000000..7521e691 Binary files /dev/null and b/.weechat/script/plugins.xml.gz differ diff --git a/.weechat/sec.conf b/.weechat/sec.conf new file mode 100644 index 00000000..8c60d034 --- /dev/null +++ b/.weechat/sec.conf @@ -0,0 +1,18 @@ +# +# weechat -- sec.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[crypt] +cipher = aes256 +hash_algo = sha256 +passphrase_file = "" +salt = on + +[data] diff --git a/.weechat/spell.conf b/.weechat/spell.conf new file mode 100644 index 00000000..f65348de --- /dev/null +++ b/.weechat/spell.conf @@ -0,0 +1,33 @@ +# +# weechat -- spell.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[color] +misspelled = lightred +suggestion = default +suggestion_delimiter_dict = cyan +suggestion_delimiter_word = cyan + +[check] +commands = "away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic" +default_dict = "" +during_search = off +enabled = off +real_time = off +suggestions = -1 +word_min_length = 2 + +[dict] + +[look] +suggestion_delimiter_dict = " / " +suggestion_delimiter_word = "," + +[option] diff --git a/.weechat/tcl.conf b/.weechat/tcl.conf new file mode 100644 index 00000000..4c0e3896 --- /dev/null +++ b/.weechat/tcl.conf @@ -0,0 +1,14 @@ +# +# weechat -- tcl.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +check_license = off +eval_keep_context = on diff --git a/.weechat/trigger.conf b/.weechat/trigger.conf new file mode 100644 index 00000000..24246667 --- /dev/null +++ b/.weechat/trigger.conf @@ -0,0 +1,67 @@ +# +# weechat -- trigger.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +enabled = on +monitor_strip_colors = off + +[color] +flag_command = lightgreen +flag_conditions = yellow +flag_post_action = lightblue +flag_regex = lightcyan +flag_return_code = lightmagenta +regex = white +replace = cyan +trigger = green +trigger_disabled = red + +[trigger] +beep.arguments = "" +beep.command = "/print -beep" +beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})" +beep.enabled = on +beep.hook = print +beep.post_action = none +beep.regex = "" +beep.return_code = ok +cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" +cmd_pass.command = "" +cmd_pass.conditions = "" +cmd_pass.enabled = on +cmd_pass.hook = modifier +cmd_pass.post_action = none +cmd_pass.regex = "==^((/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +(id|identify|set +password|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" +cmd_pass.return_code = ok +cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" +cmd_pass_register.command = "" +cmd_pass_register.conditions = "" +cmd_pass_register.enabled = on +cmd_pass_register.hook = modifier +cmd_pass_register.post_action = none +cmd_pass_register.regex = "==^(/(msg|m|quote) +nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:3}}${re:4}" +cmd_pass_register.return_code = ok +msg_auth.arguments = "5000|irc_message_auth" +msg_auth.command = "" +msg_auth.conditions = "" +msg_auth.enabled = on +msg_auth.hook = modifier +msg_auth.post_action = none +msg_auth.regex = "==^(.*(id|identify|set +password|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" +msg_auth.return_code = ok +server_pass.arguments = "5000|input_text_display;5000|history_add" +server_pass.command = "" +server_pass.conditions = "" +server_pass.enabled = on +server_pass.hook = modifier +server_pass.post_action = none +server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}" +server_pass.return_code = ok diff --git a/.weechat/weechat.conf b/.weechat/weechat.conf new file mode 100644 index 00000000..15d80295 --- /dev/null +++ b/.weechat/weechat.conf @@ -0,0 +1,685 @@ +# +# weechat -- weechat.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[debug] + +[startup] +command_after_plugins = "" +command_before_plugins = "" +display_logo = on +display_version = on +sys_rlimit = "" + +[look] +align_end_of_lines = message +align_multiline_words = on +bar_more_down = "++" +bar_more_left = "<<" +bar_more_right = ">>" +bar_more_up = "--" +bare_display_exit_on_input = on +bare_display_time_format = "%H:%M" +buffer_auto_renumber = on +buffer_notify_default = all +buffer_position = end +buffer_search_case_sensitive = off +buffer_search_force_default = off +buffer_search_regex = off +buffer_search_where = prefix_message +buffer_time_format = "%H:%M:%S" +buffer_time_same = "" +color_basic_force_bold = off +color_inactive_buffer = on +color_inactive_message = on +color_inactive_prefix = on +color_inactive_prefix_buffer = on +color_inactive_time = off +color_inactive_window = on +color_nick_offline = off +color_pairs_auto_reset = 5 +color_real_white = off +command_chars = "" +command_incomplete = off +confirm_quit = off +confirm_upgrade = off +day_change = on +day_change_message_1date = "-- %a, %d %b %Y --" +day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" +eat_newline_glitch = off +emphasized_attributes = "" +highlight = "" +highlight_regex = "" +highlight_tags = "" +hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0 || ${info:relay_client_count,weechat,connected} > 0" +hotlist_buffer_separator = ", " +hotlist_count_max = 2 +hotlist_count_min_msg = 2 +hotlist_names_count = 3 +hotlist_names_length = 0 +hotlist_names_level = 12 +hotlist_names_merged_buffers = off +hotlist_prefix = "H: " +hotlist_remove = merged +hotlist_short_names = on +hotlist_sort = group_time_asc +hotlist_suffix = "" +hotlist_unique_numbers = on +input_cursor_scroll = 20 +input_share = none +input_share_overwrite = off +input_undo_max = 32 +item_away_message = on +item_buffer_filter = "*" +item_buffer_zoom = "!" +item_mouse_status = "M" +item_time_format = "%H:%M" +jump_current_to_previous_buffer = on +jump_previous_buffer_when_closing = on +jump_smart_back_to_buffer = on +key_bind_safe = on +key_grab_delay = 800 +mouse = off +mouse_timer_delay = 100 +nick_color_force = "" +nick_color_hash = djb2 +nick_color_hash_salt = "" +nick_color_stop_chars = "_|[" +nick_prefix = "" +nick_suffix = "" +paste_auto_add_newline = on +paste_bracketed = on +paste_bracketed_timer_delay = 10 +paste_max_lines = 1 +prefix_action = " *" +prefix_align = right +prefix_align_max = 0 +prefix_align_min = 0 +prefix_align_more = "+" +prefix_align_more_after = on +prefix_buffer_align = right +prefix_buffer_align_max = 0 +prefix_buffer_align_more = "+" +prefix_buffer_align_more_after = on +prefix_error = "=!=" +prefix_join = "-->" +prefix_network = "--" +prefix_quit = "<--" +prefix_same_nick = "" +prefix_same_nick_middle = "" +prefix_suffix = "|" +quote_nick_prefix = "<" +quote_nick_suffix = ">" +quote_time_format = "%H:%M:%S" +read_marker = line +read_marker_always_show = off +read_marker_string = "- " +save_config_on_exit = on +save_config_with_fsync = off +save_layout_on_exit = none +scroll_amount = 3 +scroll_bottom_after_switch = off +scroll_page_percent = 100 +search_text_not_found_alert = on +separator_horizontal = "-" +separator_vertical = "" +tab_width = 1 +time_format = "%a, %d %b %Y %T" +window_auto_zoom = off +window_separator_horizontal = on +window_separator_vertical = on +window_title = "" +word_chars_highlight = "!\u00A0,-,_,|,alnum" +word_chars_input = "!\u00A0,-,_,|,alnum" + +[palette] + +[color] +bar_more = lightmagenta +chat = default +chat_bg = default +chat_buffer = white +chat_channel = white +chat_day_change = cyan +chat_delimiters = green +chat_highlight = yellow +chat_highlight_bg = magenta +chat_host = cyan +chat_inactive_buffer = default +chat_inactive_window = default +chat_nick = lightcyan +chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue" +chat_nick_offline = default +chat_nick_offline_highlight = default +chat_nick_offline_highlight_bg = blue +chat_nick_other = cyan +chat_nick_prefix = green +chat_nick_self = white +chat_nick_suffix = green +chat_prefix_action = white +chat_prefix_buffer = brown +chat_prefix_buffer_inactive_buffer = default +chat_prefix_error = yellow +chat_prefix_join = lightgreen +chat_prefix_more = lightmagenta +chat_prefix_network = magenta +chat_prefix_quit = lightred +chat_prefix_suffix = green +chat_read_marker = magenta +chat_read_marker_bg = default +chat_server = brown +chat_tags = red +chat_text_found = yellow +chat_text_found_bg = lightmagenta +chat_time = default +chat_time_delimiters = brown +chat_value = cyan +chat_value_null = blue +emphasized = yellow +emphasized_bg = magenta +input_actions = lightgreen +input_text_not_found = red +item_away = yellow +nicklist_away = cyan +nicklist_group = green +separator = blue +status_count_highlight = magenta +status_count_msg = brown +status_count_other = default +status_count_private = green +status_data_highlight = lightmagenta +status_data_msg = yellow +status_data_other = default +status_data_private = lightgreen +status_filter = green +status_more = yellow +status_mouse = green +status_name = white +status_name_ssl = lightgreen +status_nicklist_count = default +status_number = yellow +status_time = default + +[completion] +base_word_until_cursor = on +command_inline = on +default_template = "%(nicks)|%(irc_channels)" +nick_add_space = on +nick_case_sensitive = off +nick_completer = ": " +nick_first_only = off +nick_ignore_chars = "[]`_-^" +partial_completion_alert = on +partial_completion_command = off +partial_completion_command_arg = off +partial_completion_count = on +partial_completion_other = off +partial_completion_templates = "config_options" + +[history] +display_default = 5 +max_buffer_lines_minutes = 0 +max_buffer_lines_number = 4096 +max_commands = 100 +max_visited_buffers = 50 + +[proxy] + +[network] +connection_timeout = 60 +gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt" +gnutls_handshake_timeout = 30 +proxy_curl = "" + +[plugin] +autoload = "*" +debug = off +extension = ".so,.dll" +path = "%h/plugins" +save_config_on_unload = on + +[bar] +buflist.color_bg = default +buflist.color_bg_inactive = default +buflist.color_delim = default +buflist.color_fg = default +buflist.conditions = "" +buflist.filling_left_right = vertical +buflist.filling_top_bottom = columns_vertical +buflist.hidden = off +buflist.items = "buflist" +buflist.position = left +buflist.priority = 0 +buflist.separator = on +buflist.size = 0 +buflist.size_max = 0 +buflist.type = root +fset.color_bg = default +fset.color_bg_inactive = default +fset.color_delim = cyan +fset.color_fg = default +fset.conditions = "${buffer.full_name} == fset.fset" +fset.filling_left_right = vertical +fset.filling_top_bottom = horizontal +fset.hidden = off +fset.items = "fset" +fset.position = top +fset.priority = 0 +fset.separator = on +fset.size = 3 +fset.size_max = 3 +fset.type = window +input.color_bg = default +input.color_bg_inactive = default +input.color_delim = cyan +input.color_fg = default +input.conditions = "" +input.filling_left_right = vertical +input.filling_top_bottom = horizontal +input.hidden = off +input.items = "mode_indicator+[input_prompt]+(away),[input_search],[input_paste],input_text,[vi_buffer]" +input.position = bottom +input.priority = 1000 +input.separator = off +input.size = 1 +input.size_max = 0 +input.type = window +nicklist.color_bg = default +nicklist.color_bg_inactive = default +nicklist.color_delim = cyan +nicklist.color_fg = default +nicklist.conditions = "${nicklist}" +nicklist.filling_left_right = vertical +nicklist.filling_top_bottom = columns_vertical +nicklist.hidden = off +nicklist.items = "buffer_nicklist" +nicklist.position = right +nicklist.priority = 200 +nicklist.separator = on +nicklist.size = 0 +nicklist.size_max = 0 +nicklist.type = window +status.color_bg = blue +status.color_bg_inactive = default +status.color_delim = cyan +status.color_fg = default +status.conditions = "" +status.filling_left_right = vertical +status.filling_top_bottom = horizontal +status.hidden = off +status.items = "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion,cmd_completion" +status.position = bottom +status.priority = 500 +status.separator = off +status.size = 1 +status.size_max = 0 +status.type = window +title.color_bg = blue +title.color_bg_inactive = default +title.color_delim = cyan +title.color_fg = default +title.conditions = "" +title.filling_left_right = vertical +title.filling_top_bottom = horizontal +title.hidden = off +title.items = "buffer_title" +title.position = top +title.priority = 500 +title.separator = off +title.size = 1 +title.size_max = 0 +title.type = window +vi_line_numbers.color_bg = default +vi_line_numbers.color_bg_inactive = default +vi_line_numbers.color_delim = default +vi_line_numbers.color_fg = default +vi_line_numbers.conditions = "" +vi_line_numbers.filling_left_right = vertical +vi_line_numbers.filling_top_bottom = vertical +vi_line_numbers.hidden = on +vi_line_numbers.items = "line_numbers" +vi_line_numbers.position = left +vi_line_numbers.priority = 0 +vi_line_numbers.separator = off +vi_line_numbers.size = 0 +vi_line_numbers.size_max = 0 +vi_line_numbers.type = window + +[layout] + +[notify] + +[filter] + +[key] +ctrl-? = "/input delete_previous_char" +ctrl-A = "/input move_beginning_of_line" +ctrl-B = "/input move_previous_char" +ctrl-C_ = "/input insert \x1F" +ctrl-Cb = "/input insert \x02" +ctrl-Cc = "/input insert \x03" +ctrl-Ci = "/input insert \x1D" +ctrl-Co = "/input insert \x0F" +ctrl-Cv = "/input insert \x16" +ctrl-D = "/input delete_next_char" +ctrl-E = "/input move_end_of_line" +ctrl-F = "/input move_next_char" +ctrl-H = "/input delete_previous_char" +ctrl-I = "/input complete_next" +ctrl-J = "/input return" +ctrl-K = "/input delete_end_of_line" +ctrl-L = "/window refresh" +ctrl-M = "/input return" +ctrl-N = "/buffer +1" +ctrl-P = "/buffer -1" +ctrl-R = "/input search_text_here" +ctrl-Sctrl-U = "/input set_unread" +ctrl-T = "/input transpose_chars" +ctrl-U = "/input delete_beginning_of_line" +ctrl-W = "/input delete_previous_word" +ctrl-W= = "/window balance" +ctrl-Wh = "/window left" +ctrl-Wj = "/window down" +ctrl-Wk = "/window up" +ctrl-Wl = "/window right" +ctrl-Wq = "/window merge" +ctrl-Ws = "/window splith" +ctrl-Wv = "/window splitv" +ctrl-Wx = "/window swap" +ctrl-X = "/input switch_active_buffer" +ctrl-Y = "/input clipboard_paste" +meta-meta-OP = "/bar scroll buflist * b" +meta-meta-OQ = "/bar scroll buflist * e" +meta-meta2-11~ = "/bar scroll buflist * b" +meta-meta2-12~ = "/bar scroll buflist * e" +meta-meta2-1~ = "/window scroll_top" +meta-meta2-23~ = "/bar scroll nicklist * b" +meta-meta2-24~ = "/bar scroll nicklist * e" +meta-meta2-4~ = "/window scroll_bottom" +meta-meta2-5~ = "/window scroll_up" +meta-meta2-6~ = "/window scroll_down" +meta-meta2-7~ = "/window scroll_top" +meta-meta2-8~ = "/window scroll_bottom" +meta-meta2-A = "/buffer -1" +meta-meta2-B = "/buffer +1" +meta-meta2-C = "/buffer +1" +meta-meta2-D = "/buffer -1" +meta-- = "/filter toggle @" +meta-/ = "/input jump_last_buffer_displayed" +meta-0 = "/buffer *10" +meta-1 = "/buffer *1" +meta-2 = "/buffer *2" +meta-3 = "/buffer *3" +meta-4 = "/buffer *4" +meta-5 = "/buffer *5" +meta-6 = "/buffer *6" +meta-7 = "/buffer *7" +meta-8 = "/buffer *8" +meta-9 = "/buffer *9" +meta-< = "/input jump_previously_visited_buffer" +meta-= = "/filter toggle" +meta-> = "/input jump_next_visited_buffer" +meta-B = "/buflist toggle" +meta-OA = "/input history_global_previous" +meta-OB = "/input history_global_next" +meta-OC = "/input move_next_word" +meta-OD = "/input move_previous_word" +meta-OF = "/input move_end_of_line" +meta-OH = "/input move_beginning_of_line" +meta-OP = "/bar scroll buflist * -100%" +meta-OQ = "/bar scroll buflist * +100%" +meta-Oa = "/input history_global_previous" +meta-Ob = "/input history_global_next" +meta-Oc = "/input move_next_word" +meta-Od = "/input move_previous_word" +meta2-11^ = "/bar scroll buflist * -100%" +meta2-11~ = "/bar scroll buflist * -100%" +meta2-12^ = "/bar scroll buflist * +100%" +meta2-12~ = "/bar scroll buflist * +100%" +meta2-15~ = "/buffer -1" +meta2-17~ = "/buffer +1" +meta2-18~ = "/window -1" +meta2-19~ = "/window +1" +meta2-1;3A = "/buffer -1" +meta2-1;3B = "/buffer +1" +meta2-1;3C = "/buffer +1" +meta2-1;3D = "/buffer -1" +meta2-1;3F = "/window scroll_bottom" +meta2-1;3H = "/window scroll_top" +meta2-1;3P = "/bar scroll buflist * b" +meta2-1;3Q = "/bar scroll buflist * e" +meta2-1;5A = "/input history_global_previous" +meta2-1;5B = "/input history_global_next" +meta2-1;5C = "/input move_next_word" +meta2-1;5D = "/input move_previous_word" +meta2-1;5P = "/bar scroll buflist * -100%" +meta2-1;5Q = "/bar scroll buflist * +100%" +meta2-1~ = "/input move_beginning_of_line" +meta2-200~ = "/input paste_start" +meta2-201~ = "/input paste_stop" +meta2-20~ = "/bar scroll title * -30%" +meta2-21~ = "/bar scroll title * +30%" +meta2-23;3~ = "/bar scroll nicklist * b" +meta2-23;5~ = "/bar scroll nicklist * -100%" +meta2-23^ = "/bar scroll nicklist * -100%" +meta2-23~ = "/bar scroll nicklist * -100%" +meta2-24;3~ = "/bar scroll nicklist * e" +meta2-24;5~ = "/bar scroll nicklist * +100%" +meta2-24^ = "/bar scroll nicklist * +100%" +meta2-24~ = "/bar scroll nicklist * +100%" +meta2-3~ = "/input delete_next_char" +meta2-4~ = "/input move_end_of_line" +meta2-5;3~ = "/window scroll_up" +meta2-5~ = "/window page_up" +meta2-6;3~ = "/window scroll_down" +meta2-6~ = "/window page_down" +meta2-7~ = "/input move_beginning_of_line" +meta2-8~ = "/input move_end_of_line" +meta2-A = "/input history_previous" +meta2-B = "/input history_next" +meta2-C = "/input move_next_char" +meta2-D = "/input move_previous_char" +meta2-F = "/input move_end_of_line" +meta2-G = "/window page_down" +meta2-H = "/input move_beginning_of_line" +meta2-I = "/window page_up" +meta2-Z = "/input complete_previous" +meta2-[E = "/buffer -1" +meta-_ = "/input redo" +meta-a = "/input jump_smart" +meta-b = "/input move_previous_word" +meta-d = "/input delete_next_word" +meta-f = "/input move_next_word" +meta-h = "/input hotlist_clear" +meta-j01 = "/buffer *1" +meta-j02 = "/buffer *2" +meta-j03 = "/buffer *3" +meta-j04 = "/buffer *4" +meta-j05 = "/buffer *5" +meta-j06 = "/buffer *6" +meta-j07 = "/buffer *7" +meta-j08 = "/buffer *8" +meta-j09 = "/buffer *9" +meta-j10 = "/buffer *10" +meta-j11 = "/buffer *11" +meta-j12 = "/buffer *12" +meta-j13 = "/buffer *13" +meta-j14 = "/buffer *14" +meta-j15 = "/buffer *15" +meta-j16 = "/buffer *16" +meta-j17 = "/buffer *17" +meta-j18 = "/buffer *18" +meta-j19 = "/buffer *19" +meta-j20 = "/buffer *20" +meta-j21 = "/buffer *21" +meta-j22 = "/buffer *22" +meta-j23 = "/buffer *23" +meta-j24 = "/buffer *24" +meta-j25 = "/buffer *25" +meta-j26 = "/buffer *26" +meta-j27 = "/buffer *27" +meta-j28 = "/buffer *28" +meta-j29 = "/buffer *29" +meta-j30 = "/buffer *30" +meta-j31 = "/buffer *31" +meta-j32 = "/buffer *32" +meta-j33 = "/buffer *33" +meta-j34 = "/buffer *34" +meta-j35 = "/buffer *35" +meta-j36 = "/buffer *36" +meta-j37 = "/buffer *37" +meta-j38 = "/buffer *38" +meta-j39 = "/buffer *39" +meta-j40 = "/buffer *40" +meta-j41 = "/buffer *41" +meta-j42 = "/buffer *42" +meta-j43 = "/buffer *43" +meta-j44 = "/buffer *44" +meta-j45 = "/buffer *45" +meta-j46 = "/buffer *46" +meta-j47 = "/buffer *47" +meta-j48 = "/buffer *48" +meta-j49 = "/buffer *49" +meta-j50 = "/buffer *50" +meta-j51 = "/buffer *51" +meta-j52 = "/buffer *52" +meta-j53 = "/buffer *53" +meta-j54 = "/buffer *54" +meta-j55 = "/buffer *55" +meta-j56 = "/buffer *56" +meta-j57 = "/buffer *57" +meta-j58 = "/buffer *58" +meta-j59 = "/buffer *59" +meta-j60 = "/buffer *60" +meta-j61 = "/buffer *61" +meta-j62 = "/buffer *62" +meta-j63 = "/buffer *63" +meta-j64 = "/buffer *64" +meta-j65 = "/buffer *65" +meta-j66 = "/buffer *66" +meta-j67 = "/buffer *67" +meta-j68 = "/buffer *68" +meta-j69 = "/buffer *69" +meta-j70 = "/buffer *70" +meta-j71 = "/buffer *71" +meta-j72 = "/buffer *72" +meta-j73 = "/buffer *73" +meta-j74 = "/buffer *74" +meta-j75 = "/buffer *75" +meta-j76 = "/buffer *76" +meta-j77 = "/buffer *77" +meta-j78 = "/buffer *78" +meta-j79 = "/buffer *79" +meta-j80 = "/buffer *80" +meta-j81 = "/buffer *81" +meta-j82 = "/buffer *82" +meta-j83 = "/buffer *83" +meta-j84 = "/buffer *84" +meta-j85 = "/buffer *85" +meta-j86 = "/buffer *86" +meta-j87 = "/buffer *87" +meta-j88 = "/buffer *88" +meta-j89 = "/buffer *89" +meta-j90 = "/buffer *90" +meta-j91 = "/buffer *91" +meta-j92 = "/buffer *92" +meta-j93 = "/buffer *93" +meta-j94 = "/buffer *94" +meta-j95 = "/buffer *95" +meta-j96 = "/buffer *96" +meta-j97 = "/buffer *97" +meta-j98 = "/buffer *98" +meta-j99 = "/buffer *99" +meta-k = "/input grab_key_command" +meta-l = "/window bare" +meta-m = "/mute mouse toggle" +meta-n = "/window scroll_next_highlight" +meta-p = "/window scroll_previous_highlight" +meta-r = "/input delete_line" +meta-s = "/mute spell toggle" +meta-u = "/window scroll_unread" +meta-x = "/input zoom_merged_buffer" +meta-z = "/window zoom" +ctrl-^ = "/input jump_last_buffer_displayed" +ctrl-_ = "/input undo" + +[key_search] +ctrl-I = "/input search_switch_where" +ctrl-J = "/input search_stop_here" +ctrl-M = "/input search_stop_here" +ctrl-Q = "/input search_stop" +ctrl-R = "/input search_switch_regex" +meta2-A = "/input search_previous" +meta2-B = "/input search_next" +meta-c = "/input search_switch_case" + +[key_cursor] +ctrl-J = "/cursor stop" +ctrl-M = "/cursor stop" +meta-meta2-A = "/cursor move area_up" +meta-meta2-B = "/cursor move area_down" +meta-meta2-C = "/cursor move area_right" +meta-meta2-D = "/cursor move area_left" +meta2-1;3A = "/cursor move area_up" +meta2-1;3B = "/cursor move area_down" +meta2-1;3C = "/cursor move area_right" +meta2-1;3D = "/cursor move area_left" +meta2-A = "/cursor move up" +meta2-B = "/cursor move down" +meta2-C = "/cursor move right" +meta2-D = "/cursor move left" +@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" +@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" +@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" +@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop" +@chat:m = "hsignal:chat_quote_message;/cursor stop" +@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop" + +[key_mouse] +@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse" +@bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse" +@bar(input):button2 = "/input grab_mouse_area" +@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%" +@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" +@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" +@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" +@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}" +@chat(fset.fset):button2* = "hsignal:fset_mouse" +@chat(fset.fset):wheeldown = "/fset -down 5" +@chat(fset.fset):wheelup = "/fset -up 5" +@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}" +@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}" +@chat(script.scripts):wheeldown = "/script down 5" +@chat(script.scripts):wheelup = "/script up 5" +@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" +@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}" +@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}" +@item(buflist):button1* = "hsignal:buflist_mouse" +@item(buflist):button2* = "hsignal:buflist_mouse" +@item(buflist2):button1* = "hsignal:buflist_mouse" +@item(buflist2):button2* = "hsignal:buflist_mouse" +@item(buflist3):button1* = "hsignal:buflist_mouse" +@item(buflist3):button2* = "hsignal:buflist_mouse" +@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%" +@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%" +@chat:button1 = "/window ${_window_number}" +@chat:button1-gesture-left = "/window ${_window_number};/buffer -1" +@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1" +@chat:button1-gesture-right = "/window ${_window_number};/buffer +1" +@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer" +@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%" +@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%" +@chat:wheeldown = "/window scroll_down -window ${_window_number}" +@chat:wheelup = "/window scroll_up -window ${_window_number}" +@*:button3 = "/cursor go ${_x},${_y}" diff --git a/.weechat/xfer.conf b/.weechat/xfer.conf new file mode 100644 index 00000000..551316ff --- /dev/null +++ b/.weechat/xfer.conf @@ -0,0 +1,49 @@ +# +# weechat -- xfer.conf +# +# WARNING: It is NOT recommended to edit this file by hand, +# especially if WeeChat is running. +# +# Use /set or similar command to change settings in WeeChat. +# +# For more info, see: https://weechat.org/doc/quickstart +# + +[look] +auto_open_buffer = on +progress_bar_size = 20 +pv_tags = "notify_private" + +[color] +status_aborted = lightred +status_active = lightblue +status_connecting = yellow +status_done = lightgreen +status_failed = lightred +status_waiting = lightcyan +text = default +text_bg = default +text_selected = white + +[network] +blocksize = 65536 +fast_send = on +own_ip = "" +port_range = "" +send_ack = on +speed_limit_recv = 0 +speed_limit_send = 0 +timeout = 300 + +[file] +auto_accept_chats = off +auto_accept_files = off +auto_accept_nicks = "" +auto_check_crc32 = off +auto_rename = on +auto_resume = on +convert_spaces = on +download_path = "%h/xfer" +download_temporary_suffix = ".part" +upload_path = "~" +use_nick_in_filename = on