InformationDynamically configure any global hot key to: Set availability status (message can be chosen many ways including via a popup); Move pidgin Buddy List to top/bottom of windows; Hide the Buddy List window or taskbar window.ContentThis Pidgin plugin has the following functionality, accessible through user-set global shortcut keys:
- Set status per hot key action, configurable as follows through the configuration dialog:
- Set Status State:
- KEEP CURRENT: Does not change the current “Status State”
- Offline: Disconnects
- Available, Away, Do Not Disturb, or Invisible: Also sets online if currently offline
- Set Status Message:
- Keep Current Message: Does not change the current “Status Message”
- Static Message: Sets to a pre-user-defined message
- Last Non-Empty Message: Sets to the last “Status Message” that was not blank
- Prompt with Static Message: Prompts user to enter the message via a popup dialog. The default in the prompt is a pre-user-defined message
- Prompt with Last Non-Empty: Prompts user to enter the message via a popup dialog. The default in the prompt is the last “Status Message” that was not blank
- Focus Buddy List: Buddy List is set as the focused window
- Hide Buddy List: Buddy List is hidden (still accessible through the Task Tray Icon/Docklet)
- Set Buddy List as Bottom Window: Move Buddy List below all other windows
- Toggle Taskbar Visibility: Turns on/off the current visibility of the Buddy List in the taskbar
- Show Pending Conversation: This shows the current pending conversation (like when clicking on the task tray [docklet] icon for an unread message)
- Other functionality:
- Define Buddy List taskbar visibility for when Pidgin starts up
- Toggle taskbar visibility through the Pidgin menu
- Copy the StatusHotKeys.dll (StatusHotKeys.so in Linux) to either:
- Your Pidgin plugins directory
- In Windows: Most likely at “C:\Program Files\Pidgin\plugins”
- Your Pidgin profile plugins directory
- In Windows: Most likely at “C:\Documents and Settings\USERNAME\Application Data\.purple\plugins”
- In Linux: “~/.purple/plugins” (the directory may need to be made)
- Run Pidgin and go to: Pidgin Menu > Tools > Plugins
- Activate “Status Hot Keys”
- This has been fully tested and confirmed working using Pidgin 2.6.4 in:
- Windows XP SP2
- A default install of Ubuntu [Linux] v9.04 [Gnome]
- A default install of Slackware [Linux] v13.0 [KDE]
How to Use:
- Add a Hot Key Action:
- Set up the Shortcut Key by selecting its box and pressing the key you wish to use (including “Ctrl”, “Alt”, “Shift”, or “Win” keyboard modifiers). The “Local Only” option, which will allow setting shortcut keys that are only accessible when the buddy list has focus, is currently unsupported.
- Choose the configuration options that you would like to use for either a “Set Status” or “Set Other” action and click the “add” button besides the one you wish to add
- Delete/Modify a Hot Key Action:
- Select an action from the list
- After an action is selected, you can “delete” or “edit” it by clicking the appropriate button. Both buttons remove the action from the list, but “Edit” transfers its settings into the “Add Hot Key” section
- Using a Hot Key:
- Just press the appropriate hot key to run the action from anywhere in your window environment
- Note that a hot key in an operating system can only be hooked once. If another application already owns the hot key, the hot key action cannot be triggered in this application until it is added again or the plugin is reloaded, assuming the other application no longer owns the hot key
- These defaults are set whenever the plugin is loaded and no hot key actions are found.
|Away ||afk or unavailable ||Ctrl+Shift+a |
|Available ||NO MESSAGE ||Ctrl+Shift+b |
|Offline ||NO MESSAGE ||Ctrl+Shift+d |
|Away ||PROMPT:afk ||Ctrl+Shift+s |
|--OTHER-- ||Focus Buddy List||Ctrl+Shift+t |
- Buddy List taskbar hidden upon startup: TRUE
ConceptsGUI DesignNotesI hate branching library dependencies ^_^ (and creating GUIs!)UpdatesStatus Hot Keys: Show Pending Conversation Action @ 2010-02-18 18:33:07 - Download
- The libraries and includes for the following libraries/products are required: Pidgin (Download) [includes libpurple], GLIB and GTK (Download), Cairo, Pango, ATK
- In Windows:
- Mingw-gcc and Cygwin are both required
- Edit the “USER CONFIGURATION” section in the config.windows file
- In Cygwin in your “StatusHotKeys” directory run “make install” (if it doesn’t detect you are on Windows, run “make install OS=win”)
- In Linux:
- Edit the “USER CONFIGURATION” section in the config.linux file
- In your “StatusHotKeys” directory run “make install”
- List of Make Targets:
- make: Calls “make lib”
- make lib: Compiles the plugin file (which is a DLL or shared object [library file])
- make install: Calls “make lib” and copies the plugin file to an appropriate directory
- make uninstall: Removes the plugin file from the directory it was installed to
- make exe: Makes a test bed executable to experiment with the project without having it interface with Pidgin
- make test: Calls “make exe” and runs the executable
- make clean: Removes everything created by any of the above make targets
- Troubleshooting compiling:
- Make sure the “Compile” directory exists inside the “StatusHotKeys” folder
- In Windows, the needed library files (gtk, glib, libpurple, etc) might be improperly renamed for use with GCC. If anyone needs help with this, I can add a write-up for it
- I’ll add to this as things come up :-)
Per a user request, The “Show Pending Conversation” action has been added. This shows the current pending conversation (like when clicking on the task tray [docklet] icon for an unread message).
Download: v1.5.2 Binary, SourceStatus Hot Keys v1.5.1 - Window Z-Order Fix @ 2010-01-18 03:36:08 - Download
This will probably be my final update (v1.5.1, binary, source) on this project for a while unless other bugs are found, or enough interest is generated on a specific request by enough people.
The problem with window raising/lowering in KDE is now fixed. GTK/GDK was not acting how it was supposed to in regards to focusing and changing window Z-order (gdk_window_lower/gdk_window_raise/gdk_window_focus/gtk_window_present) and I had to add a very hack-ey solution to get it working in both Gnome and KDE. It’s not a pretty or elegant solution, but it works. It also still won’t give focus to the Buddy List window when it is raised in KDE, but I feel the end result is close enough for government work.
I’m going to go ahead and announce it today by adding it to the Pidgin plugin wiki :-). I’m finally interfacing with the rest of the open source world, yay! XD
Oh yes, I forgot to add something on my last update post. I originally had planned to also add an option so that double clicking the taskbar/docklet icon would always open the Buddy List instead of toggling visibility. This was unfortunately not possible due to how Pidgin is programmed. I found exactly where the problem was, and know how to fix it by modifying the Pidgin source (probably by generating a signal for an event), but I am not really interested in trying to get a patch pushed through for that on Pidgin, so alas. Status Hot Keys v1.5 @ 2010-01-17 12:09:46 - Download
I’ve updated the project (v1.5, binary, source) to where it’s not even recognizable from its last version :-). A configuration dialog has been added so that everything can now be set dynamically. It’s very configurable to let people work with Pidgin quickly through global shortcut keys however they want to. Any status change or showing/hiding the buddy list can be done without using the mouse, which is how I personally like to work with computers, as it is much faster ;-).
This update ended up taking a lot more hours (and many many many more lines of code [~1500]) than I planned on because I had to learn how to work with multiple libraries from scratch (GTK, Pidgin, GLib, X11). I learned a lot though, and that, and seeing how different people set up their APIs/libraries, is always fun.
I’ll probably be adding this to the Pidgin 3rd party plugins Wiki in the next few days. I might want to fix a few bugs first though (KDE might be messing some things up).Status Hot Keys (for Pidgin) v1.00 @ 2010-01-02 23:51:01 - Download
I started this Pidgin plugin yesterday and had just finished it right before going to sleep, so I finally now have the time to post it ^_^ (v1.0, binary, source). The goal of this project was to fill in some gaps in Pidgin that were features I had in Trillian.
This plugin allows the user, using global shortcut keys, to set their status state and message, show the buddy list, and toggle the buddy list visibility on the taskbar.
It currently only works in Windows, as that was my primary concern and I need to get a Linux test environment set up to finish it. I had to use Window’s specific APIs for the taskbar visibility and HotKey functionality, as “gdk_window_add_filter” (for the HotKeys) and “gtk_window_set_skip_taskbar_hint” (for the TaskBar visibility) do not seem to work in Windows.
It is also only configurable through the source itself, at the moment, but I should hopefully soon be adding a configuration dialog with the following abilities:
Controls/Use (Included in this update since this information will be changed in the next version):
- The ability to set multiple [away] status states with messages (or leave the message alone)
- Choose whether to start the Buddy List as visible or not on the taskbar
- Configure as many events as you want against hot keys, which don’t have to use ctrl+shift, and may be able to be just triggered locally when the buddy list has focus (which also need to check for conflicts)
- All of the functionality can be accessed through: Pidgin Menu > Tools > Status Hot Keys
|Global Shortcut Keys|
|Show Pidgin Buddy List||Ctrl+Shift+P|
|Toggle Buddy List in Tashbar||Ctrl+Shift+T|
License: I am unsure if Pidgin plugins need to also be licensed under the GPL, as I am not using any of their files beyond linking to the headers. I am including their copy of the GPL from the main directory of the Pidgin source code in the file “COPYING”, just in case. I am considering this to be under the Dakusan License though until I found out if it definitely needs to be GPLed.To add comments, please go to the forum page for this project (guest comments are allowed for the Projects, Posts, and Updates Forums).
Comments are owned by the user who posted them. We accept no responsibility for the contents of these comments.