mirror of
https://github.com/rbreaves/kinto.git
synced 2025-08-02 09:06:40 +02:00
Compare commits
186 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
df43fb363d | ||
![]() |
0dd5baca34 | ||
![]() |
896ab30e57 | ||
![]() |
f9aaae3038 | ||
![]() |
94b018aa48 | ||
![]() |
6b3ea9afab | ||
![]() |
1ee92339c0 | ||
![]() |
4e1331f9bb | ||
![]() |
f44182cefd | ||
![]() |
d15972dcae | ||
![]() |
65f48ce2f1 | ||
![]() |
589807bad9 | ||
![]() |
55a6d132c7 | ||
![]() |
eebf4d61eb | ||
![]() |
b364902db0 | ||
![]() |
035b9e2d85 | ||
![]() |
db68031eb4 | ||
![]() |
30f4c1285b | ||
![]() |
f858ae9614 | ||
![]() |
75dbe611b3 | ||
![]() |
6cdedf41e3 | ||
![]() |
df8d46e1c1 | ||
![]() |
b9f15950b2 | ||
![]() |
2f8ae2380f | ||
![]() |
77d52ec176 | ||
![]() |
13a98ce8cc | ||
![]() |
8f333dec20 | ||
![]() |
f7ff8d1728 | ||
![]() |
5b2a2c88c2 | ||
![]() |
48b5699aed | ||
![]() |
eec325024d | ||
![]() |
a5087b0f95 | ||
![]() |
36f189e434 | ||
![]() |
50b31abba9 | ||
![]() |
aa53c83c61 | ||
![]() |
5f795328c9 | ||
![]() |
39ed3c83f9 | ||
![]() |
bf35285914 | ||
![]() |
7a3d9cbd7c | ||
![]() |
2a920d0622 | ||
![]() |
253b061b12 | ||
![]() |
c8a28fe3e0 | ||
![]() |
9f5ba6e14e | ||
![]() |
f855da301c | ||
![]() |
4e33e5516b | ||
![]() |
5c25cd15cb | ||
![]() |
af4b4ea08e | ||
![]() |
e69e529a18 | ||
![]() |
f717db9aaa | ||
![]() |
353c2c6bb4 | ||
![]() |
dcbf1e8382 | ||
![]() |
9a52bd864a | ||
![]() |
9b87fda382 | ||
![]() |
b3fc4c9202 | ||
![]() |
4858b9cf28 | ||
![]() |
45ad4f3f68 | ||
![]() |
e54dba20a1 | ||
![]() |
56cae8a009 | ||
![]() |
e7dd3684c2 | ||
![]() |
982cdcb92a | ||
![]() |
829289ba78 | ||
![]() |
b8793cff49 | ||
![]() |
8b522461a5 | ||
![]() |
1f4b2bb451 | ||
![]() |
04bc3f60e4 | ||
![]() |
8ffd3159c8 | ||
![]() |
b19b0bea4b | ||
![]() |
07bee26ddb | ||
![]() |
6dc97a5628 | ||
![]() |
59e47dbbd6 | ||
![]() |
e6d0512ff4 | ||
![]() |
6587a149ce | ||
![]() |
f80a1d616d | ||
![]() |
c391b6abf8 | ||
![]() |
f6d57eae4c | ||
![]() |
06531dd6cc | ||
![]() |
4c2a4993ef | ||
![]() |
572739360e | ||
![]() |
d87802918d | ||
![]() |
e5b2ef8155 | ||
![]() |
7149b4ab24 | ||
![]() |
db61f2d937 | ||
![]() |
19aefd68e0 | ||
![]() |
9fb72c95b1 | ||
![]() |
ec8b0fdc22 | ||
![]() |
1e98cfc29d | ||
![]() |
e92bc37308 | ||
![]() |
14021fbf67 | ||
![]() |
1562096889 | ||
![]() |
c84d13118a | ||
![]() |
bec547bbda | ||
![]() |
724006ef3a | ||
![]() |
ef60bf8a59 | ||
![]() |
44080c25da | ||
![]() |
6fa6d05123 | ||
![]() |
1d1971f7cc | ||
![]() |
eb113125b5 | ||
![]() |
c298bd2b5a | ||
![]() |
e1f1907e46 | ||
![]() |
5d1b1d6598 | ||
![]() |
7375dd78bf | ||
![]() |
e4540afcb5 | ||
![]() |
2490417b85 | ||
![]() |
9a3521d05c | ||
![]() |
9a5b44661c | ||
![]() |
32fba15d75 | ||
![]() |
23e2f7018b | ||
![]() |
eeb5cc9ecb | ||
![]() |
4a65034713 | ||
![]() |
3418e6bf3f | ||
![]() |
dbd614783f | ||
![]() |
d19e5836a5 | ||
![]() |
cf15be6414 | ||
![]() |
87dae12d9b | ||
![]() |
3b5c35f806 | ||
![]() |
cf72e880d5 | ||
![]() |
0bcdb8c9b2 | ||
![]() |
e71fa554d3 | ||
![]() |
2ff2b4c082 | ||
![]() |
2b83e34c3f | ||
![]() |
9af4d29bbf | ||
![]() |
c3337b5682 | ||
![]() |
045598bcd5 | ||
![]() |
32806c956d | ||
![]() |
046c800295 | ||
![]() |
0cbbc94b2d | ||
![]() |
4d9d073997 | ||
![]() |
f0412438b4 | ||
![]() |
44d8be7822 | ||
![]() |
6bc73c1c23 | ||
![]() |
2d3dc5016d | ||
![]() |
5864765ed1 | ||
![]() |
022dedb1dd | ||
![]() |
3e3c27cde3 | ||
![]() |
93b7fe8d49 | ||
![]() |
68c3d23bfe | ||
![]() |
8fe1bc7772 | ||
![]() |
d640ebfce7 | ||
![]() |
1ae096daf5 | ||
![]() |
46354a971c | ||
![]() |
af6f56d2dc | ||
![]() |
fbc630f1d5 | ||
![]() |
e1e9b08442 | ||
![]() |
b0ba86623b | ||
![]() |
a798b736b6 | ||
![]() |
3dc68314f9 | ||
![]() |
5c40258265 | ||
![]() |
1529d90918 | ||
![]() |
56493b4eec | ||
![]() |
974cd13fae | ||
![]() |
d8ad4b874f | ||
![]() |
b532a9891d | ||
![]() |
294ba3b89f | ||
![]() |
c908b00a38 | ||
![]() |
56f4f679e4 | ||
![]() |
5e28015a31 | ||
![]() |
3a59edb51e | ||
![]() |
ba46c4ff97 | ||
![]() |
980ae6a237 | ||
![]() |
1a57dd9a5e | ||
![]() |
c9810838a1 | ||
![]() |
e60f7cffea | ||
![]() |
c8b169b6a0 | ||
![]() |
81c0c52902 | ||
![]() |
4d697d9cdc | ||
![]() |
307c9bc2d1 | ||
![]() |
7436825c93 | ||
![]() |
d680a58d04 | ||
![]() |
71af27be24 | ||
![]() |
2ce4bbdb82 | ||
![]() |
085485dcfc | ||
![]() |
e7188ca693 | ||
![]() |
4cf795619d | ||
![]() |
588fe1a0dc | ||
![]() |
18ae403188 | ||
![]() |
de8e674027 | ||
![]() |
625f775464 | ||
![]() |
4980c4a35e | ||
![]() |
c09d8b07e4 | ||
![]() |
a34acfb0b5 | ||
![]() |
9f694fd198 | ||
![]() |
4349c4f9dd | ||
![]() |
68395fd91c | ||
![]() |
482de09dcc | ||
![]() |
f075f3a927 | ||
![]() |
00cbd59a4e |
114
README.md
114
README.md
@@ -5,7 +5,7 @@
|
||||
|
||||
[](https://github.com/rbreaves/kinto/releases/latest)
|
||||
|
||||
\- Linux & Windows with Mac-style shortcut keys. \-
|
||||
\- Mac-style shortcut keys for Linux & Windows. \-
|
||||
|
||||
Seamless copy and paste with all apps and terminals. The zero effort solution.
|
||||
|
||||
@@ -13,6 +13,10 @@ v1.2 Release - Kinto now includes a system tray and simple wizard to setup the i
|
||||
|
||||
Kinto is powered by [xkeysnail](https://github.com/mooz/xkeysnail) for Linux & by [Autohotkey](https://github.com/Lexikos/AutoHotkey_L) for Windows 10.
|
||||
|
||||
Note: If you plan to remote into Linux via VNC, xRDP, Synergy or other remote desktop solutions then remove the current release & try an earlier [v1.0.7-3](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3) release. It uses xkb so it'll work with virtual xinput devices. Some v1.1-x releases may offer both, but all v1.2.x releases ended support for xkb. I do plan to bring offical support back for virtual input devices.
|
||||
|
||||
Additionally VMware, Virtualbox, KVM and other virtualization technologies work best with the current release - so *this note only applies to remote desktop into Linux* - not virtualization.
|
||||
|
||||
### [Table of Contents ](#Table-of-Contents)
|
||||
|
||||
## Donations
|
||||
@@ -22,7 +26,9 @@ If you like or appreciate this project then please consider donating.
|
||||
|**Wishlists**|[Amazon](https://smile.amazon.com/hz/wishlist/ls/3EVXR21VFKD9Z?ref_=wl_share)|[Adafruit](https://www.adafruit.com/wishlists/515932)|[eBay](https://www.ebay.com/mye/myebay/WatchList?custom_list_id=636668138019)|
|
||||
|---|---|---|---|
|
||||
|
||||
If you would like to send me a keyboard directly then please reach out to me over [twitter](https://twitter.com/gbit86) and send me a DM.
|
||||
I have received some really great letters with donations & email, so I plan to make some of them public while redacting last names or anything I feel should remain private, and will be posting them on the frontpage of kinto.sh as I really do appreciate all of the support!
|
||||
|
||||
Also if you would like to send me a keyboard directly then please reach out to me over [twitter](https://twitter.com/gbit86) and send me a DM.
|
||||
|
||||
## How to install (Linux)
|
||||
|
||||
@@ -32,21 +38,25 @@ Video Tutorial: [Install Kinto.sh for Linux in less than a minute](https://www.y
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/10969616/97070698-179c4500-15a0-11eb-8064-c03aa7f4d4a5.png" width="75%">
|
||||
|
||||
1. clone this repo
|
||||
### Quick Install Method
|
||||
|
||||
Paste the following into your Terminal
|
||||
```
|
||||
/bin/bash -c "$(wget -qO- https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh || curl -fsSL https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh)"
|
||||
```
|
||||
|
||||
Uninstall
|
||||
```
|
||||
/bin/bash <( wget -qO- https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh || curl -fsSL https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh ) -r
|
||||
```
|
||||
|
||||
### Old Install Method
|
||||
|
||||
```
|
||||
git clone https://github.com/rbreaves/kinto.git
|
||||
cd kinto
|
||||
```
|
||||
2. Install python3 (If needed)
|
||||
|
||||
Debian or Ubuntu 16.04 or 18.04
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install python3
|
||||
```
|
||||
|
||||
3. Run the script, press 1 or 2 keys and you are done.
|
||||
```
|
||||
./setup.py
|
||||
```
|
||||
|
||||
@@ -72,16 +82,41 @@ Try toggling numlock on & off (clear key on official mac keyboards). If it still
|
||||
If you want a global menu app similar to what mac users have then I strongly recommend Ubuntu Budgie as it has the Vala Appmenu built in and ready for activation. Short of that Vala-AppMenu can be installed in various distros, mileage will vary. If you try to activate it in the latest 20.xx releases with XFCE then you may need to run the following commands.
|
||||
|
||||
```
|
||||
sudo apt install xfce4-appmenu-plugin vala-panel-appmenu-common
|
||||
sudo apt install xfce4-appmenu-plugin vala-panel-appmenu-common appmenu-gtk2-module appmenu-gtk3-module appmenu-gtk-module-common
|
||||
xfconf-query -c xsettings -p /Gtk/Modules -n -t string -s "appmenu-gtk-module"
|
||||
```
|
||||
|
||||
**Fractional HiDPI Scaling for Gnome/Budgie w/ x11**
|
||||
|
||||
https://github.com/rbreaves/betterScale
|
||||
|
||||
Use this with autorandr to save your settings as a profile that will auto re-apply when needed.
|
||||
|
||||
|
||||
## How to Install (Windows)
|
||||
|
||||
Video Tutorial: [How to Install Kinto.sh on Windows 10](https://youtu.be/sRk8A8krz40)
|
||||
|
||||
[Windows 10 Requirements](#Kinto-for-Windows-10-Requirements)
|
||||
|
||||
### Quick install
|
||||
Open Powershell as Administrator and copy and paste the following. This will download & extract Kinto, install chocolatey, python3 and then install Kinto.
|
||||
|
||||
**⚠ NOTE: Please inspect https://raw.githubusercontent.com/rbreaves/kinto/master/install/windows.ps1 and https://chocolatey.org/install.ps1 before running scripts directly. More information about running powershell scripts in this context can be found [here](https://chocolatey.org/install).**
|
||||
|
||||
```
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr https://raw.githubusercontent.com/rbreaves/kinto/master/install/windows.ps1 -UseBasicParsing | iex
|
||||
```
|
||||
|
||||
|
||||
Update system tray to show Kinto icon at all times (optional)
|
||||
```
|
||||
cmd /c "explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}"
|
||||
```
|
||||
|
||||
### Old method
|
||||
|
||||
1. Open Powershell (Right click and Run as Administrator)
|
||||
|
||||
2. clone this repo
|
||||
@@ -110,10 +145,11 @@ Select Uninstall
|
||||
|
||||
## How to use in Remote Desktop Solutions
|
||||
|
||||
RDP fully works as long as the entire keyboard input is being captured. RDP had been working for awhile with Windows but as of 2/14/2021 Linux is now supported and potentially macOS as well. VNC & other protocols may work, but is likely most dependent on how the keyboard input is captured on the computer running the client.
|
||||
RDP fully works as long as the entire keyboard input is being captured. RDP had been working for awhile with Windows but as of 2/14/2021 Linux & macOS is now supported. VNC & other protocols may work, but is likely most dependent on how the keyboard input is captured on the computer running the client.
|
||||
|
||||
|Program|Src/Remote Client ⇒|Dst/Remote Server|Works? |Notes|
|
||||
|---|---|---|---|---|
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| 🐧Linux | ✅ Yes| Note: [v1.0.7-3 Only](https://github.com/rbreaves/kinto/releases/tag/1.0.7-3). Should work for xRDP/VNC and other remote server protocols. |
|
||||
|Official MS RDP (mstsc.exe)| ❖Windows ⇒| ❖Windows | ✅ Yes| |
|
||||
|Official MS RDP| ChromeOS 87+⇒| ❖Windows | ✅ Yes|May work on earlier versions as well, if they support Android apps|
|
||||
|Remmina| 🐧Linux*/ChromeOS 87+⇒| ❖Windows | ✅ Yes|*Use hover menu to enable "Grab all keyboard events"|
|
||||
@@ -126,6 +162,10 @@ RDP fully works as long as the entire keyboard input is being captured. RDP had
|
||||
|Royal TSX Client| 🍎macOS⇒| ❖Windows | ❌ No|Initial Cmd key press not being passed|
|
||||
|Official MS RDP| 🍎🤖iOS/Android⇒| ❖Windows | ❌ No|No workaround atm|
|
||||
|
||||
## How to Remap Windows keyboards for remote access to macOS
|
||||
Quick summary - Swap Alt & Win to conform with Apple keyboard layouts. Sharpkeys for Windows, Setkeycodes for Linux, then install Kinto.sh or change/update the Keyboard Type to Apple in the system tray.
|
||||
https://benreaves.medium.com/macos-to-linux-back-again-c6151200f4dc
|
||||
|
||||
## FreeRDP for macOS
|
||||
|
||||
1. Install [brew.sh](https://brew.sh).
|
||||
@@ -226,7 +266,7 @@ Additionally, if you are using a cross-platform app and if it happens to have a
|
||||
## What does Kinto require?
|
||||
|
||||
- Python
|
||||
- systemd
|
||||
- systemd or sysvinit
|
||||
- x11
|
||||
- xkeysnail
|
||||
|
||||
@@ -284,10 +324,16 @@ In the above example I am also showing that you can define a single shortcut to
|
||||
|
||||
You can also make changes to the file in your /tmp/kinto/xkeysnail/kinto.py location and see them take affect in real time, but for your changes to be permanent you will need to make your changes in the ~/.config/kinto/kinto.py location & restart the xkeysnail service.
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl restart xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto restart
|
||||
```
|
||||
|
||||
More information can be seen on the readme page of [xkeysnail](https://github.com/mooz/xkeysnail).
|
||||
|
||||
## Windows (Autohotkey)
|
||||
@@ -349,25 +395,53 @@ git pull origin master
|
||||
This info is now superceded by the fact that linux has a full fledge GUI and system tray app that is very easy to use, but I will keep the command line options for those that want to know what they are.
|
||||
|
||||
Status
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl status xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
tail -f /tmp/kinto.log
|
||||
```
|
||||
|
||||
Stop (your keymap will return to normal)
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl stop xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto stop
|
||||
```
|
||||
|
||||
Start
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl start xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto start
|
||||
```
|
||||
|
||||
Restart
|
||||
|
||||
systemd
|
||||
```
|
||||
sudo systemctl restart xkeysnail
|
||||
```
|
||||
|
||||
sysvinit
|
||||
```
|
||||
sudo -E /etc/init.d/kinto restart
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Installed successfully, but modifier keys are not properly remapped?
|
||||
@@ -449,6 +523,10 @@ Windows 10 touchpad to precision touchpad driver
|
||||
|
||||
macOS cursors for Windows
|
||||
|
||||
[QuickLook](https://github.com/QL-Win/QuickLook) for Windows by QL-Win
|
||||
|
||||
It allows users to peek into a file content in lightning speed by just pressing the Space key
|
||||
|
||||
[fusuma](https://github.com/iberianpig/fusuma) by iberianpig
|
||||
|
||||
Multitouch gestures with libinput driver on Linux
|
||||
@@ -537,11 +615,9 @@ Vala rewrite of SimplePanel - GitHub mirror (Global Menu for XFCE)
|
||||
|
||||
## Contributing
|
||||
|
||||
I welcome any and all contributors who want to contribute something to this project.
|
||||
I welcome any and all contributors who want to add something to this project.
|
||||
|
||||
If you are specifically wanting to contribute additional custom keymaps to help with aligning Kinto's behavior to that of a mac keyboard then I would strongly recommend that you read Glen Whitney's comment on Superuser (the link is below). You may also look at the .xkb directory, mac_wordwise.sh and xactive.sh files to better understand how Kinto operates so that you can test your own keymaps without having to use the systemd service or running the xactive.sh script.
|
||||
|
||||
https://superuser.com/questions/385748/binding-superc-superv-to-copy-and-paste
|
||||
You can read the configuration files and the open issue tickets such as [#44 Shortcut Translation Tables](https://github.com/rbreaves/kinto/issues/44), [#115 Shortcut Creation (xkeysnail)](https://github.com/rbreaves/kinto/issues/115), and [#348 Missing Shortcuts: Post them here](https://github.com/rbreaves/kinto/issues/348) to best understand what's currently happening and how best to contribute.
|
||||
|
||||
## More information about Kinto
|
||||
|
||||
|
21
install/linux.sh
Executable file
21
install/linux.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/rbreaves/kinto/master/install/linux.sh)"
|
||||
|
||||
wget https://github.com/rbreaves/kinto/archive/refs/heads/master.zip -O ~/Downloads/kinto.zip || curl https://github.com/rbreaves/kinto/archive/refs/heads/master.zip -J -L -o ~/Downloads/kinto.zip
|
||||
unzip ~/Downloads/kinto.zip -d ~/Downloads/
|
||||
cd ~/Downloads/kinto-master/
|
||||
|
||||
kintorelease=`wget -qO- https://api.github.com/repos/rbreaves/kinto/releases/latest | awk -F'tag_name": ' '{if ($2) print $2}' | tr -d \", || curl -s https://api.github.com/repos/rbreaves/kinto/releases/latest | awk -F'tag_name": ' '{if ($2) print $2}' | tr -d \",`
|
||||
kintohash=`unzip -z ~/Downloads/kinto.zip | tail -n1`
|
||||
kintoshort=${kintohash::7}
|
||||
|
||||
echo "$kintorelease" "build" "$kintoshort" > ./dl_version
|
||||
|
||||
if [ $# -eq 0 ];then
|
||||
echo "Installing Kinto..."
|
||||
./setup.py
|
||||
elif [ $1 == "-r" ];then
|
||||
echo "Uninstall Kinto..."
|
||||
./setup.py -r
|
||||
fi
|
7
install/windows.ps1
Normal file
7
install/windows.ps1
Normal file
@@ -0,0 +1,7 @@
|
||||
Invoke-WebRequest -Uri https://github.com/rbreaves/kinto/archive/refs/heads/master.zip -OutFile $env:USERPROFILE\Downloads\kinto.zip
|
||||
Expand-Archive -LiteralPath "$env:USERPROFILE\Downloads\kinto.zip" -DestinationPath "$env:USERPROFILE\Downloads" -Force
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
|
||||
choco install -y python3
|
||||
cd "$env:USERPROFILE\Downloads\kinto-master"
|
||||
py .\setup.py
|
@@ -1,6 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import gi,os,time,fcntl,argparse,re
|
||||
import warnings
|
||||
warnings.filterwarnings("ignore")
|
||||
gi.require_version('Gtk', '3.0')
|
||||
gi.require_version('Vte', '2.91')
|
||||
from gi.repository import Gtk,Gdk,GdkPixbuf
|
||||
@@ -48,13 +50,21 @@ class MyWindow(Gtk.Window):
|
||||
page = 1
|
||||
|
||||
label = Gtk.Label()
|
||||
label.set_alignment(1, 0)
|
||||
label.set_halign(Gtk.Align.END)
|
||||
ostype = os.environ.get('XDG_CURRENT_DESKTOP')
|
||||
global openWin
|
||||
openWin = False
|
||||
|
||||
global child_pid
|
||||
kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
global sysv
|
||||
try:
|
||||
sysv = int(Popen("pidof systemd >/dev/null 2>&1 && echo '0' || echo '1'", stdout=PIPE, shell=True).communicate()[0].strip().decode('UTF-8'))
|
||||
except:
|
||||
sysv = 2
|
||||
if sysv:
|
||||
kinto_status = Popen("while :; do clear; pgrep 'xkeysnail' && echo 'active'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
else:
|
||||
kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
child_pid = kinto_status.pid
|
||||
|
||||
winkb = Gtk.RadioMenuItem(label='Windows')
|
||||
@@ -114,9 +124,15 @@ class MyWindow(Gtk.Window):
|
||||
None,
|
||||
)
|
||||
if self.args.debug:
|
||||
self.command = 'sudo systemctl stop xkeysnail && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
if sysv:
|
||||
self.command = 'sudo /etc/init.d/kinto stop && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
else:
|
||||
self.command = 'sudo systemctl stop xkeysnail && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
else:
|
||||
self.command = "journalctl -f --unit=xkeysnail.service -b\n"
|
||||
if sysv:
|
||||
self.command = "tail -f /tmp/kinto.log\n"
|
||||
else:
|
||||
self.command = "journalctl -f --unit=xkeysnail.service -b\n"
|
||||
|
||||
self.InputToTerm(self.command)
|
||||
|
||||
@@ -153,6 +169,14 @@ class MyWindow(Gtk.Window):
|
||||
menuitem_file = Gtk.MenuItem(label="File")
|
||||
menubar.append(menuitem_file)
|
||||
submenu_file = Gtk.Menu()
|
||||
|
||||
menuitem_restart = Gtk.MenuItem(label="Restart")
|
||||
menuitem_restart.connect('activate',self.runRestart)
|
||||
submenu_file.append(menuitem_restart)
|
||||
menuitem_stop = Gtk.MenuItem(label="Stop")
|
||||
menuitem_stop.connect('activate',self.runStop)
|
||||
submenu_file.append(menuitem_stop)
|
||||
|
||||
menuitem_file.set_submenu(submenu_file)
|
||||
submenu_file.append(self.menuitem_auto)
|
||||
kintotray = int(self.queryConfig('ps -aux | grep [k]intotray >/dev/null 2>&1 && echo "1" || echo "0"'))
|
||||
@@ -164,12 +188,6 @@ class MyWindow(Gtk.Window):
|
||||
self.menuitem_systray.signal_id = self.menuitem_systray.connect('activate',self.checkTray,True)
|
||||
menuitem_file.connect('activate',self.refreshFile)
|
||||
submenu_file.append(self.menuitem_systray)
|
||||
menuitem_restart = Gtk.MenuItem(label="Restart")
|
||||
menuitem_restart.connect('activate',self.runRestart)
|
||||
submenu_file.append(menuitem_restart)
|
||||
menuitem_stop = Gtk.MenuItem(label="Stop")
|
||||
menuitem_stop.connect('activate',self.runStop)
|
||||
submenu_file.append(menuitem_stop)
|
||||
|
||||
menuitem_quit = Gtk.MenuItem(label="Quit")
|
||||
submenu_file.append(menuitem_quit)
|
||||
@@ -179,19 +197,19 @@ class MyWindow(Gtk.Window):
|
||||
menubar.append(menuitem_edit)
|
||||
submenu_edit = Gtk.Menu()
|
||||
menuitem_edit.set_submenu(submenu_edit)
|
||||
edititem_tweaks = Gtk.MenuItem("Tweaks")
|
||||
edititem_tweaks = Gtk.MenuItem(label="Tweaks")
|
||||
edititem_tweaks.connect('activate',self.setTweaks)
|
||||
submenu_edit.append(edititem_tweaks)
|
||||
edititem_config = Gtk.MenuItem("Kinto Config (shortcuts)")
|
||||
edititem_config = Gtk.MenuItem(label="Kinto Config (shortcuts)")
|
||||
edititem_config.connect('activate',self.setConfig)
|
||||
submenu_edit.append(edititem_config)
|
||||
edititem_service = Gtk.MenuItem("Kinto Service")
|
||||
edititem_service = Gtk.MenuItem(label="Kinto Service")
|
||||
edititem_service.connect('activate',self.setService)
|
||||
submenu_edit.append(edititem_service)
|
||||
edititem_shortcuts = Gtk.MenuItem("System Shortcuts")
|
||||
edititem_shortcuts = Gtk.MenuItem(label="System Shortcuts")
|
||||
edititem_shortcuts.connect('activate',self.setSysKB)
|
||||
submenu_edit.append(edititem_shortcuts)
|
||||
edititem_language = Gtk.MenuItem("Change Language")
|
||||
edititem_language = Gtk.MenuItem(label="Change Language")
|
||||
edititem_language.connect('activate',self.setRegion)
|
||||
submenu_edit.append(edititem_language)
|
||||
|
||||
@@ -205,11 +223,11 @@ class MyWindow(Gtk.Window):
|
||||
helpitem_debug = Gtk.MenuItem(label="Debug")
|
||||
helpitem_debug.connect('activate',self.runDebug)
|
||||
submenu_help.append(helpitem_debug)
|
||||
helpitem_support = Gtk.MenuItem("Support")
|
||||
helpitem_support = Gtk.MenuItem(label="Support")
|
||||
helpitem_support.connect('activate',self.openSupport)
|
||||
submenu_help.append(helpitem_support)
|
||||
menuitem_help.set_submenu(submenu_help)
|
||||
helpitem_about = Gtk.MenuItem("About")
|
||||
helpitem_about = Gtk.MenuItem(label="About")
|
||||
helpitem_about.connect('activate',self.runAbout)
|
||||
submenu_help.append(helpitem_about)
|
||||
|
||||
@@ -335,13 +353,12 @@ class MyWindow(Gtk.Window):
|
||||
self.queryConfig('cp '+os.environ['HOME']+'/.config/kinto/xkeysnail.desktop '+os.environ['HOME']+'/.config/autostart/xkeysnail.desktop')
|
||||
if self.options["systray"]:
|
||||
self.queryConfig('cp '+os.environ['HOME']+'/.config/kinto/kintotray.desktop '+os.environ['HOME']+'/.config/autostart/kintotray.desktop')
|
||||
self.queryConfig("nohup python3 ~/.config/kinto/kintotray.py >/dev/null 2>&1 &")
|
||||
self.queryConfig("nohup /usr/bin/python3 ~/.config/kinto/kintotray.py >/dev/null 2>&1 &")
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(True)
|
||||
self.menuitem_systray.signal_id = self.menuitem_systray.connect('activate',self.checkTray,False)
|
||||
|
||||
restartsvc = True
|
||||
|
||||
|
||||
def initSetup(self):
|
||||
global win,openWin,restartsvc
|
||||
@@ -418,21 +435,20 @@ class MyWindow(Gtk.Window):
|
||||
pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.environ['HOME']+'/.config/kinto/gui/tuxcry4.png')
|
||||
pixbuf = pixbuf.scale_simple(600, 360, GdkPixbuf.InterpType.BILINEAR)
|
||||
self.bgsuccess4 = self.bgsuccess4.new_from_pixbuf(pixbuf)
|
||||
self.bgsuccess4.set_alignment(0, 1)
|
||||
self.bgsuccess4.set_valign(Gtk.Align.END)
|
||||
|
||||
pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.environ['HOME']+'/.config/kinto/gui/tuxuninstall.png')
|
||||
pixbuf = pixbuf.scale_simple(600, 360, GdkPixbuf.InterpType.BILINEAR)
|
||||
self.bguninstall = self.bguninstall.new_from_pixbuf(pixbuf)
|
||||
self.bguninstall.set_alignment(0, 1)
|
||||
self.bguninstall.set_valign(Gtk.Align.END)
|
||||
|
||||
pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.environ['HOME']+'/.config/kinto/gui/tuxbg.png')
|
||||
pixbuf = pixbuf.scale_simple(600, 360, GdkPixbuf.InterpType.BILINEAR)
|
||||
self.background = self.background.new_from_pixbuf(pixbuf)
|
||||
self.background.set_alignment(0, 1)
|
||||
self.background.set_valign(Gtk.Align.END)
|
||||
self.bgcaps = self.bgcaps.new_from_pixbuf(pixbuf2)
|
||||
self.bgcaps.set_alignment(0, 1)
|
||||
self.bgspace = self.bgspace.new_from_pixbuf(pixbuf3)
|
||||
self.bgspace.set_alignment(0, 1)
|
||||
self.bgspace.set_valign(Gtk.Align.END)
|
||||
self.overlay.add(self.background)
|
||||
self.overlay.add_overlay(self.container)
|
||||
self.setupwin.add(self.container)
|
||||
@@ -454,7 +470,7 @@ class MyWindow(Gtk.Window):
|
||||
def image2pixbuf(self,im):
|
||||
data = im.tobytes()
|
||||
w, h = im.size
|
||||
print(im.size)
|
||||
# print(im.size)
|
||||
data = GLib.Bytes.new(data)
|
||||
pix = GdkPixbuf.Pixbuf.new_from_bytes(data, GdkPixbuf.Colorspace.RGB,True, 8, w, h, w * 4)
|
||||
return pix
|
||||
@@ -515,7 +531,10 @@ class MyWindow(Gtk.Window):
|
||||
return
|
||||
|
||||
def runDebug(self,button):
|
||||
command = 'send \003 sudo systemctl stop xkeysnail && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
if sysv:
|
||||
command = 'send \003 sudo /etc/init.d/kinto stop && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
else:
|
||||
command = 'send \003 sudo systemctl stop xkeysnail && sudo pkill -f bin/xkeysnail && sudo xkeysnail ~/.config/kinto/kinto.py\n'
|
||||
self.InputToTerm(command)
|
||||
|
||||
def openSupport(self,button):
|
||||
@@ -597,7 +616,7 @@ class MyWindow(Gtk.Window):
|
||||
if tray_bool:
|
||||
Popen(['cp',os.environ['HOME']+'/.config/kinto/kintotray.desktop',os.environ['HOME']+'/.config/autostart/kintotray.desktop'])
|
||||
if not kintotray:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/kintotray.py'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/kintotray.py'])
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(True)
|
||||
self.menuitem_systray.signal_id = self.menuitem_systray.connect('activate',self.checkTray,False)
|
||||
@@ -608,7 +627,10 @@ class MyWindow(Gtk.Window):
|
||||
self.queryConfig(killspawn)
|
||||
time.sleep(1)
|
||||
global child_pid
|
||||
self.kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
if sysv:
|
||||
self.kinto_status = Popen("export TERM=xterm-color;while :; do clear; pgrep 'xkeysnail'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
else:
|
||||
self.kinto_status = Popen("export TERM=xterm-color;while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
child_pid = self.kinto_status.pid
|
||||
self.menuitem_systray.disconnect(self.menuitem_systray.signal_id)
|
||||
self.menuitem_systray.set_active(False)
|
||||
@@ -616,6 +638,7 @@ class MyWindow(Gtk.Window):
|
||||
return
|
||||
|
||||
def setKB(self,button,kbtype):
|
||||
global sysv
|
||||
try:
|
||||
if kbtype == "win":
|
||||
setkb = 's/^(\s{3})(\s{1}#)(.*# WinMac.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(Mac.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(IBM.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(Chromebook.*)|^(\s{3})(\s{1}# )(-)( Default Win)|^(\s{3})(\s{1}# )(-)(- Default Mac*)/ $3$7$6$7$8$12$11$12$13$17$16$17$18$20$21$21$22$24$26/g'
|
||||
@@ -652,7 +675,10 @@ class MyWindow(Gtk.Window):
|
||||
elif kbtype == "ibm":
|
||||
setkb ='s/^(\s{3})(\s{1}#)(.*# IBM.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(WinMac.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(Mac.*)|^(?!\s{4}#)(\s{3})(\s{1})(.*)( # )(Chromebook.*)|^(\s{3})(\s{1}# )(-)(- Default (Win|Mac.*))/ $3$7$6$7$8$12$11$12$13$17$16$17$18$20$22/g'
|
||||
|
||||
restart = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
if sysv:
|
||||
restart = ['sudo', '-E','/etc/init.d/kinto','restart']
|
||||
else:
|
||||
restart = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
cmds = ['perl','-pi','-e',setkb,self.kconfig]
|
||||
|
||||
cmdsTerm = Popen(cmds)
|
||||
@@ -744,11 +770,14 @@ class MyWindow(Gtk.Window):
|
||||
}
|
||||
|
||||
def on_delete_event(event, self, widget):
|
||||
global restartsvc, openWin
|
||||
global restartsvc, openWin, sysv
|
||||
|
||||
if restartsvc == True:
|
||||
try:
|
||||
restartcmd = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
if sysv:
|
||||
restartcmd = ['sudo', '-E','/etc/init.d/kinto','restart']
|
||||
else:
|
||||
restartcmd = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
Popen(restartcmd)
|
||||
restartsvc = False
|
||||
|
||||
@@ -868,8 +897,12 @@ class MyWindow(Gtk.Window):
|
||||
return
|
||||
|
||||
def runRestart(self,button):
|
||||
global sysv
|
||||
try:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
if sysv:
|
||||
stop = Popen(['sudo', '-E','/etc/init.d/kinto','stop'])
|
||||
else:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
stop.wait()
|
||||
time.sleep(1)
|
||||
res = Popen(['pgrep','xkeysnail'])
|
||||
@@ -878,15 +911,23 @@ class MyWindow(Gtk.Window):
|
||||
if res.returncode == 0:
|
||||
pkillxkey = Popen(['sudo', 'pkill','-f','bin/xkeysnail'])
|
||||
pkillxkey.wait()
|
||||
Popen(['sudo', 'systemctl','start','xkeysnail'])
|
||||
self.command = "send \003 journalctl -f --unit=xkeysnail.service -b\n"
|
||||
if sysv:
|
||||
Popen(['sudo','-E','/etc/init.d/kinto','start'])
|
||||
self.command = "send \003 tail -f /tmp/kinto.log\n"
|
||||
else:
|
||||
Popen(['sudo','systemctl','start','xkeysnail'])
|
||||
self.command = "send \003 journalctl -f --unit=xkeysnail.service -b\n"
|
||||
self.InputToTerm(self.command)
|
||||
except:
|
||||
Popen(['notify-send','Kinto: Errror restarting Kinto!'])
|
||||
|
||||
def runStop(self,button):
|
||||
global sysv
|
||||
try:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
if sysv:
|
||||
stop = Popen(['sudo', '-E','/etc/init.d/kinto','stop'])
|
||||
else:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
stop.wait()
|
||||
time.sleep(1)
|
||||
res = Popen(['pgrep','xkeysnail'])
|
||||
@@ -1075,7 +1116,7 @@ class MyWindow(Gtk.Window):
|
||||
except:
|
||||
pass
|
||||
|
||||
print(Vte.get_minor_version())
|
||||
# print(Vte.get_minor_version())
|
||||
|
||||
# def on_menu_auto(self, widget):
|
||||
# print("add file open dialog")
|
||||
@@ -1104,34 +1145,36 @@ class UninstallPage(Gtk.Box):
|
||||
|
||||
label_start = Gtk.Label()
|
||||
label_start.set_markup('<b>Uninstall</b>\n\n\n\nWould you like to uninstall kinto?\n\n If you need support please visit <a href="http://kinto.sh">kinto.sh</a>.')
|
||||
label_start.set_alignment(0,0)
|
||||
label_start.set_valign(Gtk.Align.START)
|
||||
label_start.set_halign(Gtk.Align.START)
|
||||
|
||||
label_start.set_line_wrap(True)
|
||||
vbox.add(label_start)
|
||||
scroller.add(vbox)
|
||||
|
||||
hbox = Gtk.HBox()
|
||||
previous = Gtk.Button("Uninstall")
|
||||
previous = Gtk.Button(label="Uninstall")
|
||||
previous.connect("clicked", self.goback)
|
||||
previous.set_margin_right(206)
|
||||
previous.set_margin_end(206)
|
||||
hbox.add(previous)
|
||||
|
||||
onward = Gtk.Button("Continue")
|
||||
onward = Gtk.Button(label="Continue")
|
||||
onward.connect("clicked", self.forward)
|
||||
hbox.add(onward)
|
||||
|
||||
hbox.set_hexpand(False)
|
||||
hbox.set_vexpand(False)
|
||||
hbox.set_margin_bottom(6)
|
||||
hbox.set_margin_right(25)
|
||||
hbox.set_margin_end(25)
|
||||
|
||||
scroller.set_hexpand(True)
|
||||
scroller.set_vexpand(True)
|
||||
vbox_container.add(scroller)
|
||||
vbox_container.set_margin_top(55)
|
||||
vbox_container.set_margin_right(25)
|
||||
self.grid.set_margin_left(157)
|
||||
vbox_container.set_margin_end(25)
|
||||
self.grid.set_margin_start(157)
|
||||
vbox_container.set_margin_bottom(18)
|
||||
vbox.set_margin_right(10)
|
||||
vbox.set_margin_end(10)
|
||||
vbox.set_margin_bottom(18)
|
||||
self.grid.add(vbox_container)
|
||||
self.grid.attach_next_to(hbox, vbox_container, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
@@ -1163,18 +1206,19 @@ class FirstPage(Gtk.Box):
|
||||
|
||||
label_start = Gtk.Label()
|
||||
label_start.set_markup("Before we continue please make sure you do not have any other remappers running. Kinto works best when it is the only application remapping your keys.\n\nBy continuing you also agree that Kinto is not held liable for any harm, damage(s) or unexpected behaviors.\nThis software is free, open-source, and provided as-is.\n\n<sup><b>© 2019, 2020 by Ben Reaves ~ Kinto is licensed on GPLv2.</b></sup>")
|
||||
label_start.set_alignment(0,0)
|
||||
label_start.set_valign(Gtk.Align.START)
|
||||
label_start.set_halign(Gtk.Align.START)
|
||||
label_start.set_line_wrap(True)
|
||||
vbox.add(label_start)
|
||||
scroller.add(vbox)
|
||||
|
||||
hbox = Gtk.HBox()
|
||||
previous = Gtk.Button("")
|
||||
previous = Gtk.Button(label="")
|
||||
for child in previous.get_children():
|
||||
child.set_label("<b>Decline</b>")
|
||||
child.set_use_markup(True)
|
||||
previous.connect("clicked", self.goback)
|
||||
previous.set_margin_right(245)
|
||||
previous.set_margin_end(245)
|
||||
hbox.add(previous)
|
||||
|
||||
self.__parent_window.first_onward.set_label("")
|
||||
@@ -1188,16 +1232,16 @@ class FirstPage(Gtk.Box):
|
||||
hbox.set_hexpand(False)
|
||||
hbox.set_vexpand(False)
|
||||
hbox.set_margin_bottom(6)
|
||||
hbox.set_margin_right(25)
|
||||
hbox.set_margin_end(25)
|
||||
|
||||
scroller.set_hexpand(True)
|
||||
scroller.set_vexpand(True)
|
||||
vbox_container.add(scroller)
|
||||
vbox_container.set_margin_top(55)
|
||||
vbox_container.set_margin_right(28)
|
||||
self.grid.set_margin_left(157)
|
||||
vbox_container.set_margin_end(28)
|
||||
self.grid.set_margin_start(157)
|
||||
vbox_container.set_margin_bottom(18)
|
||||
vbox.set_margin_right(10)
|
||||
vbox.set_margin_end(10)
|
||||
vbox.set_margin_bottom(18)
|
||||
self.grid.add(vbox_container)
|
||||
self.grid.attach_next_to(hbox, vbox_container, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
@@ -1236,37 +1280,38 @@ class SecondPage(Gtk.Box):
|
||||
label_start = Gtk.Label()
|
||||
|
||||
label_start.set_markup('<b>Identifying your Keyboard...</b>\n\nPress the <b>2nd</b> key <b>Left</b> of the spacebar.\n\n<sub>If stuck here then unset Overlay (Super) key on your DE.</sub>')
|
||||
label_start.set_alignment(0,0)
|
||||
label_start.set_valign(Gtk.Align.START)
|
||||
label_start.set_halign(Gtk.Align.START)
|
||||
label_start.set_line_wrap(True)
|
||||
vbox.add(label_start)
|
||||
scroller.add(vbox)
|
||||
|
||||
hbox = Gtk.HBox()
|
||||
previous = Gtk.Button("")
|
||||
previous = Gtk.Button(label="")
|
||||
for child in previous.get_children():
|
||||
child.set_label("<b>Go Back</b>")
|
||||
child.set_use_markup(True)
|
||||
previous.connect("clicked", self.goback)
|
||||
previous.set_margin_right(315)
|
||||
previous.set_margin_end(315)
|
||||
hbox.add(previous)
|
||||
|
||||
# onward = Gtk.Button("Continue")
|
||||
# onward = Gtk.Button(label="Continue")
|
||||
# onward.connect("clicked", self.forward)
|
||||
# hbox.add(onward)
|
||||
|
||||
hbox.set_hexpand(False)
|
||||
hbox.set_vexpand(False)
|
||||
hbox.set_margin_bottom(6)
|
||||
hbox.set_margin_right(25)
|
||||
hbox.set_margin_end(25)
|
||||
|
||||
scroller.set_hexpand(True)
|
||||
scroller.set_vexpand(True)
|
||||
vbox_container.add(scroller)
|
||||
vbox_container.set_margin_top(55)
|
||||
vbox_container.set_margin_right(25)
|
||||
self.grid.set_margin_left(157)
|
||||
vbox_container.set_margin_end(25)
|
||||
self.grid.set_margin_start(157)
|
||||
vbox_container.set_margin_bottom(18)
|
||||
vbox.set_margin_right(10)
|
||||
vbox.set_margin_end(10)
|
||||
vbox.set_margin_bottom(18)
|
||||
self.grid.add(vbox_container)
|
||||
self.grid.attach_next_to(hbox, vbox_container, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
@@ -1320,37 +1365,38 @@ class CapsPage(Gtk.Box):
|
||||
|
||||
label_start = Gtk.Label()
|
||||
label_start.set_markup('<b>Identifying your Keyboard...</b>\n\nPress the <b>capslock</b> key twice.')
|
||||
label_start.set_alignment(0,0)
|
||||
label_start.set_valign(Gtk.Align.START)
|
||||
label_start.set_halign(Gtk.Align.START)
|
||||
label_start.set_line_wrap(True)
|
||||
vbox.add(label_start)
|
||||
scroller.add(vbox)
|
||||
|
||||
hbox = Gtk.HBox()
|
||||
previous = Gtk.Button("")
|
||||
previous = Gtk.Button(label="")
|
||||
for child in previous.get_children():
|
||||
child.set_label("<b>Go Back</b>")
|
||||
child.set_use_markup(True)
|
||||
previous.connect("clicked", self.goback)
|
||||
previous.set_margin_right(315)
|
||||
previous.set_margin_end(315)
|
||||
hbox.add(previous)
|
||||
|
||||
# onward = Gtk.Button("Continue")
|
||||
# onward = Gtk.Button(label="Continue")
|
||||
# onward.connect("clicked", self.forward)
|
||||
# hbox.add(onward)
|
||||
|
||||
hbox.set_hexpand(False)
|
||||
hbox.set_vexpand(False)
|
||||
hbox.set_margin_bottom(6)
|
||||
hbox.set_margin_right(25)
|
||||
hbox.set_margin_end(25)
|
||||
|
||||
scroller.set_hexpand(True)
|
||||
scroller.set_vexpand(True)
|
||||
vbox_container.add(scroller)
|
||||
vbox_container.set_margin_top(55)
|
||||
vbox_container.set_margin_right(25)
|
||||
self.grid.set_margin_left(157)
|
||||
vbox_container.set_margin_end(25)
|
||||
self.grid.set_margin_start(157)
|
||||
vbox_container.set_margin_bottom(18)
|
||||
vbox.set_margin_right(10)
|
||||
vbox.set_margin_end(10)
|
||||
vbox.set_margin_bottom(18)
|
||||
self.grid.add(vbox_container)
|
||||
self.grid.attach_next_to(hbox, vbox_container, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
@@ -1387,9 +1433,9 @@ class SuccessPage(Gtk.Box):
|
||||
self.grid = Gtk.Grid()
|
||||
|
||||
hbox = Gtk.HBox()
|
||||
previous = Gtk.Button(" ")
|
||||
previous = Gtk.Button(label=" ")
|
||||
previous.props.relief = Gtk.ReliefStyle.NONE
|
||||
previous.set_margin_right(245)
|
||||
previous.set_margin_end(245)
|
||||
hbox.add(previous)
|
||||
|
||||
self.__parent_window.last_onward.set_label("")
|
||||
@@ -1402,7 +1448,7 @@ class SuccessPage(Gtk.Box):
|
||||
hbox.set_hexpand(False)
|
||||
hbox.set_vexpand(False)
|
||||
hbox.set_margin_bottom(6)
|
||||
hbox.set_margin_right(25)
|
||||
hbox.set_margin_end(25)
|
||||
|
||||
scroller = Gtk.ScrolledWindow()
|
||||
scroller.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
|
||||
@@ -1411,11 +1457,11 @@ class SuccessPage(Gtk.Box):
|
||||
vbox = Gtk.VBox()
|
||||
vbox_container = Gtk.VBox()
|
||||
vbox_container.set_margin_top(55)
|
||||
vbox_container.set_margin_right(28)
|
||||
vbox_container.set_margin_end(28)
|
||||
vbox_container.add(scroller)
|
||||
self.grid.set_margin_left(157)
|
||||
self.grid.set_margin_start(157)
|
||||
vbox_container.set_margin_bottom(18)
|
||||
vbox.set_margin_right(10)
|
||||
vbox.set_margin_end(10)
|
||||
vbox.set_margin_bottom(18)
|
||||
self.grid.add(vbox_container)
|
||||
self.grid.attach_next_to(hbox, vbox_container, Gtk.PositionType.BOTTOM, 2, 1)
|
||||
@@ -1435,4 +1481,4 @@ if openWin:
|
||||
win.show_all()
|
||||
openWin = False
|
||||
|
||||
Gtk.main()
|
||||
Gtk.main()
|
||||
|
@@ -4,7 +4,7 @@ Name=Kinto.sh
|
||||
GenericName=Kinto.sh
|
||||
Categories=Utility;
|
||||
Type=Application
|
||||
Exec={homedir}/.config/kinto/gui/kinto-gui.py
|
||||
Exec=/usr/bin/python3 {homedir}/.config/kinto/gui/kinto-gui.py
|
||||
Icon={homedir}/.config/kinto/kinto-color-48.svg
|
||||
# Icon=/usr/share/icons/Pocillo/kinto-color.svg
|
||||
Terminal=false
|
||||
|
57
linux/kinto-service.sh
Executable file
57
linux/kinto-service.sh
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# chkconfig: 35 90 12
|
||||
# description: Kinto service
|
||||
#
|
||||
|
||||
# Get function from functions library
|
||||
# . /etc/init.d/functions
|
||||
|
||||
# Start the service
|
||||
start() {
|
||||
echo -n "Starting Kinto (xkeynsail)" | logger
|
||||
xkeycount=$(pgrep 'xkeysnail' | wc -l)
|
||||
|
||||
if [[ $xkeycount -eq 0 ]]; then
|
||||
/usr/bin/xhost +SI:localuser:root && script -q -c "xkeysnail --quiet --watch `echo $HOME`/.config/kinto/kinto.py" /dev/null | tee -a /tmp/kinto.log &
|
||||
### Create the lock file ###
|
||||
touch /var/lock/subsys/kinto
|
||||
success $"Kinto (xkeynsail) started"
|
||||
else
|
||||
echo "Kinto (xkeynsail) service is already running."
|
||||
fi
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
# Restart the service
|
||||
stop() {
|
||||
echo -n "Stopping Kinto (xkeynsail)" | logger
|
||||
sudo pkill -f bin/xkeysnail >/dev/null 2>&1
|
||||
### Now, delete the lock file ###
|
||||
rm -f /var/lock/subsys/kinto
|
||||
echo
|
||||
}
|
||||
|
||||
### main logic ###
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
restart|reload|condrestart)
|
||||
stop
|
||||
sleep 5
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|restart|reload|status}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit 0
|
396
linux/kinto.py
396
linux/kinto.py
@@ -7,17 +7,54 @@ from xkeysnail.transform import *
|
||||
# Use the following for testing terminal keymaps
|
||||
# terminals = [ "", ... ]
|
||||
# xbindkeys -mk
|
||||
terminals = ["kinto-gui.py","gnome-terminal","konsole","io.elementary.terminal","terminator","sakura","guake","tilda","xterm","eterm","kitty","alacritty","mate-terminal","tilix","xfce4-terminal","hyper"]
|
||||
terminals = [
|
||||
"alacritty",
|
||||
"cutefish-terminal",
|
||||
"deepin-terminal",
|
||||
"eterm",
|
||||
"gnome-terminal",
|
||||
"guake",
|
||||
"hyper",
|
||||
"io.elementary.terminal",
|
||||
"kinto-gui.py",
|
||||
"kitty",
|
||||
"konsole",
|
||||
"lxterminal",
|
||||
"mate-terminal",
|
||||
"qterminal",
|
||||
"st",
|
||||
"sakura",
|
||||
"station",
|
||||
"tabby",
|
||||
"terminator",
|
||||
"termite",
|
||||
"tilda",
|
||||
"tilix",
|
||||
"urxvt",
|
||||
"xfce4-terminal",
|
||||
"xterm",
|
||||
]
|
||||
terminals = [term.casefold() for term in terminals]
|
||||
termStr = "|".join(str(x) for x in terminals)
|
||||
termStr = "|".join(str('^'+x+'$') for x in terminals)
|
||||
|
||||
mscodes = ["code","vscodium"]
|
||||
codeStr = "|".join(str(x) for x in mscodes)
|
||||
codeStr = "|".join(str('^'+x+'$') for x in mscodes)
|
||||
|
||||
# Add remote desktop clients & VM software here
|
||||
# Ideally we'd only exclude the client window,
|
||||
# but that may not be easily done.
|
||||
remotes = ["org.remmina.Remmina"]
|
||||
remotes = [
|
||||
"Gnome-boxes",
|
||||
"org.remmina.Remmina",
|
||||
"remmina",
|
||||
"qemu-system-.*",
|
||||
"qemu",
|
||||
"Spicy",
|
||||
"Virt-manager",
|
||||
"VirtualBox",
|
||||
"VirtualBox Machine",
|
||||
"xfreerdp",
|
||||
]
|
||||
remotes = [client.casefold() for client in remotes]
|
||||
|
||||
# Add remote desktop clients & VMs for no remapping
|
||||
@@ -25,17 +62,34 @@ terminals.extend(remotes)
|
||||
mscodes.extend(remotes)
|
||||
|
||||
# Use for browser specific hotkeys
|
||||
browsers = ["Chromium","Chromium-browser","Google-chrome","microsoft-edge-dev","microsoft-edge","Epiphany","Firefox","Discord"]
|
||||
browsers = [
|
||||
"Chromium",
|
||||
"Chromium-browser",
|
||||
"Discord",
|
||||
"Epiphany",
|
||||
"Firefox",
|
||||
"Firefox Developer Edition",
|
||||
"Waterfox",
|
||||
"Google-chrome",
|
||||
"microsoft-edge",
|
||||
"microsoft-edge-dev",
|
||||
]
|
||||
browsers = [browser.casefold() for browser in browsers]
|
||||
browserStr = "|".join(str(x) for x in browsers)
|
||||
browserStr = "|".join(str('^'+x+'$') for x in browsers)
|
||||
|
||||
chromes = ["Chromium","Chromium-browser","Google-chrome","microsoft-edge-dev","microsoft-edge"]
|
||||
chromes = [
|
||||
"Chromium",
|
||||
"Chromium-browser",
|
||||
"Google-chrome",
|
||||
"microsoft-edge",
|
||||
"microsoft-edge-dev",
|
||||
]
|
||||
chromes = [chrome.casefold() for chrome in chromes]
|
||||
chromeStr = "|".join(str(x) for x in chromes)
|
||||
chromeStr = "|".join(str('^'+x+'$') for x in chromes)
|
||||
|
||||
# edges = ["microsoft-edge-dev","microsoft-edge"]
|
||||
# edges = [edge.casefold() for edge in edges]
|
||||
# edgeStr = "|".join(str(x) for x in edges)
|
||||
# edgeStr = "|".join(str('^'+x+'$') for x in edges)
|
||||
|
||||
define_multipurpose_modmap(
|
||||
# {Key.ENTER: [Key.ENTER, Key.RIGHT_CTRL] # Enter2Cmd
|
||||
@@ -44,6 +98,12 @@ define_multipurpose_modmap(
|
||||
{ # Placeholder
|
||||
})
|
||||
|
||||
# Fix for avoiding modmapping when using Synergy keyboard/mouse sharing.
|
||||
# Synergy doesn't set a wm_class, so this may cause issues with other
|
||||
# applications that also don't set the wm_class.
|
||||
# Enable only if you use Synergy.
|
||||
# define_conditional_modmap(lambda wm_class: wm_class == '', {})
|
||||
|
||||
# [Global modemap] Change modifier keys as in xmodmap
|
||||
define_conditional_modmap(lambda wm_class: wm_class.casefold() not in terminals,{
|
||||
|
||||
@@ -88,7 +148,7 @@ define_conditional_modmap(re.compile(termStr, re.IGNORECASE), {
|
||||
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # IBM - Multi-language (Remove)
|
||||
# Key.RIGHT_CTRL: Key.RIGHT_ALT, # IBM
|
||||
# # Right Meta does not exist on chromebooks
|
||||
|
||||
|
||||
# Key.RIGHT_ALT: Key.RIGHT_CTRL, # IBM - Multi-language (Remove)
|
||||
# Key.RIGHT_CTRL: Key.RIGHT_ALT, # IBM - Multi-language (Remove)
|
||||
|
||||
@@ -170,8 +230,7 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
|
||||
K("C-M-o"): K("C-M-Shift-n"), # Go to symbol
|
||||
K("Super-Right"): K("M-Right"), # Go to next editor tab
|
||||
K("Super-Left"): K("M-Left"), # Go to previous editor tab
|
||||
K("Super-l"): K("C-g"), # Go to line
|
||||
K("Super-e"): K("C-e"), # Recent files popup
|
||||
K("C-l"): K("C-g"), # Go to line
|
||||
K("M-Space"): K("C-Shift-i"), # Open quick definition lookup
|
||||
K("C-Y"): K("C-Shift-i"), # Open quick definition lookup
|
||||
K("Super-Shift-b"): K("C-Shift-b"), # Go to type declaration
|
||||
@@ -204,17 +263,185 @@ define_keymap(re.compile("^jetbrains-(?!.*toolbox).*$", re.IGNORECASE),{
|
||||
# VCS/Local History
|
||||
K("Super-v"): K("M-Grave"), # VCS quick popup
|
||||
K("Super-c"): K("LC-c"), # Sigints - interrupt
|
||||
})
|
||||
},"Jetbrains")
|
||||
|
||||
# Keybindings for Nautilus
|
||||
define_keymap(re.compile("org.gnome.nautilus", re.IGNORECASE),{
|
||||
K("RC-Up"): K("M-Up"), # Go Up dir
|
||||
K("RC-Down"): K("M-Down"), # Go Down dir
|
||||
K("RC-Left"): K("M-Left"), # Go Back
|
||||
K("RC-Right"): K("M-Right"), # Go Forward
|
||||
})
|
||||
##############################################
|
||||
### START OF FILE MANAGER GROUP OF KEYMAPS ###
|
||||
##############################################
|
||||
|
||||
# Keybindings for Browsers
|
||||
# Keybindings overrides for Caja
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("caja", re.IGNORECASE),{
|
||||
# K("RC-Super-o"): K("RC-Shift-Enter"), # Open in new tab
|
||||
K("RC-Super-o"): K("RC-Shift-W"), # Open in new window
|
||||
},"Overrides for Caja - Finder Mods")
|
||||
|
||||
# Keybindings overrides for DDE (Deepin) File Manager
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("dde-file-manager", re.IGNORECASE),{
|
||||
K("RC-i"): K("RC-i"), # File properties dialog (Get Info)
|
||||
K("RC-comma"): None, # Disable preferences shortcut (no shortcut available)
|
||||
K("RC-Up"): K("RC-Up"), # Go Up dir
|
||||
K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right_Brace"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right"): K("C-Tab"), # Go to next tab
|
||||
},"Overrides for DDE File Manager - Finder Mods")
|
||||
|
||||
# Keybindings overrides for Dolphin
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("dolphin", re.IGNORECASE),{
|
||||
K("RC-KEY_2"): K("C-KEY_3"), # View as List (Detailed)
|
||||
K("RC-KEY_3"): K("C-KEY_2"), # View as List (Compact)
|
||||
##########################################################################################
|
||||
### "Open in new window" requires manually setting custom shortcut of Ctrl+Shift+o
|
||||
### in Dolphin's keyboard shortcuts. There is no default shortcut set for this function.
|
||||
##########################################################################################
|
||||
### "Open in new tab" requires manually setting custom shortcut of Ctrl+Shift+o in
|
||||
### Dolphin's keyboard shortcuts. There is no default shortcut set for this function.
|
||||
##########################################################################################
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or new tab, user's choice, see above)
|
||||
K("RC-Shift-N"): K("F10"), # Create new folder
|
||||
K("RC-comma"): K("RC-Shift-comma"), # Open preferences dialog
|
||||
},"Overrides for Dolphin - Finder Mods")
|
||||
|
||||
# Keybindings overrides for elementary OS Files (Pantheon)
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("io.elementary.files", re.IGNORECASE),{
|
||||
# K("RC-Super-o"): K("Shift-Enter"), # Open folder in new tab
|
||||
K("RC-comma"): None, # Disable preferences shortcut since none available
|
||||
},"Overrides for Pantheon - Finder Mods")
|
||||
|
||||
# Keybindings overrides for Nautilus
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("org.gnome.nautilus|nautilus", re.IGNORECASE),{
|
||||
# K("RC-N"): K("C-M-Space"), # macOS Finder search window shortcut Cmd+Option+Space
|
||||
# For this ^^^^^^^^^^^ to work, a custom shortcut must be set up in the Settings app in GNOME
|
||||
# to run command: "nautilus --new-window /home/USER" [ replace "USER" ]
|
||||
K("RC-KEY_1"): K("C-KEY_2"), # View as Icons
|
||||
K("RC-KEY_2"): K("C-KEY_1"), # View as List (Detailed)
|
||||
K("RC-Super-o"): K("Shift-Enter"), # Open in new window
|
||||
# K("RC-Super-o"): K("RC-Enter"), # Open in new tab
|
||||
K("RC-comma"): K("RC-comma"), # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Nautilus - Finder Mods")
|
||||
|
||||
# Keybindings overrides for PCManFM and PCManFM-Qt
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("pcmanfm|pcmanfm-qt", re.IGNORECASE),{
|
||||
K("RC-KEY_2"): K("C-KEY_4"), # View as List (Detailed) [Not in PCManFM-Qt]
|
||||
K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog)
|
||||
},"Overrides for PCManFM - Finder Mods")
|
||||
|
||||
# Keybindings overrides for SpaceFM
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("spacefm", re.IGNORECASE),{
|
||||
K("RC-Page_Up"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Page_Down"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-Left_Brace"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right_Brace"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Shift-Tab"), # Go to prior tab
|
||||
K("RC-Shift-Right"): K("C-Tab"), # Go to next tab
|
||||
K("RC-Shift-N"): K("RC-F"), # Create new folder is Ctrl+F by default
|
||||
K("RC-Backspace"): [K("Delete"),K("Enter")], # Move to Trash (delete, bypass dialog)
|
||||
K("RC-comma"): [K("M-V"),K("p")], # Overrides "Open preferences dialog" shortcut below
|
||||
# This shortcut ^^^^^^^^^^^^^^^ is not fully working in SpaceFM. Opens "View" menu but not Preferences.
|
||||
# SpaceFM seems to be doing some nasty binding that blocks things like Alt+Tab while the menu is open.
|
||||
},"Overrides for SpaceFM - Finder Mods")
|
||||
|
||||
# Keybindings overrides for Thunar
|
||||
# (overrides some bindings from general file manager code block below)
|
||||
define_keymap(re.compile("thunar", re.IGNORECASE),{
|
||||
K("RC-Super-o"): K("RC-Shift-P"), # Open in new tab
|
||||
K("RC-comma"): [K("M-E"),K("E")], # Overrides "Open preferences dialog" shortcut below
|
||||
},"Overrides for Thunar - Finder Mods")
|
||||
|
||||
filemanagers = [
|
||||
"caja",
|
||||
"cutefish-filemanager",
|
||||
"dde-file-manager",
|
||||
"dolphin",
|
||||
"io.elementary.files",
|
||||
"nautilus",
|
||||
"nemo",
|
||||
"org.gnome.nautilus",
|
||||
"pcmanfm",
|
||||
"pcmanfm-qt",
|
||||
"spacefm",
|
||||
"thunar",
|
||||
]
|
||||
filemanagers = [filemanager.casefold() for filemanager in filemanagers]
|
||||
filemanagerStr = "|".join(str('^'+x+'$') for x in filemanagers)
|
||||
|
||||
# Currently supported Linux file managers (file browsers):
|
||||
#
|
||||
# Caja File Browser (MATE file manager, fork of Nautilus)
|
||||
# DDE File Manager (Deepin Linux file manager)
|
||||
# Dolphin (KDE file manager)
|
||||
# Nautilus (GNOME file manager, may be named "Files")
|
||||
# Nemo (Cinnamon file manager, fork of Nautilus, may be named "Files")
|
||||
# Pantheon Files (elementary OS file manager, may be named "Files")
|
||||
# PCManFM (LXDE file manager)
|
||||
# PCManFM-Qt (LXQt file manager)
|
||||
# SpaceFM (Fork of PCManFM file manager)
|
||||
# Thunar File Manager (Xfce file manager)
|
||||
#
|
||||
# Keybindings for general Linux file managers group:
|
||||
define_keymap(re.compile(filemanagerStr, re.IGNORECASE),{
|
||||
###########################################################################################################
|
||||
### Show Properties (Get Info) | Open Settings/Preferences | Show/Hide hidden files ###
|
||||
###########################################################################################################
|
||||
K("RC-i"): K("M-Enter"), # File properties dialog (Get Info)
|
||||
K("RC-comma"): [K("M-E"),K("N")], # Open preferences dialog
|
||||
K("RC-Shift-dot"): K("RC-H"), # Show/hide hidden files ("dot" files)
|
||||
###########################################################################################################
|
||||
### Navigation ###
|
||||
###########################################################################################################
|
||||
K("RC-Left_Brace"): K("M-Left"), # Go Back
|
||||
K("RC-Right_Brace"): K("M-Right"), # Go Forward
|
||||
K("RC-Left"): K("M-Left"), # Go Back
|
||||
K("RC-Right"): K("M-Right"), # Go Forward
|
||||
K("RC-Up"): K("M-Up"), # Go Up dir
|
||||
# K("RC-Down"): K("M-Down"), # Go Down dir (only works on folders) [not universal]
|
||||
# K("RC-Down"): K("RC-O"), # Go Down dir (open folder/file) [not universal]
|
||||
K("RC-Down"): K("Enter"), # Go Down dir (open folder/file) [universal]
|
||||
K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab
|
||||
K("RC-Shift-Left"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-Shift-Right"): K("C-Page_Down"), # Go to next tab
|
||||
###########################################################################################################
|
||||
### Open in New Window | Move to Trash | Duplicate file/folder ###
|
||||
###########################################################################################################
|
||||
K("RC-Super-o"): K("RC-Shift-o"), # Open in new window (or tab, depends on FM setup) [not universal]
|
||||
K("RC-Backspace"): K("Delete"), # Move to Trash (delete)
|
||||
# K("RC-D"): [K("RC-C"),K("RC-V")], # Duplicate file/folder (Copy, then Paste) [conflicts with "Add Bookmark"]
|
||||
###########################################################################################################
|
||||
### To enable renaming files with the Enter key, uncomment the two keymapping lines just below this. ###
|
||||
### Use Ctrl+Shift+Enter to escape or activate text fields such as "[F]ind" and "[L]ocation" fields. ###
|
||||
###########################################################################################################
|
||||
# K("Enter"): K("F2"), # Rename with Enter key
|
||||
# K("RC-Shift-Enter"): K("Enter"), # Remap alternative "Enter" key to easily activate/exit text fields
|
||||
# K("RC-Shift-Enter"): K("F2"), # Rename with Cmd+Shift+Enter
|
||||
},"General File Managers - Finder Mods")
|
||||
|
||||
############################################
|
||||
### END OF FILE MANAGER GROUP OF KEYMAPS ###
|
||||
############################################
|
||||
|
||||
# Open preferences in browsers
|
||||
define_keymap(re.compile("Firefox", re.IGNORECASE),{
|
||||
K("C-comma"): [
|
||||
K("C-T"),K("a"),K("b"),K("o"),K("u"),K("t"),
|
||||
K("Shift-SEMICOLON"),K("p"),K("r"),K("e"),K("f"),
|
||||
K("e"),K("r"),K("e"),K("n"),K("c"),K("e"),K("s"),K("Enter")
|
||||
],
|
||||
K("RC-Shift-N"): K("RC-Shift-P"), # Open private window with Ctrl+Shift+N like other browsers
|
||||
})
|
||||
define_keymap(re.compile(chromeStr, re.IGNORECASE),{
|
||||
K("C-comma"): [K("M-e"), K("s"),K("Enter")],
|
||||
}, "Browsers")
|
||||
# Opera C-F12
|
||||
|
||||
# Keybindings for General Web Browsers
|
||||
define_keymap(re.compile(browserStr, re.IGNORECASE),{
|
||||
K("RC-Q"): K("RC-Q"), # Close all browsers Instances
|
||||
K("M-RC-I"): K("RC-Shift-I"), # Dev tools
|
||||
@@ -228,16 +455,45 @@ define_keymap(re.compile(browserStr, re.IGNORECASE),{
|
||||
K("RC-Key_7"): K("M-Key_7"),
|
||||
K("RC-Key_8"): K("M-Key_8"),
|
||||
K("RC-Key_9"): K("M-Key_9"), # Jump to last tab
|
||||
})
|
||||
# Enable Cmd+Shift+Braces for tab navigation
|
||||
K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab
|
||||
# Enable Cmd+Option+Left/Right for tab navigation
|
||||
K("RC-M-Left"): K("C-Page_Up"), # Go to prior tab
|
||||
K("RC-M-Right"): K("C-Page_Down"), # Go to next tab
|
||||
# Enable Ctrl+PgUp/PgDn for tab navigation
|
||||
K("Super-Page_Up"): K("C-Page_Up"), # Go to prior tab
|
||||
K("Super-Page_Down"): K("C-Page_Down"), # Go to next tab
|
||||
# Use Cmd+Braces keys for tab navigation instead of page navigation
|
||||
# K("C-Left_Brace"): K("C-Page_Up"),
|
||||
# K("C-Right_Brace"): K("C-Page_Down"),
|
||||
}, "General Web Browsers")
|
||||
|
||||
# Open preferences in browsers
|
||||
define_keymap(re.compile("Firefox", re.IGNORECASE),{
|
||||
K("C-comma"): [K("C-T"),K("a"),K("b"),K("o"),K("u"),K("t"),K("Shift-SEMICOLON"),K("p"),K("r"),K("e"),K("f"),K("e"),K("r"),K("e"),K("n"),K("c"),K("e"),K("s"),K("Enter")],
|
||||
define_keymap(re.compile("ulauncher", re.IGNORECASE),{
|
||||
K("RC-Key_1"): K("M-Key_1"), # Remap Ctrl+[1-9] and Ctrl+[a-z] to Alt+[1-9] and Alt+[a-z]
|
||||
K("RC-Key_2"): K("M-Key_2"),
|
||||
K("RC-Key_3"): K("M-Key_3"),
|
||||
K("RC-Key_4"): K("M-Key_4"),
|
||||
K("RC-Key_5"): K("M-Key_5"),
|
||||
K("RC-Key_6"): K("M-Key_6"),
|
||||
K("RC-Key_7"): K("M-Key_7"),
|
||||
K("RC-Key_8"): K("M-Key_8"),
|
||||
K("RC-Key_9"): K("M-Key_9"),
|
||||
K("RC-Key_0"): K("M-Key_0"),
|
||||
# K("RC-a"): K("M-a"),
|
||||
K("RC-b"): K("M-b"),
|
||||
# K("RC-c"): K("M-c"),
|
||||
K("RC-d"): K("M-d"),
|
||||
K("RC-e"): K("M-e"),
|
||||
K("RC-f"): K("M-f"),
|
||||
K("RC-g"): K("M-g"),
|
||||
K("RC-h"): K("M-h"),
|
||||
}, "Ulauncher")
|
||||
|
||||
# Note: terminals extends to remotes as well
|
||||
define_keymap(lambda wm_class: wm_class.casefold() not in terminals,{
|
||||
K("RC-Dot"): K("Esc"), # Mimic macOS Cmd+dot = Escape key (not in terminals)
|
||||
})
|
||||
define_keymap(re.compile(chromeStr, re.IGNORECASE),{
|
||||
K("C-comma"): [K("M-e"), K("s"),K("Enter")],
|
||||
})
|
||||
# Opera C-F12
|
||||
|
||||
# None referenced here originally
|
||||
# - but remote clients and VM software ought to be set here
|
||||
@@ -245,16 +501,19 @@ define_keymap(re.compile(chromeStr, re.IGNORECASE),{
|
||||
define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
K("RC-Space"): K("Alt-F1"), # Default SL - Launch Application Menu (gnome/kde)
|
||||
K("RC-F3"):K("Super-d"), # Default SL - Show Desktop (gnome/kde,eos)
|
||||
K("RC-LC-f"):K("M-F10"), # Default SL - Maximize app (gnome/kde)
|
||||
K("RC-Super-f"):K("M-F10"), # Default SL - Maximize app (gnome/kde)
|
||||
# K("RC-Super-f"): K("Super-Page_Up"), # SL - Toggle maximized window state (kde_neon)
|
||||
# K("Super-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie)
|
||||
# K("Super-Left"):K("C-M-Left"), # Default SL - Change workspace (budgie)
|
||||
K("RC-Q"): K("M-F4"), # Default SL - not-popos
|
||||
K("RC-H"):K("Super-h"), # Default SL - Minimize app (gnome/budgie/popos/fedora)
|
||||
K("M-Tab"): pass_through_key, # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
K("RC-Tab"): K("M-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
K("M-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default
|
||||
K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default
|
||||
K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default - Cmd Tab - App Switching Default
|
||||
K("RC-Grave"): K("M-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching
|
||||
K("RC-Shift-Grave"): K("M-Shift-Grave"), # Default not-xfce4 - Cmd ` - Same App Switching
|
||||
# K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group
|
||||
# K("RC-Shift-Grave"): K("Super-Shift-Tab"), # xfce4 Switch within app group
|
||||
# K("Super-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora)
|
||||
# K("Super-Left"):K("Super-Page_Down"), # SL - Change workspace (ubuntu/fedora)
|
||||
# K("Super-Right"):K("Super-C-Up"), # SL - Change workspace (popos)
|
||||
@@ -270,10 +529,6 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
# Basic App hotkey functions
|
||||
# K("RC-H"):K("M-F9"), # SL - Minimize app xfce4
|
||||
# K("RC-LC-f"):K("Super-PAGE_DOWN"), # SL - Minimize app manjaro
|
||||
# Cmd Tab - App Switching Default
|
||||
# K("RC-Tab"): K("RC-backslash"), # xfce4
|
||||
# K("RC-Shift-Tab"): K("RC-Shift-backslash"), # xfce4
|
||||
# K("RC-Grave"): K("RC-Shift-backslash"), # xfce4
|
||||
# In-App Tab switching
|
||||
# K("M-Tab"): K("C-Tab"), # Chromebook/IBM - In-App Tab switching
|
||||
# K("M-Shift-Tab"): K("C-Shift-Tab"), # Chromebook/IBM - In-App Tab switching
|
||||
@@ -283,7 +538,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
|
||||
# Fn to Alt style remaps
|
||||
K("RM-Enter"): K("insert"), # Insert
|
||||
|
||||
|
||||
# emacs style
|
||||
K("Super-a"): K("Home"), # Beginning of Line
|
||||
K("Super-e"): K("End"), # End of Line
|
||||
@@ -294,7 +549,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
K("Super-k"): [K("Shift-End"), K("Backspace")],
|
||||
K("Super-d"): K("Delete"),
|
||||
|
||||
# K("M-RC-Space"): K(""), # Open Finder - Placeholder
|
||||
# K("M-RC-Space"): K(""), # Open Finder - Placeholder
|
||||
|
||||
# Wordwise
|
||||
K("RC-Left"): K("Home"), # Beginning of Line
|
||||
@@ -309,14 +564,16 @@ define_keymap(lambda wm_class: wm_class.casefold() not in remotes,{
|
||||
K("RC-Shift-Up"): K("C-Shift-Home"), # Select all to Beginning of File
|
||||
K("RC-Down"): K("C-End"), # End of File
|
||||
K("RC-Shift-Down"): K("C-Shift-End"), # Select all to End of File
|
||||
# K("M-Backspace"): K("Delete"), # Chromebook/IBM - Delete
|
||||
K("Super-Backspace"): K("C-Backspace"), # Default not-chromebook - Delete Left Word of Cursor
|
||||
K("Super-Delete"): K("C-Delete"), # Default not-chromebook - Delete Right Word of Cursor
|
||||
K("Alt-Backspace"): K("C-Backspace"), # Default not-chromebook - Delete Left Word of Cursor
|
||||
K("Alt-Delete"): K("C-Delete"), # Default not-chromebook - Delete Right Word of Cursor
|
||||
# K("RM-Backspace"): K("Delete"), # Chromebook/IBM - Delete
|
||||
K("Super-Backspace"): K("C-Backspace"), # Delete Left Word of Cursor
|
||||
K("Super-Delete"): K("C-Delete"), # Delete Right Word of Cursor
|
||||
# K("LM-Backspace"): K("C-Backspace"), # Chromebook/IBM - Delete Left Word of Cursor
|
||||
K("M-Backspace"): K("C-Backspace"), # Default not-chromebook
|
||||
K("RC-Backspace"): K("C-Shift-Backspace"), # Delete Entire Line Left of Cursor
|
||||
K("Alt-Delete"): K("C-Delete"), # Delete Right Word of Cursor
|
||||
# K(""): pass_through_key, # cancel
|
||||
# K(""): K(""), #
|
||||
})
|
||||
}, "General GUI")
|
||||
|
||||
define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{
|
||||
# Wordwise remaining - for Everything but VS Code
|
||||
@@ -339,7 +596,7 @@ define_keymap(lambda wm_class: wm_class.casefold() not in mscodes,{
|
||||
# https://superuser.com/questions/770301/pentadactyl-how-to-disable-menu-bar-toggle-by-alt
|
||||
# **
|
||||
#
|
||||
})
|
||||
}, "Wordwise - not vscode")
|
||||
|
||||
# Keybindings for VS Code
|
||||
define_keymap(re.compile(codeStr, re.IGNORECASE),{
|
||||
@@ -350,11 +607,13 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
|
||||
K("M-Right"): [K("M-F19"),K("C-Right")], # Right of Word
|
||||
K("M-Shift-Left"): [K("M-F19"),K("C-Shift-Left")], # Select Left of Word
|
||||
K("M-Shift-Right"): [K("M-F19"),K("C-Shift-Right")], # Select Right of Word
|
||||
|
||||
# K("C-PAGE_DOWN"): pass_through_key, # cancel next_view
|
||||
# K("C-PAGE_UP"): pass_through_key, # cancel prev_view
|
||||
K("C-M-Left"): K("C-PAGE_UP"), # next_view
|
||||
K("C-M-Right"): K("C-PAGE_DOWN"), # prev_view
|
||||
|
||||
# K("C-PAGE_DOWN"): pass_through_key, # cancel next_view
|
||||
# K("C-PAGE_UP"): pass_through_key, # cancel prev_view
|
||||
K("C-M-Left"): K("C-PAGE_UP"), # next_view
|
||||
K("C-M-Right"): K("C-PAGE_DOWN"), # prev_view
|
||||
K("RC-Shift-Left_Brace"): K("C-PAGE_UP"), # next_view
|
||||
K("RC-Shift-Right_Brace"): K("C-PAGE_DOWN"), # prev_view
|
||||
|
||||
# VS Code Shortcuts
|
||||
K("C-g"): pass_through_key, # cancel Go to Line...
|
||||
@@ -368,8 +627,8 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
|
||||
K("C-g"): K("f3"), # find_next
|
||||
K("Shift-f3"): pass_through_key, # cancel find_prev
|
||||
K("C-Shift-g"): K("Shift-f3"), # find_prev
|
||||
# K("Super-c"): K("LC-c"), # Default - Terminal - Sigint
|
||||
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
|
||||
# K("Super-c"): K("LC-c"), # Default - Terminal - Sigint
|
||||
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
|
||||
# K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint
|
||||
# K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano
|
||||
# K("Super-C-g"): K("C-f2"), # Default - Sublime - find_all_under
|
||||
@@ -382,8 +641,8 @@ define_keymap(re.compile(codeStr, re.IGNORECASE),{
|
||||
|
||||
# Keybindings for Sublime Text
|
||||
define_keymap(re.compile("Sublime_text", re.IGNORECASE),{
|
||||
# K("Super-c"): K("LC-c"), # Default - Terminal - Sigint
|
||||
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
|
||||
# K("Super-c"): K("LC-c"), # Default - Terminal - Sigint
|
||||
# K("Super-x"): K("LC-x"), # Default - Terminal - Exit nano
|
||||
# K("M-c"): K("LC-c"), # Chromebook/IBM - Terminal - Sigint
|
||||
# K("M-x"): K("LC-x"), # Chromebook/IBM - Terminal - Exit nano
|
||||
K("Super-Space"): K("C-Space"), # Basic code completion
|
||||
@@ -467,11 +726,14 @@ define_keymap(re.compile("Io.elementary.terminal|kitty", re.IGNORECASE),{
|
||||
}, "Elementary Terminal tab switching")
|
||||
|
||||
define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("LC-RC-f"): K("M-F10"), # Toggle window maximized state
|
||||
# K("RC-Grave"): K("Super-Tab"), # xfce4 Switch within app group
|
||||
# K("RC-Shift-Grave"): K("Super-Shift-Tab"), # xfce4 Switch within app group
|
||||
# K("LC-Right"):K("C-M-Right"), # Default SL - Change workspace (budgie)
|
||||
# K("LC-Left"):K("C-M-Left"), # Default SL - Change workspace (budgie)
|
||||
# K("LC-Left"):K("C-M-End"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("Super-Left"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("C-M-Home"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("C-M-End"), # SL - Change workspace xfce4
|
||||
# K("LC-Left"):K("Super-Left"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("C-M-Home"), # SL - Change workspace xfce4
|
||||
# K("LC-Right"):K("Super-Right"), # SL - Change workspace eos
|
||||
# K("LC-Right"):K("Super-Page_Up"), # SL - Change workspace (ubuntu/fedora)
|
||||
# K("LC-Left"):K("Super-Page_Down"), # SL - Change workspace (ubuntu/fedora)
|
||||
@@ -481,16 +743,11 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("LC-Tab") : K("LC-PAGE_DOWN"),
|
||||
K("LC-Shift-Tab") : K("LC-PAGE_UP"),
|
||||
K("LC-Grave") : K("LC-PAGE_UP"),
|
||||
# K("M-Tab"): pass_through_key, # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
# K("RC-Tab"): K("M-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
# K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default not-xfce4 - Cmd Tab - App Switching Default
|
||||
# Cmd Tab - App Switching Default
|
||||
# K("RC-Tab"): K("RC-backslash"), # xfce4
|
||||
# K("RC-Shift-Tab"): K("RC-Shift-backslash"), # xfce4
|
||||
# K("RC-Grave"): K("RC-Shift-backslash"), # xfce4
|
||||
# K("M-Tab"): pass_through_key, # Default - Cmd Tab - App Switching Default
|
||||
# K("RC-Tab"): K("M-Tab"), # Default - Cmd Tab - App Switching Default
|
||||
# K("RC-Shift-Tab"): K("M-Shift-Tab"), # Default - Cmd Tab - App Switching Default
|
||||
# Converts Cmd to use Ctrl-Shift
|
||||
K("RC-V"): K("C-Shift-V"),
|
||||
K("RC-MINUS"): K("C-Shift-MINUS"),
|
||||
K("RC-MINUS"): K("C-MINUS"),
|
||||
K("RC-EQUAL"): K("C-Shift-EQUAL"),
|
||||
K("RC-BACKSPACE"): K("C-Shift-BACKSPACE"),
|
||||
K("RC-W"): K("C-Shift-W"),
|
||||
@@ -504,6 +761,8 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("RC-P"): K("C-Shift-P"),
|
||||
K("RC-LEFT_BRACE"): K("C-Shift-LEFT_BRACE"),
|
||||
K("RC-RIGHT_BRACE"): K("C-Shift-RIGHT_BRACE"),
|
||||
K("RC-Shift-Left_Brace"): K("C-Page_Up"), # Go to prior tab (Left)
|
||||
K("RC-Shift-Right_Brace"): K("C-Page_Down"), # Go to next tab (Right)
|
||||
K("RC-A"): K("C-Shift-A"),
|
||||
K("RC-S"): K("C-Shift-S"),
|
||||
K("RC-D"): K("C-Shift-D"),
|
||||
@@ -516,7 +775,6 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("RC-SEMICOLON"): K("C-Shift-SEMICOLON"),
|
||||
K("RC-APOSTROPHE"): K("C-Shift-APOSTROPHE"),
|
||||
K("RC-GRAVE"): K("C-Shift-GRAVE"),
|
||||
K("RC-BACKSLASH"): K("C-Shift-BACKSLASH"),
|
||||
K("RC-Z"): K("C-Shift-Z"),
|
||||
K("RC-X"): K("C-Shift-X"),
|
||||
K("RC-C"): K("C-Shift-C"),
|
||||
@@ -525,7 +783,7 @@ define_keymap(re.compile(termStr, re.IGNORECASE),{
|
||||
K("RC-N"): K("C-Shift-N"),
|
||||
K("RC-M"): K("C-Shift-M"),
|
||||
K("RC-COMMA"): K("C-Shift-COMMA"),
|
||||
K("RC-DOT"): K("C-Shift-DOT"),
|
||||
K("RC-Dot"): K("LC-c"),
|
||||
K("RC-SLASH"): K("C-Shift-SLASH"),
|
||||
K("RC-KPASTERISK"): K("C-Shift-KPASTERISK"),
|
||||
}, "terminals")
|
||||
|
@@ -1,4 +1,7 @@
|
||||
# /etc/sudoers.d/limitedadmins
|
||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11/bin"
|
||||
Defaults!/etc/init.d/kinto setenv,env_reset,env_delete+=PATH,env_delete+=LD_PRELOAD,env_delete+=LD_LIBRARY_PATH,env_delete+=SSH_AUTH_SOCK,env_delete+=PYTHONPATH,env_delete+=PERL5LIB
|
||||
%{username} ALL=NOPASSWD: /etc/init.d/kinto *
|
||||
%{username} ALL=NOPASSWD: {systemctl} restart xkeysnail
|
||||
%{username} ALL=NOPASSWD: {systemctl} start xkeysnail
|
||||
%{username} ALL=NOPASSWD: {systemctl} stop xkeysnail
|
||||
@@ -6,5 +9,6 @@
|
||||
%{username} ALL=(root) NOPASSWD: /usr/local/bin/logoff.sh
|
||||
%{username} ALL=NOPASSWD: {pkill} -f logoff
|
||||
%{username} ALL=NOPASSWD: {pkill} -f bin/xkeysnail
|
||||
%{username} ALL=NOPASSWD: {xkeysnail} /home/{username}/.config/kinto/kinto.py
|
||||
%{username} ALL=NOPASSWD: {xkeysnail} *
|
||||
%{username} ALL=NOPASSWD: {systemctl} is-active --quiet xkeysnail
|
||||
%{username} ALL=NOPASSWD: /usr/lib/systemd/system/xkeysnail.service
|
||||
|
@@ -29,7 +29,15 @@ APPINDICATOR_ID = 'Kinto'
|
||||
class Indicator():
|
||||
|
||||
global child_pid
|
||||
kinto_status = Popen("while :; do clear; systemctl is-active xkeysnail; sleep 2s; done", stdout=PIPE, shell=True)
|
||||
global sysv
|
||||
try:
|
||||
sysv = int(Popen("pidof systemd >/dev/null 2>&1 && echo '0' || echo '1'", stdout=PIPE, shell=True).communicate()[0].strip().decode('UTF-8'))
|
||||
except:
|
||||
sysv = 2
|
||||
if sysv:
|
||||
kinto_status = Popen("export TERM=xterm-color;while :; do clear; pgrep 'xkeysnail' && echo 'active'; sleep 2; done", stdout=PIPE, shell=True)
|
||||
else:
|
||||
kinto_status = Popen("export TERM=xterm-color;while :; do clear; systemctl is-active xkeysnail; sleep 2; done", stdout=PIPE, shell=True)
|
||||
child_pid = kinto_status.pid
|
||||
|
||||
homedir = os.path.expanduser("~")
|
||||
@@ -42,44 +50,52 @@ class Indicator():
|
||||
autostart_bool = False
|
||||
menu = Gtk.Menu()
|
||||
menukb = Gtk.Menu()
|
||||
checkbox_autostart = Gtk.CheckMenuItem('Autostart')
|
||||
restart = Gtk.MenuItem('Restart')
|
||||
stop = Gtk.MenuItem('Stop')
|
||||
keyboards = Gtk.MenuItem('Keyboard Types')
|
||||
checkbox_autostart = Gtk.CheckMenuItem(label='Autostart')
|
||||
restart = Gtk.MenuItem(label='Restart')
|
||||
stop = Gtk.MenuItem(label='Stop')
|
||||
keyboards = Gtk.MenuItem(label='Keyboard Types')
|
||||
keyboards.set_submenu(menukb)
|
||||
winkb = Gtk.RadioMenuItem(label='Windows')
|
||||
mackb = Gtk.RadioMenuItem(label='Apple',group=winkb)
|
||||
chromekb = Gtk.RadioMenuItem(label='Chromebook',group=winkb)
|
||||
ibmkb = Gtk.RadioMenuItem(label='IBM (No Super/Win key)',group=winkb)
|
||||
winmackb = Gtk.RadioMenuItem(label='Windows & Apple*',group=winkb)
|
||||
edit = Gtk.MenuItem('Customize')
|
||||
edit = Gtk.MenuItem(label='Customize')
|
||||
edit_submenu = Gtk.Menu()
|
||||
edit.set_submenu(edit_submenu)
|
||||
tweaks = Gtk.MenuItem('Tweaks')
|
||||
rightmod = Gtk.CheckButton('AltGr on Right Cmd')
|
||||
vsc2st3 = Gtk.CheckButton('ST3 hotkeys for VS Code')
|
||||
caps2esc = Gtk.CheckButton('Capslock is Escape when tapped, Cmd when held')
|
||||
caps2cmd = Gtk.CheckButton('Capslock is Cmd')
|
||||
button_config = Gtk.MenuItem('Kinto Config (shortcuts)')
|
||||
service = Gtk.MenuItem('Kinto Service')
|
||||
tweaks = Gtk.MenuItem(label='Tweaks')
|
||||
rightmod = Gtk.CheckButton(label='AltGr on Right Cmd')
|
||||
vsc2st3 = Gtk.CheckButton(label='ST3 hotkeys for VS Code')
|
||||
caps2esc = Gtk.CheckButton(label='Capslock is Escape when tapped, Cmd when held')
|
||||
caps2cmd = Gtk.CheckButton(label='Capslock is Cmd')
|
||||
button_config = Gtk.MenuItem(label='Kinto Config (shortcuts)')
|
||||
service = Gtk.MenuItem(label='Kinto Service')
|
||||
# Keyboard type set below
|
||||
button_syskb = Gtk.MenuItem('System Shortcuts')
|
||||
button_region = Gtk.MenuItem('Change Language')
|
||||
systray = Gtk.CheckMenuItem('Tray Enabled')
|
||||
helpm = Gtk.MenuItem('Help')
|
||||
button_syskb = Gtk.MenuItem(label='System Shortcuts')
|
||||
button_region = Gtk.MenuItem(label='Change Language')
|
||||
systray = Gtk.CheckMenuItem(label='Tray Enabled')
|
||||
helpm = Gtk.MenuItem(label='Help')
|
||||
help_submenu = Gtk.Menu()
|
||||
helpm.set_submenu(help_submenu)
|
||||
debug = Gtk.MenuItem('Debug')
|
||||
opengui = Gtk.MenuItem('Open Kinto')
|
||||
support = Gtk.MenuItem("Support")
|
||||
about = Gtk.MenuItem('About')
|
||||
debug = Gtk.MenuItem(label='Debug')
|
||||
opengui = Gtk.MenuItem(label='Open Kinto')
|
||||
support = Gtk.MenuItem(label='Support')
|
||||
about = Gtk.MenuItem(label='About')
|
||||
global restartsvc
|
||||
restartsvc = False
|
||||
unixts = int(time.time())
|
||||
last_status = ""
|
||||
last_status = ''
|
||||
|
||||
def __init__(self):
|
||||
res = Popen(['sudo', 'systemctl','is-active','--quiet','xkeysnail'])
|
||||
global sysv
|
||||
try:
|
||||
sysv = int(Popen("pidof systemd >/dev/null 2>&1 && echo '0' || echo '1'", stdout=PIPE, shell=True).communicate()[0].strip().decode('UTF-8'))
|
||||
except:
|
||||
sysv = 1
|
||||
if sysv:
|
||||
res = Popen(['pgrep','xkeysnail'])
|
||||
else:
|
||||
res = Popen(['sudo', 'systemctl','is-active','--quiet','xkeysnail'])
|
||||
res.wait()
|
||||
|
||||
if res.returncode == 0:
|
||||
@@ -100,6 +116,8 @@ class Indicator():
|
||||
with open(self.kconfig) as configfile:
|
||||
autostart_line = configfile.read().split('\n')[1]
|
||||
|
||||
autostart_bool = False
|
||||
|
||||
# Autostart
|
||||
if "autostart = true" in autostart_line.casefold():
|
||||
autostart_bool = True
|
||||
@@ -183,7 +201,7 @@ class Indicator():
|
||||
# self.button_region.connect('activate',self.setRegion)
|
||||
# self.menu.append(self.button_region)
|
||||
|
||||
item_quit = Gtk.MenuItem('Close')
|
||||
item_quit = Gtk.MenuItem(label='Close')
|
||||
item_quit.connect('activate', quit)
|
||||
self.menu.append(item_quit)
|
||||
self.menu.show_all()
|
||||
@@ -401,10 +419,10 @@ class Indicator():
|
||||
self.lbl = Gtk.Label()
|
||||
global restartsvc
|
||||
restartsvc = False
|
||||
self.rightmod = Gtk.CheckButton('AltGr on Right Cmd')
|
||||
self.vsc2st3 = Gtk.CheckButton('ST3 hotkeys for VS Code')
|
||||
self.caps2esc = Gtk.CheckButton('Capslock is Escape when tapped, Cmd when held')
|
||||
self.caps2cmd = Gtk.CheckButton('Capslock is Cmd')
|
||||
self.rightmod = Gtk.CheckButton(label='AltGr on Right Cmd')
|
||||
self.vsc2st3 = Gtk.CheckButton(label='ST3 hotkeys for VS Code')
|
||||
self.caps2esc = Gtk.CheckButton(label='Capslock is Escape when tapped, Cmd when held')
|
||||
self.caps2cmd = Gtk.CheckButton(label='Capslock is Cmd')
|
||||
|
||||
if rightmod_result == 0:
|
||||
self.rightmod.set_active(True)
|
||||
@@ -446,7 +464,10 @@ class Indicator():
|
||||
global restartsvc
|
||||
if restartsvc == True:
|
||||
try:
|
||||
restartcmd = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
if sysv:
|
||||
restartcmd = ['sudo', '-E','/etc/init.d/kinto','restart']
|
||||
else:
|
||||
restartcmd = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
Popen(restartcmd)
|
||||
restartsvc = False
|
||||
|
||||
@@ -555,8 +576,12 @@ class Indicator():
|
||||
return
|
||||
|
||||
def runRestart(self,button):
|
||||
global sysv
|
||||
try:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
if sysv:
|
||||
stop = Popen(['sudo', '-E','/etc/init.d/kinto','stop'])
|
||||
else:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
stop.wait()
|
||||
time.sleep(1)
|
||||
res = Popen(['pgrep','xkeysnail'])
|
||||
@@ -567,13 +592,20 @@ class Indicator():
|
||||
pkillxkey = Popen(['sudo', 'pkill','-f','bin/xkeysnail'])
|
||||
pkillxkey.wait()
|
||||
|
||||
Popen(['sudo', 'systemctl','start','xkeysnail'])
|
||||
if sysv:
|
||||
Popen(['sudo', '-E','/etc/init.d/kinto','start'])
|
||||
else:
|
||||
Popen(['sudo', 'systemctl','start','xkeysnail'])
|
||||
except:
|
||||
Popen(['notify-send','Kinto: Error restarting Kinto!'])
|
||||
|
||||
def runStop(self,button):
|
||||
global sysv
|
||||
try:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
if sysv:
|
||||
stop = Popen(['sudo', '-E','/etc/init.d/kinto','stop'])
|
||||
else:
|
||||
stop = Popen(['sudo', 'systemctl','stop','xkeysnail'])
|
||||
stop.wait()
|
||||
time.sleep(1)
|
||||
res = Popen(['pgrep','xkeysnail'])
|
||||
@@ -589,9 +621,9 @@ class Indicator():
|
||||
def runDebug(self,button,opendebug):
|
||||
try:
|
||||
if opendebug:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py','-d'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py','-d'])
|
||||
else:
|
||||
Popen([os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py'])
|
||||
Popen(['/usr/bin/python3',os.environ['HOME']+'/.config/kinto/gui/kinto-gui.py'])
|
||||
except:
|
||||
Popen(['notify-send','Kinto: Error opening Kinto!'])
|
||||
|
||||
@@ -689,7 +721,10 @@ class Indicator():
|
||||
cmdsTerm = Popen(cmds)
|
||||
cmdsTerm.wait()
|
||||
|
||||
restart = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
if sysv:
|
||||
restart = ['sudo', '-E','/etc/init.d/kinto','restart']
|
||||
else:
|
||||
restart = ['sudo', 'systemctl','restart','xkeysnail']
|
||||
Popen(restart)
|
||||
|
||||
except CalledProcessError:
|
||||
|
@@ -4,8 +4,8 @@ Description=xkeysnail
|
||||
[Service]
|
||||
Type=simple
|
||||
KillMode=process
|
||||
ExecStart=/usr/bin/sudo /bin/bash -c '/usr/bin/xhost +SI:localuser:root && {homedir}/.config/kinto/killdups.sh && {xkeysnail} --quiet --watch {homedir}/.config/kinto/kinto.py'
|
||||
ExecStop=/usr/bin/sudo /bin/bash -c '/usr/bin/sudo pkill -f bin/xkeysnail && exit 0'
|
||||
ExecStart={sudo}/bin/bash -c '/usr/bin/xhost +SI:localuser:root && {homedir}/.config/kinto/killdups.sh && {xkeysnail} --quiet --watch {homedir}/.config/kinto/kinto.py'
|
||||
ExecStop={sudo}/bin/bash -c '{sudo}pkill -f bin/xkeysnail && exit 0'
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
Environment=DISPLAY={displayid}
|
||||
|
8
linux/xkeysnail_sysv.desktop
Executable file
8
linux/xkeysnail_sysv.desktop
Executable file
@@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Name=Kinto_xkey
|
||||
GenericName=Kinto_xkey
|
||||
Comment=Make Linux Type Like it's a Mac
|
||||
Exec=/bin/bash -c "grep -q 'autostart = true' {homedir}/.config/kinto/kinto.py && sudo -E /etc/init.d/kinto restart"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-GNOME-Autostart-enabled=true
|
32
setup.py
32
setup.py
@@ -29,15 +29,15 @@ def windows_setup():
|
||||
print("This install will fail if you are not running with elevated privileges")
|
||||
os.system('powershell -executionpolicy bypass ".\\windows\\autohotkey.ps1"')
|
||||
print("Copying autohotkey combinations for Terminals & Editors...")
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto.ahk" "' + path + '\\windows\\kinto-new.ahk"')
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto.ahk" "' + homedir + '\\kinto-new.ahk"')
|
||||
if default < 3:
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default)(?!( - ST2CODE))(.*)/$2$3$5/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default)(?!( - ST2CODE))(.*)/$2$3$5/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 1:
|
||||
kbtype = "mac"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; MacModifiers)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif default == 2:
|
||||
kbtype = "win"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif default == 5:
|
||||
print("Removing any old registry keys from prior versions...")
|
||||
p = subprocess.Popen(['powershell.exe', "Remove-ItemProperty -Path HKLM:'SYSTEM\CurrentControlSet\Control\Keyboard Layout' -Name 'Scancode Map' -ErrorAction SilentlyContinue"], stdout=sys.stdout)
|
||||
@@ -52,32 +52,32 @@ def windows_setup():
|
||||
print("Uninstall of Kinto is Complete.")
|
||||
if default == 3:
|
||||
kbtype = "chrome"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Chromebook)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers/CB)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Chromebook)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 3 or default == 4:
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB\/IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB\/IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB\/IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; WinModifiers\/CB\/IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default == 4:
|
||||
kbtype = "ibm"
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; IBM)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; IBM)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
if default > 0 and default < 5:
|
||||
stvscode = yn_choice(bcolors.CYELLOW2 + "Would you like to use Sublime Text 3 keymaps in VS Code?\n" + bcolors.ENDC)
|
||||
print("\nWill now install Ubuntu Termimnal Theme as default...")
|
||||
print("\nWill now install Ubuntu Terminal Theme as default...")
|
||||
os.system('regedit "' + path + '\\windows\\theme_ubuntu.reg"')
|
||||
os.system('robocopy "'+ path + '\\assets" "%userprofile%\\.kinto\\assets" /E')
|
||||
if (stvscode and (default > 0 or default < 3)):
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; Default - ST2CODE)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
elif (stvscode and (default == 3 or default == 4 )):
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM - ST2CODE)/$2$3/g" .\\windows\\kinto-new.ahk')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/(; )(.*)(; CB/IBM - ST2CODE)/$2$3/gm" ' + homedir + '\\kinto-new.ahk')
|
||||
os.system('copy /Y "' + path + '\\windows\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/{kbtype}/' + kbtype + '/g" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('C:\\Strawberry\\perl\\bin\\perl.exe -pi -e "s/{kbtype}/' + kbtype + '/gm" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('copy /Y "' + path + '\\windows\\usb.vbs" "%userprofile%\\.kinto\\usb.vbs"')
|
||||
os.system('copy /Y "' + path + '\\windows\\detectUSB.ahk" "%userprofile%\\.kinto\\detectUSB.ahk"')
|
||||
os.system('mklink "%userprofile%\\Start Menu\\Programs\\Startup\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('mklink "%userprofile%\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs" "%userprofile%\\.kinto\\kinto-start.vbs"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\NoShell.vbs" "%userprofile%\\.kinto\\NoShell.vbs"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\toggle_kb.bat" "%userprofile%\\.kinto\\toggle_kb.bat"')
|
||||
os.system('copy /Y "'+ path + '\\windows\\kinto-new.ahk" "%userprofile%\\.kinto\\kinto.ahk"')
|
||||
os.system("del /f .\\windows\\kinto-new.ahk")
|
||||
os.system('copy /Y "'+ homedir + '\\kinto-new.ahk" "%userprofile%\\.kinto\\kinto.ahk"')
|
||||
os.system("del /f " + homedir + "\\kinto-new.ahk")
|
||||
os.system("del \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\kinto.ahk\" 2> nul")
|
||||
userpath = cmdline('cmd /c for %A in ("%userprofile%") do @echo %~sA')[:-1]
|
||||
print('Starting... "' + userpath + '\\AppData\\Roaming\\Microsoft\\Windows\\STARTM~1\\Programs\\Startup\\kinto-start.vbs"')
|
||||
|
BIN
windows/WinToMac_AltWin_swap.skl
Normal file
BIN
windows/WinToMac_AltWin_swap.skl
Normal file
Binary file not shown.
@@ -131,6 +131,7 @@ Exit() {
|
||||
SetTitleMatchMode, 2
|
||||
|
||||
GroupAdd, terminals, ahk_exe ubuntu.exe
|
||||
GroupAdd, terminals, ahk_exe ubuntu2004.exe
|
||||
GroupAdd, terminals, ahk_exe ConEmu.exe
|
||||
GroupAdd, terminals, ahk_exe ConEmu64.exe
|
||||
GroupAdd, terminals, ahk_exe powershell.exe
|
||||
@@ -144,6 +145,7 @@ GroupAdd, terminals, Fluent Terminal ahk_class ApplicationFrameWindow
|
||||
GroupAdd, terminals, ahk_class Console_2_Main
|
||||
|
||||
GroupAdd, posix, ahk_exe ubuntu.exe
|
||||
GroupAdd, posix, ahk_exe ubuntu2004.exe
|
||||
GroupAdd, posix, ahk_exe ConEmu.exe
|
||||
GroupAdd, posix, ahk_exe ConEmu64.exe
|
||||
GroupAdd, posix, ahk_exe Hyper.exe
|
||||
@@ -170,8 +172,11 @@ GroupAdd, browsers, ahk_exe msedge.exe
|
||||
|
||||
; Disable Key Remapping for Virtual Machines
|
||||
; Disable for Remote desktop solutions too
|
||||
GroupAdd, virtm, ahk_exe VirtualBoxVM.exe
|
||||
GroupAdd, virtm, ahk_exe mstsc.exe
|
||||
GroupAdd, remotes, ahk_exe VirtualBoxVM.exe
|
||||
GroupAdd, remotes, ahk_exe mstsc.exe
|
||||
GroupAdd, remotes, ahk_exe msrdc.exe
|
||||
GroupAdd, remotes, ahk_exe nxplayer.bin
|
||||
GroupAdd, remotes, ahk_exe vmconnect.exe
|
||||
|
||||
; Disabled Edge for now - no ability to close all instances
|
||||
; GroupAdd, browsers, Microsoft Edge ahk_class ApplicationFrameWindow
|
||||
@@ -186,7 +191,48 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
|
||||
; SetCapsLockState, AlwaysOff ; CB/IBM
|
||||
|
||||
#IfWinNotActive ahk_group virtm
|
||||
; Keyboards w/o media keys can use this Remap
|
||||
; This will replace unneeded dedicated keys
|
||||
; with most commonly used media keys
|
||||
;
|
||||
; Insert::SoundSet, +1, , mute ; Toggles Speaker
|
||||
; +Insert::Insert ; Shift Insert maps to Insert
|
||||
; Home::SoundSetWaveVolume, -10 ; Decrease volume
|
||||
; PgUp::SoundSetWaveVolume, +10 ; Increase volume
|
||||
; Delete::Send {Media_Prev} ; Previous
|
||||
; End::Send {Media_Play_Pause} ; Pause/Play
|
||||
; PgDn::Send {Media_Next} ; Next
|
||||
|
||||
; Virtual Desktop Hack via TotalSpaces2 - macOS Remote Desktop
|
||||
; Custom Bind Gestures in Windows
|
||||
; Shift-F8 on Left Swipe
|
||||
; Shift-F9 on Right Swipe
|
||||
#IfWinActive ahk_exe nxplayer.bin
|
||||
+F8::Send !+- ; macOS TotalSpaces2 - Space Left
|
||||
+F6::Send !+= ; macOS TotalSpaces2 - Space Right
|
||||
#If
|
||||
; +F8::Send {LCtrl down}{LWin down}{left}{LCtrl up}{LWin up} ; Comment out on host machine
|
||||
; +F6::Send {LCtrl down}{LWin down}{right}{LCtrl up}{LWin up} ; Comment out on host machine
|
||||
|
||||
#IfWinNotActive ahk_group remotes
|
||||
; wordwise support
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
^Down::Send ^{End}
|
||||
^+Down::Send ^+{End}
|
||||
$^Backspace::Send +{Home}{Delete}
|
||||
!Backspace::Send ^{Backspace}
|
||||
!Left::Send ^{Left}
|
||||
!+Left::Send ^+{Left}
|
||||
!Right::Send ^{Right}
|
||||
!+Right::Send ^+{Right}
|
||||
$^Left::Send {Home}
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
#If
|
||||
|
||||
#IfWinNotActive ahk_group remotes
|
||||
|
||||
; New AltTab and CtrlTab fix
|
||||
*tab::
|
||||
@@ -292,8 +338,10 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
!Esc::SendInput, {Pause}
|
||||
|
||||
; Go up or down a page
|
||||
$!Down::Send {PgDn};
|
||||
$!Up::Send {PgUp};
|
||||
#IfWinNotActive ahk_group editors
|
||||
$!Down::Send {PgDn}
|
||||
$!Up::Send {PgUp}
|
||||
#If
|
||||
|
||||
; Close Apps
|
||||
^q::Send !{F4}
|
||||
@@ -350,22 +398,6 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; !^space::Send #e ; Default
|
||||
; #^space::Send #e ; CB/IBM
|
||||
|
||||
; wordwise support
|
||||
^Up::Send ^{Home}
|
||||
^+Up::Send ^+{Home}
|
||||
^Down::Send ^{End}
|
||||
^+Down::Send ^+{End}
|
||||
$^Backspace::Send +{Home}{Delete}
|
||||
!Backspace::Send ^{Backspace}
|
||||
!Left::Send ^{Left}
|
||||
!+Left::Send ^+{Left}
|
||||
!Right::Send ^{Right}
|
||||
!+Right::Send ^+{Right}
|
||||
$^Left::Send {Home}
|
||||
$^+Left::Send +{Home}
|
||||
$^Right::Send {End}
|
||||
$^+Right::Send +{End}
|
||||
|
||||
; #if GetKeyState("LWin", "P") || GetKeyState("RAlt", "P") ; Chromebook
|
||||
; Space::Send ^{Esc} ; Chromebook
|
||||
; 0::Send #0 ; Chromebook
|
||||
@@ -411,6 +443,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; #If ; Chromebook
|
||||
|
||||
#IfWinNotActive ahk_group terminals
|
||||
^.::Send {Esc}
|
||||
; emacs style
|
||||
#n::Send {Down}
|
||||
#p::Send {Up}
|
||||
@@ -519,6 +552,13 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
|
||||
; Close all browsers
|
||||
#IfWinActive ahk_group browsers
|
||||
;Tab Navigation
|
||||
^+[::send ^{PgUp}
|
||||
^+]::send ^{PgDn}
|
||||
^!Left::send ^{PgUp}
|
||||
^!Right::send ^{PgDn}
|
||||
#Left::send ^{PgUp}
|
||||
#Right::send ^{PgDn}
|
||||
^q::send {Alt Down}f{Alt Up}x ; exit all windows
|
||||
; Dev Tools
|
||||
!^i::send {Ctrl Down}{Shift Down}i{Shift Up}{Ctrl Up}
|
||||
@@ -526,6 +566,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Open preferences
|
||||
#IfWinActive ahk_exe firefox.exe
|
||||
^,::send, {Ctrl Down}t{Ctrl Up}about:preferences{Enter}
|
||||
^+n::send ^+p
|
||||
#If
|
||||
#IfWinActive ahk_exe chrome.exe
|
||||
^,::send {Alt Down}e{Alt Up}s{Enter}
|
||||
@@ -565,7 +606,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; #x::Send ^{x} ; Default - Terminal - Ctrl-x
|
||||
; #c::Send ^{c} ; Default - Terminal - Ctrl-c sigint
|
||||
; !x::Send ^{x} ; CB/IBM
|
||||
; !c::Send ^{c} ; CB/IBM
|
||||
; !c::Send ^{c} ; CB/IBM - Sigint
|
||||
; #c::send ^{Pause} ; cancel_build
|
||||
; #Space::Send ^{Space} ; Default - Basic code completion
|
||||
; !Space::Send ^{Space} ; CB/IBM - Basic code completion
|
||||
@@ -588,9 +629,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
^!Left::send ^{PgUp} ; prev_view
|
||||
Insert::Return ; cancel toggle_overwrite
|
||||
^!O::send {Insert} ; toggle_overwrite
|
||||
; $#c::Send {Ctrl down}c{Ctrl up} ; Default - Sigints interrupt
|
||||
; !c::Return ; Default - cancel toggle_case_sensitive
|
||||
; $!c::send ^{c} ; CB/IBM - Sigint
|
||||
^!c::send !{c} ; toggle_case_sensitive
|
||||
; ^h::Return ; cancel replace
|
||||
^!f::send ^{h} ; replace
|
||||
@@ -598,6 +637,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
^!e::send ^+{h} ; replace_next
|
||||
F3::Return ; cancel find_next
|
||||
^g::send {F3} ; find_next
|
||||
#g::send ^{g} ; goto line - disable game bar - Start menu -> Game bar shortcuts -> toggle Off
|
||||
*F3::Return ; cancel find_prev, find_under, find_all_under
|
||||
^+g::send +{F3} ; find_prev
|
||||
#!g::send ^{F3} ; find_under
|
||||
@@ -673,6 +713,7 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Sigints - interrupt
|
||||
; $#c::Send {Ctrl down}c{Ctrl up} ; Default
|
||||
; $!c::Send {Ctrl down}c{Ctrl up} ; CB/IBM
|
||||
$^.::Send {Ctrl down}c{Ctrl up}
|
||||
|
||||
; Windows Terminal
|
||||
; Ctrl+Shift+C should do nothing
|
||||
@@ -726,45 +767,45 @@ GroupAdd, intellij, ahk_exe idea64.exe
|
||||
; Clear Terminal and Scroll Buffer
|
||||
^k::Send clear && printf '\e[3J'{Enter}
|
||||
; Remap Physical Ctrl back to Ctrl
|
||||
#0::Send {LCtrl down}0{Ctrl up} ; Default
|
||||
#1::Send {LCtrl down}1{Ctrl up} ; Default
|
||||
#2::Send {LCtrl down}2{Ctrl up} ; Default
|
||||
#3::Send {LCtrl down}3{Ctrl up} ; Default
|
||||
#4::Send {LCtrl down}4{Ctrl up} ; Default
|
||||
#5::Send {LCtrl down}5{Ctrl up} ; Default
|
||||
#6::Send {LCtrl down}6{Ctrl up} ; Default
|
||||
#7::Send {LCtrl down}7{Ctrl up} ; Default
|
||||
#8::Send {LCtrl down}8{Ctrl up} ; Default
|
||||
#9::Send {LCtrl down}9{Ctrl up} ; Default
|
||||
#-::Send {LCtrl down}-{Ctrl up} ; Default
|
||||
#=::Send {LCtrl down}={Ctrl up} ; Default
|
||||
#`::Send {LCtrl down}`{Ctrl up} ; Default
|
||||
#a::Send {LCtrl down}a{Ctrl up} ; Default
|
||||
#b::Send {LCtrl down}b{Ctrl up} ; Default
|
||||
#c::Send {LCtrl down}c{Ctrl up} ; Default
|
||||
#d::Send {LCtrl down}d{Ctrl up} ; Default
|
||||
#e::Send {LCtrl down}e{Ctrl up} ; Default
|
||||
#f::Send {LCtrl down}f{Ctrl up} ; Default
|
||||
#g::Send {LCtrl down}g{Ctrl up} ; Default
|
||||
#h::Send {LCtrl down}h{Ctrl up} ; Default
|
||||
#i::Send {LCtrl down}i{Ctrl up} ; Default
|
||||
#j::Send {LCtrl down}j{Ctrl up} ; Default
|
||||
#k::Send {LCtrl down}k{Ctrl up} ; Default
|
||||
#l::Send {LCtrl down}l{Ctrl up} ; Default
|
||||
#m::Send {LCtrl down}m{Ctrl up} ; Default
|
||||
#n::Send {LCtrl down}n{Ctrl up} ; Default
|
||||
#o::Send {LCtrl down}o{Ctrl up} ; Default
|
||||
#p::Send {LCtrl down}p{Ctrl up} ; Default
|
||||
#q::Send {LCtrl down}q{Ctrl up} ; Default
|
||||
#r::Send {LCtrl down}r{Ctrl up} ; Default
|
||||
#s::Send {LCtrl down}s{Ctrl up} ; Default
|
||||
#t::Send {LCtrl down}t{Ctrl up} ; Default
|
||||
#u::Send {LCtrl down}u{Ctrl up} ; Default
|
||||
#v::Send {LCtrl down}v{Ctrl up} ; Default
|
||||
#w::Send {LCtrl down}w{Ctrl up} ; Default
|
||||
#x::Send {LCtrl down}x{Ctrl up} ; Default
|
||||
#y::Send {LCtrl down}y{Ctrl up} ; Default
|
||||
#z::Send {LCtrl down}z{Ctrl up} ; Default
|
||||
; #0::Send {LCtrl down}0{Ctrl up} ; Default
|
||||
; #1::Send {LCtrl down}1{Ctrl up} ; Default
|
||||
; #2::Send {LCtrl down}2{Ctrl up} ; Default
|
||||
; #3::Send {LCtrl down}3{Ctrl up} ; Default
|
||||
; #4::Send {LCtrl down}4{Ctrl up} ; Default
|
||||
; #5::Send {LCtrl down}5{Ctrl up} ; Default
|
||||
; #6::Send {LCtrl down}6{Ctrl up} ; Default
|
||||
; #7::Send {LCtrl down}7{Ctrl up} ; Default
|
||||
; #8::Send {LCtrl down}8{Ctrl up} ; Default
|
||||
; #9::Send {LCtrl down}9{Ctrl up} ; Default
|
||||
; #-::Send {LCtrl down}-{Ctrl up} ; Default
|
||||
; #=::Send {LCtrl down}={Ctrl up} ; Default
|
||||
; #`::Send {LCtrl down}`{Ctrl up} ; Default
|
||||
; #a::Send {LCtrl down}a{Ctrl up} ; Default
|
||||
; #b::Send {LCtrl down}b{Ctrl up} ; Default
|
||||
; #c::Send {LCtrl down}c{Ctrl up} ; Default
|
||||
; #d::Send {LCtrl down}d{Ctrl up} ; Default
|
||||
; #e::Send {LCtrl down}e{Ctrl up} ; Default
|
||||
; #f::Send {LCtrl down}f{Ctrl up} ; Default
|
||||
; #g::Send {LCtrl down}g{Ctrl up} ; Default
|
||||
; #h::Send {LCtrl down}h{Ctrl up} ; Default
|
||||
; #i::Send {LCtrl down}i{Ctrl up} ; Default
|
||||
; #j::Send {LCtrl down}j{Ctrl up} ; Default
|
||||
; #k::Send {LCtrl down}k{Ctrl up} ; Default
|
||||
; #l::Send {LCtrl down}l{Ctrl up} ; Default
|
||||
; #m::Send {LCtrl down}m{Ctrl up} ; Default
|
||||
; #n::Send {LCtrl down}n{Ctrl up} ; Default
|
||||
; #o::Send {LCtrl down}o{Ctrl up} ; Default
|
||||
; #p::Send {LCtrl down}p{Ctrl up} ; Default
|
||||
; #q::Send {LCtrl down}q{Ctrl up} ; Default
|
||||
; #r::Send {LCtrl down}r{Ctrl up} ; Default
|
||||
; #s::Send {LCtrl down}s{Ctrl up} ; Default
|
||||
; #t::Send {LCtrl down}t{Ctrl up} ; Default
|
||||
; #u::Send {LCtrl down}u{Ctrl up} ; Default
|
||||
; #v::Send {LCtrl down}v{Ctrl up} ; Default
|
||||
; #w::Send {LCtrl down}w{Ctrl up} ; Default
|
||||
; #x::Send {LCtrl down}x{Ctrl up} ; Default
|
||||
; #y::Send {LCtrl down}y{Ctrl up} ; Default
|
||||
; #z::Send {LCtrl down}z{Ctrl up} ; Default
|
||||
; !0::Send {LCtrl down}0{Ctrl up} ; CB/IBM
|
||||
; !1::Send {LCtrl down}1{Ctrl up} ; CB/IBM
|
||||
; !2::Send {LCtrl down}2{Ctrl up} ; CB/IBM
|
||||
@@ -816,4 +857,4 @@ Send {RWin up}
|
||||
Send {LWin up}
|
||||
Send {RShift up}
|
||||
Send {LShift up}
|
||||
return
|
||||
return
|
||||
|
@@ -3,11 +3,18 @@
|
||||
# set about:config?filter=ui.key.menuAccessKeyFocuses
|
||||
# to false for wordwise to work in Firefox
|
||||
|
||||
function pause(){
|
||||
read -s -n 1 -p "Press any key to continue . . ."
|
||||
echo ""
|
||||
}
|
||||
|
||||
typeset -l distro
|
||||
distro=$(awk -F= '$1=="NAME" { gsub("[\",!,_, ]","",$2);print $2 ;}' /etc/os-release)
|
||||
typeset -l dename
|
||||
dename=$(./linux/system-config/dename.sh | cut -d " " -f1)
|
||||
|
||||
sysv=$(pidof systemd >/dev/null 2>&1 && echo "1" || echo "0")
|
||||
|
||||
function uninstall {
|
||||
|
||||
echo -e "\nNote: Restoring keys is only relevant if you had installed a version prior to 1.2 of Kinto. You should skip this step if 1.2+ is all you have installed."
|
||||
@@ -38,7 +45,11 @@ function uninstall {
|
||||
mv ~/.config/kglobalshortcutsrc ~/.config/kglobalshortcutsrc.kinto
|
||||
elif [ "$dename" == "xfce" ];then
|
||||
echo "Resetting DE hotkeys..."
|
||||
cp /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
|
||||
if test -f "/etc/mx-version";then
|
||||
cp /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
|
||||
else
|
||||
cp /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
|
||||
fi
|
||||
fi
|
||||
elif [ "$yn" == "r" ]; then
|
||||
echo "Restore original user shortcuts"
|
||||
@@ -77,6 +88,12 @@ function uninstall {
|
||||
echo -e "\nWill still be restoring the overlay key"
|
||||
echo -e "gsettings set org.gnome.mutter overlay-key 'super'\n"
|
||||
gsettings set org.gnome.mutter overlay-key 'super'
|
||||
# Repetitive - xfce restore factory or backup does this
|
||||
# Also needs to check if whiskermenu is even being used
|
||||
# elif [[ $dename == "xfce" ]]; then
|
||||
# echo -e "\nWill still be restoring the overlay key"
|
||||
# echo -e "xfconf-query --channel xfce4-keyboard-shortcuts --property \"/commands/custom/Super_L\" --create --type string --set \"xfce4-popup-whiskermenu\""
|
||||
# xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/Super_L" --create --type string --set "xfce4-popup-whiskermenu"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -189,6 +206,7 @@ if [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
echo "rm /etc/systemd/system/graphical.target.wants/xkeysnail.service"
|
||||
echo "rm /usr/lib/systemd/system/xkeysnail.service"
|
||||
echo "rm /lib/systemd/system/xkeysnail.service"
|
||||
sudo rm /etc/init.d/kinto >/dev/null 2>&1
|
||||
sudo rm /etc/systemd/system/xkeysnail.service >/dev/null 2>&1
|
||||
sudo rm /etc/systemd/system/graphical.target.wants/xkeysnail.service >/dev/null 2>&1
|
||||
sudo rm /usr/lib/systemd/system/xkeysnail.service >/dev/null 2>&1
|
||||
@@ -207,9 +225,29 @@ fi
|
||||
sudo systemctl stop xkeysnail >/dev/null 2>&1
|
||||
sudo systemctl disable xkeysnail >/dev/null 2>&1
|
||||
sudo pkill -f bin/xkeysnail >/dev/null 2>&1
|
||||
sudo pkill -f kinto-gui.py >/dev/null 2>&1
|
||||
sudo pkill -f kintotray.py >/dev/null 2>&1
|
||||
ps aux | awk '/[s]h -c while/ {print $2}' | xargs -r -n1 sudo kill
|
||||
sudo pkill -f "is-active xkeysnail" >/dev/null 2>&1
|
||||
|
||||
pip3 install pillow
|
||||
if [ "$distro" == "manjarolinux" ]; then
|
||||
while true; do
|
||||
read -rep $'\nHave you run \"sudo pacman -Syu\" before running Kinto setup? (y/n): ' updated
|
||||
case $updated in
|
||||
[Yy]* ) mjupdated='yes'; break;;
|
||||
[Nn]* ) mjupdated='no'; break;;
|
||||
* ) echo -e "\nPlease answer [y]es or [n]o.";;
|
||||
esac
|
||||
done
|
||||
if [[ "$mjupdated" == "no" ]]; then
|
||||
echo
|
||||
echo "================================================================================"
|
||||
echo "========== Please run a full system update before installing Kinto. =========="
|
||||
echo "================================================================================"
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add additional shortcuts if needed, does not modify existing ones
|
||||
|
||||
@@ -219,6 +257,34 @@ if [[ $dename == 'gnome' || $dename == 'budgie' ]];then
|
||||
echo "Overlay key, " $bound ", detected. Will be removing so Super-Space can remap to Cmd-Space for app launching.."
|
||||
gsettings set org.gnome.mutter overlay-key ''
|
||||
fi
|
||||
elif [[ $dename == 'xfce' ]];then
|
||||
launcher=$(cat ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml | grep 'name="Super_L"' | sed 's:.*="::')
|
||||
# echo "${#launcher}"
|
||||
if [[ "${#launcher}" -eq 0 ]]; then
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/Super_L" --create --type string --set "xfce4-popup-whiskermenu"
|
||||
echo "Resetting Super_L, please wait..."
|
||||
sleep 6
|
||||
launcher=$(cat ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml | grep 'name="Super_L"' | sed 's:.*="::')
|
||||
if [[ "${#launcher}" -gt 0 ]]; then
|
||||
echo "Success."
|
||||
else
|
||||
echo "Failed. Skipping setup of Cmd-Space."
|
||||
fi
|
||||
fi
|
||||
if [[ "${#launcher}" -gt 0 ]]; then
|
||||
nlauncher=${launcher::-3}
|
||||
# Replace Alt-F1 help file w/ whisker menu alternative hotkey
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Alt>F1" --reset
|
||||
# Clear Alt-F3 App Finder for sublime text global replace
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Alt>F3" --reset
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Alt>F1" --create --type string --set "$nlauncher" && echo "$nlauncher has been set to Alt-F1 for Cmd-Space to work."
|
||||
# Unset Super_L to avoid issues during setup, will re-apply at the end
|
||||
xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/Super_L" --reset
|
||||
# xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/<Super>grave" --create --type string --set "switch_window_key"
|
||||
|
||||
fi
|
||||
# Unset Super-Tab, breaks Ctrl-Tab. switch_window_key
|
||||
sed -i '/.*name=\"<Super>Tab.*$/d' ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
|
||||
fi
|
||||
|
||||
# if ls /etc/apt/sources.list.d/system76* 1> /dev/null 2>&1; then
|
||||
@@ -239,6 +305,7 @@ fi
|
||||
|
||||
if [[ $distro == "elementaryos" ]]; then
|
||||
gsettings set io.elementary.terminal.settings natural-copy-paste false
|
||||
sudo ./linux/system-config/unipkg.sh libvte-2.91-dev
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then
|
||||
@@ -263,25 +330,6 @@ if [[ $distro == 'kdeneon' ]]; then
|
||||
fi
|
||||
|
||||
if [[ $distro == 'fedora' ]]; then
|
||||
echo "Checking SELinux status..."
|
||||
if [[ $(perl -ne 'print if /^SELINUX=enforcing/' /etc/selinux/config | wc -l) != 0 ]]; then
|
||||
while true; do
|
||||
read -rep $'\nWould you like to update your SELinux state from enforcing to permissive? (y/n)\n' yn
|
||||
case $yn in
|
||||
[Yy]* ) setSE='yes'; break;;
|
||||
[Nn]* ) exp='no'; expsh=" " break;;
|
||||
# * ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $yn == "yes" ]]; then
|
||||
sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
|
||||
echo "/etc/selinux/config has been updated. Please reboot your computer before continuing."
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "SELinux state should be ok for Kinto to install"
|
||||
fi
|
||||
if [[ $(gsettings get org.gnome.desktop.wm.keybindings show-desktop | grep "\[\]" | wc -l) == 1 ]];then
|
||||
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']"
|
||||
else
|
||||
@@ -326,17 +374,21 @@ expsh=" "
|
||||
# echo "Will need to install inotify-tools to restart key remapper live for config file changes..."
|
||||
# sudo ./linux/system-config/unipkg.sh inotify-tools
|
||||
# fi
|
||||
if ! [ -x "$(command -v git)" ]; then
|
||||
echo "Will need to install git..."
|
||||
sudo ./linux/system-config/unipkg.sh git
|
||||
fi
|
||||
if ! [ -x "$(command -v pip3)" ]; then
|
||||
echo "Will need to install python3-pip..."
|
||||
sudo ./linux/system-config/unipkg.sh python3-pip
|
||||
fi
|
||||
if ! [ -x "$(command -v python3-config)" ]; then
|
||||
if [ "$distro" == "ubuntu" ] || [ "$distro" == "debian" ] || [ "$distro" == 'linuxmint' ]; then
|
||||
if [ "$distro" == "ubuntu" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then
|
||||
pydev="python3-dev"
|
||||
elif [ "$distro" == "fedora" ]; then
|
||||
pydev="python3-devel"
|
||||
fi
|
||||
if [ "$distro" == "gnome" ] || [ "$distro" == "fedora" ] || [ "$distro" == "debian" ] || [ "$distro" == 'linuxmint' ]; then
|
||||
if [ "$distro" == "gnome" ] || [ "$distro" == "fedora" ] || [ "${distro::6}" == "debian" ] || [ "$distro" == 'linuxmint' ]; then
|
||||
echo "Will need to install $pydev..."
|
||||
sudo ./linux/system-config/unipkg.sh "$pydev"
|
||||
fi
|
||||
@@ -349,10 +401,14 @@ if ! [ -x "$(command -v xhost)" ] || ! [ -x "$(command -v gcc)" ]; then
|
||||
sudo ./linux/system-config/unipkg.sh "xorg-xhost gcc"
|
||||
fi
|
||||
fi
|
||||
if [ "$distro" == 'linuxmint' ]; then
|
||||
if [ "$distro" == 'linuxmint' ] ; then
|
||||
pip3 install setuptools
|
||||
elif [ "${distro::6}" == "debian" ]; then
|
||||
sudo pip3 install setuptools wheel
|
||||
fi
|
||||
|
||||
pip3 install pillow
|
||||
|
||||
# echo "Transferring files..."
|
||||
mkdir -p ~/.config/kinto
|
||||
|
||||
@@ -363,7 +419,11 @@ mkdir -p ~/.config/kinto
|
||||
|
||||
# KDE startup - xhost fix
|
||||
mkdir -p ~/.config/autostart
|
||||
yes | cp -rf ./linux/xkeysnail.desktop ~/.config/kinto/xkeysnail.desktop
|
||||
if [ ! "$sysv" -eq 0 ];then
|
||||
yes | cp -rf ./linux/xkeysnail.desktop ~/.config/kinto/xkeysnail.desktop
|
||||
else
|
||||
yes | cp -rf ./linux/xkeysnail_sysv.desktop ~/.config/kinto/xkeysnail.desktop
|
||||
fi
|
||||
|
||||
# yes | cp -rf ./linux/xkeystart.sh ~/.config/kinto/xkeystart.sh
|
||||
|
||||
@@ -377,9 +437,17 @@ yes | cp -rf ./linux/xkeysnail.desktop ~/.config/kinto/xkeysnail.desktop
|
||||
# logoff fix - not solid for every os. Prevents missed 1 character input on login
|
||||
# yes | sudo cp -rf linux/gnome_logoff.sh ~/.config/kinto/logoff.sh
|
||||
|
||||
echo "$(git describe --tag --abbrev=0 | head -n 1)" "build" "$(git rev-parse --short HEAD)" > ~/.config/kinto/version
|
||||
if [ -d "./.git" ]
|
||||
then
|
||||
echo "$(git describe --tag --abbrev=0 | head -n 1)" "build" "$(git rev-parse --short HEAD)" > ~/.config/kinto/version
|
||||
elif [ -f "./dl_version" ]; then
|
||||
cp ./dl_version ~/.config/kinto/version
|
||||
else
|
||||
# Not a typo - v is built in
|
||||
echo "ersion Unknown" > ~/.config/kinto/version
|
||||
fi
|
||||
|
||||
yes | cp -rf ./linux/kinto.py ./linux/kinto.py.new
|
||||
yes | cp -rf ./linux/limitedadmins ./linux/limitedadmins.new
|
||||
yes | cp -rf ./linux/gui/ ~/.config/kinto/
|
||||
yes | cp -nrf ./linux/initkb ~/.config/kinto/initkb
|
||||
yes | cp -rf ./linux/killdups.sh ~/.config/kinto/killdups.sh
|
||||
@@ -392,29 +460,36 @@ yes | cp -rf ./linux/trayapps/appindicator/icons/kinto-invert-16.svg ~/.config/k
|
||||
yes | cp -rf ./linux/trayapps/appindicator/icons/kinto-solid-16.svg ~/.config/kinto/kinto-solid.svg
|
||||
yes | cp -rf ./linux/trayapps/appindicator/icons/kinto.svg ~/.config/kinto/kinto.svg
|
||||
# yes | cp -rf ./linux/system-config/caret_status_xkey.sh ~/.config/kinto/caret_status_xkey.sh
|
||||
yes | cp -rf ./linux/xkeysnail.service ./linux/xkeysnail.service.new
|
||||
# yes | cp -rf ./linux/xkeysnail.timer ~/.config/systemd/user/xkeysnail.timer
|
||||
sed -i "s#{experimental-caret}#$exp#g" ./linux/xkeysnail.service.new
|
||||
if [ "$expsh" != " " ];then
|
||||
sed -i "s#{kill-caret}#/usr/bin/pkill -f $expsh#g" ./linux/xkeysnail.service.new
|
||||
|
||||
yes | cp -rf ./linux/limitedadmins ./linux/limitedadmins.new
|
||||
sed -i "s/{username}/`whoami`/g" ./linux/limitedadmins.new
|
||||
sed -i "s#{systemctl}#`\\which systemctl`#g" ./linux/limitedadmins.new
|
||||
sed -i "s#{pkill}#`\\which pkill`#g" ./linux/limitedadmins.new
|
||||
if [ ! "$sysv" -eq 0 ];then
|
||||
echo "Using systemd..."
|
||||
yes | cp -rf ./linux/xkeysnail.service ./linux/xkeysnail.service.new
|
||||
# yes | cp -rf ./linux/xkeysnail.timer ~/.config/systemd/user/xkeysnail.timer
|
||||
sed -i "s#{experimental-caret}#$exp#g" ./linux/xkeysnail.service.new
|
||||
if [ "$expsh" != " " ];then
|
||||
sed -i "s#{kill-caret}#/usr/bin/pkill -f $expsh#g" ./linux/xkeysnail.service.new
|
||||
else
|
||||
sed -i "s#{kill-caret}#$expsh#g" ./linux/xkeysnail.service.new
|
||||
fi
|
||||
sed -i "s/{username}/`whoami`/g" ./linux/xkeysnail.service.new
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ./linux/xkeysnail.service.new
|
||||
sed -i "s#{xhost}#`\\which xhost`#g" ./linux/xkeysnail.service.new
|
||||
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ./linux/xkeysnail.service.new
|
||||
else
|
||||
sed -i "s#{kill-caret}#$expsh#g" ./linux/xkeysnail.service.new
|
||||
echo "Using sysvinit..."
|
||||
fi
|
||||
sed -i "s/{username}/`whoami`/g" ./linux/xkeysnail.service.new
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ./linux/xkeysnail.service.new
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/kintotray.desktop
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/gui/kinto-gui.py
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ./linux/gui/kinto.desktop.new
|
||||
sudo mv ./linux/gui/kinto.desktop.new /usr/share/applications/kinto.desktop
|
||||
sed -i "s#{xhost}#`\\which xhost`#g" ./linux/xkeysnail.service.new
|
||||
sed -i "s/{username}/`whoami`/g" ./linux/limitedadmins.new
|
||||
sed -i "s#{systemctl}#`\\which systemctl`#g" ./linux/limitedadmins.new
|
||||
sed -i "s#{pkill}#`\\which pkill`#g" ./linux/limitedadmins.new
|
||||
sed -i "s#{systemctl}#`\\which systemctl`#g" ~/.config/kinto/xkeysnail.desktop
|
||||
sed -i "s#{xhost}#`\\which xhost`#g" ~/.config/kinto/xkeysnail.desktop
|
||||
sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/xkeysnail.desktop
|
||||
# sed -i "s#{homedir}#`echo "$HOME"`#g" ~/.config/kinto/prexk.sh
|
||||
sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ./linux/xkeysnail.service.new
|
||||
# sed -i "s/{displayid}/`echo "$DISPLAY"`/g" ~/.config/kinto/prexk.sh
|
||||
|
||||
if [[ $dename == "budgie" ]]; then
|
||||
@@ -427,6 +502,11 @@ fi
|
||||
|
||||
if [[ $distro == "fedora" ]]; then
|
||||
perl -pi -e "\s{4}(# )(K.*)(# SL - .*fedora.*)/ \$2\$3/g" ./linux/kinto.py.new >/dev/null 2>&1
|
||||
sed -i "s#{sudo}##g" ./linux/xkeysnail.service.new
|
||||
selinuxuser=system_u
|
||||
selinuxtype=systemd_unit_file_t
|
||||
else
|
||||
sed -i "s#{sudo}#`\\which sudo` #g" ./linux/xkeysnail.service.new
|
||||
fi
|
||||
|
||||
if [[ $distro == "elementaryos" ]]; then
|
||||
@@ -459,26 +539,31 @@ if [[ $dename == "xfce" ]] && ls /etc/apt/sources.list.d/enso* 1> /dev/null 2>&1
|
||||
fi
|
||||
|
||||
if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
|
||||
mv ./linux/kinto.py.new ~/.config/kinto/kinto.py
|
||||
# if [ "$distro" == "fedora" ];then
|
||||
sudo rm /etc/systemd/system/xkeysnail.service >/dev/null 2>&1
|
||||
if [ ! "$sysv" -eq 0 ];then
|
||||
# echo "Using systemd..."
|
||||
sudo rm /etc/systemd/system/xkeysnail.service >/dev/null 2>&1
|
||||
else
|
||||
# echo "Using sysvinit..."
|
||||
echo ""
|
||||
fi
|
||||
if [ -d /usr/lib/systemd/system ];then
|
||||
xkeypath="/usr/lib/systemd/system/"
|
||||
elif [ -d /lib/systemd/system ];then
|
||||
xkeypath="/lib/systemd/system/"
|
||||
fi
|
||||
xhost +SI:localuser:root
|
||||
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
git clone -b kinto --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
cd xkeysnail
|
||||
git checkout kinto
|
||||
giturl=$(git ls-remote --get-url)
|
||||
if [ "$giturl" != "https://github.com/rbreaves/xkeysnail.git" ];then
|
||||
echo -e "\nreplacing xkeysnail with fork...\n"
|
||||
cd ..
|
||||
rm -rf ./xkeysnail
|
||||
git clone --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
git clone -b kinto --depth 10 https://github.com/rbreaves/xkeysnail.git
|
||||
cd xkeysnail
|
||||
git checkout kinto
|
||||
fi
|
||||
sudo pip3 install --upgrade .
|
||||
cd ..
|
||||
@@ -489,19 +574,42 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
echo -e "Run 'sudo pip3 install --upgrade .' to debug issue"
|
||||
exit 0
|
||||
fi
|
||||
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/xkeysnail.service.new
|
||||
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/limitedadmins.new
|
||||
sudo mv ./linux/xkeysnail.service.new "$xkeypath"xkeysnail.service && echo "Service file added to "$xkeypath"xkeysnail.service"
|
||||
if [[ $distro == "fedora" ]]; then
|
||||
echo "Changing SELinux context"
|
||||
sudo chcon -v --user=$selinuxuser --type=$selinuxtype "$xkeypath"xkeysnail.service
|
||||
fi
|
||||
sudo chown root:root ./linux/limitedadmins.new
|
||||
# Add a check here for xkeysnail path resolving
|
||||
sudo mv ./linux/limitedadmins.new /etc/sudoers.d/limitedadmins
|
||||
sudo chown -R root:root "$xkeypath"xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 "$xkeypath"xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Created soft symlink..." || echo "Failed to create soft symlink..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Created soft symlink for graphical target..." || echo "Failed to create soft symlink for graphical target..."
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl disable xkeysnail
|
||||
sudo systemctl stop xkeysnail
|
||||
if [ ! "$sysv" -eq 0 ];then
|
||||
# echo "Using systemd..."
|
||||
sed -i "s#{xkeysnail}#`which xkeysnail`#g" ./linux/xkeysnail.service.new
|
||||
sudo mv ./linux/xkeysnail.service.new "$xkeypath"xkeysnail.service && echo "Service file added to "$xkeypath"xkeysnail.service"
|
||||
|
||||
if [[ $distro == "fedora" ]]; then
|
||||
sudo cp "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Copied service file to system..." || echo "Failed to create copy..."
|
||||
sudo cp "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Copied service file to system for graphical target..." || echo "Failed to create copy for graphical target..."
|
||||
sudo chown -R root:root /etc/systemd/system/xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chown -R root:root /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 /etc/systemd/system/xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo chmod 644 /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
else
|
||||
sudo chown -R root:root "$xkeypath"xkeysnail.service && echo "Ownership set for root..." || echo "Failed to set ownership..."
|
||||
sudo chmod 644 "$xkeypath"xkeysnail.service && echo "Permissions set to 644..." || echo "Failed to set permissions..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/xkeysnail.service && echo "Created soft symlink..." || echo "Failed to create soft symlink..."
|
||||
sudo ln -s "$xkeypath"xkeysnail.service /etc/systemd/system/graphical.target.wants/xkeysnail.service && echo "Created soft symlink for graphical target..." || echo "Failed to create soft symlink for graphical target..."
|
||||
fi
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl disable xkeysnail
|
||||
sudo systemctl stop xkeysnail
|
||||
else
|
||||
# echo "Using sysvinit..."
|
||||
echo ""
|
||||
sudo cp ./linux/kinto-service.sh /etc/init.d/kinto
|
||||
sudo -E /etc/init.d/kinto stop
|
||||
mv /tmp/kinto.log /tmp/kinto.log.bak
|
||||
fi
|
||||
# sudo systemctl --state=not-found --all | grep xkeysnail
|
||||
# if [ "$distro" == "fedora" ];then
|
||||
# systemctl enable xkeysnail.service
|
||||
@@ -509,8 +617,9 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
# sudo systemctl enable xkeysnail.service
|
||||
# fi
|
||||
# sudo systemctl restart xkeysnail
|
||||
sudo pkill -f kintotray >/dev/null 2>&1
|
||||
if [[ $dename == "gnome" || $dename == "kde" ]];then
|
||||
sudo pkill -f kintotray &
|
||||
# >/dev/null 2>&1
|
||||
if [[ $dename == "kde" ]];then
|
||||
sed -i "s/systray = true/systray = false/g" ~/.config/kinto/initkb
|
||||
fi
|
||||
nohup python3 ~/.config/kinto/gui/kinto-gui.py >/dev/null 2>&1 &
|
||||
@@ -541,6 +650,24 @@ if ! [[ $1 == "5" || $1 == "uninstall" || $1 == "Uninstall" ]]; then
|
||||
echo -e "~/.config/kinto/gui/kinto-gui.py\n"
|
||||
echo -e "You can then either \e]8;;https://google.com\a\e[1m\e[36mG\033[0;91mo\033[0;93mo\e[1m\e[36mg\e[1m\e[32ml\033[0;91me\e[0m\e]8;;\a what dependencies you may be missing\nor \e]8;;https://github.com/rbreaves/kinto/issues/new\?assignees=rbreaves&labels=bug&template=bug_report.md&title=\aopen an issue ticket.\e]8;;\a\n"
|
||||
|
||||
# echo -e "\033[0;91mAfter the installer completes press Any key to re-apply your overlay (Super key) menu launcher.\e[0m\n"
|
||||
|
||||
# if [[ $dename == 'gnome' || $dename == 'budgie' ]];then
|
||||
# echo "GNOME: gsettings set org.gnome.mutter overlay-key 'super'"
|
||||
# elif [[ $dename == 'xfce' ]];then
|
||||
# echo "XFCE: xfconf-query --channel xfce4-keyboard-shortcuts --property \"/commands/custom/Super_L\" --create --type string --set \"$nlauncher\""
|
||||
# fi
|
||||
|
||||
# read -n 1 -s -r -p ""
|
||||
|
||||
# if [[ $dename == 'gnome' || $dename == 'budgie' ]];then
|
||||
# gsettings set org.gnome.mutter overlay-key 'super'
|
||||
# elif [[ $dename == 'xfce' ]];then
|
||||
# echo -e "\nSetting xfce4 launcher $nlauncher back to Super_L."
|
||||
# xfconf-query --channel xfce4-keyboard-shortcuts --property "/commands/custom/Super_L" --create --type string --set "$nlauncher" && echo "Success."
|
||||
# fi
|
||||
|
||||
|
||||
if [ "$distro" == "manjarolinux" ]; then
|
||||
echo "If you are using Manjaro and see an error about 'GLIBC_2.xx not found' appears then please update your system."
|
||||
echo "sudo pacman -Syu"
|
||||
|
Reference in New Issue
Block a user