diff --git a/gajim/chat_control_base.py b/gajim/chat_control_base.py
index 16a44c403fa127b027d7adb5ede6eb225459e7ad..ae25546c275656b9e8c644df03d0c7a524a7417b 100644
--- a/gajim/chat_control_base.py
+++ b/gajim/chat_control_base.py
@@ -92,7 +92,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
     keycodes_c = get_hardware_key_codes(Gdk.KEY_c)
 
     def __init__(self, type_id, parent_win, widget_name, contact, acct,
-    resource=None):
+                 resource=None):
         # Undo needs this variable to know if space has been pressed.
         # Initialize it to True so empty textview is saved in undo list
         self.space_pressed = True
@@ -100,13 +100,13 @@ def __init__(self, type_id, parent_win, widget_name, contact, acct,
         if resource is None:
             # We very likely got a contact with a random resource.
             # This is bad, we need the highest for caps etc.
-            c = app.contacts.get_contact_with_highest_priority(acct,
-                contact.jid)
-            if c and not isinstance(c, GC_Contact):
-                contact = c
+            _contact = app.contacts.get_contact_with_highest_priority(
+                acct, contact.jid)
+            if _contact and not isinstance(_contact, GC_Contact):
+                contact = _contact
 
         MessageControl.__init__(self, type_id, parent_win, widget_name,
-            contact, acct, resource=resource)
+                                contact, acct, resource=resource)
 
         if self.TYPE_ID != message_control.TYPE_GC:
             # Create banner and connect signals
@@ -171,7 +171,7 @@ def __init__(self, type_id, parent_win, widget_name, contact, acct,
         self.conv_scrolledwindow.add(self.conv_textview.tv)
         widget = self.conv_scrolledwindow.get_vadjustment()
         id_ = widget.connect('changed',
-            self.on_conversation_vadjustment_changed)
+                             self.on_conversation_vadjustment_changed)
         self.handlers[id_] = widget
 
         vscrollbar = self.conv_scrolledwindow.get_vscrollbar()
@@ -190,13 +190,14 @@ def __init__(self, type_id, parent_win, widget_name, contact, acct,
         self.xml.hbox.pack_start(self.msg_scrolledwindow, True, True, 0)
 
         id_ = self.msg_textview.connect('paste-clipboard',
-            self._on_message_textview_paste_event)
+                                        self._on_message_textview_paste_event)
         self.handlers[id_] = self.msg_textview
-        id_ = self.msg_textview.connect('key_press_event',
+        id_ = self.msg_textview.connect(
+            'key_press_event',
             self._on_message_textview_key_press_event)
         self.handlers[id_] = self.msg_textview
         id_ = self.msg_textview.connect('populate_popup',
-            self.on_msg_textview_populate_popup)
+                                        self.on_msg_textview_populate_popup)
         self.handlers[id_] = self.msg_textview
 
         # Setup DND
@@ -233,11 +234,11 @@ def __init__(self, type_id, parent_win, widget_name, contact, acct,
         con.get_module('Chatstate').set_active(self.contact)
 
         id_ = self.msg_textview.connect('text-changed',
-            self._on_message_tv_buffer_changed)
+                                        self._on_message_tv_buffer_changed)
         self.handlers[id_] = self.msg_textview
         if parent_win is not None:
             id_ = parent_win.window.connect('motion-notify-event',
-                self._on_window_motion_notify)
+                                            self._on_window_motion_notify)
             self.handlers[id_] = parent_win.window
 
         self.encryption = self.get_encryption_state()
@@ -270,19 +271,21 @@ def get_nb_unread(self):
         if self.resource:
             jid += '/' + self.resource
         type_ = self.type_id
