Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, April 19, 2024

Diff for thinkpad-status/thinkpad.pl between version 1.2 and 1.3

version 1.2, 2007/02/11 15:46:00 version 1.3, 2007/02/16 00:25:42
Line 13 
Line 13 
 # 2007-02-11 - created  # 2007-02-11 - created
 #  #
   
 # $Platon$  # $Platon: thinkpad-status/thinkpad.pl,v 1.2 2007-02-11 15:46:00 rajo Exp $
   
 use strict;  use strict;
 use warnings;  use warnings;
Line 28  use English;
Line 28  use English;
 use Time::HiRes qw( gettimeofday );  use Time::HiRes qw( gettimeofday );
 use POSIX qw(strftime);  use POSIX qw(strftime);
   
 undef $/;  
   
 use vars qw (  use vars qw (
         $glade          $glade
         $x_mainwin $x_status $x_preferences $x_about          $x_mainwin $x_status $x_preferences $x_about
Line 37  use vars qw (
Line 35  use vars qw (
   
         $glib_refresh $refresh_interval $default_update_interval          $glib_refresh $refresh_interval $default_update_interval
   
         $xx_temperatures $x_temperatures @temperatures          $x_cpu_scaling_driver $cpu_scaling_driver
           $x_cpu_scaling_governor $cpu_scaling_governor
   
           $xx_battery $x_battery @battery
           $xx_thermals $x_thermals @thermals
           $xx_fan $x_fan @fan
 );  );
   
 $default_update_interval = 1; # 1 second  $default_update_interval = 1; # 1 second
Line 72  sub init_gui
Line 75  sub init_gui
   
         # refresh interval          # refresh interval
         $x_refresh_interval = $glade->get_widget('refresh_interval');          $x_refresh_interval = $glade->get_widget('refresh_interval');
         # temperatures  
         $xx_temperatures = $glade->get_widget('temperatures');          # CPU {{{
     $x_temperatures = Gtk2::SimpleList->new_from_treeview(          $x_cpu_scaling_driver = $glade->get_widget('cpu_scaling_driver');
         $xx_temperatures,          $cpu_scaling_driver = grab_data('/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver');
   
           $x_cpu_scaling_governor = $glade->get_widget('cpu_scaling_governor');
           $cpu_scaling_governor = grab_data('/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor');
   
           # }}}
   
           # battery # {{{
           $xx_battery = $glade->get_widget('battery');
       $x_battery = Gtk2::SimpleList->new_from_treeview(
           $xx_battery,
           'Param' => 'text',
           'Value' => 'text',
           );
       # set some useful SimpleList properties
       $x_battery->set_headers_clickable(0);
       foreach ($x_battery->get_columns()) {
           $_->set_resizable(1);
           $_->set_sizing('grow-only');
       }
           # }}}
   
           # thermal # {{{
           $xx_thermals = $glade->get_widget('thermals');
       $x_thermals = Gtk2::SimpleList->new_from_treeview(
           $xx_thermals,
         'Name'                  => 'text',          'Name'                  => 'text',
         'Temperature'   => 'text',          'Temperature'   => 'text',
         );          );
     # set some useful SimpleList properties      # set some useful SimpleList properties
     $x_temperatures->set_headers_clickable(0);      $x_thermals->set_headers_clickable(0);
     foreach ($x_temperatures->get_columns()) {      foreach ($x_thermals->get_columns()) {
         $_->set_resizable(1);          $_->set_resizable(1);
         $_->set_sizing('grow-only');          $_->set_sizing('grow-only');
     }      }
           # }}}
   
           # fan {{{
           $xx_fan = $glade->get_widget('fan');
       $x_fan = Gtk2::SimpleList->new_from_treeview(
           $xx_fan,
           'Param' => 'text',
           'Value' => 'text',
           );
       # set some useful SimpleList properties
       $x_fan->set_headers_clickable(0);
       foreach ($x_fan->get_columns()) {
           $_->set_resizable(1);
           $_->set_sizing('grow-only');
       }
           # }}}
   
         # set up a 'refresh' timer          # set up a 'refresh' timer
         $x_refresh_interval->set_text($default_update_interval);          $x_refresh_interval->set_text($default_update_interval);
Line 98  sub make_refresh()
Line 142  sub make_refresh()
 { # {{{  { # {{{
         print_info("make_refresh() called");          print_info("make_refresh() called");
   
         refresh_temperature();          refresh_cpu();
           refresh_battery();
           refresh_thermal();
           refresh_fan();
   
         return 1;          return 1;
   
 } # }}}  } # }}}
   
 # refresh data for tab 'Fan'  # refresh data for tab 'CPU'
 sub refresh_fan()  sub refresh_cpu()
 { # {{{  { # {{{
     @{$x_temperatures->{data}} = ();  
   
         open(FAN, "</proc/acpi/ibm/fan") or die "Can't open /proc/acpi/ibm/fan: $!";          $cpu_scaling_driver = grab_data('/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver');
         shift @temperatures; # remove description          $x_cpu_scaling_driver->set_text($cpu_scaling_driver);
         close (FAN);  
   
         foreach my $desc ('Processor', 'Mini-PCI', 'Harddisk',  'Graphics', 'System battery', 'UltraBay battery', 'System battery', 'UltraBay battery') {          $cpu_scaling_governor = grab_data('/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor');
                 push @{$x_temperatures->{data}}, [$desc, shift(@temperatures)];          $x_cpu_scaling_governor->set_text($cpu_scaling_governor);
         }  
   } # }}}
   
   # refresh data for tab 'Battery'
   sub refresh_battery()
   { # {{{
   
           grab_data_by_colon('/proc/acpi/battery/BAT0/state', $x_battery->{data});
   
 } # }}}  } # }}}
   
 # refresh data for tab 'Thermal'  # refresh data for tab 'Thermal'
 sub refresh_temperature()  sub refresh_thermal()
 { # {{{  { # {{{
     @{$x_temperatures->{data}} = ();      @{$x_thermals->{data}} = ();
   
         open(THERMAL, "</proc/acpi/ibm/thermal") or die "Can't open /proc/acpi/ibm/thermal: $!";          open(THERMAL, "</proc/acpi/ibm/thermal") or do { warn "Can't open /proc/acpi/ibm/thermal: $!"; return ; };
         @temperatures = split(/\s+/, <THERMAL>, 9);          @thermals = split(/\s+/, <THERMAL>, 9);
         shift @temperatures; # remove description          shift @thermals; # remove description
         close (THERMAL);          close (THERMAL);
   
         # http://www.thinkwiki.org/wiki/Thermal_sensors          # http://www.thinkwiki.org/wiki/Thermal_sensors
         foreach my $desc ('Processor', 'Mini-PCI', 'Harddisk',  'Graphics', 'System battery', 'UltraBay battery', 'System battery', 'UltraBay battery') {          foreach my $desc ('Processor', 'Mini-PCI', 'Harddisk',  'Graphics', 'System battery', 'UltraBay battery', 'System battery', 'UltraBay battery') {
                 push @{$x_temperatures->{data}}, [$desc, shift(@temperatures)];                  push @{$x_thermals->{data}}, [$desc, shift(@thermals)];
           }
   
   } # }}}
   
   # refresh data for tab 'Fan'
   sub refresh_fan()
   { # {{{
   
           grab_data_by_colon('/proc/acpi/ibm/fan', $x_fan->{data});
   
   } # }}}
   
   sub grab_data($)
   { # {{{
           my ($file) = @_;
           my $data;
   
           open(FILE, "<$file") or do { warn  "Can't open '$file': $!"; return; };
           {
                   local $/;
                   $data = <FILE>;
           }
           close(FILE);
   
           $data =~ s/[^\p{IsPrint}]//g;
   
           return $data;
   
   } # }}}
   
   sub grab_data_by_colon($$)
   { # {{{
           my ($file, $arr) = @_;
           @$arr = ();
   
           open(COLON, "<$file") or do { warn  "Can't open '$file': $!"; return; };
           while (my $line = <COLON>) {
                   chomp $line;
                   my ($name, $val) = split(/:\s+/, $line, 2);
                   push @{$arr}, [$name, $val];
         }          }
           close(COLON);
   
 } # }}}  } # }}}
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top