Ticket #124: multi-monitor.patch

File multi-monitor.patch, 18.0 KB (added by pyriku, 22 months ago)
  • data/prefs.glade

    From d6a0b2707bfc7996d1e4d7696a2aed58decd3fb1 Mon Sep 17 00:00:00 2001
    From: Pablo Recio Quijano <rikutheronin@gmail.com>
    Date: Sun, 8 Aug 2010 11:41:33 +0200
    Subject: [PATCH 1/3] Added combobox in the prefs window.
    
    Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com>
    ---
     data/prefs.glade |  172 ++++++++++++++++++++++++++++++++++++------------------
     1 files changed, 115 insertions(+), 57 deletions(-)
    
    diff --git a/data/prefs.glade b/data/prefs.glade
    index d7b2441..1c91f33 100644
    a b  
    276276                      </packing> 
    277277                    </child> 
    278278                    <child> 
    279                       <widget class="GtkFrame" id="frame4"> 
     279                      <widget class="GtkHBox" id="hbox5"> 
    280280                        <property name="visible">True</property> 
    281                         <property name="label_xalign">0</property> 
    282                         <property name="shadow_type">none</property> 
    283281                        <child> 
    284                           <widget class="GtkAlignment" id="alignment4"> 
     282                          <widget class="GtkFrame" id="frame4"> 
    285283                            <property name="visible">True</property> 
    286                             <property name="left_padding">12</property> 
     284                            <property name="label_xalign">0</property> 
     285                            <property name="shadow_type">none</property> 
    287286                            <child> 
    288                               <widget class="GtkVBox" id="vbox11"> 
     287                              <widget class="GtkAlignment" id="alignment4"> 
    289288                                <property name="visible">True</property> 
    290                                 <property name="spacing">6</property> 
    291                                 <property name="homogeneous">True</property> 
    292                                 <child> 
    293                                   <widget class="GtkCheckButton" id="window_ontop"> 
    294                                     <property name="label" translatable="yes">Stay on top</property> 
    295                                     <property name="visible">True</property> 
    296                                     <property name="can_focus">False</property> 
    297                                     <property name="receives_default">False</property> 
    298                                     <property name="use_underline">True</property> 
    299                                     <property name="focus_on_click">False</property> 
    300                                     <property name="active">True</property> 
    301                                     <property name="draw_indicator">True</property> 
    302                                     <signal name="toggled" handler="on_window_ontop_toggled"/> 
    303                                   </widget> 
    304                                   <packing> 
    305                                     <property name="expand">False</property> 
    306                                     <property name="position">0</property> 
    307                                   </packing> 
    308                                 </child> 
    309                                 <child> 
    310                                   <widget class="GtkCheckButton" id="window_losefocus"> 
    311                                     <property name="label" translatable="yes">Hide on lose focus</property> 
    312                                     <property name="visible">True</property> 
    313                                     <property name="can_focus">True</property> 
    314                                     <property name="receives_default">False</property> 
    315                                     <property name="use_underline">True</property> 
    316                                     <property name="active">True</property> 
    317                                     <property name="draw_indicator">True</property> 
    318                                     <signal name="toggled" handler="on_window_losefocus_toggled"/> 
    319                                   </widget> 
    320                                   <packing> 
    321                                     <property name="expand">False</property> 
    322                                     <property name="fill">False</property> 
    323                                     <property name="position">1</property> 
    324                                   </packing> 
    325                                 </child> 
     289                                <property name="left_padding">12</property> 
    326290                                <child> 
    327                                   <widget class="GtkCheckButton" id="window_tabbar"> 
    328                                     <property name="label" translatable="yes">Show tab bar</property> 
     291                                  <widget class="GtkVBox" id="vbox11"> 
    329292                                    <property name="visible">True</property> 
    330                                     <property name="can_focus">True</property> 
    331                                     <property name="receives_default">False</property> 
    332                                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
    333                                     <property name="draw_indicator">True</property> 
    334                                     <signal name="toggled" handler="on_window_tabbar_toggled"/> 
     293                                    <property name="spacing">6</property> 
     294                                    <property name="homogeneous">True</property> 
     295                                    <child> 
     296                                      <widget class="GtkCheckButton" id="window_ontop"> 
     297                                        <property name="label" translatable="yes">Stay on top</property> 
     298                                        <property name="visible">True</property> 
     299                                        <property name="can_focus">True</property> 
     300                                        <property name="receives_default">False</property> 
     301                                        <property name="use_underline">True</property> 
     302                                        <property name="focus_on_click">False</property> 
     303                                        <property name="active">True</property> 
     304                                        <property name="draw_indicator">True</property> 
     305                                        <signal name="toggled" handler="on_window_ontop_toggled"/> 
     306                                      </widget> 
     307                                      <packing> 
     308                                        <property name="expand">False</property> 
     309                                        <property name="position">0</property> 
     310                                      </packing> 
     311                                    </child> 
     312                                    <child> 
     313                                      <widget class="GtkCheckButton" id="window_losefocus"> 
     314                                        <property name="label" translatable="yes">Hide on lose focus</property> 
     315                                        <property name="visible">True</property> 
     316                                        <property name="can_focus">True</property> 
     317                                        <property name="receives_default">False</property> 
     318                                        <property name="use_underline">True</property> 
     319                                        <property name="active">True</property> 
     320                                        <property name="draw_indicator">True</property> 
     321                                        <signal name="toggled" handler="on_window_losefocus_toggled"/> 
     322                                      </widget> 
     323                                      <packing> 
     324                                        <property name="expand">False</property> 
     325                                        <property name="fill">False</property> 
     326                                        <property name="position">1</property> 
     327                                      </packing> 
     328                                    </child> 
     329                                    <child> 
     330                                      <widget class="GtkCheckButton" id="window_tabbar"> 
     331                                        <property name="label" translatable="yes">Show tab bar</property> 
     332                                        <property name="visible">True</property> 
     333                                        <property name="can_focus">True</property> 
     334                                        <property name="receives_default">False</property> 
     335                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
     336                                        <property name="draw_indicator">True</property> 
     337                                        <signal name="toggled" handler="on_window_tabbar_toggled"/> 
     338                                      </widget> 
     339                                      <packing> 
     340                                        <property name="position">2</property> 
     341                                      </packing> 
     342                                    </child> 
    335343                                  </widget> 
    336                                   <packing> 
    337                                     <property name="position">2</property> 
    338                                   </packing> 
    339344                                </child> 
    340345                              </widget> 
    341346                            </child> 
     347                            <child> 
     348                              <widget class="GtkLabel" id="label20"> 
     349                                <property name="visible">True</property> 
     350                                <property name="ypad">6</property> 
     351                                <property name="label" translatable="yes">&lt;b&gt;Main Window&lt;/b&gt;</property> 
     352                                <property name="use_markup">True</property> 
     353                              </widget> 
     354                              <packing> 
     355                                <property name="type">label_item</property> 
     356                              </packing> 
     357                            </child> 
    342358                          </widget> 
     359                          <packing> 
     360                            <property name="position">0</property> 
     361                          </packing> 
    343362                        </child> 
    344363                        <child> 
    345                           <widget class="GtkLabel" id="label20"> 
     364                          <widget class="GtkFrame" id="frame1"> 
    346365                            <property name="visible">True</property> 
    347                             <property name="ypad">6</property> 
    348                             <property name="label" translatable="yes">&lt;b&gt;Main Window&lt;/b&gt;</property> 
    349                             <property name="use_markup">True</property> 
     366                            <property name="label_xalign">0</property> 
     367                            <property name="shadow_type">none</property> 
     368                            <child> 
     369                              <widget class="GtkAlignment" id="alignment2"> 
     370                                <property name="visible">True</property> 
     371                                <property name="left_padding">12</property> 
     372                                <child> 
     373                                  <widget class="GtkVBox" id="vbox10"> 
     374                                    <property name="visible">True</property> 
     375                                    <child> 
     376                                      <placeholder/> 
     377                                    </child> 
     378                                    <child> 
     379                                      <widget class="GtkComboBox" id="monitorinput"> 
     380                                        <property name="visible">True</property> 
     381                                        <property name="items" translatable="yes"></property> 
     382                                        <signal name="changed" handler="on_monitorinput_changed"/> 
     383                                      </widget> 
     384                                      <packing> 
     385                                        <property name="expand">False</property> 
     386                                        <property name="position">1</property> 
     387                                      </packing> 
     388                                    </child> 
     389                                    <child> 
     390                                      <placeholder/> 
     391                                    </child> 
     392                                  </widget> 
     393                                </child> 
     394                              </widget> 
     395                            </child> 
     396                            <child> 
     397                              <widget class="GtkLabel" id="label2"> 
     398                                <property name="visible">True</property> 
     399                                <property name="label" translatable="yes">&lt;b&gt;Display&lt;/b&gt;</property> 
     400                                <property name="use_markup">True</property> 
     401                              </widget> 
     402                              <packing> 
     403                                <property name="type">label_item</property> 
     404                              </packing> 
     405                            </child> 
    350406                          </widget> 
    351407                          <packing> 
    352                             <property name="type">label_item</property> 
     408                            <property name="position">1</property> 
    353409                          </packing> 
    354410                        </child> 
    355411                      </widget> 
    356412                      <packing> 
     413                        <property name="expand">False</property> 
     414                        <property name="fill">False</property> 
    357415                        <property name="position">2</property> 
    358416                      </packing> 
    359417                    </child> 
  • src/prefs.py

    -- 
    1.7.0.4
    
    
    From df41c23367b30fc307e61dd5add4c64045e1cb32 Mon Sep 17 00:00:00 2001
    From: Pablo Recio Quijano <rikutheronin@gmail.com>
    Date: Sun, 8 Aug 2010 11:43:38 +0200
    Subject: [PATCH 2/3] Added handling of the checkbox to select multiple displays
    
    Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com>
    ---
     src/prefs.py |   19 +++++++++++++++++++
     1 files changed, 19 insertions(+), 0 deletions(-)
    
    diff --git a/src/prefs.py b/src/prefs.py
    index b0a69bf..c2d2186 100644
    a b  
    194194        val = int(spin.get_value()) 
    195195        self.client.set_int(KEY('/general/history_size'), val) 
    196196 
     197    def on_monitorinput_changed(self, monitor): 
     198        """Changes the monitor 
     199        """ 
     200        val = monitor.get_active() 
     201        self.client.set_int(KEY('/general/monitor'), val) 
     202 
    197203    def on_scroll_output_toggled(self, chk): 
    198204        """Changes the activity of scroll_output in gconf 
    199205        """ 
     
    309315        column.set_property('expand', False) 
    310316        treeview.append_column(column) 
    311317 
     318        screen = self.get_widget('config-window').get_screen() 
     319        self.monitorinput = self.get_widget('monitorinput') 
     320        num_monitors = screen.get_n_monitors() 
     321        for i in range(num_monitors): 
     322            self.monitorinput.append_text('%s' % i) 
     323 
    312324        self.populate_shell_combo() 
    313325        self.populate_keys_tree() 
    314326        self.load_configs() 
     
    476488        value = self.client.get_bool(KEY('/general/window_tabbar')) 
    477489        self.get_widget('window_tabbar').set_active(value) 
    478490 
     491        # monitor 
     492        combo = self.get_widget('monitorinput') 
     493        value = float(self.client.get_int(KEY('/general/monitor'))) 
     494        for i in combo.get_model(): 
     495            if i[0] == str(int(value)): 
     496                combo.set_active_iter(i.iter) 
     497 
    479498        # scrollbar 
    480499        value = self.client.get_bool(KEY('/general/use_scrollbar')) 
    481500        self.get_widget('use_scrollbar').set_active(value) 
  • src/guake.py

    -- 
    1.7.0.4
    
    
    From 0f1d52fa37bbafa3edcacea6480dc73bf3238a12 Mon Sep 17 00:00:00 2001
    From: Pablo Recio Quijano <rikutheronin@gmail.com>
    Date: Sun, 8 Aug 2010 11:44:17 +0200
    Subject: [PATCH 3/3] Implemented the behaviour of multimonitor.
    
    Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com>
    ---
     src/guake.py |   14 +++++---------
     1 files changed, 5 insertions(+), 9 deletions(-)
    
    diff --git a/src/guake.py b/src/guake.py
    index 6214fb2..9321108 100644
    a b  
    776776        """ 
    777777        # setting window in all desktops 
    778778        self.get_widget('window-root').stick() 
     779        monitor = self.client.get_int(KEY('/general/monitor')) 
    779780 
    780781        # add tab must be called before window.show to avoid a 
    781782        # blank screen before adding the tab. 
     
    812813        is the window_height property, width is window_width and the 
    813814        horizontal alignment is given by window_alignment. 
    814815        """ 
     816        monitor = self.client.get_int(KEY('/general/monitor')) 
    815817        screen = self.window.get_screen() 
     818        if monitor >= screen.get_n_monitors(): #if we disconnect some monitor 
     819            monitor = 0 
    816820        height = self.client.get_int(KEY('/general/window_height')) 
    817821        width = 100 
    818822        halignment = self.client.get_int(KEY('/general/window_halignment')) 
     
    820824        # get the rectangle just from the first/default monitor in the 
    821825        # future we might create a field to select which monitor you 
    822826        # wanna use 
    823         window_rect = screen.get_monitor_geometry(0) 
     827        window_rect = screen.get_monitor_geometry(monitor) 
    824828        total_width = window_rect.width 
    825829        window_rect.height = window_rect.height * height / 100 
    826830        window_rect.width = window_rect.width * width / 100 
    827831 
    828         if width < total_width: 
    829             if halignment == ALIGN_CENTER: 
    830                 window_rect.x = (total_width - window_rect.width) / 2 
    831             elif halignment == ALIGN_LEFT: 
    832                 window_rect.x = 0 
    833             elif halignment == ALIGN_RIGHT: 
    834                 window_rect.x = total_width - window_rect.width 
    835         window_rect.y = 0 
    836832        return window_rect 
    837833 
    838834    def get_running_fg_processes(self):