AutoKey, a desktop automation utility for Linux and X11.

Overview

AutoKey

Join the chat at https://gitter.im/autokey/autokey Ask and answer questions on StackOverflow

About

AutoKey, a desktop automation utility for Linux and X11, formerly hosted at OldAutoKey. Updated to run on Python 3.

Important: This is an X11 application, and as such will not function 100% on distributions that default to using Wayland instead of Xorg.

Installation

Please remove previous installations of both AutoKey and AutoKey-py3 fully before installing!

For detailed installation instructions, please visit the Installation page. in our wiki.

Zero-installation Method

AutoKey can also be used directly from the cloned repository. This is useful, e.g., for trying out a new version without removing a current installation.

  1. Start the Autokey daemon
cd lib
python3 -m autokey.gtkui
# or for KDE
python3 -m autokey.qtui
  1. Start the Autokey UI (if desired) by appending the --configure or -c command line switch to the end of the command.

The commands accept CLI switches just like the regular installation, so python3 -m autokey.qtui -lc works as expected.

Documentation

Documentation for new features. For older features, please refer to the original AutoKey's scripting API, wiki, and Stack Overflow.

Examples of AutoKey scripts can be found by searching GitHub and reading AutoKey's wiki.

Support

Please do not request support on the issue tracker. Instead, head over to the autokey-users Google Groups forum, StackOverflow, on IRC (#autokey on Freenode), or Gitter web-based chat.

We'd appreciate it if you take a look at Problem reporting guide before posting. By providing as much information as you can, you'll have a much better chance of getting a good answer in less time.

Bug reports and Pull Requests

Bug reports and PRs are welcome. Please use the GitHub Issue Tracker for bug reports. When reporting a suspected bug, please test against latest git HEAD and make sure to include as much information as possible to expedite troubleshooting and resolution. For example,

  • required: How to reproduce the issue you are experiencing
  • Python tracebacks, if any
  • Verbose logging information obtained by starting the frontend (autokey-gtk or autokey-qt) from terminal with the --verbose option.

Changelog

Here.

License

GNU GPL v3. See the LICENSE file alongside this README for a plain text copy of the license text.

Comments
  • 0.96.0 beta 5 creating new script forces exit upon renaming or setting a hotkey

    0.96.0 beta 5 creating new script forces exit upon renaming or setting a hotkey

    Classification:

    crash

    Reproducibility:

    always

    Version

    AutoKey version: 0.96.0 beta 5

    Used GUI (Gtk, Qt, or both): Qt

    If the problem is known to be present in more than one version, please list all of those.

    Installed via: (PPA, pip3, …). pip

    Linux Distribution: Manjaro KDE Plasma

    Full System Specs

    Operating System: Manjaro Linux
    KDE Plasma Version: 5.21.5
    KDE Frameworks Version: 5.82.0
    Qt Version: 5.15.2
    Kernel Version: 5.12.9-1-MANJARO
    OS Type: 64-bit
    Graphics Platform: X11
    Processors: 8 × AMD FX(tm)-8350 Eight-Core Processor
    Memory: 23.5 GiB of RAM
    Graphics Processor: NVIDIA GeForce GTX 750 Ti/PCIe/SSE2
    

    Summary

    Creating a script and then renaming it or setting a hotkey causes it to crash out.

    log from --verbose

    https://gist.github.com/f4d7a4b1e298c663301ef6c2d5721e0a

    Workaround

    Falling back to 0.96.0 beta 4 resolves this issue.

    use this for global install:

    sudo pip3 install https://github.com/autokey/autokey/archive/v0.96.0-beta.4.zip
    

    use this for local install:

    pip3 install --user https://github.com/autokey/autokey/archive/v0.96.0-beta.4.zip
    

    notes before installing another version

    I fully recommend removing the other other versions, if you used pip you can do

    pip3 uninstall autokey
    

    you may need to run it a few times, if you have more than one autokey installed.

    bug User interface Development beta 
    opened by kreezxil 38
  • No uppercase letters

    No uppercase letters

    Hi, I have installed this recent version on kubuntu 15.10 with a german keyboard layout. Unfortunately all my phrases are converted to lowercase when inserted by autokey-qt, although they are displayed correctly within the config window of autokey. This bug shows up since I've upgraded to 15.10. On my notebook under kubuntu 15.04 autokey-qt works as expected. THX in advance

    bug autokey-qt upstream bug 
    opened by fodiator 33
  • Autokey-gtk in the system tray icon appears as a blank icon placeholder

    Autokey-gtk in the system tray icon appears as a blank icon placeholder

    Classification:

    Feature (Old)

    Reproducibility:

    Always

    Summary

    In Linux Mint Cinnamon v19, the Autokey-gtk system tray icon appears as a blank icon placeholder.

    Summary of the problem. It is not known what app it represents, and there is no tooltip info missing autokey icon

    This should happen.

    display Autokey icon

    Actual Results

    • Instead, this happens. :(

    AutoKey version: 0.95.4

    Used GUI (Gtk, Qt, or both): GTK

    Installed via: (PPA, pip3, …). Pip3

    Distro: Linux Mint 19 Cinnamon 64 bit

    bug Installation/Configuration 
    opened by ineuw 28
  • Develop docupdate

    Develop docupdate

    Opening this as a draft to spur conversation on the best way to update/modernize the documentation.

    There are a number of things that need additional polish before final commit,

    • [x] Change the edit on github to reflect autokey
    • [ ] Wiki conversion if that is something that we are interested in
      • Benefit of having the wiki here would be that the changes would be easier to track/manage but it would remove the ability for small edits that probably don't need that much oversight.
    • [ ] Multiversion
      • There are extensions that allow you to maintain different documentation versions, I have looked into it a bit but I'm not sure how much benefit it would be as I assume we'd like to keep most people on the latest version when possible.
      • I think that we should probably simplify this to having main and develop versions
      • This will work out to the "main" documentation being in the base autokey.github.io/ and the develop being put in autokey.github.io/dev/
      • Might be a banner we could add to the top of the page to inform people they are not using the main doc
    • [x] The main .gitignore includes html files
    • [x] Swap image files to link to prexisting versions in the repo if possible
    • [ ] Add documentation for the documentation
    • [ ] Convert old epytext style documentation to sphinx syntax (long term, not really that valuable currently)
    • [x] Update the readme in the doc/sphinx folder
    • [ ] Add a Github workflow

    I believe adding it to the "main" autokey repo instead of the autokey.github.io will be a benefit as it will be closer to where the development happens, and hopefully stay more updated because of this. It also appears to be relatively trivial to implement automatic updates to the documentation https://github.com/marketplace/actions/sphinx-build

    Simple things like adding new methods to API libraries and updating documentation would be able to be added to the doc site automatically.

    Obviously open to any suggestions/comments/concerns.

    I have based these changes on the develop branch as the refactor makes backwards compatibility more difficult to obtain.

    You can see what the end result would be here https://samuelsebastian.dev/autokey/api.html

    opened by sebastiansam55 25
  • (autokey-qt) CPU and RAM usage goes up when re-log in to Desktop

    (autokey-qt) CPU and RAM usage goes up when re-log in to Desktop

    Classification:

    Bug?

    Reproducibility:

    Always

    Summary

    CPU usage goes up to 25% RAM usage goes up to 85%

    Steps to Reproduce (if applicable)

    Kubuntu 18.04, Autokey-qt 0.95.4 Run autokey-qt, and log out of the KDE/ log in again. When log in, "AutoKey is already running as pid 1553 but is not responding" message is pops up, after I click 'OK' button, CPU/Ram usage goes up to 25/85% each.

    Expected Results

    • Normally, CPU % is 0, RAM usage is about 40MiB.

    Actual Results

    • PC lags..

    Version

    0.95.4

    Used GUI (Gtk, Qt, or both): qt on KDE

    If the problem is known to be present in more than one version, please list all of those. At least from 0.95.3.

    Installed via: Deb package from here.

    Distro: Kubuntu 18.04

    Notes

    Ram usage for Autokey-qt is goes up to 85%(13.2GiB/15.6GiB), PC lags, I could barely kills the process. CPU usage is somewhat stays at 25%.

    opened by nemonein 22
  • Autokey causes a bug that prevents keyboard input in X until it is killed from tty

    Autokey causes a bug that prevents keyboard input in X until it is killed from tty

    Classification: Bug

    Reproducibility: Sometimes I just used an abbreviation called shrugemoji which inserts ¯_(ツ)_/¯ This is the second time it has caused some sort of hiccup that prevents me from using my keyboard again. It triggers on everything, when part of a word and immediately and the abbreviation is removed.

    I will attach the output of autokey -l when it happened.

    Version

    The version is a2de77a 2017-02-16 23:26 accidentally a comma

    Distro: on ubuntu 16.04.2

    fulllog2.txt

    bug AutoKey triggers 
    opened by Apromixately 22
  • Installation on Ubuntu ...

    Installation on Ubuntu ...

    The current installation instructions are quite complicated for newcomers.

    Why not make an deb package to make it available via the Ubuntu Software Center?

    enhancement 
    opened by guettli 22
  • Crash on clipboard restoration

    Crash on clipboard restoration

    Classification: Crash

    Reproducibility: Nearly always

    Summary

    When using a phrase that replaces an abbreviation using one of the clipboard methods, AutoKey crashes in 95% of all cases after entering the abbreviation twice. The first occurrence gets replaced, but the second one only gets deleted and not replaced.

    Steps to Reproduce (if applicable)

    1. Create a new phrase containing something (a single letter is sufficient)
    2. Add an abbreviation to that phrase
    3. Select one of the methods using the clipboard for replacement.
    4. Open a text window (e.g. mousepad) and enter the abbreviation of the phrase twice.

    Expected Results

    The phrase works as expected and the abbreviation gets replaced every single time.

    Actual Results

    In most cases, AutoKey crashes on the second occurence of the abbreviation. It does not respond to ^C on the command line, but kill -s 15 <pid of autokill-gtk> is sufficient. After AutoKey has crashed, no keyboard input is passed to X, unless I switch workspaces once (using i3, scrolling on the menu bar).

    When running with autokey-gtk --verbose, I get the following logs when reproducing the crash:

    2018-12-05 07:02:31,958 DEBUG - service - Raw key: 'b', modifiers: [], Key: b
    2018-12-05 07:02:31,958 DEBUG - service - Window visible title: '*Unbenannt 1 - Mousepad', Window class: 'mousepad.Mousepad'
    2018-12-05 07:02:31,958 DEBUG - service - No phrase/script matched hotkey
    2018-12-05 07:02:31,958 DEBUG - service - Input stack at end of handle_keypress: deque(['b'], maxlen=150)
    2018-12-05 07:02:32,127 DEBUG - service - Raw key: ' ', modifiers: [], Key:  
    2018-12-05 07:02:32,128 DEBUG - service - Window visible title: '*Unbenannt 1 - Mousepad', Window class: 'mousepad.Mousepad'
    2018-12-05 07:02:32,128 DEBUG - service - No phrase/script matched hotkey
    2018-12-05 07:02:32,132 DEBUG - iomediator - Send via clipboard
    2018-12-05 07:02:32,133 DEBUG - service - Input stack at end of handle_keypress: deque([], maxlen=150)
    2018-12-05 07:02:32,133 DEBUG - interface - Sending string via clipboard: a 
    2018-12-05 07:02:32,133 ERROR - service - Ignored locking error in handle_keypress
    Traceback (most recent call last):
      File "/usr/lib/python3.7/site-packages/autokey/service.py", line 207, in __tryReleaseLock
        self.configManager.lock.release()
    RuntimeError: release unlocked lock
    2018-12-05 07:02:32,135 DEBUG - interface - Sending via clipboard enqueued.
    2018-12-05 07:02:32,135 DEBUG - interface - Send special key: [<Key.BACKSPACE: '<backspace>'>]
    2018-12-05 07:02:32,137 DEBUG - interface - Send special key: [<Key.BACKSPACE: '<backspace>'>]
    2018-12-05 07:02:32,139 DEBUG - iomediator - Send via event interface
    2018-12-05 07:02:32,139 DEBUG - interface - Send modified key: modifiers: ['<shift>'] key: <insert>
    2018-12-05 07:02:32,242 ERROR - interface - Error in X event loop thread
    Traceback (most recent call last):
      File "/usr/lib/python3.7/site-packages/autokey/interface.py", line 230, in __eventLoop
        method(*args)
      File "/usr/lib/python3.7/site-packages/autokey/interface.py", line 626, in _restore_clipboard_text
        self.clipboard.text = backup
      File "/usr/lib/python3.7/site-packages/autokey/interface.py", line 161, in text
        self._clipboard.set_text(new_content, -1)
    TypeError: Argument 1 does not allow None as a value
    2018-12-05 07:02:33,039 DEBUG - service - Raw key: 'b', modifiers: [], Key: b
    2018-12-05 07:02:33,040 DEBUG - service - Window visible title: '*Unbenannt 1 - Mousepad', Window class: 'mousepad.Mousepad'
    2018-12-05 07:02:33,040 DEBUG - service - No phrase/script matched hotkey
    2018-12-05 07:02:33,041 DEBUG - service - Input stack at end of handle_keypress: deque(['b'], maxlen=150)
    2018-12-05 07:02:33,318 DEBUG - service - Raw key: ' ', modifiers: [], Key:  
    2018-12-05 07:02:33,319 DEBUG - service - Window visible title: '*Unbenannt 1 - Mousepad', Window class: 'mousepad.Mousepad'
    2018-12-05 07:02:33,319 DEBUG - service - No phrase/script matched hotkey
    2018-12-05 07:02:33,322 DEBUG - iomediator - Send via clipboard
    2018-12-05 07:02:33,323 DEBUG - service - Input stack at end of handle_keypress: deque([], maxlen=150)
    2018-12-05 07:02:33,325 DEBUG - interface - Sending string via clipboard: a 
    2018-12-05 07:02:33,327 ERROR - service - Ignored locking error in handle_keypress
    Traceback (most recent call last):
      File "/usr/lib/python3.7/site-packages/autokey/service.py", line 207, in __tryReleaseLock
        self.configManager.lock.release()
    RuntimeError: release unlocked lock
    2018-12-05 07:02:33,328 DEBUG - interface - Sending via clipboard enqueued.
    2018-12-05 07:02:33,329 DEBUG - interface - Send special key: [<Key.BACKSPACE: '<backspace>'>]
    2018-12-05 07:02:33,333 DEBUG - interface - Send special key: [<Key.BACKSPACE: '<backspace>'>]
    

    Version

    AutoKey version: 0.95.4

    Used GUI (Gtk, Qt, or both): Gtk

    If the problem is known to be present in more than one version, please list all of those.

    Installed via: pacman

    Distro: Arch Linux

    Notes

    Using a script like this instead of a phrase works:

    from subprocess import Popen, PIPE                                                                                                                                        
    def paste_character(symbol):                                                                                                                                                   
        c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE)                                                                                                           
        c.communicate(symbol.encode('utf-8'))                                                                                                                                 
        keyboard.send_keys('<ctrl>+v')
    
    paste_character("☺")
    

    This might be somewhat related to #225, but with the following differences:

    • If the crash occurs, it occurs always after the second input
    • Otherwise, you can seemingly use the abbreviation as often as you want without a crash
    • The logs show a different Traceback, pointing that issue to be closely related to keyboard restoration.
    • The computer never hangs completely, even if switching windows.

    Kernel version: 4.19.6.a-1-hardened Python version: Python 3.7.1

    bug Phrase expansion 
    opened by LukeLR 20
  • Autokey just stops expanding, narrowed it down to UPPER case issue

    Autokey just stops expanding, narrowed it down to UPPER case issue

    Classification:

    Bug

    Reproducibility:

    Almost every day after few hours of use.

    Summary

    I have noticed that Autokey just stops expanding after some time has passed (usually hours). It has baffled me for weeks and I've basically resorted to restarting it once it stopped working. Finally today, I spent some time trying to track down the issue and have started Autokey from the command line with verbose argument.

    Every now and then, I'd try Autokey and see if it still expanded. After a while, Autokey stopped working and I checked the output. This is what I saw when I tried to expand the "expansion1" phrase that I setup earlier:

    2017-08-13 10:21:29,843 DEBUG - service - Raw key: '<backspace>', modifiers: [], Key: <backspace>
    2017-08-13 10:21:29,843 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:29,843 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,085 DEBUG - service - Raw key: 'a', modifiers: [], Key: E
    2017-08-13 10:21:30,085 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,085 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,085 DEBUG - service - Input stack at end of handle_keypress: deque(['E'], maxlen=150)
    2017-08-13 10:21:30,268 DEBUG - service - Raw key: 'p', modifiers: [], Key: X
    2017-08-13 10:21:30,268 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,268 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,269 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X'], maxlen=150)
    2017-08-13 10:21:30,455 DEBUG - service - Raw key: 'p', modifiers: [], Key: P
    2017-08-13 10:21:30,455 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,455 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,456 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P'], maxlen=150)
    2017-08-13 10:21:30,652 DEBUG - service - Raw key: 'l', modifiers: [], Key: A
    2017-08-13 10:21:30,652 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,652 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,653 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A'], maxlen=150)
    2017-08-13 10:21:30,782 DEBUG - service - Raw key: 'e', modifiers: [], Key: N
    2017-08-13 10:21:30,782 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,782 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,783 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N'], maxlen=150)
    2017-08-13 10:21:30,985 DEBUG - service - Raw key: 'h', modifiers: [], Key: S
    2017-08-13 10:21:30,985 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:30,985 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:30,986 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S'], maxlen=150)
    2017-08-13 10:21:31,114 DEBUG - service - Raw key: 'a', modifiers: [], Key: I
    2017-08-13 10:21:31,115 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:31,115 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:31,115 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S', 'I'], maxlen=150)
    2017-08-13 10:21:31,214 DEBUG - service - Raw key: 't', modifiers: [], Key: O
    2017-08-13 10:21:31,214 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:31,214 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:31,214 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S', 'I', 'O'], maxlen=150)
    2017-08-13 10:21:31,330 DEBUG - service - Raw key: 'e', modifiers: [], Key: N
    2017-08-13 10:21:31,331 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:31,331 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:31,331 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S', 'I', 'O', 'N'], maxlen=150)
    2017-08-13 10:21:31,520 DEBUG - service - Raw key: 'r', modifiers: [], Key: 1
    2017-08-13 10:21:31,520 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:31,520 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:31,520 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S', 'I', 'O', 'N', '1'], maxlen=150)
    2017-08-13 10:21:31,641 DEBUG - service - Raw key: ' ', modifiers: [], Key:  
    2017-08-13 10:21:31,642 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    2017-08-13 10:21:31,642 DEBUG - service - No phrase/script matched hotkey
    2017-08-13 10:21:31,642 DEBUG - service - Input stack at end of handle_keypress: deque(['E', 'X', 'P', 'A', 'N', 'S', 'I', 'O', 'N', '1', ' '], maxlen=150)
    2017-08-13 10:21:31,995 DEBUG - iomediator - <ctrl> pressed
    2017-08-13 10:21:32,151 DEBUG - service - Raw key: '<backspace>', modifiers: ['<ctrl>'], Key: <backspace>
    2017-08-13 10:21:32,151 DEBUG - service - Window visible title: b'~/Documents/Text/test.txt \xe2\x80\xa2 - Sublime Text', Window class: 'subl3.Subl3'
    

    Notice how all the keys are capitals? The reason why it stops expanding is because it thinks I typed "EXPANSION1" and not "expansion1". I don't have "ignore case" selected.

    I was definitely typing in lower case. In fact, I have a CapsLock key disabled so it's impossible for me to type something in all upper case by accident.

    And notice how Autokey reports Raw key: 'r', modifiers: [], Key: R ? So no modifiers yet it converts it into upper case. When Autokey works properly, we see this for 'R': Raw key: 'r', modifiers: ['<shift>'], Key: R. That's definitely a bug somewhere.

    Version

    autokey-gtk 0.93.10

    Installed via: AUR

    Distro: Arch

    Workaround

    Select ignore case for each abbreviation. But this might introduce some other issues (conflicts) depending on your abbreviations.

    EDIT: It happened again and now when I tried typing the abbreviation with a Shift key pressed, it worked. Here's the log: Raw key: 'r', modifiers: ['<shift>'], Key: r. Some key/mouse event triggers Autokey's modifiers flag and Autokey forgets to clear it and flip it back.

    bug autokey-qt autokey-gtk AutoKey triggers 
    opened by nick-s-b 18
  • autokey script omits last character

    autokey script omits last character

    Classification:

    Bug (Pick one of: Bug, Crash/Hang/Data Loss, Performance, UI/Usability, Feature (New), Enhancement)

    Reproducibility:

    Always (Pick one of: Always, Sometimes, Rarely, Unable, I Didn't Try)

    Version

    AutoKey version: 0.95.4, 0.95.7 Used GUI (Gtk, Qt, or both): Gtk

    Installed via: (PPA, pip3, …). fedora DNF, OracleLinux pip3 Linux Distribution: Fedora 31 and OracleLinux 8

    Summary

    Summary of the problem. I have a script that retrieves a passphrase from the gnome-keyring. It works flawless when I use a python script 'gkeyring'. That is a python2 script however. So I wanted to use secret-tool instead (libsecret rpm) as this is (default) part of the OS. But then I use secret-tool to extract a passphrase (which it does fine on its own) and then use autokey the last character is consistently omitted.

    Steps to Reproduce (if applicable)

    • secret-tool store --label="somephrase" somephrase somekey => whatever
    • $secret-tool lookup somephrase somekey whatever
    • create an autokey script output = system.exec_command("secret-tool lookup somephrase somekey") keyboard.send_keys(output + "\n")
    • execute script

    Expected Results

    'whatever' is returned by the autokey script

    Actual Results

    2020-01-15 09:41:33,853 INFO - service - Matched hotkey phrase/script with prompt=False
    2020-01-15 09:41:33,854 DEBUG - service - Script runner executing: Script('somescript')
    2020-01-15 09:41:33,854 ERROR - service - Ignored locking error in handle_keypress
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/autokey/service.py", line 207, in __tryReleaseLock
        self.configManager.lock.release()
    RuntimeError: release unlocked lock
    2020-01-15 09:41:33,884 DEBUG - iomediator - Send via event interface
    2020-01-15 09:41:33,885 DEBUG - interface - Sending string: 'whateve'
    2020-01-15 09:41:33,900 DEBUG - interface - Send special key: ['<enter>']
    whateve
    2020-01-15 09:41:33,962 DEBUG - iomediator - Key.SHIFT released
    2020-01-15 09:41:33,983 DEBUG - iomediator - Key.CONTROL released
    

    Notes

    The same happens on both Fedora 31 (0.95.7, packaged version) and OracleLinux 8 (0.95.4, pip3 install).

    opened by freddyw 17
  • Phrase Distortions in LibreOffice

    Phrase Distortions in LibreOffice

    Classification: Bug

    Reproducibility: Always

    AutoKey version: 0.90.4.

    Used GUI: Default in Ubuntu 19.10

    Linux Distribution: Ubuntu 19.10

    Summary The problem arises in LibreOffice Version: 6.3.3.2.0+ Build ID: libreoffice-6.3.3.2-snap1 and LibreOffice Version: 6.3.2.2 Build ID: 1:6.3.2-0ubuntu2

    Summary of the problem.

    My abbreviations look like: =t ---> Testing AutoKey (Trigger on all non-word, remove typed, omit trigger character, ignore case). In text editors (Pluma, gEdit 3.34.0) - works OK, but in LibreOffices inserted phrase distorts: =t ---> =TestigAutonKye

    Steps to Reproduce (if applicable)

    1. I created abbreviations in the top-level folder: Abbr-Loz and saved them. For example: =t ---> Testing AutoKey (Trigger on all non-word, remove typed, omit trigger character, ignore case).
    2. Took the text editor (Pluma, gEdit 3.34.0) and insert: =t Enter. The result is as expected: Testing AutoKey
    3. Using AutoKey in LibreOffice gives distorted expansion: =TestigAutonKye

    Expected Results: Testing AutoKey

    Actual Results: =TestigAutonKye

    opened by vitaaliy 17
  • AutoKey must be restarted to recognize changes to external module

    AutoKey must be restarted to recognize changes to external module

    Has this issue already been reported?

    • [X] I have searched through the existing issues.

    Is this a question rather than an issue?

    • [X] This is not a question.

    What type of issue is this?

    Bug

    Which Linux distribution did you use?

    Kubuntu 22.04 LTS

    Which AutoKey GUI did you use?

    Both

    Which AutoKey version did you use?

    0.95.10

    How did you install AutoKey?

    My distribution's repository.

    Can you briefly describe the issue?

    If you make a change to an external module file once AutoKey has already interacted with it, AutoKey won't see the change until AutoKey is closed and restarted, which can cause you to believe you made a mistake in your newly-added or edited code when it may actually be that AutoKey just hasn't noticed your change yet.

    Can the issue be reproduced?

    Always

    What are the steps to reproduce the issue?

    1. Go into AutoKey's settings and choose a directory for AutoKey to use for external modules.
    2. Create the MyModule.py file in that modules directory with these contents:
    #!/usr/bin/env python3
    
    # Create a variable with a string as its value:
    MyVariable="one"
    
    # Create a function that returns a string:
    def MyFunction():
    	return "two"
    
    1. Create an AutoKey script with these contents:
    # Import the necessary library:
    import MyModule
    
    # Display the value of a variable from the imported module in a dialog:
    dialog.info_dialog(message=MyModule.MyVariable)
    
    # Display the value of a function from the imported module in a dialog:
    dialog.info_dialog(message=MyModule.MyFunction())
    
    1. Run the AutoKey script.
    2. Observe the result. You will see a dialog with "one" in it followed by a dialog with "two" in it.
    3. Edit the MyModule.py file to change "two" to "three" in the last line of the script.
    4. Save the change to the MyModule.py file.
    5. Run the AutoKey script.
    6. Observe the result. You will see a dialog with "one" in it followed by a dialog with "two" in it.

    What should have happened?

    Since you changed "two" to "three" in steps 6 and 7 above, you should have seen a dialog with "one" in it followed by a dialog with "three" in it when you observed the changes in step 9 above.

    What actually happened?

    You saw a dialog with "one" in it followed by a dialog with "two" in it in step 9 above.

    Do you have screenshots?

    No response

    Can you provide the output of the AutoKey command?

    No response

    Anything else?

    Work-around:

    Closing and restarting AutoKey (possibly also using pkill autokey before restarting AutoKey to make sure the process has ended) and running the AutoKey script again will cause AutoKey to properly display the current values of the variables in the external module.

    Note:

    This only happens when importing a module that's in the directory that you have chosen for AutoKey to use for modules. If you use the steps I shared to run an imported external module from any directory and make a change to the external script, AutoKey will instantly recognize it.

    bug Scripting 
    opened by Elliria 2
  • Global value and local value objects need to be renamed

    Global value and local value objects need to be renamed

    Has this issue already been reported?

    • [X] I have searched through the existing issues.

    Is this a question rather than an issue?

    • [X] This is not a question.

    What type of issue is this?

    Enhancement

    Which Linux distribution did you use?

    Kubuntu 22.04 LTS

    Which AutoKey GUI did you use?

    Both

    Which AutoKey version did you use?

    0.95.10

    How did you install AutoKey?

    Distribution's repository.

    Can you briefly describe the issue?

    The global value and local value objects should be renamed to something more appropriate.

    Can the issue be reproduced?

    Always

    What are the steps to reproduce the issue?

    When referring to a global value and local value object, if you wish to discuss its value, this can make for a confusing discussion. For example, try referring to each of their values and you'll find yourself with something awkward and unclear like, "...the value of the global value..." or "...the value of the local value..."

    What should have happened?

    The local value and global value objects should be named to local variable and global variable objects (or something else the development team feels is appropriate) since each one is a variable and has a value, yet their current names suggest that they currently are a value. This would make it possible to say, "...the value of the global variable..." or ...the value of the local variable..." which would be less awkward and more clear.

    What actually happened?

    This slight fuzziness makes them challenging to document. For example, it's awkward to say, "...the value of the global value..." or "...the value of the local value..." and it's currently necessary to get rather creative in your choice of wording to make sure it's clear what you mean.

    Do you have screenshots?

    No response

    Can you provide the output of the AutoKey command?

    No response

    Anything else?

    It occurs to me that my suggestion of "global variable" and "local variable" isn't appropriate, either, since such variables can exist within Python independently of AutoKey, which would cause a new kind of confusion. As a result, some other name would need to be thought of if this enhancement is to be implemented.

    enhancement help-wanted documentation Easy fix good first issue 
    opened by Elliria 0
  • Add user-specific filters for matching bindings (input modes)

    Add user-specific filters for matching bindings (input modes)

    Feature request: let the user add conditions for when to match bindings.

    AutoKey already has window filters. It'd be helpful to add another condition on top of window filters to enable bindings.

    Conditions can either be statically saved in an AutoKey global variable. Or checked regularly from a python function returning boolean value.

    Motivation: Input Modes

    My goal was to implement vim-like input modes: Normal Mode, Insert Mode, Visual Mode, etc. For example: map hjkl to arrow keys in normal mode for browser window. Or even lets the user introduce their own modes like Color Mode, Shape Mode, etc. in heavy GUI programs like inkscape.

    user can specify each mode with a sub-folder like this:

    inkscape (window-filtered)
        normal-mode (mode-filtered)
             [ hotkeys ]
        insert-mode (mode-filtered)
             [ hotkeys ]
        color-mode (mode-filtered)
             [ shortcuts ]
    

    where subfolders of inkscape inherit the window filter, and sub-hotkeys of every subfolder inherit the condition (input mode).

    enhancement Scripting AutoKey triggers low-priority 
    opened by AvidSeeker 3
  • Launch shell script instead of python script

    Launch shell script instead of python script

    Has this issue already been reported?

    • [X] I have searched through the existing issues.

    Is this a question rather than an issue?

    • [X] This is not a question.

    What type of issue is this?

    Enhancement

    Which Linux distribution did you use?

    Arch Linux

    Which AutoKey GUI did you use?

    Qt

    Which AutoKey version did you use?

    No response

    How did you install AutoKey?

    No response

    Can you briefly describe the issue?

    xdotool is a powerful tool for scripting. Combined with the modular nature of bash scripts, it would be more efficient and easier to script using bash scripts instead of python. Might also solve problems in: #711.

    I'm aware of python xdo, os, subprocess modules. But a native support for shell scripts is still essential.

    Can the issue be reproduced?

    No response

    What are the steps to reproduce the issue?

    No response

    What should have happened?

    No response

    What actually happened?

    No response

    Do you have screenshots?

    No response

    Can you provide the output of the AutoKey command?

    No response

    Anything else?

    No response

    enhancement Scripting 
    opened by AvidSeeker 3
  • Abbreviation starting with backslash isn't triggered

    Abbreviation starting with backslash isn't triggered

    Has this issue already been reported?

    • [X] I have searched through the existing issues.

    Is this a question rather than an issue?

    • [X] This is not a question.

    What type of issue is this?

    Bug

    Which Linux distribution did you use?

    Ubuntu 22.04 with session started with Xorg (French keyboard)

    Which AutoKey GUI did you use?

    GTK

    Which AutoKey version did you use?

    0.96.0

    How did you install AutoKey?

    downloaded .deb from the repo and isntalled with dpkg as recommended

    Can you briefly describe the issue?

    I defined a phrase whose abbreviation is \RR. After saving and testing, nothing happens. Instead, if the abbreviation is set to be simply RR it works exactly as intended. So I deduce that there is something special about \.

    Can the issue be reproduced?

    Always

    What are the steps to reproduce the issue?

    • create new phrase
    • abbreviation is \RR
      • remove typed abbreviation
      • trigger immediately
      • trigger when typed as part of a phrase
    • paste using Clipboard

    What should have happened?

    AK should be triggered

    What actually happened?

    AK wasn't triggered

    Do you have screenshots?

    No

    Can you provide the output of the AutoKey command?

    No response

    Anything else?

    • Is backslash a special character needing to be escaped? I searched in the wiki but couldn't find anything about it
    • I am using a FR AZERTY keyboad, could it be an issue?
    AutoKey triggers 
    opened by choco-latin 1
  • Trigger script when AutoKey main window opens

    Trigger script when AutoKey main window opens

    Has this issue already been reported?

    • [X] I have searched through the existing issues.

    Is this a question rather than an issue?

    • [X] This is not a question.

    What type of issue is this?

    Enhancement

    Which Linux distribution did you use?

    Kubuntu 22.04 LTS

    Which AutoKey GUI did you use?

    Both

    Which AutoKey version did you use?

    0.95.10

    How did you install AutoKey?

    My distribution's repository.

    Can you briefly describe the issue?

    An interesting new feature would be for AutoKey to offer the option to let us run a specified script when AutoKey is launched or when its main window is first opened (if it's not opened on launch).

    Can the issue be reproduced?

    Always

    What are the steps to reproduce the issue?

    No response

    What should have happened?

    No response

    What actually happened?

    All scripts must be triggered manually.

    Do you have screenshots?

    No response

    Can you provide the output of the AutoKey command?

    No response

    Anything else?

    As an example of a script that would benefit from being automatically launched instead of manually triggered, the script in issue #670 changes the AutoKey environment.

    enhancement autokey-qt autokey-gtk 
    opened by Elliria 1
Releases(v0.96.0)
  • v0.96.0(Jun 5, 2022)

    Changelog

    Version 0.96.0

    Important misc changes

    • Script and phrase metadata are no longer stored as hidden dotfiles. Existing scripts should be automatically converted, but if switch back to versions prior to this one, you will need to copy or symlink them back to dotfile form.
    • Scripting API files are now in Python packages, which may require adjusting imports if you have scripts that import them directly.
    • Change the default phrase send mode to ctrl+v (paste using clipboard) rather than sending keys one at a time.
    • This version represents some significant refactoring since the previous update, so bug reports will be highly appreciated.

    Features

    Scripting API

    engine API object

    • Deprecated: Confusingly named engine.create_abbreviation() and engine.create_hotkey() are deprecated and will be removed in the future. Use engine.create_phrase() with appropriate arguments instead.
    • Extended: engine.create_phrase() now supports multiple new optional arguments, allowing to fully configure the created phrase. It can set everything the GUI can do.
    • New: Scripts can use engine.get_triggered_abbreviation() to read which abbreviation triggered it's execution. The function returns a tuple containing the abbreviation and the trigger character (the character that 'completed' or 'confirmed' the abbreviation. Both tuple elements are None if the script was not triggered by an abbreviation. The trigger character is None if the script was configured to 'trigger immediately'. The function always returns a tuple, so direct tuple unpacking like abbreviation, trigger = engine.get_triggered_abbreviation() will always work.
    • Allow creation of 'temporary' hotkeys and whole folders (which do not persist between sessions).
    • Allow overriding existing hotkeys when creating phrases with hotkeys.
    • Allow creation of folders.
    • Add set_clipboard_image methods for both GTK and Qt. Takes a file path to an image to load into the clipboard.

    keyboard API object

    • keyboard.send_keys() got a new optional parameter send_mode, allowing to specify how the given text is sent. It basically offers the same pasting options as are available to AutoKey Phrases.
    • keyboard.send_keys() now raises a TypeError instead of a generic AssertionError, if parameters don't match the expected types.

    New clipboard API method - Change the default phrase send mode to ctrl+v (paste using clipboard) rather than sending keys one at a time.

    New mouse API object

    • Add mouse drag, click and scroll options to the API.
    Command line interface
    • Added a --version command line switch. It prints the current AutoKey version on the standard output and then exits.
    Graphical user interfaces
    • (GTK) Warn user about missing required and optional programs on startup.
    • (GTK) UI will now update when changes are detected to watched files.
    • (GTK) refresh UI if script files are modified externally
    • Use system monospace font
    • Add setting to change GtkSourceView theme, (defaults to classic).
    Other
    • Add wait_for_keyevent scripting function.
    • Rewrote script error logging system, with a neat Script Error Dialog to go with it.
    • <script> script macros accept absolute paths.
    • Macro arguments can be quoted, allowing arguments containing spaces.
    • Macro arguments can contain angle bracket characters, if escaped.
    • Add <system> macro for replacing phrase contents with output of an external process.
    • Allow autokey-run to accept full paths to python scripts (if no full path is given, will treat as an existing AutoKey script name instead).
    • Expand Unicode characters using code points (hacky workaround for being unable to send actual Unicode).
    • Allow disabling Capslock in settings
    • Link to script .py and .json above editor.
    • Add appropriate keywords to .desktop files for both UIs.
    • Build debs and update pypi on new releases

    Bug fixes

    • Both QT and GTK versions will reload hotkeys after a keymap change event.
    • Fix locking issue
    • Expose Alt_GR as a hotkey modifier on GTK.
    • (GTK) Fixed GUI lock-up, if multiple script error notifications are posted in quick succession. The notifications are now rate-limited and won't post more than one notification per second. Fixes issue #383
    • Fix issue with pip installation reporting a missing module
    Scripting API
    • Fixed API call system.exec_command() crashing, if output capturing is active, but the executed command has empty output. Fixes issue #379
    Packaging
    • Fixed AutoKey PNG icon size. Now, the icon size is 96x96 pixels, fixing Lintian warnings on Debian. Fixes issue #369

    Other changes ---------

    • Add CI for testing
    • Update pip installation requirements
    • Add CONTRIBUTERS.rst
    • Internal Code cleanup. The configuration handling module is split into multiple modules inside a dedicated package.
    • AutoKey now has a working test environment again. pytest based unit-tests can be launched from the source checkout using python3 setup.py test

    New Dependencies (test-time only)

    The new unit tests introduce two new, test-time only dependencies. These are used for unit tests only and not during normal AutoKey execution.

    • pytest
    • PyHamcrest
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.96.0_all.deb(99.62 KB)
    autokey-gtk_0.96.0_all.deb(50.45 KB)
    autokey-qt_0.96.0_all.deb(139.10 KB)
  • v0.96.0-beta.7(Jul 26, 2021)

  • v0.96.0-beta.6(Jul 19, 2021)

  • v0.96.0-beta.5(Jul 19, 2021)

  • v0.96.0-beta.2(May 4, 2021)

  • v0.96.0-beta.1(Apr 29, 2021)

    Changelog for this tag is mostly replicated below.

    • Script and phrase metadata are no longer stored as hidden dotfiles. Existing scripts should be automatically converted, but if switch back to versions prior to this one, you will need to copy or symlink them back to dotfile form.
    • Scripting API files are now in Python packages, which may require adjusting imports if you have scripts that import them directly.
    • Change the default phrase send mode to [ctrl+v]{.title-ref} (paste using clipboard) rather than sending keys one at a time.
    • This version represents some significant refactoring since the previous update, so bug reports will be highly appreciated.
    • Deprecated: Confusingly named engine.create_abbreviation() and engine.create_hotkey() are deprecated and will be removed in the future. Use engine.create_phrase() with appropriate arguments instead.

    engine API object

    • Deprecated: Confusingly named engine.create_abbreviation() and engine.create_hotkey() are deprecated and will be removed in the future. Use engine.create_phrase() with appropriate arguments instead.
    • Extended: engine.create_phrase() now supports multiple new optional arguments, allowing to fully configure the created phrase. It can set everything the GUI can do.
    • New: Scripts can use engine.get_triggered_abbreviation() to read which abbreviation triggered it's execution.
    • The function returns a tuple containing the abbreviation and the trigger character (the character that 'completed' or 'confirmed' the abbreviation. Both tuple elements are None if the script was not triggered by an abbreviation. The trigger character is None if the script was configured to 'trigger immediately'. The function always returns a tuple, so direct tuple unpacking like abbreviation, trigger = engine.get_triggered_abbreviation() will always work.
    • Allow creation of 'temporary' hotkeys and whole folders (which do not persist between sessions).
    • Allow overriding existing hotkeys when creating phrases with hotkeys.
    • Allow creation of folders.

    keyboard API object

    • keyboard.send_keys() got a new optional parameter send_mode, allowing to specify how the given text is sent. It basically offers the same pasting options as are available to AutoKey Phrases.
    • keyboard.send_keys() now raises a TypeError instead of a generic AssertionError, if parameters don't match the expected types.

    New mouse API object

    • Add mouse drag, click and scroll options to the API.

    Command line interface

    • Added a --version command line switch. It prints the current AutoKey version on the standard output and then exits.

    Graphical user interfaces

    • (GTK) Warn user about missing required and optional programs on startup.
    • (GTK) UI will now update when changes are detected to watched files.
    • (GTK) refresh UI if script files are modified externally
    • Use system monospace font
    • Add setting to change GtkSourceView theme, (defaults to classic).

    Other

    • Add wait_for_keyevent scripting function.
    • Rewrote script error logging system, with a neat Script Error Dialog to go with it.
    • <script> script macros accept absolute paths.
    • Macro arguments can be quoted, allowing arguments containing spaces.
    • Macro arguments can contain angle bracket characters, if escaped.
    • Add <system> macro for replacing phrase contents with output of an external process.
    • Allow autokey-run to accept full paths to python scripts (if no full path is given, will treat as an existing Autokey script name instead).
    • Expand unicode characters using code points (hacky workaround for being unable to send actual unicode).
    • Allow disabling Capslock in settings
    • Link to script .py and .json above editor.
    • Add appropriate keywords to .desktop files for both UIs.

    Bug fixes

    • Both QT and GTK versions will reload hotkeys after a keymap change event.
    • Fix locking issue
    • Expose Alt_GR as a hotkey modifier on GTK.
    • (GTK) Fixed GUI lock-up, if multiple script error notifications are posted in quick succession. The notifications are now rate-limited and won't post more than one notification per second. Fixes issue #383

    Scripting API

    • Fixed API call system.exec_command() crashing, if output capturing is active, but the executed command has empty output. Fixes issue #379

    Packaging

    • Fixed AutoKey PNG icon size. Now, the icon size is 96x96 pixels, fixing Lintian warnings on Debian. Fixes issue #369

    Other changes

    • Add CI for testing
    • Update pip installation requirements
    • Add CONTRIBUTERS.rst
    • Internal Code cleanup. The configuration handling module is split into multiple modules inside a dedicated package.
    • AutoKey now has a working test environment again. pytest based unit-tests can be launched from the source checkout using python3 setup.py test

    New Dependencies (test-time only)

    The new unit tests introduce two new, test-time only dependencies. These are used for unit tests only and not during normal AutoKey execution.

    • pytest
    • PyHamcrest
    Source code(tar.gz)
    Source code(zip)
  • v0.95.10(Feb 16, 2020)

    Bug fixes

    • Mitigate crashes when entering invalid Python regular expressions in the window filter dialogue. Fixes issue #212
    • Added option to disable the handling of the Capslock modifier key. Fixes issues when that key is remapped to something else, for example Ctrl. The new option can be found in the settings dialogue. Fixes issues #95, #291
    • API function system.exec_command() now only trims the last character in the output, if it is actually a newline character. If the executed command does not output a newline at the end, the full output is returned. Fixes issue #354
    • Fixed wrong optional argument in man page for autokey-run. Fixed by pull request #361
    • Removed unnecessarily set executable bit from several AutoKey SVG icons. Fixed by pull request #363
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.10-0_all.deb(78.30 KB)
    autokey-gtk_0.95.10-0_all.deb(48.64 KB)
    autokey-qt_0.95.10-0_all.deb(136.26 KB)
    autokey_0.95.10-0_amd64.buildinfo(14.20 KB)
    autokey_0.95.10-0_amd64.changes(3.32 KB)
  • v0.95.9(Dec 7, 2019)

    Bug fixes

    • Prevent data losses when deleting or moving directories from within AutoKey. AutoKey will only delete data it knows and keep unknown user data. So adding $HOME and then removing it again will not purge everything below it. Affected were deleting directories and moving them via drag & drop. Fixes issues #171, #332
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.9-0_all.deb(89.33 KB)
    autokey-gtk_0.95.9-0_all.deb(47.48 KB)
    autokey-qt_0.95.9-0_all.deb(135.08 KB)
    autokey_0.95.9-0_amd64.buildinfo(14.06 KB)
    autokey_0.95.9-0_amd64.changes(2.87 KB)
  • v0.95.8(Nov 7, 2019)

    Bugfixes

    Qt GUI

    • Fix issue with Python 3.7.4 and PyQt 5.11-5.13.0 that prevented AutoKey from starting on certain distributions shipping this configuration, notably Kubuntu 19.10. Fixes issues #313, #301
    • Fix crash when saving the currently edited item, after deselecting it in the tree view. Fixes issue #285
    • Disable Main window → Tools → Insert Macro when not editing a Phrase. Fixes issue #276
    • Add a warning that explains possible data loss when creating top level directories at used specified locations. See issue #171

    GTK GUI

    • Fixed application hang when loading and setting custom "Trigger on" value in the Abbreviation settings dialog. Fixes #315

    Known issues

    • The version string in the About dialogue still says 0.95.7. I simply forgot to update this value to 0.95.8. This will be corrected in the next release.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.8-0_all.deb(88.92 KB)
    autokey-gtk_0.95.8-0_all.deb(47.34 KB)
    autokey-qt_0.95.8-0_all.deb(135.07 KB)
    autokey_0.95.8-0_amd64.buildinfo(14.01 KB)
    autokey_0.95.8-0_amd64.changes(3.25 KB)
  • v0.95.7(Apr 29, 2019)

    Bugfixes

    • GTK GUI: Fixed system tray icon context menu entry View script error, which was non-functional, if the main window is closed. The entry now opens the main window first as a workaround, because a proper fix will require a major code overhaul. Fixes #222
    • Qt GUI: Fixed the truncated GPLv3 license text shown in the About AutoKey dialogue. The dialogue now shows the full license text. Fixes #258
    • Hardened the logic to read application window titles. AutoKey now works, if applications do not set the _NET_WM_VISIBLE_NAME property of their windows. Fixes #257
    • Fixed Phrase expansion using the Keyboard method, which was broken if AutoKey was started for the first time. Fixes #274

    Other fixes

    • Improved the debug logging output: Removed unnecessary output, clarified wordings, etc. See #230
    • Qt GUI: Display the current Python version number in the About dialogue.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.7-0_all.deb(89.73 KB)
    autokey-gtk_0.95.7-0_all.deb(47.07 KB)
    autokey-qt_0.95.7-0_all.deb(133.65 KB)
    autokey_0.95.7-0_amd64.buildinfo(14.47 KB)
    autokey_0.95.7-0_amd64.changes(3.49 KB)
  • v0.95.6(Feb 9, 2019)

  • v0.95.5(Feb 7, 2019)

    Bug fixes

    • Fix window filter detection always returning Title: FocusProxy, Class: Focus-Proxy-Window.FocusProxy on Java AWT applications. It now detects the proper window title and WM_CLASS attribute for Java AWT applications. Fixes issue #113
    • GTK GUI: Fix the window filter detection dialogue. On clicking OK, it hung the whole application. Now the dialogue window works as intended. Fixes issue #229
    • Fix abbreviation case folding (ignore case option) with abbreviations defined as UPPER CASE in the abbreviation dialogue. Options Ignore case and Match case now work with upper case abbreviations. Fixes issue #197
    • Prevent the keyboard from staying grabbed by AutoKey if exceptions are thrown while AutoKey performs a clipboard pasting action. Fixes issues #72, #225
    • Prevent writing None to the clipboard. This prevents autokey-gtk from deadlocking, caused by an unreleased mutex. Fixes issue #226
    • Restrict Phrase Undo functionality to phrases without special keys, because phrases containing special keys cannot be reliably undone. Fixes issue #196
    • Clarified autosave option wording in the settings window. The option now explicitly states what it does. Fixes issue #194
    • Force AutoKey to exit, if the X server connection closes, most probably at logout or session end. Fixes issue #198

    Qt tray icon fixes and improvements

    • Added »View script error« entry to the Tray icon context menu, like in the GTK GUI. Part of issue #158
    • Tray icon turns red, when scripts raise an error, like in the GTK GUI. Part of issue #158
    • If changing the tray icon theme in the settings (light or dark), instantly apply the new theme, without requiring an application restart. Part of issue #158
    • The tray icon now works, after if it is disabled in the settings and then enabled again. Fixes issue #223

    Other fixes

    • Enable setup.py to be directly called from the system shell. Fixes issue #218
    • Cleaned up some legacy leftovers in the autokey repository
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.5-0_all.deb(88.70 KB)
    autokey-gtk_0.95.5-0_all.deb(46.47 KB)
    autokey-qt_0.95.5-0_all.deb(128.46 KB)
    autokey_0.95.5-0_amd64.buildinfo(14.08 KB)
    autokey_0.95.5-0_amd64.changes(4.34 KB)
  • v0.95.4(Oct 14, 2018)

    Bug fixes

    • Fix grabbed hotkeys being incorrectly received by other applications. Revert commit https://github.com/autokey/autokey/commit/eb46b8440d8a513c07bbe5b2c2184738f153e952, which should fix #181
    • Fixed crashes when processing <code> literals in strings. Partial fix for #110, fixing the most common cases. It is now possible to place <code> and <code/> literals in Phrases. Additionally, such literals can be typed in scripts using the keyboard.send_keys function.
    • Increased the reliability of the window filter detection dialog in autokey-qt. The dialog allows sampling windows to aid writing window filters. Due to timing issues in certain cases, sometimes the window title of the previously active window was returned.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.4-0_all.deb(85.26 KB)
    autokey-gtk_0.95.4-0_all.deb(45.85 KB)
    autokey-qt_0.95.4-0_all.deb(127.11 KB)
    autokey_0.95.4-0_amd64.buildinfo(13.45 KB)
    autokey_0.95.4-0_amd64.changes(3.11 KB)
  • v0.95.3(Aug 21, 2018)

    Features

    • Phrase expansion can now always be undone using the backspace key, if the feature is enabled in the settings. Previously it was only be possible if the phrase was triggered by an abbreviation. Now it also works when using hotkeys or selecting phrases from menus. This also prevents crashes in certain cases.
    • Qt GUI: Add support for automatically starting autokey-qt during login. It can be configured in the settings dialogue. The configuration option allows to choose which GUI is automatically started, if both autokey-qt and autokey-gtk are installed simultaneously, and whether the main window should be shown automatically on launch.
    • Qt GUI: Added the notification icon theme selection to the settings dialogue. The added section in the general settings allow to choose between the light and dark theme, like in the autokey-gtk settings dialogue. Changing this setting currently requires an application restart to take effect.

    Bug fixes

    • Scripting API: The Python __file__ global variable is now properly set for AutoKey scripts. It contains the full path to the Python script file currently running. Previously, it contained the full path to the service.py file of the currently running AutoKey instance.
    • Crash fix: Skip import of the AT-SPI interface, if importing of pyatspi fails with a SyntaxError. This may happen with certain versions of pyatspi on Python 3.7. Details: #173
    • Fix serializing the store during saving, if user stores recursive data structures. It now handles/skips lists that contain themselves or other circular referenced data structures.
    • GTK GUI: Fix autostart handling: Create the $XDG_CONFIG_HOME/autostart (~/.config/autostart) directory, if it is not already present. Fixes #149
    • Qt GUI: Create the user data directories before initializing the logger system. This prevents crashes when autokey-qt is used for the first time or when the user wiped all previous data. Fixes #170
    • Qt GUI: Fix saving the "Always prompt before running this script" checkbox content when editing scripts. This option now works as intended again.

    Packaging

    • Stop shipping the autokey.png icon file inside a scalable icon theme directory. Moved to the appropriate raster image directory.
    • Corrected broken dependency package name in setup.py. The library is called python-xlib and not python3-xlib on PyPI.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.3-0_all.deb(84.65 KB)
    autokey-gtk_0.95.3-0_all.deb(45.64 KB)
    autokey-qt_0.95.3-0_all.deb(127.16 KB)
    autokey_0.95.3-0_amd64.buildinfo(13.32 KB)
    autokey_0.95.3-0_amd64.changes(5.01 KB)
  • v0.95.2(Jul 16, 2018)

    • Fix broken imports in autokey-shell script.
    • Skip non-json-serializable data in script storage (both script local and global) during saving. This allows putting non-serializable items (like function objects) into the store without crashing autokey during saving.
    • autokey-qt: Fix minor bug when creating new items. Created items are now properly selected for renaming directly after creation.
    • Minor code simplifications. Removed unnecessary functions that were obsoleted during prior changes.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.2-0_all.deb(78.96 KB)
    autokey-gtk_0.95.2-0_all.deb(44.99 KB)
    autokey-qt_0.95.2-0_all.deb(102.51 KB)
    autokey_0.95.2-0_amd64.buildinfo(13.31 KB)
    autokey_0.95.2-0_amd64.changes(2.93 KB)
  • v0.95.1(Jun 30, 2018)

    This is a small bug fixing release.

    • Fix a long standing bug that errors occurring during phrase parsing or script execution can lock up the user keyboard. Make sure to always release the keyboard after grabbing it. See #72, https://bugs.launchpad.net/ubuntu/+source/autokey/+bug/1551054
    • Qt GUI: Fix saving the content of the log view to a file using the context menu entry.
    • Some small, internal code quality improvements.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.1-0_all.deb(77.91 KB)
    autokey-gtk_0.95.1-0_all.deb(44.83 KB)
    autokey-qt_0.95.1-0_all.deb(102.17 KB)
    autokey_0.95.1-0_amd64.buildinfo(11.10 KB)
    autokey_0.95.1-0_amd64.changes(2.80 KB)
  • v0.95.0(Jun 28, 2018)

    New Features

    Rewritten the Qt GUI, ported to PyQt5

    Resurrected, re-written and cleaned up the autokey-qt Qt GUI. autokey-qt is now a pure PyQt5 application, only dependent on currently supported libraries.

    Added improvements

    • The main window now keeps its complete state when closed and re-opened (excluding complete application restarts). This includes the currently selected item(s) in the tree view on the left of the main window, selected text and cursor position in the editor on the right if currently editing a script or phrase.
    • The entries in the popup menu, that is shown when a hotkey assigned to a folder is pressed, now show icons based on their type (folder, phrase or script). This also works when items are configured to be shown in the system tray icon context menu.
    • The A autokey application icons are now always displayed correctly, both in the main window and the system tray icon.
    • Various menu actions now have system dependent keyboard shortcuts, that should adjust to the expected default of the user’s current platform/desktop environment.
    • Added icons and descriptive tooltip texts to various buttons.
    • The enable monitoring checkboxes (both in the Settings menu and the tray icon context menu) now properly react to pressing the global hotkey for this action and thus stay in sync. (Even if the hotkey is used while the menu is shown.)

    Regressions

    • Customizing the main window toolbar entries and keyboard shortcuts to trigger various UI actions is no longer possible. This feature was provided by the KDE4 libraries and is currently dropped.
    • The previous, KDE4-based About dialogue is replaced with a very minimalistic one.
    • The settings dialogue heavily used the KDE4 functionalities. During the port to Qt5, the dialogue lost some visual style, but all core functionality is kept.

    Runtime dependencies

    • Removed dependencies on deprecated and unmaintained PyQt4 and PyKDE4 libraries.
    • Removed dependency on dbus.mainloop.qt, instead use the DBus support built into Qt5.
    • Now depend on PyQt5, the Qt5 SVG module and the Qt5 QScintilla2 module.

    Build-time dependencies

    Optionally depend on pyrcc5 command line tool to compile Qt resources into a Python module.

    Known bugs

    The system tray icon is shown, but non-functional, after enabling it in the settings dialogue. AutoKey Qt has to be restarted for the tray icon to start working. This should have no impact on the normal daily use. This limitation was lifted in version 0.95.5.

    Changed features

    The hide tray icon entry in the tray icon context menu now hides the icon for the current session only. The entry does not permanently disable the tray icon any more without any confirmation. Now, the only way to permanently disable the tray icon is through using the appropriate setting in the settings dialogue.

    Fixed the broken Clipboard and Mouse selection phrase paste modes

    • Pasting using both Clipboard and Mouse selection works in both the Qt and GTK GUI.
    • Fixed restoring the clipboard after a paste is performed. Both GUIs now restore the previous clipboard content, after a phrase is pasted.

    Scripting API Changes

    Additions

    • Added a colour picker dialogue to the GTK dialog class, because the used zenity now supports it.
      • The result is returned as three integers using the ColourData NamedTuple, providing both index based access and attribute access, using the channel names (r, g, b). Additionally, ColourData provides some conversion methods.

    Breaking changes

    • See Pull request #148. The dialog classes for user input in scripts now return typed NamedTuple tuples instead of plain tuples. This change is safe as long as users do not perform needlessly restrictive type checks in their scripts (e.g. if type(returned_data) == type(tuple()): ...). User scripts doing so will break.
    • The KDialog based colour picker now also returns a ColourData instance instead of a HTML style hex string, thus making this portable between both GTK and Qt GUIs. AutoKey users previously using the old KDE GUI and using the colour picker dialogue have to port their scripts. A simple fix is using the html_code property of the returned ColourData instance.

    Fixes

    • Re-introduce the newline trimming for system.exec_command() function. During the porting to Python 3, the newline trimming was removed, causing users various issues with unexpected newline characters at end of output. Now properly remove the last newline at end of command output. (See issues #75, #92, #145)
    • Applied various code style improvements to the scripting module.

    Other fixes and improvements

    • Fix the KDialog based colour picker provided in the scripting API. Newer versions of KDialog require an additional parameter, which is added now.
    • Fixed crashes related to mouse pasting when using the GTK GUI.
    • Both autokey-gtk and autokey-qt are now automatically generated setuptools entry-points.
    • autokey-gtk can now be launched directly from the autokey source tree. From the shell, cd into the lib directory, then use
    <path_to_autokey_source_dir>/lib$ python3 -m autokey.gtkui [-l] [-c]
    # Or alternatively, to launch autokey-qt use:
    <path_to_autokey_source_dir>/lib$ python3 -m autokey.qtui [-l] [-c]
    
    • Various internal code style improvements at various locations, like added type hints, PEP8 style fixes, etc.
    Source code(tar.gz)
    Source code(zip)
    autokey-common_0.95.0-0_all.deb(77.40 KB)
    autokey-gtk_0.95.0-0_all.deb(44.66 KB)
    autokey-qt_0.95.0-0_all.deb(102.03 KB)
    autokey_0.95.0-0_amd64.buildinfo(11.09 KB)
    autokey_0.95.0-0_amd64.changes(3.05 KB)
  • v0.94.1(May 11, 2018)

  • v0.94.0(May 11, 2018)

  • v0.93.10(Feb 17, 2017)

  • v0.93.9(Jan 11, 2017)

  • v0.93.7(Dec 21, 2016)

Dress up your code with a beautiful graphical user interface !

Dresscode Dress up your code with a beautiful graphical user interface ! This project is part of the Pyrustic Ecosystem. Look powered by the cyberpunk

20 Aug 24, 2022
A Simple GUI application to organize and store accounts/passwords.

PyssView A Simple GUI application to organize and store accounts/passwords. Install/Run (Linux) Via script This way will install a binary version and

Jefferson Richard Dias 1 Nov 24, 2021
Textual is a TUI (Text User Interface) framework for Python inspired by modern web development.

Textual is a TUI (Text User Interface) framework for Python inspired by modern web development.

Will McGugan 17.1k Jan 08, 2023
OpenPort scanner GUI tool (CNMAP)

CNMAP-GUI- OpenPort scanner GUI tool (CNMAP) as you know it is the advanced tool to find open port, firewalls and we also added here heartbleed scanni

9 Mar 05, 2022
Tukaan is the new framework that aims to replace Tkinter

Tukaan is the new, pythonic and colorful (like a keel-billed toucan) framework that aims to replace Tkinter. It has everything (on my computer, not at GitHub) that you need to develop cross-platform

Tukaan 101 Jan 08, 2023
A lightweight file-copying interface.

autosort A lightweight file-copying interface. Preview What is autosort? Autosort is a lightweight file-copying interface. It allows you to copy sever

32 Jan 02, 2023
A system tray application written in python that will assist you with your keyboard endeavors.

A system tray application written in python that will assist you with your keyboard endeavors. It has features such as abbreviation, email autofill, media control, writing from clipboard ,typing curr

Mach50 1 Dec 15, 2021
A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnaby's Brewhouse.

brewhouse-management A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnab

Isaac Cheng 2 Jul 09, 2022
Tkinter-ATM - Python GUI case made with Tkinter

tkinter-ATM Python GUI case made with Tkinter The task of this case was to creat

2 Jan 13, 2022
An qt asset browser for applications like houdini/nuke/maya/blender

AssetBrowser A qt asset browser for applications like houdini/nuke/maya/blender Currently in development Note: Only houdini plugin available during de

Jonas Sorgenfrei 6 Aug 05, 2022
A simple GUI designer for the python tkinter module

Leer en Español Welcome to Pygubu! Pygubu is a RAD tool to enable quick and easy development of user interfaces for the Python's tkinter module. The u

Alejandro Autalán 1.7k Dec 27, 2022
Primeira interface (simples) desenvolvida em Python utilizando o PySimpleGUI

Interface-Python Sobre o projeto Primeira interface gráfica (simples) desenvolvida em Python utilizando o PySimpleGUI Interface Gráfica Tecnologias ut

Matheus Maia Alvarez 5 Apr 09, 2022
Make desktop applications using HTML and CSS with python

Neutron Make desktop applications using HTML and CSS with python What is Neutron Neutron will allow developers to design modern applications in python

Ian Baldelli 284 Dec 29, 2022
GUI for Volatility forensics tool written in PyQT5

Volatility GUI This is a GUI for Volatility forensics tool written in PyQT5 Prerequisites: 1- Installed version of Volatility. 2- Install PyQT5. sudo

Hamza Megahed 52 Jun 18, 2022
These are some useful tkinter utilities that i like to personally use.

ntkutils nefs tkinter utilities These are some useful tkinter utilities that i like to personally use. I upload this here because someone might wants

nef 7 Dec 06, 2022
A simple Python Module for sending cross-platform desktop notifications on Windows, macOS and Linux

notify.py Cross platform desktop notifications for Python scripts and applications. Docs You can read the docs on this Git's Wiki, or here Supported P

Mustafa 178 Dec 26, 2022
This was my test project when i started to learn Python Tkinter. Its the simplest interface possible.

Rock-Paper-Scissors-Game- Project Description: This was my test project when i started to learn Python Tkinter. Its the simplest interface possible. R

Hassan Shahzad 2 Jan 17, 2022
A simple yet powerful TUI framework for your Python (3.7+) applications

A simple yet powerful TUI framework for your Python (3.7+) applications

1.4k Jan 04, 2023
Browser - A GTK browser trying to follow the GNOME Human Interface Guidelines.

A simple GTK browser trying to follow the GNOME Human Interface Guidelines.

Cleo Menezes 12 Nov 26, 2022
Introduce QML-like declarative structure to Python world. Developer writes only pure Python code for QML.

Introduce QML-like declarative structure to Python world. Developer writes only pure Python code for QML.

likianta 4 Mar 27, 2022