-        return len(app.events.get_events(self.account, jid, ['printed_' + type_,
-                type_]))
+        return len(app.events.get_events(self.account,
+                                         jid,
+                                         ['printed_' + type_, type_]))
 
     def draw_banner(self):
         """
-        Draw the fat line at the top of the window that houses the icon, jid, etc
+        Draw the fat line at the top of the window
+        that houses the icon, jid, etc
 
         Derived types MAY implement this.
         """
         self.draw_banner_text()
         self._update_banner_state_image()
         app.plugin_manager.gui_extension_point('chat_control_base_draw_banner',
-            self)
+                                               self)
 
     def update_toolbar(self):
         """
@@ -542,7 +545,7 @@ def get_speller_language(self):
             gspell_lang = Gspell.language_get_default()
         return gspell_lang
 
-    def on_language_changed(self, checker, param):
+    def on_language_changed(self, checker, _param):
         gspell_lang = checker.get_language()
         per_type = 'contacts'
         if self.type_id == message_control.TYPE_GC:
@@ -559,7 +562,7 @@ def _on_html_textview_grab_focus(self, textview):
         self.msg_textview.grab_focus()
         return Gdk.EVENT_STOP
 
-    def on_banner_label_populate_popup(self, label, menu):
+    def on_banner_label_populate_popup(self, _label, menu):
         """
         Override the default context menu and add our own menuitems
         """
@@ -577,8 +580,8 @@ def on_banner_label_populate_popup(self, label, menu):
 
     def shutdown(self):
         super(ChatControlBase, self).shutdown()
-        # PluginSystem: removing GUI extension points connected with ChatControlBase
-        # instance object
+        # PluginSystem: removing GUI extension points
+        # connected with ChatControlBase instance object
         app.plugin_manager.remove_gui_extension_point('chat_control_base', self)
         app.plugin_manager.remove_gui_extension_point(
             'chat_control_base_draw_banner', self)
@@ -589,7 +592,7 @@ def shutdown(self):
         for handler in self._base_event_handlers:
             app.ged.remove_event_handler(*handler)
 
-    def on_msg_textview_populate_popup(self, textview, menu):
+    def on_msg_textview_populate_popup(self, _textview, menu):
         """
         Override the default context menu and we prepend an option to switch
         languages
@@ -625,18 +628,18 @@ def paste_clipboard_as_quote(self, _item: Gtk.MenuItem) -> None:
         text = clipboard.wait_for_text()
         self.insert_as_quote(text)
 
-    def on_quote(self, widget, text):
+    def on_quote(self, _widget, text):
         self.insert_as_quote(text)
 
     # moved from ChatControl
-    def _on_banner_eventbox_button_press_event(self, widget, event):
+    def _on_banner_eventbox_button_press_event(self, _widget, event):
         """
         If right-clicked, show popup
         """
         if event.button == 3:  # right click
             self.parent_win.popup_menu(event)
 
-    def _on_message_textview_paste_event(self, texview):
+    def _on_message_textview_paste_event(self, _texview):
         clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
         image = clipboard.wait_for_image()
         if image is not None:
@@ -709,7 +712,9 @@ def _on_message_textview_key_press_event(self, widget, event):
             # pressing Control again (as in ctrl+z)
             _buffer = widget.get_buffer()
             start_iter, end_iter = _buffer.get_bounds()
-            self.msg_textview.save_undo(_buffer.get_text(start_iter, end_iter, True))
+            self.msg_textview.save_undo(_buffer.get_text(start_iter,
+                                                         end_iter,
+                                                         True))
             self.space_pressed = False
 
         # Ctrl [+ Shift] + Tab are not forwarded to notebook. We handle it here
@@ -741,8 +746,9 @@ def _on_message_textview_key_press_event(self, widget, event):
             end = message_buffer.get_iter_at_mark(position)
             text = message_buffer.get_text(start, end, False)
             splitted = text.split()
-            if (text.startswith(self.COMMAND_PREFIX) and not
-            text.startswith(self.COMMAND_PREFIX * 2) and len(splitted) == 1):
+            if (text.startswith(self.COMMAND_PREFIX) and
+                    not text.startswith(self.COMMAND_PREFIX * 2) and
+                    len(splitted) == 1):
                 text = splitted[0]
                 bare = text.lstrip(self.COMMAND_PREFIX)
                 if len(text) == 1:
@@ -819,7 +825,7 @@ def _on_message_textview_key_press_event(self, widget, event):
         return False
 
     def _on_drag_data_received(self, widget, context, x, y, selection,
-                    target_type, timestamp):
+                               target_type, timestamp):
         """
         Derived types SHOULD implement this
         """
@@ -836,7 +842,7 @@ def _on_drag_motion(self, *args):
             self.drag_entered_conv = True
             self.conv_textview.tv.set_editable(True)
 
-    def drag_data_file_transfer(self, contact, selection, widget):
+    def drag_data_file_transfer(self, contact, selection, _widget):
         # get file transfer preference
         ft_pref = app.config.get_per('accounts', self.account,
                                      'filetransfer_preference')
