Commit Graph

309 Commits

Author SHA1 Message Date
Mike Massonnet
0a8e9b2ae5 Hide inside the notification area 2010-05-23 20:57:25 +02:00
Mike Massonnet
5eaf309cfd Reorder signals on treeview right click
Show Terminate after Stop and Kill.
2010-05-23 20:00:13 +02:00
Mike Massonnet
4dc36d296a Hide Swap usage from statusbar when swap total equals zero 2010-05-23 19:57:25 +02:00
Mike Massonnet
d806b12544 Display a warning banner when running as root 2010-05-23 13:59:43 +02:00
Mike Massonnet
9a26498a8b Implement option “Full command line” 2010-05-23 13:08:45 +02:00
Mike Massonnet
f5e7344a8b Implement option “More precision” 2010-05-23 00:47:02 +02:00
Mike Massonnet
286f561088 Implement option “Refresh rate” 2010-05-22 22:45:38 +02:00
Mike Massonnet
91d509ccdb New options “Refresh rate,” “More precision” and “Full command line"
New options are in the GUI although they don't do anything yet.
2010-05-22 22:21:51 +02:00
Mike Massonnet
0e52fb3db1 Credit people behind the different OS implementations 2010-05-22 00:39:38 +02:00
Mike Massonnet
ee0e367f07 Fix bug retrieving bad PID from treeview
Use the model_filter to retrieve the correct selected path and therefore
the right PID.
2010-05-21 16:08:10 +02:00
Mike Massonnet
6b8162b4e9 [linux|freebsd] Fix condition to calculate CPU usage 2010-05-21 15:29:45 +02:00
Mike Massonnet
d212ce6b43 Fix compiler warnings from --enable-debug=yes
Fixed old-style function definitions, dropped unused variables, renamed
signal to xtm_signal (it shadowed a previous global declaration from
signal.h,) dropped the G_UN/LIKELY calls, missing includes and casted
here and there.

The task-manager-*.c files /would/ have to be individually fixed.
2010-05-21 15:14:32 +02:00
Mike Massonnet
97d2f77ee6 [openbsd] Don't provide memory/swap values in KiB 2010-05-21 13:37:35 +02:00
Mike Massonnet
175b4cb541 Add FreeBSD implementation
Original code (task list) is from Oliver Lehmann and was licensed under
FreeBSD (BSD 2-clause.)
2010-05-21 13:28:10 +02:00
Mike Massonnet
bbd591fd23 Display Swap usage in Solaris implementation
The Swap usage is retrieved through swapctl(). Also on a separate change, read
the CPU time from the nanosecs instead of ticks for increased precision.
2010-05-18 21:48:54 +02:00
Mike Massonnet
bb79501cfb Set GTK+ requirement on GtkBuilder file to 2.12 2010-05-16 15:03:29 +02:00
Mike Massonnet
db0ab60561 Re-add Solaris implementation
Solaris support is in again however the Swap usage is missing. Older
files from the tree source have been removed.
2010-05-16 13:52:52 +02:00
Landry Breuil
ee9bd057fd Merge branch 'master' of ssh://git.xfce.org/git/apps/xfce4-taskmanager
Conflicts:
	src/task-manager-bsd.c
2010-05-16 12:56:06 +02:00
Landry Breuil
00d6107972 Implement pid_is_sleeping() and fix send_signal_to_pid() 2010-05-16 12:53:50 +02:00
Mike Massonnet
0be1d45507 Don't recount CPU count in Linux implementation 2010-05-16 12:30:37 +02:00
Mike Massonnet
b961822ba4 Move POSIX code to task-manager.c
The functions send_signal_to_pid() and set_priority_to_pid() are using
POSIX functions and “should” be safe in task-manager.c. Still keep the
enumeration as a bridge between virtual values and real values, there is
no benefit removing them (wasting minutes) and it won't make the code
look better (or worse).

The functions have been removed from the Linux and BSD implementations.
2010-05-16 12:30:37 +02:00
Landry Breuil
a721cda4be Set Task name from p_comm field, and cmdline from KERN_PROC_ARGV 2010-05-13 20:07:35 +02:00
Landry Breuil
44dc437214 correctly implement set_priority/send_signal_to_pid() 2010-05-13 19:57:37 +02:00
Landry Breuil
10247249eb Implement fetching of swap stats 2010-05-13 19:56:51 +02:00
Landry Breuil
e5ad1842bf Fix missing includes, remove unused variables 2010-05-13 19:56:10 +02:00
Landry Breuil
3acd330400 WIP on OpenBSD support
- update wrt new Task structure
- handle zombie processes
- get full cmdline
rework
2010-05-13 18:36:17 +02:00
Mike Massonnet
137748a486 === Release 0.5.90 (1.0.0 beta1) === 2010-05-11 00:25:07 +02:00
Mike Massonnet
8dd82ed6a8 Prepare build-env for first beta 2010-05-10 22:22:51 +02:00
Mike Massonnet
a21b1bfca8 Ask for confirmation to terminate/kill a task 2010-05-10 22:22:39 +02:00
Mike Massonnet
7239d4bbb0 Display memory values < 1 MiB
Fixed the MB “typo” and show values for memory in KiB or B if needed.
The threshold for displaying KiB (< 4 MiB) or B (< 9 KiB) are based on
impulse.
2010-05-10 17:57:51 +02:00
Mike Massonnet
9a6cdd2ff3 Filter tree view with show-all-processes
Switched the get_hostname() get_owner_uid() public in task-manager.c,
the owner uid is needed in the tree view class in order to filter out
user processes from others.
2010-05-10 17:03:27 +02:00
Mike Massonnet
99a4a68097 Renamed Show "system" processes to "all" and added a GtkTreeModelFilter
<sigh>
  I started to rename "Show sytem processes" to "Show all processes"
  and included a GtkTreeModelFilter in between the GtkListStore and
  GtkTreeView but nooooo... I had to write private code to sort the
  columns. In fact the GtkTreeViewColumn class assumes the model to
  be sortable but GtkTreeModelFilter is not, although it provides an
  accessor function to the underlying model which is.

  And not to mention that understanding GtkTreeViewColumn is a task
  on its own! Having the code under the hand is the only exit.