@@ -877,7 +883,7 @@ def drag_data_file_transfer(self, contact, selection, widget):
     def get_seclabel(self):
         idx = self.xml.label_selector.get_active()
         if idx == -1:
-            return
+            return None
 
         con = app.connections[self.account]
         jid = self.contact.jid
@@ -889,8 +895,13 @@ def get_seclabel(self):
         label = labels[lname]
         return label
 
-    def send_message(self, message, type_='chat',
-    resource=None, xhtml=None, process_commands=True, attention=False):
+    def send_message(self,
+                     message,
+                     type_='chat',
+                     resource=None,
+                     xhtml=None,
+                     process_commands=True,
+                     attention=False):
         """
         Send the given message to the active tab. Doesn't return None if error
         """
@@ -999,13 +1010,24 @@ def add_status_message(self, text):
         self.conv_textview.print_conversation_line(
             text, 'status', '', None)
 
-    def add_message(self, text, kind, name, tim,
-                    other_tags_for_name=None, other_tags_for_time=None,
-                    other_tags_for_text=None, restored=False, subject=None,
+    def add_message(self,
+                    text,
+                    kind,
+                    name,
+                    tim,
+                    other_tags_for_name=None,
+                    other_tags_for_time=None,
+                    other_tags_for_text=None,
+                    restored=False,
+                    subject=None,
                     old_kind=None,
-                    displaymarking=None, msg_log_id=None,
-                    message_id=None, correct_id=None, additional_data=None,
-                    marker=None, error=None):
+                    displaymarking=None,
+                    msg_log_id=None,
+                    message_id=None,
+                    correct_id=None,
+                    additional_data=None,
+                    marker=None,
+                    error=None):
         """
         Print 'chat' type messages
         correct_id = (message_id, correct_id)
@@ -1026,12 +1048,21 @@ def add_message(self, text, kind, name, tim,
         if additional_data is None:
             additional_data = AdditionalDataDict()
 
-        textview.print_conversation_line(text, kind, name, tim,
-            other_tags_for_name, other_tags_for_time, other_tags_for_text,
-            subject, old_kind,
-            displaymarking=displaymarking, message_id=message_id,
-            correct_id=correct_id, additional_data=additional_data,
-            marker=marker, error=error)
+        textview.print_conversation_line(text,
+                                         kind,
+                                         name,
+                                         tim,
+                                         other_tags_for_name,
+                                         other_tags_for_time,
+                                         other_tags_for_text,
+                                         subject,
+                                         old_kind,
+                                         displaymarking=displaymarking,
+                                         message_id=message_id,
+                                         correct_id=correct_id,
+                                         additional_data=additional_data,
+                                         marker=marker,
+                                         error=error)
 
         if restored:
             return
@@ -1078,14 +1109,16 @@ def add_message(self, text, kind, name, tim,
                 show_in_systray = get_show_in_systray(
                     event_type.type_, self.contact.jid)
 
-                event = event_type(text, subject, self, msg_log_id,
-                    show_in_roster=show_in_roster,
-                    show_in_systray=show_in_systray)
+                event = event_type(text,
+                                   subject,
+                                   self, msg_log_id,
+                                   show_in_roster=show_in_roster,
+                                   show_in_systray=show_in_systray)
                 app.events.add_event(self.account, full_jid, event)
                 # We need to redraw contact if we show in roster
                 if show_in_roster:
                     app.interface.roster.draw_contact(self.contact.jid,
-                        self.account)
+                                                      self.account)
 
         if not self.parent_win:
             return
@@ -1121,13 +1154,13 @@ def set_emoticon_popover(self):
         emoji_chooser.text_widget = self.msg_textview
         self.xml.emoticons_button.set_popover(emoji_chooser)
 
-    def on_color_menuitem_activate(self, widget):
+    def on_color_menuitem_activate(self, _widget):
         color_dialog = Gtk.ColorChooserDialog(None, self.parent_win.window)
         color_dialog.set_use_alpha(False)
         color_dialog.connect('response', self.msg_textview.color_set)
         color_dialog.show_all()
 
-    def on_font_menuitem_activate(self, widget):
+    def on_font_menuitem_activate(self, _widget):
         font_dialog = Gtk.FontChooserDialog(None, self.parent_win.window)
         start, finish = self.msg_textview.get_active_iters()
         font_dialog.connect('response', self.msg_textview.font_set, start, finish)
@@ -1137,7 +1170,7 @@ def on_formatting_menuitem_activate(self, widget):
         tag = widget.get_name()
         self.msg_textview.set_tag(tag)
 
-    def on_clear_formatting_menuitem_activate(self, widget):
+    def on_clear_formatting_menuitem_activate(self, _widget):
         self.msg_textview.clear_tags()
 
     def _style_changed(self, *args):
@@ -1146,12 +1179,13 @@ def _style_changed(self, *args):
     def update_tags(self):
         self.conv_textview.update_tags()
 
-    def clear(self, tv):
+    @staticmethod
+    def clear(tv):
         buffer_ = tv.get_buffer()
         start, end = buffer_.get_bounds()
         buffer_.delete(start, end)
 
-    def _on_send_file(self, action, param):
+    def _on_send_file(self, _action, _param):
         # get file transfer preference
         ft_pref = app.config.get_per('accounts', self.account,
                                      'filetransfer_preference')
@@ -1171,19 +1205,20 @@ def _on_send_file(self, action, param):
         elif jingle.get_enabled():
             jingle.activate()
 
-    def _on_send_httpupload(self, action, param):
+    def _on_send_httpupload(self, _action, _param):
         app.interface.send_httpupload(self)
 
-    def _on_send_jingle(self, action, param):
+    def _on_send_jingle(self, _action, _param):
         self._on_send_file_jingle()
 
     def _on_send_file_jingle(self, gc_contact=None):
         """
         gc_contact can be set when we are in a groupchat control
         """
-        def _on_ok(c):
+        def _on_ok(_contact):
             app.interface.instances['file_transfers'].show_file_send_request(
-                self.account, c)
+                self.account, _contact)
+
         if self.type_id == message_control.TYPE_PM:
             gc_contact = self.gc_contact
 
@@ -1217,8 +1252,10 @@ def _on_ok(c):
         _on_ok(gc_contact)
 
     def on_notify_menuitem_toggled(self, widget):
-        app.config.set_per('rooms', self.contact.jid, 'notify_on_all_messages',
-            widget.get_active())
+        app.config.set_per('rooms',
+                           self.contact.jid,
+                           'notify_on_all_messages',
+                           widget.get_active())
 
     def set_control_active(self, state):
         con = app.connections[self.account]
@@ -1230,8 +1267,9 @@ def set_control_active(self, state):
                 type_ = ['printed_' + self.type_id]
                 if self.type_id == message_control.TYPE_GC:
                     type_ = ['printed_gc_msg', 'printed_marked_gc_msg']
-                if not app.events.remove_events(self.account, self.get_full_jid(),
-                types=type_):
+                if not app.events.remove_events(self.account,
+                                                self.get_full_jid(),
+                                                types=type_):
                     # There were events to remove
                     self.redraw_after_event_removed(jid)
             # send chatstate inactive to the one we're leaving
@@ -1249,7 +1287,7 @@ def set_control_active(self, state):
     def scroll_to_end(self, force=False):
         self.conv_textview.scroll_to_end(force)
 
-    def _on_edge_reached(self, scrolledwindow, pos):
+    def _on_edge_reached(self, _scrolledwindow, pos):
         if pos != Gtk.PositionType.BOTTOM:
             return
         # Remove all events and set autoscroll True
@@ -1334,7 +1372,7 @@ def _on_scroll(self, widget, event):
             app.log('autoscroll').info('Autoscroll disabled')
             self.conv_textview.autoscroll = False
 
-    def on_conversation_vadjustment_changed(self, adjustment):
+    def on_conversation_vadjustment_changed(self, _adjustment):
         self.scroll_to_end()
 
     def redraw_after_event_removed(self, jid):
@@ -1348,7 +1386,7 @@ def redraw_after_event_removed(self, jid):
         if self.type_id == message_control.TYPE_PM:
             room_jid, nick = app.get_room_and_nick_from_fjid(jid)
             groupchat_control = app.interface.msg_win_mgr.get_gc_control(
-                    room_jid, self.account)
+                room_jid, self.account)
             if room_jid in app.interface.minimized_controls[self.account]:
                 groupchat_control = \
                         app.interface.minimized_controls[self.account][room_jid]