</sigh>
2010-05-10 11:29:34 +02:00
Mike Massonnet
1788e3c220 Implement new function pid_is_sleeping()
The function pid_is_sleeping() is implement by the different OS
implementations and returns TRUE or FALSE. It is used in the tree view
context menu to show either the signal Stop or Continue.
2010-05-09 01:34:56 +02:00
Mike Massonnet
07131a81b3 Context menu for sending signals and setting priorities
Base signals and priorities are defined inside the task-manager.h file
to be reused as general values inside the interface. The different OS
implementations have to do the conversion from the enumeration to real
values.
2010-05-09 00:51:46 +02:00
Mike Massonnet
e524915ac7 Several micro fixes on the Linux implementation
Fix one segfault where some processes like “ls” live very briefly and
those may be catched up but at the time to read the cmdline the process
tree already disappeared. Also terminate the cmdline with \0.

I ran the application on my netbook, which doesn't have /proc/<PID>/comm
files... The code has been updated to read the short command from the
buffer.
2010-05-08 14:49:12 +02:00
Mike Massonnet
a7465b61f4 Fix for scanf failing at parsing process names with spaces
The code still uses scanf to parse the stat file, but the process name
is being cleansed so that it never fails. The name is read from the
“comm” file. It is still a truncated version of the name, and will
likely remain for very long like this. There is one solution, but since
the name isn't currently used inside the interface there is no point
wasting time.
2010-05-08 00:10:22 +02:00
Mike Massonnet
553be8eee1 Temporary “fix” of a nasty segfault
On the Linux implementation, when a process name has a space in it the
sscanf function is unable to parse the line properly. This will have to
be changed, but in the meantime ignore such processes and avoid the
segfault, there are going to be Beta releases.
2010-05-07 21:52:46 +02:00
Mike Massonnet
239c5d5064 Enhance performance by updating the GtkTreeModel inside the TaskManager
The code to update the model has been moved inside the XtmTaskManager
class and this in order to enhance performance. In fact all the rows of
the model were udpdated everytime (150~ processes × 9 columns calls on
gtk_list_store_set per seconds) which represented a big CPU hog. Now
that the model is being updated within the same class that pulls the
processes information it is possible to run low check routines and
update only the rows that have updated information.

Also big surprise, the new tasks weren't added, well they did but not
the right data. The pointer's location was copied instead of the
pointer's content.
2010-05-07 21:52:33 +02:00
Mike Massonnet
2506eb50d8 Typo, that's why I hate commit and pushing right behind 2010-05-05 18:02:35 +02:00
Mike Massonnet
3cd86dca3d Well s/jiffles/jiffies/
I was quite sure I had a typo but didn't concider it.
2010-05-05 16:39:51 +02:00
Mike Massonnet
074f5039e1 Calculate CPU usage per process in Linux implementation
Added a utility function that stores old jiffles inside a hash table in
order to be able to provide usage values of system and user time in
percentage.
2010-05-05 16:30:37 +02:00
Mike Massonnet
a02bf69573 Show list of tasks
Provide the list of tasks through a GArray and parse it in main.c to
update the GtkTreeModel.
2010-05-05 09:02:04 +02:00
Mike Massonnet
71d1684696 Add precision to memory/swap and CPU
Switched all the gushort against gfloat data types for the memory, swap
and CPU usages. Show them with a precision of two decimals in the GUI.
2010-05-02 17:03:58 +02:00
Mike Massonnet
4f04ca5cb7 Read information from memory/swap and CPU
This commit is the second of an incremental serie. There will be other
commits with the information about tasks and the support for BSD and
Solaris once things are settled.

The TaskManager class is build with a new source task-manager-linux.c
that provides functions specific to the Linux implementation. It has
functions to read the usage of the memory/swap and the CPU.
2010-05-02 17:00:30 +02:00
Mike Massonnet
9a49bf015a Initial TaskManager class and make room for Swap
Added the TaskManager class to hold system information and tasks.
Currently it provides username and hostname based on POSIX functions.
The Swap is now part of the system information and is being displayed in
the statusbar.
2010-05-02 17:00:30 +02:00
Mike Massonnet
fdaf8b1b49 Rename “Information” to “Preferences” 2010-05-02 17:00:30 +02:00
Mike Massonnet
b83eb75002 Custom statusbar
The statusbar is created since a separate widget class and has three
different labels (settable through properties) for CPU, memory and
number of processes. This makes it more convenient to change one or
another value and it gives a nicer look.
2010-05-02 17:00:24 +02:00
Mike Massonnet
cc6dbd8373 Initial commit of new interface
Changes touching the build:
- Bumped version to 0.5.0.
- Removed dependency on Xfce libs (it only depends on GTK+-2.0.)
- Updated Makefile with new source files.
- Build ChangeLog through a script (remove it from source tree.)

More generally speaking, the interface is build on top of a GtkBuilder
UI definition, with a personal GtkTreeView and a Settings GObject to
update the information shown on the interface on changes. All the code
is being written with GObjects which will make it a lot easier to
separate GUI code and system code.
2010-05-01 15:34:25 +02:00
Mike Massonnet
2ea3ddc135 Small factorize on cmdline reading 2009-09-11 15:33:00 +02:00
Mike Massonnet
e545b2e716 Show command line arguments in Linux 2009-09-09 20:24:24 +02:00