Compare commits
1 Commits
master
..
6ae58df8cb
| Author | SHA1 | Date | |
|---|---|---|---|
|
6ae58df8cb
|
@@ -1,78 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleAllowMixedLocalizations</key>
|
|
||||||
<true/>
|
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
|
||||||
<string>en</string>
|
|
||||||
<key>CFBundleExecutable</key>
|
|
||||||
<string>applet</string>
|
|
||||||
<key>CFBundleIconFile</key>
|
|
||||||
<string>applet</string>
|
|
||||||
<key>CFBundleIconName</key>
|
|
||||||
<string>applet</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>com.apple.ScriptEditor.id.Copy-Firefox-Link--Jira</string>
|
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
|
||||||
<string>6.0</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>Copy Firefox Link (Jira)</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>1.0</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>aplt</string>
|
|
||||||
<key>LSMinimumSystemVersionByArchitecture</key>
|
|
||||||
<dict>
|
|
||||||
<key>x86_64</key>
|
|
||||||
<string>10.6</string>
|
|
||||||
</dict>
|
|
||||||
<key>LSRequiresCarbon</key>
|
|
||||||
<true/>
|
|
||||||
<key>NSAppleEventsUsageDescription</key>
|
|
||||||
<string>This script needs to control other applications to run.</string>
|
|
||||||
<key>NSAppleMusicUsageDescription</key>
|
|
||||||
<string>This script needs access to your music to run.</string>
|
|
||||||
<key>NSCalendarsUsageDescription</key>
|
|
||||||
<string>This script needs access to your calendars to run.</string>
|
|
||||||
<key>NSCameraUsageDescription</key>
|
|
||||||
<string>This script needs access to your camera to run.</string>
|
|
||||||
<key>NSContactsUsageDescription</key>
|
|
||||||
<string>This script needs access to your contacts to run.</string>
|
|
||||||
<key>NSHomeKitUsageDescription</key>
|
|
||||||
<string>This script needs access to your HomeKit Home to run.</string>
|
|
||||||
<key>NSMicrophoneUsageDescription</key>
|
|
||||||
<string>This script needs access to your microphone to run.</string>
|
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
|
||||||
<string>This script needs access to your photos to run.</string>
|
|
||||||
<key>NSRemindersUsageDescription</key>
|
|
||||||
<string>This script needs access to your reminders to run.</string>
|
|
||||||
<key>NSSiriUsageDescription</key>
|
|
||||||
<string>This script needs access to Siri to run.</string>
|
|
||||||
<key>NSSystemAdministrationUsageDescription</key>
|
|
||||||
<string>This script needs access to administer this system to run.</string>
|
|
||||||
<key>OSAAppletShowStartupScreen</key>
|
|
||||||
<false/>
|
|
||||||
<key>WindowState</key>
|
|
||||||
<dict>
|
|
||||||
<key>bundleDividerCollapsed</key>
|
|
||||||
<true/>
|
|
||||||
<key>bundlePositionOfDivider</key>
|
|
||||||
<real>0.0</real>
|
|
||||||
<key>dividerCollapsed</key>
|
|
||||||
<false/>
|
|
||||||
<key>eventLogLevel</key>
|
|
||||||
<integer>2</integer>
|
|
||||||
<key>name</key>
|
|
||||||
<string>ScriptWindowState</string>
|
|
||||||
<key>positionOfDivider</key>
|
|
||||||
<real>394</real>
|
|
||||||
<key>savedFrame</key>
|
|
||||||
<string>952 453 700 682 0 0 2560 1409 </string>
|
|
||||||
<key>selectedTab</key>
|
|
||||||
<string>result</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
APPLaplt
|
|
||||||
|
Before Width: | Height: | Size: 362 B |
@@ -1,5 +0,0 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf2865
|
|
||||||
\cocoatextscaling0\cocoaplatform0{\fonttbl}
|
|
||||||
{\colortbl;\red255\green255\blue255;}
|
|
||||||
{\*\expandedcolortbl;;}
|
|
||||||
}
|
|
||||||
@@ -1,192 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>files</key>
|
|
||||||
<dict>
|
|
||||||
<key>Resources/Assets.car</key>
|
|
||||||
<data>
|
|
||||||
OdbufcoyP2ZXC+wmwYcwMi/2x24=
|
|
||||||
</data>
|
|
||||||
<key>Resources/Scripts/main.scpt</key>
|
|
||||||
<data>
|
|
||||||
c++jyUmQRxdpGX36L8PJaNpf6uM=
|
|
||||||
</data>
|
|
||||||
<key>Resources/applet.icns</key>
|
|
||||||
<data>
|
|
||||||
sINd6lbiqHD5dL8c6u79cFvVXhw=
|
|
||||||
</data>
|
|
||||||
<key>Resources/applet.rsrc</key>
|
|
||||||
<data>
|
|
||||||
DlWDU4NYiJFhmwpseexPiRYHzFI=
|
|
||||||
</data>
|
|
||||||
<key>Resources/description.rtfd/TXT.rtf</key>
|
|
||||||
<data>
|
|
||||||
C1nXIy6FYUr4wNNlSEP/8NzzT/E=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>files2</key>
|
|
||||||
<dict>
|
|
||||||
<key>Resources/Assets.car</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
OdbufcoyP2ZXC+wmwYcwMi/2x24=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
cVUhSsEaVhMGFs9io544X4XEevDHVtRiVGUTdZ4ZHX4=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Resources/Scripts/main.scpt</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
c++jyUmQRxdpGX36L8PJaNpf6uM=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
o+Lp+bYlQlPNZa8JmZ6wdvY55TCtjUxce100Dttj5vY=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Resources/applet.icns</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
sINd6lbiqHD5dL8c6u79cFvVXhw=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
J7weZ6vlnv9r32tS5HFcyuPXl2StdDnfepLxAixlryk=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Resources/applet.rsrc</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
DlWDU4NYiJFhmwpseexPiRYHzFI=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
/UdIZRcpe3tND6vnHQP/IG8Vvt3+ZFQS5SQ+h1kescY=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Resources/description.rtfd/TXT.rtf</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash</key>
|
|
||||||
<data>
|
|
||||||
C1nXIy6FYUr4wNNlSEP/8NzzT/E=
|
|
||||||
</data>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
Y3Q9y0mIEZh55w+oHoEyN1W1UzIxrILMub7rktKsd1I=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>rules</key>
|
|
||||||
<dict>
|
|
||||||
<key>^Resources/</key>
|
|
||||||
<true/>
|
|
||||||
<key>^Resources/.*\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>optional</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1100</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/Base\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1010</real>
|
|
||||||
</dict>
|
|
||||||
<key>^version.plist$</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
<key>rules2</key>
|
|
||||||
<dict>
|
|
||||||
<key>.*\.dSYM($|/)</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>11</real>
|
|
||||||
</dict>
|
|
||||||
<key>^(.*/)?\.DS_Store$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>2000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
|
||||||
<dict>
|
|
||||||
<key>nested</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>10</real>
|
|
||||||
</dict>
|
|
||||||
<key>^.*</key>
|
|
||||||
<true/>
|
|
||||||
<key>^Info\.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^PkgInfo$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/.*\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>optional</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1100</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Resources/Base\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1010</real>
|
|
||||||
</dict>
|
|
||||||
<key>^[^/]+$</key>
|
|
||||||
<dict>
|
|
||||||
<key>nested</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>10</real>
|
|
||||||
</dict>
|
|
||||||
<key>^embedded\.provisionprofile$</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^version\.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
DIR=$(dirname "$0")
|
|
||||||
|
|
||||||
for app in "$DIR"/*.app; do
|
|
||||||
echo "Installing $(basename "$app")..."
|
|
||||||
cp -rv "$app" "$HOME"/Applications/
|
|
||||||
xattr -dr com.apple.quarantine "/Applications/$(basename "$app")"
|
|
||||||
done
|
|
||||||
|
|
||||||
open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
bash
|
|
||||||
coreutils
|
|
||||||
dockutil
|
|
||||||
duti
|
|
||||||
fastfetch
|
|
||||||
ffmpeg
|
|
||||||
git
|
|
||||||
gnu-sed
|
|
||||||
htop
|
|
||||||
imagemagick
|
|
||||||
ipcalc
|
|
||||||
iperf3
|
|
||||||
mtr
|
|
||||||
neovim
|
|
||||||
parallel
|
|
||||||
pinentry-mac
|
|
||||||
ranger
|
|
||||||
ripgrep
|
|
||||||
rsync
|
|
||||||
taplo
|
|
||||||
telnet
|
|
||||||
texinfo
|
|
||||||
tmux
|
|
||||||
tree
|
|
||||||
uv
|
|
||||||
watch
|
|
||||||
wget
|
|
||||||
zoxide
|
|
||||||
zsh
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
alacritty
|
|
||||||
brave-browser
|
|
||||||
chatterino
|
|
||||||
dbeaver-community
|
|
||||||
discord
|
|
||||||
displaylink
|
|
||||||
docker
|
|
||||||
excalidrawz
|
|
||||||
firefox
|
|
||||||
font-hack-nerd-font
|
|
||||||
karabiner-elements
|
|
||||||
keepassxc
|
|
||||||
megasync
|
|
||||||
microsoft-teams
|
|
||||||
mpv
|
|
||||||
obs
|
|
||||||
obsidian
|
|
||||||
platypus
|
|
||||||
podman-desktop
|
|
||||||
postman
|
|
||||||
qbittorrent
|
|
||||||
rustdesk
|
|
||||||
scroll-reverser
|
|
||||||
signal
|
|
||||||
slack
|
|
||||||
spotify
|
|
||||||
telegram
|
|
||||||
the-unarchiver
|
|
||||||
thunderbird
|
|
||||||
transfer
|
|
||||||
twingate
|
|
||||||
visual-studio-code
|
|
||||||
vlc
|
|
||||||
winbox
|
|
||||||
wireshark
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
example
|
|
||||||
displaylink
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
# use_thin_strokes = true
|
|
||||||
[env]
|
|
||||||
TERM = "xterm-256color"
|
|
||||||
|
|
||||||
[general]
|
|
||||||
import = ["~/.config/alacritty/dracula.toml"]
|
|
||||||
|
|
||||||
[keyboard]
|
|
||||||
bindings = [
|
|
||||||
{ key = "F", mods = "Control", action = "SearchForward" },
|
|
||||||
{ key = "Left", mods = "Alt", chars = "\u001BB" },
|
|
||||||
{ key = "Return", mods = "Control|Shift", action = "SpawnNewInstance" },
|
|
||||||
{ key = "Right", mods = "Alt", chars = "\u001BF" },
|
|
||||||
{ key = "Space", mods = "Control", chars = "\u0000" },
|
|
||||||
{ key = "V", mods = "Control|Shift", action = "Paste" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[window]
|
|
||||||
opacity = 0.95
|
|
||||||
|
|
||||||
[font]
|
|
||||||
size = 20
|
|
||||||
|
|
||||||
# [font.normal]
|
|
||||||
# family = "Terminess Nerd Font"
|
|
||||||
# style = "Regular"
|
|
||||||
|
|
||||||
# # [font.bold]
|
|
||||||
# # family = "Teminess Nerd Font"
|
|
||||||
# # style = "Bold"
|
|
||||||
|
|
||||||
# [font.bold_italic]
|
|
||||||
# family = "Terminess Nerd Font"
|
|
||||||
# style = "Bold Italic"
|
|
||||||
|
|
||||||
# [font.italic]
|
|
||||||
# family = "Terminess Nerd Font"
|
|
||||||
# style = "Italic"
|
|
||||||
|
|
||||||
|
|
||||||
# Comic code
|
|
||||||
[font.normal]
|
|
||||||
family = "Comic Code Ligatures"
|
|
||||||
style = "Regular"
|
|
||||||
|
|
||||||
# [font.bold]
|
|
||||||
# family = "Teminess Nerd Font"
|
|
||||||
# style = "Bold"
|
|
||||||
|
|
||||||
[font.bold_italic]
|
|
||||||
family = "Comic Code"
|
|
||||||
style = "Bold Italic"
|
|
||||||
|
|
||||||
[font.italic]
|
|
||||||
family = "Comic Code"
|
|
||||||
style = "Italic"
|
|
||||||
|
|
||||||
[font.offset]
|
|
||||||
x = 0
|
|
||||||
y = -6
|
|
||||||
|
|
||||||
[font.glyph_offset]
|
|
||||||
x = 0
|
|
||||||
y = -2
|
|
||||||
|
|
||||||
# [mouse.hints]
|
|
||||||
# modifiers = "Command"
|
|
||||||
|
|
||||||
# [mouse.hints.launcher]
|
|
||||||
# program = "open"
|
|
||||||
|
|
||||||
[selection]
|
|
||||||
save_to_clipboard = true
|
|
||||||
|
|
||||||
# Unused
|
|
||||||
[colors.bright]
|
|
||||||
black = "0x7f7f7f"
|
|
||||||
blue = "0x5c5cff"
|
|
||||||
cyan = "0x00ffff"
|
|
||||||
green = "0x00ff00"
|
|
||||||
magenta = "0xff00ff"
|
|
||||||
red = "0xff0000"
|
|
||||||
white = "0xffffff"
|
|
||||||
yellow = "0xffff00"
|
|
||||||
|
|
||||||
[colors.normal]
|
|
||||||
black = "0x000000"
|
|
||||||
blue = "0x0000ee"
|
|
||||||
cyan = "0x00cdcd"
|
|
||||||
green = "0x00cd00"
|
|
||||||
magenta = "0xcd00cd"
|
|
||||||
red = "0xcd0000"
|
|
||||||
white = "0xe5e5e5"
|
|
||||||
yellow = "0xcdcd00"
|
|
||||||
|
|
||||||
[colors.primary]
|
|
||||||
background = "0x000000"
|
|
||||||
foreground = "0xffffff"
|
|
||||||
|
|
||||||
[colors.search.focused_match]
|
|
||||||
background = "#ab4642"
|
|
||||||
foreground = "#181818"
|
|
||||||
|
|
||||||
# [colors.search.footer_bar]
|
|
||||||
# background = "#262626"
|
|
||||||
# foreground = "#d0d0d0"
|
|
||||||
|
|
||||||
[colors.search.matches]
|
|
||||||
background = "#f4bf75"
|
|
||||||
foreground = "#181818"
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
# Dracula theme for Alacritty
|
|
||||||
# https://draculatheme.com/alacritty
|
|
||||||
#
|
|
||||||
# Color palette
|
|
||||||
# https://spec.draculatheme.com
|
|
||||||
#
|
|
||||||
# Instructions
|
|
||||||
# https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd
|
|
||||||
|
|
||||||
[colors.primary]
|
|
||||||
|
|
||||||
background = "#282a36"
|
|
||||||
foreground = "#f8f8f2"
|
|
||||||
bright_foreground = "#ffffff"
|
|
||||||
|
|
||||||
[colors.cursor]
|
|
||||||
|
|
||||||
text = "#282a36"
|
|
||||||
cursor = "#f8f8f2"
|
|
||||||
|
|
||||||
[colors.vi_mode_cursor]
|
|
||||||
|
|
||||||
text = "CellBackground"
|
|
||||||
cursor = "CellForeground"
|
|
||||||
|
|
||||||
[colors.selection]
|
|
||||||
|
|
||||||
text = "CellForeground"
|
|
||||||
background = "#44475a"
|
|
||||||
|
|
||||||
[colors.normal]
|
|
||||||
|
|
||||||
black = "#21222c"
|
|
||||||
red = "#ff5555"
|
|
||||||
green = "#50fa7b"
|
|
||||||
yellow = "#f1fa8c"
|
|
||||||
blue = "#bd93f9"
|
|
||||||
magenta = "#ff79c6"
|
|
||||||
cyan = "#8be9fd"
|
|
||||||
white = "#f8f8f2"
|
|
||||||
|
|
||||||
[colors.bright]
|
|
||||||
|
|
||||||
black = "#6272a4"
|
|
||||||
red = "#ff6e6e"
|
|
||||||
green = "#69ff94"
|
|
||||||
yellow = "#ffffa5"
|
|
||||||
blue = "#d6acff"
|
|
||||||
magenta = "#ff92df"
|
|
||||||
cyan = "#a4ffff"
|
|
||||||
white = "#ffffff"
|
|
||||||
|
|
||||||
[colors.search.matches]
|
|
||||||
|
|
||||||
foreground = "#44475a"
|
|
||||||
background = "#50fa7b"
|
|
||||||
|
|
||||||
[colors.search.focused_match]
|
|
||||||
|
|
||||||
foreground = "#44475a"
|
|
||||||
background = "#ffb86c"
|
|
||||||
|
|
||||||
[colors.footer_bar]
|
|
||||||
|
|
||||||
background = "#282a36"
|
|
||||||
foreground = "#f8f8f2"
|
|
||||||
|
|
||||||
[colors.hints.start]
|
|
||||||
|
|
||||||
foreground = "#282a36"
|
|
||||||
background = "#f1fa8c"
|
|
||||||
|
|
||||||
[colors.hints.end]
|
|
||||||
|
|
||||||
foreground = "#f1fa8c"
|
|
||||||
background = "#282a36"
|
|
||||||
@@ -1,248 +0,0 @@
|
|||||||
[global]
|
|
||||||
font = Mono 16
|
|
||||||
|
|
||||||
# Allow a small subset of html markup:
|
|
||||||
# <b>bold</b>
|
|
||||||
# <i>italic</i>
|
|
||||||
# <s>strikethrough</s>
|
|
||||||
# <u>underline</u>
|
|
||||||
#
|
|
||||||
# For a complete reference see
|
|
||||||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
|
||||||
# If markup is not allowed, those tags will be stripped out of the
|
|
||||||
# message.
|
|
||||||
allow_markup = yes
|
|
||||||
|
|
||||||
# The format of the message. Possible variables are:
|
|
||||||
# %a appname
|
|
||||||
# %s summary
|
|
||||||
# %b body
|
|
||||||
# %i iconname (including its path)
|
|
||||||
# %I iconname (without its path)
|
|
||||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
|
||||||
# Markup is allowed
|
|
||||||
format = "<b>%s</b>\n%b"
|
|
||||||
|
|
||||||
# Sort messages by urgency.
|
|
||||||
sort = no #yes
|
|
||||||
|
|
||||||
# Show how many messages are currently hidden (because of geometry).
|
|
||||||
indicate_hidden = no
|
|
||||||
|
|
||||||
# Alignment of message text.
|
|
||||||
# Possible values are "left", "center" and "right".
|
|
||||||
alignment = left
|
|
||||||
|
|
||||||
# The frequency with which text that is longer than the notification
|
|
||||||
# window allows bounces back and forth.
|
|
||||||
# This option conflicts with "word_wrap".
|
|
||||||
# Set to 0 to disable.
|
|
||||||
bounce_freq = 0
|
|
||||||
|
|
||||||
# Show age of message if message is older than show_age_threshold
|
|
||||||
# seconds.
|
|
||||||
# Set to -1 to disable.
|
|
||||||
show_age_threshold = -1 #60
|
|
||||||
|
|
||||||
# Split notifications into multiple lines if they don't fit into
|
|
||||||
# geometry.
|
|
||||||
word_wrap = yes
|
|
||||||
|
|
||||||
# Ignore newlines '\n' in notifications.
|
|
||||||
ignore_newline = no
|
|
||||||
|
|
||||||
|
|
||||||
# The geometry of the window:
|
|
||||||
# [{width}]x{height}[+/-{x}+/-{y}]
|
|
||||||
# The geometry of the message window.
|
|
||||||
# The height is measured in number of notifications everything else
|
|
||||||
# in pixels. If the width is omitted but the height is given
|
|
||||||
# ("-geometry x2"), the message window expands over the whole screen
|
|
||||||
# (dmenu-like). If width is 0, the window expands to the longest
|
|
||||||
# message displayed. A positive x is measured from the left, a
|
|
||||||
# negative from the right side of the screen. Y is measured from
|
|
||||||
# the top and down respectively.
|
|
||||||
# The width can be negative. In this case the actual width is the
|
|
||||||
# screen width minus the width defined in within the geometry option.
|
|
||||||
geometry = "400x10-40+30"
|
|
||||||
|
|
||||||
# Shrink window if it's smaller than the width. Will be ignored if
|
|
||||||
# width is 0.
|
|
||||||
shrink = no
|
|
||||||
|
|
||||||
# The transparency of the window. Range: [0; 100].
|
|
||||||
# This option will only work if a compositing window manager is
|
|
||||||
# present (e.g. xcompmgr, compiz, etc.).
|
|
||||||
transparency = 0
|
|
||||||
|
|
||||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
|
||||||
# for longer than idle_threshold seconds.
|
|
||||||
# Set to 0 to disable.
|
|
||||||
idle_threshold = 120
|
|
||||||
|
|
||||||
# Which monitor should the notifications be displayed on.
|
|
||||||
monitor = 0
|
|
||||||
|
|
||||||
# Display notification on focused monitor. Possible modes are:
|
|
||||||
# mouse: follow mouse pointer
|
|
||||||
# keyboard: follow window with keyboard focus
|
|
||||||
# none: don't follow anything
|
|
||||||
#
|
|
||||||
# "keyboard" needs a window manager that exports the
|
|
||||||
# _NET_ACTIVE_WINDOW property.
|
|
||||||
# This should be the case for almost all modern window managers.
|
|
||||||
#
|
|
||||||
# If this option is set to mouse or keyboard, the monitor option
|
|
||||||
# will be ignored.
|
|
||||||
follow = mouse
|
|
||||||
|
|
||||||
# Should a notification popped up from history be sticky or timeout
|
|
||||||
# as if it would normally do.
|
|
||||||
sticky_history = no # yes
|
|
||||||
|
|
||||||
# Maximum amount of notifications kept in history
|
|
||||||
history_length = 20
|
|
||||||
|
|
||||||
# Display indicators for URLs (U) and actions (A).
|
|
||||||
show_indicators = no
|
|
||||||
|
|
||||||
# The height of a single line. If the height is smaller than the
|
|
||||||
# font height, it will get raised to the font height.
|
|
||||||
# This adds empty space above and under the text.
|
|
||||||
line_height = 0
|
|
||||||
|
|
||||||
# Draw a line of "separator_height" pixel height between two
|
|
||||||
# notifications.
|
|
||||||
# Set to 0 to disable.
|
|
||||||
separator_height = 2
|
|
||||||
|
|
||||||
# Padding between text and separator.
|
|
||||||
padding = 8
|
|
||||||
|
|
||||||
# Horizontal padding.
|
|
||||||
horizontal_padding = 8
|
|
||||||
|
|
||||||
# Define a color for the separator.
|
|
||||||
# possible values are:
|
|
||||||
# * auto: dunst tries to find a color fitting to the background;
|
|
||||||
# * foreground: use the same color as the foreground;
|
|
||||||
# * frame: use the same color as the frame;
|
|
||||||
# * anything else will be interpreted as a X color.
|
|
||||||
separator_color = frame
|
|
||||||
|
|
||||||
# Print a notification on startup.
|
|
||||||
# This is mainly for error detection, since dbus (re-)starts dunst
|
|
||||||
# automatically after a crash.
|
|
||||||
startup_notification = false
|
|
||||||
|
|
||||||
# dmenu path.
|
|
||||||
dmenu = /usr/bin/dmenu -p dunst:
|
|
||||||
|
|
||||||
# Browser for opening urls in context menu.
|
|
||||||
browser = /usr/bin/firefox -new-tab
|
|
||||||
|
|
||||||
# Align icons left/right/off
|
|
||||||
icon_position = off
|
|
||||||
|
|
||||||
# Paths to default icons.
|
|
||||||
icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
|
||||||
|
|
||||||
[frame]
|
|
||||||
width = 1
|
|
||||||
color = "#424242"
|
|
||||||
|
|
||||||
[shortcuts]
|
|
||||||
|
|
||||||
# Shortcuts are specified as [modifier+][modifier+]...key
|
|
||||||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
|
|
||||||
# "mod3" and "mod4" (windows-key).
|
|
||||||
# Xev might be helpful to find names for keys.
|
|
||||||
|
|
||||||
# Close notification.
|
|
||||||
close = ctrl+space
|
|
||||||
|
|
||||||
# Close all notifications.
|
|
||||||
close_all = ctrl+shift+space
|
|
||||||
|
|
||||||
# Redisplay last message(s).
|
|
||||||
# On the US keyboard layout "grave" is normally above TAB and left
|
|
||||||
# of "1".
|
|
||||||
history = ctrl+grave
|
|
||||||
|
|
||||||
# Context menu.
|
|
||||||
context = ctrl+shift+period
|
|
||||||
|
|
||||||
[urgency_low]
|
|
||||||
# IMPORTANT: colors have to be defined in quotation marks.
|
|
||||||
# Otherwise the "#" and following would be interpreted as a comment.
|
|
||||||
background = "#222222"
|
|
||||||
#foreground = ${xrdb:color6}
|
|
||||||
foreground = "#dfdfdf"
|
|
||||||
timeout = 5
|
|
||||||
|
|
||||||
[urgency_normal]
|
|
||||||
background = "#222222"
|
|
||||||
#foreground = "${xrdb:color6}
|
|
||||||
foreground = "#dfdfdf"
|
|
||||||
timeout = 5
|
|
||||||
|
|
||||||
[urgency_critical]
|
|
||||||
background = "#222222"
|
|
||||||
#foreground = ${xrdb:color6}
|
|
||||||
foreground = "#dfdfdf"
|
|
||||||
timeout = 5
|
|
||||||
|
|
||||||
# Every section that isn't one of the above is interpreted as a rules to
|
|
||||||
# override settings for certain messages.
|
|
||||||
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
|
||||||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
|
||||||
# "background", "new_icon" and "format".
|
|
||||||
# Shell-like globbing will get expanded.
|
|
||||||
#
|
|
||||||
# SCRIPTING
|
|
||||||
# You can specify a script that gets run when the rule matches by
|
|
||||||
# setting the "script" option.
|
|
||||||
# The script will be called as follows:
|
|
||||||
# script appname summary body icon urgency
|
|
||||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
|
||||||
#
|
|
||||||
# NOTE: if you don't want a notification to be displayed, set the format
|
|
||||||
# to "".
|
|
||||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
|
||||||
# to find fitting options for rules.
|
|
||||||
|
|
||||||
#[espeak]
|
|
||||||
# summary = "*"
|
|
||||||
# script = dunst_espeak.sh
|
|
||||||
|
|
||||||
#[script-test]
|
|
||||||
# summary = "*script*"
|
|
||||||
# script = dunst_test.sh
|
|
||||||
|
|
||||||
#[ignore]
|
|
||||||
# # This notification will not be displayed
|
|
||||||
# summary = "foobar"
|
|
||||||
# format = ""
|
|
||||||
|
|
||||||
#[signed_on]
|
|
||||||
# appname = Pidgin
|
|
||||||
# summary = "*signed on*"
|
|
||||||
# urgency = low
|
|
||||||
#
|
|
||||||
#[signed_off]
|
|
||||||
# appname = Pidgin
|
|
||||||
# summary = *signed off*
|
|
||||||
# urgency = low
|
|
||||||
#
|
|
||||||
#[says]
|
|
||||||
# appname = Pidgin
|
|
||||||
# summary = *says*
|
|
||||||
# urgency = critical
|
|
||||||
#
|
|
||||||
#[twitter]
|
|
||||||
# appname = Pidgin
|
|
||||||
# summary = *twitter.com*
|
|
||||||
# urgency = normal
|
|
||||||
#
|
|
||||||
# vim: ft=cfg
|
|
||||||
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# CONFIGURATION:
|
|
||||||
# Default configuration to DROP
|
|
||||||
iptables -P INPUT DROP
|
|
||||||
iptables -P FORWARD DROP
|
|
||||||
iptables -P OUTPUT DROP
|
|
||||||
|
|
||||||
# Accept on localhost
|
|
||||||
# iptables -A INPUT -i lo -j ACCEPT
|
|
||||||
# iptables -A OUTPUT -o lo -j ACCEPT
|
|
||||||
|
|
||||||
# Accept outgoing network
|
|
||||||
iptables -A OUTPUT -o eth0 -j ACCEPT
|
|
||||||
|
|
||||||
# Enable SSH (to that machine)
|
|
||||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --sport 22 -j ACCEPT
|
|
||||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT
|
|
||||||
|
|
||||||
# Enable INZ
|
|
||||||
#iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 1285 -j ACCEPT
|
|
||||||
#iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 3000 -j ACCEPT
|
|
||||||
#iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 8080 -j ACCEPT
|
|
||||||
|
|
||||||
#Enable CSGO
|
|
||||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 27015 -j ACCEPT
|
|
||||||
iptables -A INPUT -p tcp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 27020 -j ACCEPT
|
|
||||||
#iptables -A INPUT -p udp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 27015 -j ACCEPT
|
|
||||||
#iptables -A INPUT -p udp -m state --state NEW -m tcp -s 192.168.0.0/24 --dport 27020 -j ACCEPT
|
|
||||||
|
|
||||||
# Allow established sessions to receive traffic
|
|
||||||
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
|
||||||
# iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
|
|
||||||
|
|
||||||
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
|
|
||||||
iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP
|
|
||||||
# END OF CONFIG
|
|
||||||
|
|
||||||
# END CONFIGURATION:
|
|
||||||
# END OF CONFIGURATION
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"title":"Mouse keys ambidextrous - yorune","rules":[{"description":"Mouse keys Ambidextrous","manipulators":[{"from":{"key_code":"k","modifiers":{"mandatory":["fn"],"optional":["any"]}},"to":[{"mouse_key":{"vertical_wheel":-64}}],"type":"basic"},{"from":{"key_code":"j","modifiers":{"mandatory":["fn"],"optional":["any"]}},"to":[{"mouse_key":{"vertical_wheel":64}}],"type":"basic"},{"from":{"key_code":"h","modifiers":{"mandatory":["fn"],"optional":["any"]}},"to":[{"mouse_key":{"horizontal_wheel":64}}],"type":"basic"},{"from":{"key_code":"l","modifiers":{"mandatory":["fn"],"optional":["any"]}},"to":[{"mouse_key":{"horizontal_wheel":-64}}],"type":"basic"},{"from":{"key_code":"u","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"pointing_button":"button1"}],"type":"basic"},{"from":{"key_code":"o","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"pointing_button":"button2"}],"type":"basic"},{"from":{"key_code":"h","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"mouse_key":{"x":-1018}}],"type":"basic"},{"from":{"key_code":"j","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"mouse_key":{"y":1018}}],"type":"basic"},{"from":{"key_code":"k","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"mouse_key":{"y":-1018}}],"type":"basic"},{"from":{"key_code":"l","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"mouse_key":{"x":1018}}],"type":"basic"},{"from":{"key_code":"q","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"pointing_button":"button1"}],"type":"basic"},{"from":{"key_code":"e","modifiers":{"mandatory":["left_control","left_shift"],"optional":["any"]}},"to":[{"pointing_button":"button2"}],"type":"basic"}]}]}
|
|
||||||
@@ -1,449 +0,0 @@
|
|||||||
{
|
|
||||||
"global": { "show_in_menu_bar": false },
|
|
||||||
"profiles": [
|
|
||||||
{
|
|
||||||
"complex_modifications": {
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"description": "Maps F5 to ⌘⇧M in MS Teams or ⌘⇧A to ZOOM. F5 has an MIC symbol on recent MacOS keyboards.",
|
|
||||||
"manipulators": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f5" },
|
|
||||||
"to": [{ "shell_command": "if [ $(ps aux | grep -v grep | grep -ci \"Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper.app\") -gt 0 ]; then osascript -e 'activate application id \"com.microsoft.teams\"' -e 'tell application \"System Events\" to keystroke \"m\" using {command down, shift down}'; fi & if [ $(ps aux | grep -v grep | grep -ci \"zoom.us.app/Contents/Frameworks/cpthost.app/Contents/MacOS/CptHost\") -gt 0 ]; then osascript -e 'activate application id \"us.zoom.xos\"' -e 'tell application \"System Events\" to keystroke \"a\" using {command down, shift down}'; fi" }],
|
|
||||||
"type": "basic"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Change right_command+hjkl to arrow keys",
|
|
||||||
"manipulators": [
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "h",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["right_command"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [{ "key_code": "left_arrow" }],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "j",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["right_command"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [{ "key_code": "down_arrow" }],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "k",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["right_command"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [{ "key_code": "up_arrow" }],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "l",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["right_command"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [{ "key_code": "right_arrow" }],
|
|
||||||
"type": "basic"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"devices": [
|
|
||||||
{
|
|
||||||
"fn_function_keys": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f1" },
|
|
||||||
"to": [{ "consumer_key_code": "mute" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f2" },
|
|
||||||
"to": [{ "consumer_key_code": "volume_decrement" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f3" },
|
|
||||||
"to": [{ "consumer_key_code": "volume_increment" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f10" },
|
|
||||||
"to": [{ "consumer_key_code": "play_or_pause" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f11" },
|
|
||||||
"to": [{ "consumer_key_code": "display_brightness_decrement" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f12" },
|
|
||||||
"to": [{ "consumer_key_code": "display_brightness_increment" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 591,
|
|
||||||
"vendor_id": 1452
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "caps_lock" },
|
|
||||||
"to": [{ "key_code": "escape" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "down_arrow" },
|
|
||||||
"to": [{ "pointing_button": "button32" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "escape" },
|
|
||||||
"to": [{ "key_code": "grave_accent_and_tilde" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_arrow" },
|
|
||||||
"to": [{ "pointing_button": "button32" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_command" },
|
|
||||||
"to": [{ "key_code": "left_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_arrow" },
|
|
||||||
"to": [{ "pointing_button": "button32" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "up_arrow" },
|
|
||||||
"to": [{ "pointing_button": "button32" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 631,
|
|
||||||
"vendor_id": 1452
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "non_us_backslash" },
|
|
||||||
"to": [{ "key_code": "grave_accent_and_tilde" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 6194,
|
|
||||||
"vendor_id": 4152
|
|
||||||
},
|
|
||||||
"ignore": true,
|
|
||||||
"manipulate_caps_lock_led": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fn_function_keys": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f1" },
|
|
||||||
"to": [{ "key_code": "f1" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 615,
|
|
||||||
"vendor_id": 76
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_pointing_device": true,
|
|
||||||
"product_id": 6194,
|
|
||||||
"vendor_id": 4152
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "pointing_button": "button5" },
|
|
||||||
"to": [{ "apple_vendor_keyboard_key_code": "launchpad" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 30264,
|
|
||||||
"vendor_id": 3141
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "escape" },
|
|
||||||
"to": [{ "key_code": "grave_accent_and_tilde" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_command" },
|
|
||||||
"to": [{ "key_code": "left_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": { "is_keyboard": true },
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 34056,
|
|
||||||
"vendor_id": 3141
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_command" },
|
|
||||||
"to": [{ "key_code": "left_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "left_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 615,
|
|
||||||
"vendor_id": 1452
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "consumer_key_code": "eject" },
|
|
||||||
"to": [{ "consumer_key_code": "al_terminal_lock_or_screensaver" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 668,
|
|
||||||
"vendor_id": 76
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fn_function_keys": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f1" },
|
|
||||||
"to": [{ "key_code": "f1" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f2" },
|
|
||||||
"to": [{ "key_code": "f2" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f3" },
|
|
||||||
"to": [{ "key_code": "f3" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f4" },
|
|
||||||
"to": [{ "key_code": "f4" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f5" },
|
|
||||||
"to": [{ "key_code": "f5" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f6" },
|
|
||||||
"to": [{ "key_code": "f13" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f7" },
|
|
||||||
"to": [{ "key_code": "f7" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f8" },
|
|
||||||
"to": [{ "key_code": "f8" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f9" },
|
|
||||||
"to": [{ "key_code": "f9" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f10" },
|
|
||||||
"to": [{ "consumer_key_code": "play_or_pause" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f11" },
|
|
||||||
"to": [{ "consumer_key_code": "mute" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f12" },
|
|
||||||
"to": [{ "consumer_key_code": "volume_increment" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 45929,
|
|
||||||
"vendor_id": 1133
|
|
||||||
},
|
|
||||||
"manipulate_caps_lock_led": false,
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_option" },
|
|
||||||
"to": [{ "key_code": "right_command" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fn_function_keys": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f1" },
|
|
||||||
"to": [{ "key_code": "f1" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f2" },
|
|
||||||
"to": [{ "key_code": "f2" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f11" },
|
|
||||||
"to": [{ "key_code": "f11" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 785,
|
|
||||||
"vendor_id": 13364
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "grave_accent_and_tilde" },
|
|
||||||
"to": [{ "key_code": "non_us_backslash" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_control" },
|
|
||||||
"to": [{ "key_code": "grave_accent_and_tilde" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 666,
|
|
||||||
"vendor_id": 76
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 666,
|
|
||||||
"vendor_id": 1452
|
|
||||||
},
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "right_command" },
|
|
||||||
"to": [{ "key_code": "right_option" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"identifiers": {
|
|
||||||
"is_keyboard": true,
|
|
||||||
"product_id": 34304,
|
|
||||||
"vendor_id": 1452
|
|
||||||
},
|
|
||||||
"ignore": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"fn_function_keys": [
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f4" },
|
|
||||||
"to": [{ "apple_vendor_keyboard_key_code": "mission_control" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "f5" },
|
|
||||||
"to": [{ "key_code": "f5" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "Default profile",
|
|
||||||
"selected": true,
|
|
||||||
"simple_modifications": [
|
|
||||||
{
|
|
||||||
"from": { "consumer_key_code": "eject" },
|
|
||||||
"to": [{ "consumer_key_code": "al_terminal_lock_or_screensaver" }]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": { "key_code": "caps_lock" },
|
|
||||||
"to": [{ "key_code": "escape" }]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"virtual_hid_keyboard": {
|
|
||||||
"country_code": 0,
|
|
||||||
"keyboard_type_v2": "iso"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,206 +0,0 @@
|
|||||||
{
|
|
||||||
"title": "Mouse keys ambidextrous - yorune",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"description": "Mouse keys Ambidextrous",
|
|
||||||
"manipulators": [
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "k",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["fn"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"vertical_wheel": -64
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "j",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["fn"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"vertical_wheel": 64
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "h",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["fn"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"horizontal_wheel": 64
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "l",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["fn"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"horizontal_wheel": -64
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "u",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"pointing_button": "button1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "o",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"pointing_button": "button2"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "h",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"x": -1018
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "j",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"y": 1018
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "k",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"y": -1018
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "l",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"mouse_key": {
|
|
||||||
"x": 1018
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "q",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"pointing_button": "button1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": {
|
|
||||||
"key_code": "e",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": ["left_control", "left_shift"],
|
|
||||||
"optional": ["any"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"pointing_button": "button2"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "basic"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,417 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Keychron V1",
|
|
||||||
"vendorProductId": 875823889,
|
|
||||||
"macros": [
|
|
||||||
"",
|
|
||||||
"{KC_LGUI,KC_LCTL,KC_Q}",
|
|
||||||
"{KC_RGUI,KC_L}",
|
|
||||||
"Have a nice day",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"it-infra-stream@wundermanthompson.com",
|
|
||||||
"marcin.wozniak@wundermanthompson.com",
|
|
||||||
"Have a nice day!\n\n---\nMarcin\n"
|
|
||||||
],
|
|
||||||
"layers": [
|
|
||||||
[
|
|
||||||
"KC_GRV",
|
|
||||||
"KC_F1",
|
|
||||||
"KC_F2",
|
|
||||||
"KC_F3",
|
|
||||||
"KC_F4",
|
|
||||||
"KC_F5",
|
|
||||||
"KC_F6",
|
|
||||||
"KC_F7",
|
|
||||||
"KC_F8",
|
|
||||||
"KC_F9",
|
|
||||||
"KC_F10",
|
|
||||||
"KC_F11",
|
|
||||||
"KC_F12",
|
|
||||||
"KC_DEL",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_MUTE",
|
|
||||||
"KC_GRV",
|
|
||||||
"KC_1",
|
|
||||||
"KC_2",
|
|
||||||
"KC_3",
|
|
||||||
"KC_4",
|
|
||||||
"KC_5",
|
|
||||||
"KC_6",
|
|
||||||
"KC_7",
|
|
||||||
"KC_8",
|
|
||||||
"KC_9",
|
|
||||||
"KC_0",
|
|
||||||
"KC_MINS",
|
|
||||||
"KC_EQL",
|
|
||||||
"KC_BSPC",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_PGUP",
|
|
||||||
"KC_TAB",
|
|
||||||
"KC_Q",
|
|
||||||
"KC_W",
|
|
||||||
"KC_E",
|
|
||||||
"KC_R",
|
|
||||||
"KC_T",
|
|
||||||
"KC_Y",
|
|
||||||
"KC_U",
|
|
||||||
"KC_I",
|
|
||||||
"KC_O",
|
|
||||||
"KC_P",
|
|
||||||
"KC_LBRC",
|
|
||||||
"KC_RBRC",
|
|
||||||
"KC_BSLS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_PGDN",
|
|
||||||
"KC_ESC",
|
|
||||||
"KC_A",
|
|
||||||
"KC_S",
|
|
||||||
"KC_D",
|
|
||||||
"KC_F",
|
|
||||||
"KC_G",
|
|
||||||
"KC_H",
|
|
||||||
"KC_J",
|
|
||||||
"KC_K",
|
|
||||||
"KC_L",
|
|
||||||
"KC_SCLN",
|
|
||||||
"KC_QUOT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_ENT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_HOME",
|
|
||||||
"KC_LSFT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_Z",
|
|
||||||
"KC_X",
|
|
||||||
"KC_C",
|
|
||||||
"KC_V",
|
|
||||||
"KC_B",
|
|
||||||
"KC_N",
|
|
||||||
"KC_M",
|
|
||||||
"KC_COMM",
|
|
||||||
"KC_DOT",
|
|
||||||
"KC_SLSH",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_RSFT",
|
|
||||||
"KC_UP",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_LCTL",
|
|
||||||
"USER02",
|
|
||||||
"USER05",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_SPC",
|
|
||||||
"KC_VOLD",
|
|
||||||
"KC_VOLU",
|
|
||||||
"KC_NO",
|
|
||||||
"USER03",
|
|
||||||
"MO(1)",
|
|
||||||
"USER05",
|
|
||||||
"KC_LEFT",
|
|
||||||
"KC_DOWN",
|
|
||||||
"KC_RGHT"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"BL_DEC",
|
|
||||||
"BL_INC",
|
|
||||||
"KC_MPRV",
|
|
||||||
"KC_MPLY",
|
|
||||||
"KC_MNXT",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_PSCR",
|
|
||||||
"KC_NO",
|
|
||||||
"RGB_TOG",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"MACRO01",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"MACRO13",
|
|
||||||
"MACRO14",
|
|
||||||
"MACRO15",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_MS_BTN1",
|
|
||||||
"KC_MS_UP",
|
|
||||||
"KC_MS_BTN2",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_MS_LEFT",
|
|
||||||
"KC_MS_DOWN",
|
|
||||||
"KC_MS_RIGHT",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_END",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_MS_WH_UP",
|
|
||||||
"KC_MS_WH_DOWN",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"RGB_VAD",
|
|
||||||
"RGB_VAI",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"KC_GRV",
|
|
||||||
"KC_F1",
|
|
||||||
"KC_F2",
|
|
||||||
"KC_F3",
|
|
||||||
"KC_F4",
|
|
||||||
"KC_F5",
|
|
||||||
"KC_F6",
|
|
||||||
"KC_F7",
|
|
||||||
"KC_F8",
|
|
||||||
"KC_F9",
|
|
||||||
"KC_F10",
|
|
||||||
"KC_F11",
|
|
||||||
"KC_F12",
|
|
||||||
"KC_DEL",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_MUTE",
|
|
||||||
"KC_GRV",
|
|
||||||
"KC_1",
|
|
||||||
"KC_2",
|
|
||||||
"KC_3",
|
|
||||||
"KC_4",
|
|
||||||
"KC_5",
|
|
||||||
"KC_6",
|
|
||||||
"KC_7",
|
|
||||||
"KC_8",
|
|
||||||
"KC_9",
|
|
||||||
"KC_0",
|
|
||||||
"KC_MINS",
|
|
||||||
"KC_EQL",
|
|
||||||
"KC_BSPC",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_PGUP",
|
|
||||||
"KC_TAB",
|
|
||||||
"KC_Q",
|
|
||||||
"KC_W",
|
|
||||||
"KC_E",
|
|
||||||
"KC_R",
|
|
||||||
"KC_T",
|
|
||||||
"KC_Y",
|
|
||||||
"KC_U",
|
|
||||||
"KC_I",
|
|
||||||
"KC_O",
|
|
||||||
"KC_P",
|
|
||||||
"KC_LBRC",
|
|
||||||
"KC_RBRC",
|
|
||||||
"KC_BSLS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_PGDN",
|
|
||||||
"KC_ESC",
|
|
||||||
"KC_A",
|
|
||||||
"KC_S",
|
|
||||||
"KC_D",
|
|
||||||
"KC_F",
|
|
||||||
"KC_G",
|
|
||||||
"KC_H",
|
|
||||||
"KC_J",
|
|
||||||
"KC_K",
|
|
||||||
"KC_L",
|
|
||||||
"KC_SCLN",
|
|
||||||
"KC_QUOT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_ENT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_HOME",
|
|
||||||
"KC_LSFT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_Z",
|
|
||||||
"KC_X",
|
|
||||||
"KC_C",
|
|
||||||
"KC_V",
|
|
||||||
"KC_B",
|
|
||||||
"KC_N",
|
|
||||||
"KC_M",
|
|
||||||
"KC_COMM",
|
|
||||||
"KC_DOT",
|
|
||||||
"KC_SLSH",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_RSFT",
|
|
||||||
"KC_UP",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_LCTL",
|
|
||||||
"KC_LGUI",
|
|
||||||
"KC_LALT",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_SPC",
|
|
||||||
"KC_VOLD",
|
|
||||||
"KC_VOLU",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_RALT",
|
|
||||||
"MO(3)",
|
|
||||||
"KC_RCTL",
|
|
||||||
"KC_LEFT",
|
|
||||||
"KC_DOWN",
|
|
||||||
"KC_RGHT"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"BL_DEC",
|
|
||||||
"BL_INC",
|
|
||||||
"KC_MPRV",
|
|
||||||
"KC_MPLY",
|
|
||||||
"KC_MNXT",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_PSCR",
|
|
||||||
"KC_NO",
|
|
||||||
"RGB_TOG",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"MACRO02",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"MACRO13",
|
|
||||||
"MACRO14",
|
|
||||||
"MACRO15",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_MS_BTN1",
|
|
||||||
"KC_MS_UP",
|
|
||||||
"KC_MS_BTN2",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_MS_LEFT",
|
|
||||||
"KC_MS_DOWN",
|
|
||||||
"KC_MS_RIGHT",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_END",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_MS_WH_UP",
|
|
||||||
"KC_MS_WH_DOWN",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"RGB_VAD",
|
|
||||||
"RGB_VAI",
|
|
||||||
"KC_NO",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS",
|
|
||||||
"KC_TRNS"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"encoders": []
|
|
||||||
}
|
|
||||||
@@ -1,248 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Keychron V1",
|
|
||||||
"vendorId": "0x3434",
|
|
||||||
"productId": "0x0311",
|
|
||||||
"lighting": {
|
|
||||||
"extends": "qmk_rgblight",
|
|
||||||
"underglowEffects": [
|
|
||||||
["None", 0],
|
|
||||||
["SOLID_COLOR", 1],
|
|
||||||
["BREATHING", 1],
|
|
||||||
["CYCLE_ALL", 1],
|
|
||||||
["CYCLE_LEFT_RIGHT", 1],
|
|
||||||
["CYCLE_UP_DOWN", 1],
|
|
||||||
["RAINBOW_MOVING_CHEVRON", 1],
|
|
||||||
["CYCLE_OUT_IN", 1],
|
|
||||||
["CYCLE_OUT_IN_DUAL", 1],
|
|
||||||
["CYCLE_PINWHEEL", 1],
|
|
||||||
["CYCKE_SPIRAL", 1],
|
|
||||||
["DUAL_BEACON", 1],
|
|
||||||
["RAINBOW_BEACON", 1],
|
|
||||||
["RAINDROPS", 1]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"matrix": {"rows": 6, "cols": 16},
|
|
||||||
"customKeycodes": [
|
|
||||||
{"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "Mission Control"},
|
|
||||||
{"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "Launch Pad"},
|
|
||||||
{"name": "Left Option", "title": "Left Option in macOS", "shortName": "Left Option"},
|
|
||||||
{"name": "Right Option", "title": "Right Option in macOS", "shortName": "Right Option"},
|
|
||||||
{"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "Left Command"},
|
|
||||||
{"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "Right Command"},
|
|
||||||
{"name": "Task View", "title": "Task View in windows", "shortName": "Task View"},
|
|
||||||
{"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File Explorer"}
|
|
||||||
],
|
|
||||||
"layouts": {
|
|
||||||
"keymap": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"c": "#777777"
|
|
||||||
},
|
|
||||||
"0,0\nESC",
|
|
||||||
{
|
|
||||||
"x": 0.25,
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"0,1",
|
|
||||||
"0,2",
|
|
||||||
"0,3",
|
|
||||||
"0,4",
|
|
||||||
{
|
|
||||||
"x": 0.25
|
|
||||||
},
|
|
||||||
"0,5",
|
|
||||||
"0,6",
|
|
||||||
"0,7",
|
|
||||||
"0,8",
|
|
||||||
{
|
|
||||||
"x": 0.25
|
|
||||||
},
|
|
||||||
"0,9",
|
|
||||||
"0,10",
|
|
||||||
"0,11",
|
|
||||||
"0,12",
|
|
||||||
{
|
|
||||||
"x": 0.25,
|
|
||||||
"c": "#aaaaaa"
|
|
||||||
},
|
|
||||||
"0,13",
|
|
||||||
{
|
|
||||||
"x": 0.25,
|
|
||||||
"w": 0.75
|
|
||||||
},
|
|
||||||
"0,15",
|
|
||||||
{
|
|
||||||
"h": 0.5
|
|
||||||
},
|
|
||||||
"5,7",
|
|
||||||
{
|
|
||||||
"x": -1,
|
|
||||||
"y": 0.5,
|
|
||||||
"h": 0.5
|
|
||||||
},
|
|
||||||
"5,8"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.25
|
|
||||||
},
|
|
||||||
"1,0",
|
|
||||||
{
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"1,1",
|
|
||||||
"1,2",
|
|
||||||
"1,3",
|
|
||||||
"1,4",
|
|
||||||
"1,5",
|
|
||||||
"1,6",
|
|
||||||
"1,7",
|
|
||||||
"1,8",
|
|
||||||
"1,9",
|
|
||||||
"1,10",
|
|
||||||
"1,11",
|
|
||||||
"1,12",
|
|
||||||
{
|
|
||||||
"c": "#aaaaaa",
|
|
||||||
"w": 2
|
|
||||||
},
|
|
||||||
"1,13",
|
|
||||||
{
|
|
||||||
"x": 0.25
|
|
||||||
},
|
|
||||||
"1,15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"2,0",
|
|
||||||
{
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"2,1",
|
|
||||||
"2,2",
|
|
||||||
"2,3",
|
|
||||||
"2,4",
|
|
||||||
"2,5",
|
|
||||||
"2,6",
|
|
||||||
"2,7",
|
|
||||||
"2,8",
|
|
||||||
"2,9",
|
|
||||||
"2,10",
|
|
||||||
"2,11",
|
|
||||||
"2,12",
|
|
||||||
{
|
|
||||||
"w": 1.5
|
|
||||||
},
|
|
||||||
"2,13",
|
|
||||||
{
|
|
||||||
"x": 0.25,
|
|
||||||
"c": "#aaaaaa"
|
|
||||||
},
|
|
||||||
"2,15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"w": 1.75
|
|
||||||
},
|
|
||||||
"3,0",
|
|
||||||
{
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"3,1",
|
|
||||||
"3,2",
|
|
||||||
"3,3",
|
|
||||||
"3,4",
|
|
||||||
"3,5",
|
|
||||||
"3,6",
|
|
||||||
"3,7",
|
|
||||||
"3,8",
|
|
||||||
"3,9",
|
|
||||||
"3,10",
|
|
||||||
"3,11",
|
|
||||||
{
|
|
||||||
"c": "#777777",
|
|
||||||
"w": 2.25
|
|
||||||
},
|
|
||||||
"3,13",
|
|
||||||
{
|
|
||||||
"x": 0.25,
|
|
||||||
"c": "#aaaaaa"
|
|
||||||
},
|
|
||||||
"3,15"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"w": 2.25
|
|
||||||
},
|
|
||||||
"4,0",
|
|
||||||
{
|
|
||||||
"c": "#cccccc"
|
|
||||||
},
|
|
||||||
"4,2",
|
|
||||||
"4,3",
|
|
||||||
"4,4",
|
|
||||||
"4,5",
|
|
||||||
"4,6",
|
|
||||||
"4,7",
|
|
||||||
"4,8",
|
|
||||||
"4,9",
|
|
||||||
"4,10",
|
|
||||||
"4,11",
|
|
||||||
{
|
|
||||||
"c": "#aaaaaa",
|
|
||||||
"w": 1.75
|
|
||||||
},
|
|
||||||
"4,13"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 14.25,
|
|
||||||
"c": "#777777"
|
|
||||||
},
|
|
||||||
"4,14"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.25,
|
|
||||||
"c": "#aaaaaa",
|
|
||||||
"w": 1.25
|
|
||||||
},
|
|
||||||
"5,0",
|
|
||||||
{
|
|
||||||
"w": 1.25
|
|
||||||
},
|
|
||||||
"5,1",
|
|
||||||
{
|
|
||||||
"w": 1.25
|
|
||||||
},
|
|
||||||
"5,2",
|
|
||||||
{
|
|
||||||
"c": "#cccccc",
|
|
||||||
"a": 7,
|
|
||||||
"w": 6.25
|
|
||||||
},
|
|
||||||
"5,6",
|
|
||||||
{
|
|
||||||
"c": "#aaaaaa",
|
|
||||||
"a": 4
|
|
||||||
},
|
|
||||||
"5,10",
|
|
||||||
"5,11",
|
|
||||||
"5,12"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"y": -0.75,
|
|
||||||
"x": 13.25,
|
|
||||||
"c": "#777777"
|
|
||||||
},
|
|
||||||
"5,13",
|
|
||||||
"5,14",
|
|
||||||
"5,15"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
refresher:
|
|
||||||
refreshInterval: 60
|
|
||||||
gui:
|
|
||||||
useHunkModeInStagingView: false
|
|
||||||
mainPanelSplitMode: "horizontal"
|
|
||||||
theme:
|
|
||||||
selectedLineBgColor:
|
|
||||||
- "#413660"
|
|
||||||
git:
|
|
||||||
autoFetch: true
|
|
||||||
paging:
|
|
||||||
colorArg: always
|
|
||||||
commit:
|
|
||||||
signOff: true
|
|
||||||
pull:
|
|
||||||
mode: "rebase"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
[lutris]
|
|
||||||
library_ignores =
|
|
||||||
migration_version = 10
|
|
||||||
width = 1908
|
|
||||||
height = 1001
|
|
||||||
maximized = False
|
|
||||||
selected_category = runner:linux
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# Restrict readahead and backbuffer to 40MiB from default of 400MiB
|
|
||||||
cache=yes
|
|
||||||
demuxer-max-bytes=2147483647
|
|
||||||
demuxer-max-back-bytes=2147483647
|
|
||||||
|
|
||||||
# Always allow seeking, e.g. allow seeking within a local cache of HTTP stream
|
|
||||||
force-seekable=yes
|
|
||||||
|
|
||||||
# Always open a video window even with no video
|
|
||||||
force-window=yes
|
|
||||||
|
|
||||||
# Don't exit when the end of playlist is reached
|
|
||||||
keep-open=yes
|
|
||||||
|
|
||||||
# Always save the current playback position on exit
|
|
||||||
save-position-on-quit=yes
|
|
||||||
# ontop=yes
|
|
||||||
|
|
||||||
# Geometry settings
|
|
||||||
geometry=50%:50%
|
|
||||||
autofit=50%
|
|
||||||
|
|
||||||
# Create 'high-quality' profile
|
|
||||||
[high-quality]
|
|
||||||
# Describe this profile
|
|
||||||
profile-desc="High quality rendering"
|
|
||||||
# Include all settings from the default 'opengl-hq' profile
|
|
||||||
profile=opengl-hq
|
|
||||||
# Disable debanding for better performance
|
|
||||||
deband=no
|
|
||||||
@@ -1,505 +0,0 @@
|
|||||||
--redefine keybindings here if needed; multiple bindings are possible
|
|
||||||
keybinds = {
|
|
||||||
activate = {'\\', 'MOUSE_BTN2'},
|
|
||||||
plsup = {'UP', 'MOUSE_BTN3'},
|
|
||||||
plsdown = {'DOWN', 'MOUSE_BTN4'},
|
|
||||||
plsenter = {'ENTER', 'MOUSE_BTN0'}
|
|
||||||
}
|
|
||||||
--hide playlist after specified number of seconds
|
|
||||||
osd_time=10
|
|
||||||
--show only specified number of playlist entries
|
|
||||||
window=7
|
|
||||||
--fade video when showing playlist
|
|
||||||
fade=false
|
|
||||||
--if fade=true; -100 — black, 0 — normal
|
|
||||||
plsbrightness=-70
|
|
||||||
--favorites get promotion to the top of the pls
|
|
||||||
favorites = {}
|
|
||||||
-- END OF CONFIGURABLE VARIABLES
|
|
||||||
|
|
||||||
-- put your settings in (SCRIPTS DIR)/_iptvconf.lua
|
|
||||||
pcall(require, "_iptvconf")
|
|
||||||
|
|
||||||
local timer
|
|
||||||
--local plscount
|
|
||||||
local pattern=""
|
|
||||||
local is_active
|
|
||||||
local is_playlist_loaded
|
|
||||||
|
|
||||||
-- UTF-8 lower/upper conversion
|
|
||||||
local utf8_lc_uc = {
|
|
||||||
["a"] = "A",
|
|
||||||
["b"] = "B",
|
|
||||||
["c"] = "C",
|
|
||||||
["d"] = "D",
|
|
||||||
["e"] = "E",
|
|
||||||
["f"] = "F",
|
|
||||||
["g"] = "G",
|
|
||||||
["h"] = "H",
|
|
||||||
["i"] = "I",
|
|
||||||
["j"] = "J",
|
|
||||||
["k"] = "K",
|
|
||||||
["l"] = "L",
|
|
||||||
["m"] = "M",
|
|
||||||
["n"] = "N",
|
|
||||||
["o"] = "O",
|
|
||||||
["p"] = "P",
|
|
||||||
["q"] = "Q",
|
|
||||||
["r"] = "R",
|
|
||||||
["s"] = "S",
|
|
||||||
["t"] = "T",
|
|
||||||
["u"] = "U",
|
|
||||||
["v"] = "V",
|
|
||||||
["w"] = "W",
|
|
||||||
["x"] = "X",
|
|
||||||
["y"] = "Y",
|
|
||||||
["z"] = "Z",
|
|
||||||
["а"] = "А",
|
|
||||||
["б"] = "Б",
|
|
||||||
["в"] = "В",
|
|
||||||
["г"] = "Г",
|
|
||||||
["д"] = "Д",
|
|
||||||
["е"] = "Е",
|
|
||||||
["ж"] = "Ж",
|
|
||||||
["з"] = "З",
|
|
||||||
["и"] = "И",
|
|
||||||
["й"] = "Й",
|
|
||||||
["к"] = "К",
|
|
||||||
["л"] = "Л",
|
|
||||||
["м"] = "М",
|
|
||||||
["н"] = "Н",
|
|
||||||
["о"] = "О",
|
|
||||||
["п"] = "П",
|
|
||||||
["р"] = "Р",
|
|
||||||
["с"] = "С",
|
|
||||||
["т"] = "Т",
|
|
||||||
["у"] = "У",
|
|
||||||
["ф"] = "Ф",
|
|
||||||
["х"] = "Х",
|
|
||||||
["ц"] = "Ц",
|
|
||||||
["ч"] = "Ч",
|
|
||||||
["ш"] = "Ш",
|
|
||||||
["щ"] = "Щ",
|
|
||||||
["ъ"] = "Ъ",
|
|
||||||
["ы"] = "Ы",
|
|
||||||
["ь"] = "Ь",
|
|
||||||
["э"] = "Э",
|
|
||||||
["ю"] = "Ю",
|
|
||||||
["я"] = "Я",
|
|
||||||
["ё"] = "Ё"
|
|
||||||
}
|
|
||||||
|
|
||||||
local utf8_uc_lc = {
|
|
||||||
["A"] = "a",
|
|
||||||
["B"] = "b",
|
|
||||||
["C"] = "c",
|
|
||||||
["D"] = "d",
|
|
||||||
["E"] = "e",
|
|
||||||
["F"] = "f",
|
|
||||||
["G"] = "g",
|
|
||||||
["H"] = "h",
|
|
||||||
["I"] = "i",
|
|
||||||
["J"] = "j",
|
|
||||||
["K"] = "k",
|
|
||||||
["L"] = "l",
|
|
||||||
["M"] = "m",
|
|
||||||
["N"] = "n",
|
|
||||||
["O"] = "o",
|
|
||||||
["P"] = "p",
|
|
||||||
["Q"] = "q",
|
|
||||||
["R"] = "r",
|
|
||||||
["S"] = "s",
|
|
||||||
["T"] = "t",
|
|
||||||
["U"] = "u",
|
|
||||||
["V"] = "v",
|
|
||||||
["W"] = "w",
|
|
||||||
["X"] = "x",
|
|
||||||
["Y"] = "y",
|
|
||||||
["Z"] = "z",
|
|
||||||
["А"] = "а",
|
|
||||||
["Б"] = "б",
|
|
||||||
["В"] = "в",
|
|
||||||
["Г"] = "г",
|
|
||||||
["Д"] = "д",
|
|
||||||
["Е"] = "е",
|
|
||||||
["Ж"] = "ж",
|
|
||||||
["З"] = "з",
|
|
||||||
["И"] = "и",
|
|
||||||
["Й"] = "й",
|
|
||||||
["К"] = "к",
|
|
||||||
["Л"] = "л",
|
|
||||||
["М"] = "м",
|
|
||||||
["Н"] = "н",
|
|
||||||
["О"] = "о",
|
|
||||||
["П"] = "п",
|
|
||||||
["Р"] = "р",
|
|
||||||
["С"] = "с",
|
|
||||||
["Т"] = "т",
|
|
||||||
["У"] = "у",
|
|
||||||
["Ф"] = "ф",
|
|
||||||
["Х"] = "х",
|
|
||||||
["Ц"] = "ц",
|
|
||||||
["Ч"] = "ч",
|
|
||||||
["Ш"] = "ш",
|
|
||||||
["Щ"] = "щ",
|
|
||||||
["Ъ"] = "ъ",
|
|
||||||
["Ы"] = "ы",
|
|
||||||
["Ь"] = "ь",
|
|
||||||
["Э"] = "э",
|
|
||||||
["Ю"] = "ю",
|
|
||||||
["Я"] = "я",
|
|
||||||
["Ё"] = "ё"
|
|
||||||
}
|
|
||||||
|
|
||||||
--utf8 char pattern
|
|
||||||
local utf8_char="[\1-\127\192-\223][\128-\191]*"
|
|
||||||
|
|
||||||
local cyr_chars={'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'}
|
|
||||||
|
|
||||||
-- символы, которые возможно вводить для поиска
|
|
||||||
local chars={}
|
|
||||||
for i=string.byte('a'),string.byte('z') do
|
|
||||||
table.insert(chars,i)
|
|
||||||
end
|
|
||||||
for i=string.byte('A'),string.byte('Z') do
|
|
||||||
table.insert(chars,i)
|
|
||||||
end
|
|
||||||
for i=string.byte('0'),string.byte('9') do
|
|
||||||
table.insert(chars,i)
|
|
||||||
end
|
|
||||||
for _,v in ipairs({',','^','$','(',')','%','.','[',']','*','+','-','?','`',"'",";"}) do
|
|
||||||
table.insert(chars,string.byte(v))
|
|
||||||
end
|
|
||||||
|
|
||||||
local keybinder = {
|
|
||||||
remove = function(action)
|
|
||||||
for i,_ in ipairs(keybinds[action]) do
|
|
||||||
mp.remove_key_binding(action..tostring(i))
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
add = function(action, func, repeatable)
|
|
||||||
for i,key in ipairs(keybinds[action]) do
|
|
||||||
assert(type(func)=="function", "not a function")
|
|
||||||
if repeatable then
|
|
||||||
mp.add_forced_key_binding(key, action..tostring(i), func, "repeatable")
|
|
||||||
else
|
|
||||||
mp.add_forced_key_binding(key, action..tostring(i), func)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
local fader = {
|
|
||||||
saved_brtns,
|
|
||||||
on = function(self)
|
|
||||||
if fade and not self.saved_brtns then
|
|
||||||
self.saved_brtns = mp.get_property("brightness")
|
|
||||||
mp.set_property("brightness", plsbrightness)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
off = function(self)
|
|
||||||
if fade and self.saved_brtns then
|
|
||||||
mp.set_property("brightness", self.saved_brtns)
|
|
||||||
self.saved_brtns=nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
local playlister = {
|
|
||||||
-- pls — список элементов плейлиста
|
|
||||||
pls,
|
|
||||||
-- plsfiltered — список индексов выбранных фильтром элементов плейлиста
|
|
||||||
plsfiltered,
|
|
||||||
plspos,
|
|
||||||
wndstart,
|
|
||||||
wndend,
|
|
||||||
cursor,
|
|
||||||
|
|
||||||
init = function(self)
|
|
||||||
if not self.pls then
|
|
||||||
self.pls = mp.get_property_native("playlist")
|
|
||||||
end
|
|
||||||
mp.commandv("stop")
|
|
||||||
--need to mark first entry non-current (mpv bug?)
|
|
||||||
if self.pls[1] then
|
|
||||||
self.pls[1].current = false
|
|
||||||
end
|
|
||||||
if favorites and #favorites>0 then
|
|
||||||
self:sortfavs()
|
|
||||||
end
|
|
||||||
pattern = ""
|
|
||||||
self.plsfiltered = tablekeys(self.pls)
|
|
||||||
end,
|
|
||||||
|
|
||||||
show = function(self)
|
|
||||||
local i
|
|
||||||
local newpos
|
|
||||||
local msg
|
|
||||||
--media-title
|
|
||||||
--playlist t[2].title
|
|
||||||
|
|
||||||
if not self.plsfiltered then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if not self.plspos then
|
|
||||||
self.plspos=mp.get_property_native("playlist-pos-1")
|
|
||||||
--plscount=mp.get_property_native("playlist-count")
|
|
||||||
end
|
|
||||||
if not self.wndstart or not self.cursor then
|
|
||||||
self.wndstart=1
|
|
||||||
self.cursor=0
|
|
||||||
end
|
|
||||||
|
|
||||||
msg=""
|
|
||||||
i = self.wndstart
|
|
||||||
local prefix
|
|
||||||
while self.plsfiltered[i] and i<=self.wndstart+window-1 do
|
|
||||||
if self.pls[self.plsfiltered[i]].current then
|
|
||||||
prefix="*"
|
|
||||||
elseif i==self.wndstart+self.cursor then
|
|
||||||
prefix=">"
|
|
||||||
else
|
|
||||||
prefix=" "
|
|
||||||
end
|
|
||||||
msg = msg..prefix..(self.pls[self.plsfiltered[i]].title or "").."\n"
|
|
||||||
i=i+1
|
|
||||||
end
|
|
||||||
if self.wndstart>1 then
|
|
||||||
msg = "...\n"..msg
|
|
||||||
else
|
|
||||||
msg = " \n"..msg
|
|
||||||
end
|
|
||||||
if self.wndstart+window-1<#self.plsfiltered then
|
|
||||||
msg = msg.."..."
|
|
||||||
end
|
|
||||||
msg="/"..pattern.."\n"..msg
|
|
||||||
mp.osd_message(msg, osd_time)
|
|
||||||
end,
|
|
||||||
|
|
||||||
sortfavs = function(self)
|
|
||||||
--favorites bubbles to the top
|
|
||||||
local favs={}
|
|
||||||
local nonfavs={}
|
|
||||||
for _,v in ipairs(self.pls) do
|
|
||||||
if in_array(favorites,v.title) then
|
|
||||||
favs[#favs+1] = v
|
|
||||||
else
|
|
||||||
nonfavs[#nonfavs+1] = v
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for i=1,#nonfavs do
|
|
||||||
favs[#favs+1] = nonfavs[i]
|
|
||||||
end
|
|
||||||
self.pls = favs
|
|
||||||
end,
|
|
||||||
|
|
||||||
filter = function(self)
|
|
||||||
self.plsfiltered={}
|
|
||||||
for i,v in ipairs(self.pls) do
|
|
||||||
if string.match(mylower(v.title),'.*'..prepat(pattern)..'.*') then
|
|
||||||
table.insert(self.plsfiltered,i)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
self.wndstart=1
|
|
||||||
self.cursor=0
|
|
||||||
end,
|
|
||||||
|
|
||||||
down = function(self)
|
|
||||||
if self.cursor >= #self.plsfiltered-1 then return end
|
|
||||||
if self.cursor<window-1 then
|
|
||||||
self.cursor=self.cursor+1
|
|
||||||
else
|
|
||||||
if self.wndstart<#self.plsfiltered-window+1 then
|
|
||||||
self.wndstart=self.wndstart+1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
self.show(self)
|
|
||||||
end,
|
|
||||||
up = function(self)
|
|
||||||
if self.cursor>0 then
|
|
||||||
self.cursor=self.cursor-1
|
|
||||||
self.show(self)
|
|
||||||
else
|
|
||||||
if self.wndstart>1 then
|
|
||||||
self.wndstart=self.wndstart-1
|
|
||||||
self.show(self)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
|
|
||||||
play = function(self)
|
|
||||||
mp.commandv("loadfile",self.pls[self.plsfiltered[self.wndstart+self.cursor]].filename)
|
|
||||||
if self.plspos then
|
|
||||||
self.pls[self.plspos].current=false
|
|
||||||
end
|
|
||||||
self.plspos=self.plsfiltered[self.wndstart+self.cursor]
|
|
||||||
self.pls[self.plspos].current=true
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_bindings()
|
|
||||||
keybinder.add("plsup", up, true)
|
|
||||||
keybinder.add("plsdown", down, true)
|
|
||||||
for i,v in ipairs(chars) do
|
|
||||||
c=string.char(v)
|
|
||||||
mp.add_forced_key_binding(c, 'search'..v, typing(c),"repeatable")
|
|
||||||
end
|
|
||||||
mp.add_forced_key_binding('SPACE', 'search32', typing(' '),"repeatable")
|
|
||||||
|
|
||||||
--[[ mp.add_key_binding('а', 'search1000', typing('а'),"repeatable")
|
|
||||||
mp.add_key_binding('с', 'search1001', typing('с'),"repeatable")]]
|
|
||||||
|
|
||||||
mp.add_forced_key_binding('BS', 'searchbs', backspace,"repeatable")
|
|
||||||
keybinder.add("plsenter", play)
|
|
||||||
for i,v in ipairs(cyr_chars) do
|
|
||||||
mp.add_forced_key_binding(v, 'search'..i+1000, typing(v),"repeatable")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function remove_bindings()
|
|
||||||
keybinder.remove('plsup')
|
|
||||||
keybinder.remove('plsdown')
|
|
||||||
keybinder.remove('plsenter')
|
|
||||||
for i,v in ipairs(chars) do
|
|
||||||
c=string.char(v)
|
|
||||||
mp.remove_key_binding('search'..v)
|
|
||||||
end
|
|
||||||
mp.remove_key_binding('search32')
|
|
||||||
mp.remove_key_binding('searchbs')
|
|
||||||
for i,v in ipairs(cyr_chars) do
|
|
||||||
mp.remove_key_binding('search'..i+1000)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function activate()
|
|
||||||
if is_active then
|
|
||||||
shutdown()
|
|
||||||
return
|
|
||||||
else
|
|
||||||
is_active=true
|
|
||||||
fader:on()
|
|
||||||
playlister:show()
|
|
||||||
add_bindings()
|
|
||||||
if not timer then
|
|
||||||
timer=mp.add_periodic_timer(osd_time, shutdown)
|
|
||||||
timer.oneshot=true
|
|
||||||
else
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function tablekeys(t)
|
|
||||||
local result={}
|
|
||||||
for i,v in ipairs(t) do
|
|
||||||
table.insert(result,i)
|
|
||||||
end
|
|
||||||
return result
|
|
||||||
end
|
|
||||||
|
|
||||||
function in_array(array, value)
|
|
||||||
for _,v in ipairs(array) do
|
|
||||||
if v==value then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
function mylower(s)
|
|
||||||
local res,n = string.gsub(s,utf8_char,function (c)
|
|
||||||
return utf8_uc_lc[c]
|
|
||||||
end)
|
|
||||||
return res
|
|
||||||
end
|
|
||||||
|
|
||||||
function myupper(s)
|
|
||||||
local res,n = string.gsub(s,utf8_char,function (c)
|
|
||||||
return utf8_lc_uc[c]
|
|
||||||
end)
|
|
||||||
return res
|
|
||||||
end
|
|
||||||
|
|
||||||
function prepat(s)
|
|
||||||
--prepare nocase and magic chars
|
|
||||||
s = string.gsub(s, "[%^%$%(%)%%%.%[%]%*%+%-%?]",function (c)
|
|
||||||
return '%'..c
|
|
||||||
end)
|
|
||||||
--[[ s = string.gsub(s, utf8_char, function (c)
|
|
||||||
return string.format("[%s%s]", utf8_uc_lc[c] or c, utf8_lc_uc[c] or c)
|
|
||||||
end)]]
|
|
||||||
return s
|
|
||||||
end
|
|
||||||
|
|
||||||
function resumetimer()
|
|
||||||
timer:kill()
|
|
||||||
timer:resume()
|
|
||||||
end
|
|
||||||
|
|
||||||
function typing(char)
|
|
||||||
return function()
|
|
||||||
local c=string.lower(char)
|
|
||||||
pattern = pattern..c
|
|
||||||
playlister:filter()
|
|
||||||
playlister:show()
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function backspace()
|
|
||||||
if string.len(pattern)>0 then
|
|
||||||
-- pattern = string.sub(pattern,1,-2)
|
|
||||||
-- for unicode
|
|
||||||
pattern = string.match(pattern,"(.*)"..utf8_char.."$")
|
|
||||||
playlister:filter()
|
|
||||||
playlister:show()
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function play()
|
|
||||||
-- mp.commandv("playlist-move", wndstart+cursor, 1)
|
|
||||||
-- mp.commandv("playlist-clear")
|
|
||||||
-- mp.commandv("playlist-next")
|
|
||||||
fader:off()
|
|
||||||
playlister:play()
|
|
||||||
playlister:show()
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
|
|
||||||
function shutdown()
|
|
||||||
fader:off()
|
|
||||||
remove_bindings()
|
|
||||||
is_active=false
|
|
||||||
mp.osd_message("", 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
function down()
|
|
||||||
fader:on()
|
|
||||||
playlister:down()
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
|
|
||||||
function up()
|
|
||||||
fader:on()
|
|
||||||
playlister:up()
|
|
||||||
resumetimer()
|
|
||||||
end
|
|
||||||
|
|
||||||
function on_start_file()
|
|
||||||
if is_playlist_loaded then
|
|
||||||
playlister:init()
|
|
||||||
mp.unregister_event(on_start_file)
|
|
||||||
activate()
|
|
||||||
else
|
|
||||||
is_playlist_loaded = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if mp.get_opt("iptv") then
|
|
||||||
mp.set_property_bool("idle", true)
|
|
||||||
mp.set_property_bool("force-window", true)
|
|
||||||
mp.register_event("start-file", on_start_file)
|
|
||||||
keybinder.add("activate", activate)
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
auto-reload yes
|
|
||||||
refresh-on-startup yes
|
|
||||||
reload-time 3600
|
|
||||||
notify-program "/home/yorune/.local/bin/notify-program"
|
|
||||||
notify-always yes
|
|
||||||
|
|
||||||
unbind-key o
|
|
||||||
bind-key o open-in-browser
|
|
||||||
|
|
||||||
macro , open-in-browser
|
|
||||||
macro p set browser "mpv --ytdl-format='bestvideo[ext=mp4][height<=?1080]+bestaudio[ext=m4a]' --no-resume-playback" ; open-in-browser ; set browser "/home/yorune/.local/bin/browser-x -new-tab %u"
|
|
||||||
|
|
||||||
unbind-key n
|
|
||||||
unbind-key p
|
|
||||||
bind-key n next
|
|
||||||
bind-key p prev
|
|
||||||
|
|
||||||
# unbind keys
|
|
||||||
unbind-key j
|
|
||||||
unbind-key k
|
|
||||||
unbind-key J
|
|
||||||
unbind-key K
|
|
||||||
|
|
||||||
# bind keys - vim style
|
|
||||||
bind-key j down
|
|
||||||
bind-key k up
|
|
||||||
bind-key l open
|
|
||||||
bind-key h quit
|
|
||||||
bind-key ESC quit
|
|
||||||
|
|
||||||
highlight all "====.*====" yellow
|
|
||||||
color listnormal default default
|
|
||||||
color listfocus black yellow standout bold
|
|
||||||
color listnormal_unread cyan default
|
|
||||||
color listfocus_unread yellow default bold
|
|
||||||
color info red black bold
|
|
||||||
color article white default bold
|
|
||||||
|
|
||||||
browser "$HOME/.local/bin/browser-x -new-tab %u"
|
|
||||||
player mpv
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
=====================NEWS====================================
|
|
||||||
https://nitter.net/MZ_GOV_PL/rss "~MZ_GOV_PL - Twitter"
|
|
||||||
http://www.epoznan.pl/rss.php "~Epoznan - Website"
|
|
||||||
https://sekurak.pl/feed/ "~Sekurak"
|
|
||||||
https://feeds.feedburner.com/niebezpiecznik/ "~Niebezpiecznik"
|
|
||||||
============================================================
|
|
||||||
https://repology.org/maintainer/y0rune%40aol.com/feed-for-repo/gentoo_ovl_guru/atom "~GURU OUTDATE MAINTAINER"
|
|
||||||
https://bugs.gentoo.org/buglist.cgi?bug_status=UNCONFIRMED&chfieldfrom=24h&ctype=atom&title=NEW&list_id=4468306&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&query_format=advanced Gentoo
|
|
||||||
https://bugs.gentoo.org/buglist.cgi?email1=y0rune%40aol.com&emailassigned_to1=1&emailtype1=substring&list_id=5834010&query_format=advanced&resolution=---&title=Bug%20List&ctype=atom "~ASSIGNEE TO ME"
|
|
||||||
https://bugs.gentoo.org/buglist.cgi?component=Package%20issues&product=GURU&query_format=advanced&resolution=---&title=Bug%20List&ctype=atom "~GURU-BUGS"
|
|
||||||
https://www.reddit.com/r/gentoo/new.rss "~Gentoo - Reddit"
|
|
||||||
=====================PODCASTY===============================
|
|
||||||
https://www.internet-czas-dzialac.pl/rss/
|
|
||||||
============================================================
|
|
||||||
http://rss.uptimerobot.com/u674346-753d02ab763f3725330347d4419a7569 "~UpTimeRoboot"
|
|
||||||
=====================YOUTUBE=================================
|
|
||||||
=====================ANIME===================================
|
|
||||||
https://mirror.animetosho.org/feed/rss2?only_tor=1&q=%5BHorribleSubs%5D%20Sword%20Art%20Online%20720p&filter%5B0%5D%5Bt%5D=nyaa_class&filter%5B0%5D%5Bv%5D=trusted "~Sword Art Online"
|
|
||||||
=============================================================
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"yaml.schemaStore.enable": true,
|
|
||||||
"yaml.format.enable": true,
|
|
||||||
"yaml.validate": true,
|
|
||||||
"yaml.schemas": {
|
|
||||||
"https://json.schemastore.org/ansible-role-2.9.json": "*.yaml",
|
|
||||||
"https://json.schemastore.org/ansible-playbook.json": "*.yaml",
|
|
||||||
"https://json.schemastore.org/ansible-inventory.json": "*yaml",
|
|
||||||
"https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible-galaxy.json": "*.yaml",
|
|
||||||
"https://raw.githubusercontent.com/docker/cli/master/cli/compose/schema/data/config_schema_v3.9.json": "*docker-compose.yml",
|
|
||||||
"https://json.schemastore.org/github-workflow.json": ".github/workflows/*",
|
|
||||||
|
|
||||||
"https://json.schemastore.org/docker-compose.json": "*.yaml"
|
|
||||||
},
|
|
||||||
"python.formatting.provider": "black",
|
|
||||||
"python.formatting.blackArgs": ["--line-length", "80"],
|
|
||||||
"python.pythonPath": "python3",
|
|
||||||
"diagnostic.refreshOnInsertMode": "true",
|
|
||||||
"coc.preferences.formatOnSaveFiletypes": [
|
|
||||||
"sh",
|
|
||||||
"yaml",
|
|
||||||
"json",
|
|
||||||
"python",
|
|
||||||
"css",
|
|
||||||
"markdown",
|
|
||||||
"ruby",
|
|
||||||
"go"
|
|
||||||
],
|
|
||||||
"diagnostic.virtualText": true,
|
|
||||||
"diagnostic.virtualTextCurrentLineOnly": false,
|
|
||||||
"diagnostic.checkCurrentLine": false,
|
|
||||||
"diagnostic-languageserver.filetypes": {
|
|
||||||
"markdown": ["write-good", "markdownlint"],
|
|
||||||
"sh": "shellcheck"
|
|
||||||
},
|
|
||||||
"languageserver": {
|
|
||||||
"bash": {
|
|
||||||
"command": "bash-language-server",
|
|
||||||
"args": ["start"],
|
|
||||||
"filetypes": ["sh"],
|
|
||||||
"ignoredRootPaths": ["~"]
|
|
||||||
},
|
|
||||||
"ccls": {
|
|
||||||
"command": "ccls",
|
|
||||||
"filetypes": ["c", "cpp", "objc", "objcpp"],
|
|
||||||
"rootPatterns": [
|
|
||||||
".ccls",
|
|
||||||
"compile_commands.json",
|
|
||||||
".vim/",
|
|
||||||
".git/",
|
|
||||||
".hg/"
|
|
||||||
],
|
|
||||||
"trace.server": "verbose",
|
|
||||||
"initializationOptions": {
|
|
||||||
"cache": {
|
|
||||||
"directory": "/tmp/ccls"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"solargraph.formatting": true
|
|
||||||
}
|
|
||||||
@@ -1,721 +0,0 @@
|
|||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Download vim-plug
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
if has('nvim')
|
|
||||||
if ! filereadable(system('echo -n "$HOME/.config/nvim/autoload/plug.vim"'))
|
|
||||||
silent !mkdir -p $HOME/.config/nvim/autoload/
|
|
||||||
silent !curl --silent "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > $HOME/.config/nvim/autoload/plug.vim
|
|
||||||
autocmd VimEnter * PlugInstall
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Default settings nvim
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
let g:python3_host_prog = expand('/opt/homebrew/bin/python3.13')
|
|
||||||
let g:loaded_python_provider = 0
|
|
||||||
let g:python_host_prog = ''
|
|
||||||
set autoindent
|
|
||||||
set expandtab
|
|
||||||
set softtabstop=4
|
|
||||||
set shiftwidth=4
|
|
||||||
set tabstop=4
|
|
||||||
set nocompatible
|
|
||||||
set noshowmode
|
|
||||||
set noerrorbells
|
|
||||||
set wrap
|
|
||||||
set hidden
|
|
||||||
set cmdheight=1
|
|
||||||
set encoding=utf-8
|
|
||||||
set undofile
|
|
||||||
set scrolloff=8
|
|
||||||
set termguicolors
|
|
||||||
set t_BE=
|
|
||||||
au BufWritePre * let &bex = '@' . strftime("%F.%H:%M")
|
|
||||||
filetype plugin indent on
|
|
||||||
syntax on
|
|
||||||
|
|
||||||
" Disable by default indent line
|
|
||||||
" let g:indentLine_enabled = 0
|
|
||||||
|
|
||||||
" ansible
|
|
||||||
let g:ansible_extra_keywords_highlight = 1
|
|
||||||
|
|
||||||
" line numbers
|
|
||||||
set number
|
|
||||||
set ruler
|
|
||||||
set title
|
|
||||||
|
|
||||||
" indent
|
|
||||||
set backspace=indent,eol,start
|
|
||||||
"set list listchars=nbsp:¬,tab:»·,trail:·,extends:>
|
|
||||||
set list listchars=tab:\│\ ,trail:·
|
|
||||||
let g:indentLine_char_list = ['│', '│', '│', '│']
|
|
||||||
|
|
||||||
" editing
|
|
||||||
runtime! macros/matchit.vim
|
|
||||||
|
|
||||||
" visual feedback
|
|
||||||
set showmode
|
|
||||||
set showcmd
|
|
||||||
|
|
||||||
" off mouse
|
|
||||||
set mouse-=a
|
|
||||||
|
|
||||||
" disable pcspkr beep
|
|
||||||
set visualbell
|
|
||||||
set t_vb=
|
|
||||||
|
|
||||||
" searching
|
|
||||||
set smartcase
|
|
||||||
set ic
|
|
||||||
|
|
||||||
" cursor
|
|
||||||
set guicursor=
|
|
||||||
set guicursor+=a:blinkon0
|
|
||||||
let &t_SI = "\<esc>[6 q"
|
|
||||||
let &t_SR = "\<esc>[6 q"
|
|
||||||
let &t_EI = "\<esc>[6 q"
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Plugins
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
call plug#begin('~/.config/nvim/plugged')
|
|
||||||
" Markdown
|
|
||||||
Plug 'tpope/vim-markdown'
|
|
||||||
|
|
||||||
" Live-preview
|
|
||||||
Plug 'nmante/vim-latex-live-preview'
|
|
||||||
|
|
||||||
" Goyo plugin for writing mutt mail
|
|
||||||
Plug 'junegunn/goyo.vim'
|
|
||||||
|
|
||||||
" Themes
|
|
||||||
Plug 'gruvbox-community/gruvbox', { 'as': 'gruvbox'}
|
|
||||||
Plug 'Mofiqul/dracula.nvim'
|
|
||||||
|
|
||||||
" Fzf plugin
|
|
||||||
Plug 'junegunn/fzf.vim'
|
|
||||||
Plug 'junegunn/fzf'
|
|
||||||
|
|
||||||
" CSS
|
|
||||||
Plug 'ap/vim-css-color'
|
|
||||||
|
|
||||||
" Copilot
|
|
||||||
Plug 'github/copilot.vim'
|
|
||||||
|
|
||||||
" PyRight
|
|
||||||
Plug 'sakhnik/nvim-gdb', { 'do': ':!./install.sh' }
|
|
||||||
|
|
||||||
" Ansible yaml
|
|
||||||
Plug 'pearofducks/ansible-vim', { 'do': './UltiSnips/generate.sh' }
|
|
||||||
Plug 'Yggdroot/indentLine'
|
|
||||||
|
|
||||||
" Terraform
|
|
||||||
Plug 'hashivim/vim-terraform'
|
|
||||||
|
|
||||||
" GoLang
|
|
||||||
Plug 'fatih/vim-go'
|
|
||||||
|
|
||||||
" Multiple cursors
|
|
||||||
Plug 'terryma/vim-multiple-cursors'
|
|
||||||
|
|
||||||
" Enable gentoo-syntax in vim
|
|
||||||
Plug 'gentoo/gentoo-syntax'
|
|
||||||
Plug 'tpope/vim-commentary'
|
|
||||||
Plug 'tpope/vim-surround'
|
|
||||||
Plug 'junegunn/vim-easy-align'
|
|
||||||
|
|
||||||
" Git tool
|
|
||||||
Plug 'tpope/vim-fugitive'
|
|
||||||
|
|
||||||
" Prettier
|
|
||||||
Plug 'prettier/vim-prettier', { 'do': 'yarn install --frozen-lockfile --production' }
|
|
||||||
|
|
||||||
" Debug
|
|
||||||
Plug 'puremourning/vimspector'
|
|
||||||
Plug 'mfussenegger/nvim-dap'
|
|
||||||
|
|
||||||
" LSP
|
|
||||||
Plug 'neovim/nvim-lspconfig'
|
|
||||||
Plug 'hrsh7th/nvim-cmp'
|
|
||||||
Plug 'hrsh7th/cmp-buffer'
|
|
||||||
Plug 'hrsh7th/cmp-path'
|
|
||||||
Plug 'hrsh7th/cmp-cmdline'
|
|
||||||
Plug 'hrsh7th/cmp-nvim-lsp'
|
|
||||||
Plug 'saadparwaiz1/cmp_luasnip'
|
|
||||||
Plug 'L3MON4D3/LuaSnip'
|
|
||||||
Plug 'sbdchd/neoformat'
|
|
||||||
|
|
||||||
Plug 'hrsh7th/cmp-vsnip'
|
|
||||||
Plug 'hrsh7th/vim-vsnip'
|
|
||||||
Plug 'hrsh7th/vim-vsnip-integ'
|
|
||||||
|
|
||||||
" Telescope
|
|
||||||
Plug 'nvim-lua/plenary.nvim'
|
|
||||||
Plug 'nvim-telescope/telescope.nvim'
|
|
||||||
|
|
||||||
" Tree
|
|
||||||
Plug 'nvim-tree/nvim-web-devicons'
|
|
||||||
Plug 'nvim-tree/nvim-tree.lua'
|
|
||||||
|
|
||||||
" SHFMT
|
|
||||||
Plug 'z0mbix/vim-shfmt', { 'for': 'sh' }
|
|
||||||
|
|
||||||
" Mikrotik
|
|
||||||
Plug 'zainin/vim-mikrotik'
|
|
||||||
|
|
||||||
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
|
||||||
Plug 'nvim-treesitter/nvim-treesitter-context'
|
|
||||||
|
|
||||||
" Autopair
|
|
||||||
Plug 'windwp/nvim-autopairs'
|
|
||||||
|
|
||||||
" AI
|
|
||||||
Plug 'folke/snacks.nvim'
|
|
||||||
Plug 'coder/claudecode.nvim'
|
|
||||||
|
|
||||||
call plug#end()
|
|
||||||
|
|
||||||
" LUA
|
|
||||||
lua<<EOF
|
|
||||||
vim.filetype.add({
|
|
||||||
-- Ansible
|
|
||||||
pattern = {
|
|
||||||
[".*playbooks/.*%.ya?ml"] = "yaml.ansible",
|
|
||||||
[".*tasks/.*%.ya?ml"] = "yaml.ansible",
|
|
||||||
[".*handlers/.*%.ya?ml"] = "yaml.ansible",
|
|
||||||
[".*roles/.*/.*%.ya?ml"] = "yaml.ansible",
|
|
||||||
},
|
|
||||||
-- Docker Compose + GitLab CI (merged into one filename table)
|
|
||||||
filename = {
|
|
||||||
["docker-compose.yml"] = "yaml.docker-compose",
|
|
||||||
["docker-compose.yaml"] = "yaml.docker-compose",
|
|
||||||
[".gitlab-ci.yml"] = "yaml.gitlab",
|
|
||||||
[".gitlab-ci.yaml"] = "yaml.gitlab",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- capabilities for nvim-cmp
|
|
||||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
|
||||||
|
|
||||||
-- Prefer LspAttach instead of per-server on_attach
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
|
||||||
callback = function(args)
|
|
||||||
local bufnr = args.buf
|
|
||||||
|
|
||||||
vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
|
||||||
|
|
||||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', '<space>K', vim.lsp.buf.hover, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', 'ge', vim.diagnostic.setqflist, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, { buffer = bufnr, silent = true })
|
|
||||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, { buffer = bufnr, silent = true })
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
local border = 'rounded'
|
|
||||||
|
|
||||||
vim.lsp.config('*', {
|
|
||||||
capabilities = capabilities,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.diagnostic.config({
|
|
||||||
float = { border = border },
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/hover"] = function(err, result, ctx, config)
|
|
||||||
config = config or {}
|
|
||||||
config.border = border
|
|
||||||
return vim.lsp.handlers.hover(err, result, ctx, config)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/signatureHelp"] = function(err, result, ctx, config)
|
|
||||||
config = config or {}
|
|
||||||
config.border = border
|
|
||||||
return vim.lsp.handlers.signature_help(err, result, ctx, config)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Server-specific overrides
|
|
||||||
vim.lsp.config('yamlls', {
|
|
||||||
settings = {
|
|
||||||
json = {
|
|
||||||
schemas = {
|
|
||||||
["https://raw.githubusercontent.com/quantumblacklabs/kedro/develop/static/jsonschema/kedro-catalog-0.17.json"]= "conf/**/*catalog*",
|
|
||||||
["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*",
|
|
||||||
["https://github.com/ansible/schemas/blob/main/f/ansible.json"] = "*.yaml,*.yml",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yaml = { keyOrdering = false },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.lsp.config('gopls', {
|
|
||||||
cmd = {"gopls", "serve"},
|
|
||||||
filetypes = { "go", "gomod", "gowork", "gotmpl" },
|
|
||||||
settings = {
|
|
||||||
gopls = {
|
|
||||||
analyses = { unusedparams = true },
|
|
||||||
staticcheck = true,
|
|
||||||
linksInHover = false,
|
|
||||||
codelenses = {
|
|
||||||
generate = true,
|
|
||||||
gc_details = true,
|
|
||||||
regenerate_cgo = true,
|
|
||||||
tidy = true,
|
|
||||||
upgrade_depdendency = true,
|
|
||||||
vendor = true,
|
|
||||||
},
|
|
||||||
completeUnimported = true,
|
|
||||||
usePlaceholders = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.lsp.config('ruff', {})
|
|
||||||
|
|
||||||
-- Enable servers (remove 'solargraph' if not using Ruby)
|
|
||||||
vim.lsp.enable({
|
|
||||||
'clangd', 'bashls', 'yamlls', 'ansiblels', 'gopls', 'solargraph',
|
|
||||||
'terraformls', 'tflint', 'marksman', 'rust_analyzer', 'ruff',
|
|
||||||
})
|
|
||||||
|
|
||||||
-- nvim-cmp setup with Tab support
|
|
||||||
local cmp = require('cmp')
|
|
||||||
cmp.setup({
|
|
||||||
mapping = cmp.mapping.preset.insert({
|
|
||||||
['<C-Space>'] = cmp.mapping.complete(),
|
|
||||||
|
|
||||||
-- Tab: indent on empty/whitespace-only lines, trigger completion elsewhere
|
|
||||||
['<Tab>'] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
elseif vim.fn["copilot#GetDisplayedSuggestion"]().text ~= "" then
|
|
||||||
vim.fn.feedkeys(vim.fn["copilot#Accept"](""), "n")
|
|
||||||
elseif vim.api.nvim_get_current_line():match("^%s*$") then
|
|
||||||
fallback()
|
|
||||||
else
|
|
||||||
cmp.complete()
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }),
|
|
||||||
|
|
||||||
-- Shift-Tab: go to previous completion item or fallback
|
|
||||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }),
|
|
||||||
|
|
||||||
-- Enter to confirm selection
|
|
||||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
|
||||||
}),
|
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'luasnip' },
|
|
||||||
{ name = 'buffer' },
|
|
||||||
{ name = 'path' },
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.keymap.set("t", "<C-w>h", "<C-\\><C-n><C-w>h", { desc = "Move to left window" })
|
|
||||||
vim.keymap.set("t", "<C-w>l", "<C-\\><C-n><C-w>l", { desc = "Move to right window" })
|
|
||||||
vim.keymap.set("t", "<C-w>p", "<C-\\><C-n><C-w>p", { desc = "Focus previous window" })
|
|
||||||
|
|
||||||
require("claudecode").setup()
|
|
||||||
EOF
|
|
||||||
|
|
||||||
" Added popout window to see diagnostic
|
|
||||||
set updatetime=250
|
|
||||||
autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"})
|
|
||||||
|
|
||||||
" Copilot
|
|
||||||
let g:copilot_no_tab_map = v:true
|
|
||||||
|
|
||||||
" Neoformat
|
|
||||||
let g:neoformat_try_formatprg = 1
|
|
||||||
let g:neoformat_basic_format_trim = 1
|
|
||||||
let g:neoformat_only_msg_on_error = 1
|
|
||||||
" autocmd BufWritePre * silent! undojoin | Neoformat
|
|
||||||
|
|
||||||
let g:neoformat_python_ruff = {
|
|
||||||
\ 'exe': 'ruff',
|
|
||||||
\ 'stdin': 1,
|
|
||||||
\ 'args': ['format', '--line-length=80', '-q', '-'],
|
|
||||||
\ }
|
|
||||||
let g:neoformat_enabled_python = ['ruff']
|
|
||||||
|
|
||||||
" Terraform
|
|
||||||
let g:terraform_fmt_on_save=1
|
|
||||||
let g:terraform_align=1
|
|
||||||
|
|
||||||
function! s:check_back_space() abort
|
|
||||||
let col = col('.') - 1
|
|
||||||
return !col || getline('.')[col - 1] =~# '\s'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Enable show hidden in NerdTree
|
|
||||||
let g:NERDTreeShowHidden=1
|
|
||||||
|
|
||||||
" latex
|
|
||||||
let g:tex_flavor = "latex"
|
|
||||||
|
|
||||||
" Debug
|
|
||||||
let g:vimspector_enable_mappings = 'VISUAL_STUDIO'
|
|
||||||
let g:vimspector_install_gadgets = [ 'debugpy', 'vscode-go', 'CodeLLDB', 'vscode-node-debug2' ]
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Theme
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" colorscheme gruvbox
|
|
||||||
" colorscheme default
|
|
||||||
colorscheme dracula
|
|
||||||
let g:gruvbox_invert_selection='0'
|
|
||||||
let g:gruvbox_contrast_dark = 'hard'
|
|
||||||
set background=dark
|
|
||||||
" hi Normal ctermbg=NONE
|
|
||||||
hi Pmenu ctermfg=NONE ctermbg=236 cterm=NONE guifg=NONE guibg=#64666d gui=NONE
|
|
||||||
hi PmenuSel ctermfg=NONE ctermbg=246 cterm=NONE guifg=NONE guibg=#204a87 gui=NONE
|
|
||||||
hi CursorLine cterm=NONE term=NONE ctermbg=NONE guibg=NONE
|
|
||||||
hi CursorLine ctermbg=235
|
|
||||||
hi DiffAdd cterm=BOLD ctermfg=NONE ctermbg=22
|
|
||||||
hi DiffDelete cterm=BOLD ctermfg=NONE ctermbg=52
|
|
||||||
hi DiffChange cterm=BOLD ctermfg=NONE ctermbg=23
|
|
||||||
hi DiffText cterm=BOLD ctermfg=NONE ctermbg=23
|
|
||||||
set t_ZH="\e[3m"
|
|
||||||
set t_ZR="\e[23m"
|
|
||||||
highlight Comment cterm=italic gui=italic
|
|
||||||
highlight htmlArg gui=italic cterm=italic
|
|
||||||
|
|
||||||
" column
|
|
||||||
set textwidth=80
|
|
||||||
set colorcolumn=80
|
|
||||||
highlight ColorColumn ctermbg=236
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Status Line
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
function! GitBranch()
|
|
||||||
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! StatuslineGit()
|
|
||||||
let l:branchname = GitBranch()
|
|
||||||
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
set laststatus=3
|
|
||||||
|
|
||||||
lua <<EOF
|
|
||||||
vim.o.statusline = table.concat({
|
|
||||||
"%#IncSearch#",
|
|
||||||
"%{&filetype!=#''?' ['.&filetype..'] ':' '}",
|
|
||||||
"%{&modified?'[+] ':''}",
|
|
||||||
"%#CursorLineNr#",
|
|
||||||
" %F",
|
|
||||||
"%=",
|
|
||||||
"%#CursorLineNr#",
|
|
||||||
"%{StatuslineGit()}",
|
|
||||||
"%#Search#",
|
|
||||||
" %l/%L",
|
|
||||||
" [%c]",
|
|
||||||
})
|
|
||||||
EOF
|
|
||||||
|
|
||||||
" Disable godoc keys
|
|
||||||
let g:go_doc_keywordprg_enabled = 0
|
|
||||||
set completeopt-=preview
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Keyboard shortcuts
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
let mapleader = "\<Space>"
|
|
||||||
nmap <leader>2 :w!<cr>
|
|
||||||
|
|
||||||
" Adding print message
|
|
||||||
autocmd FileType python nmap <leader>f i print("--------DEBUG--------")<CR>print()<CR>print("--------END DEBUG--------")<UP><LEFT>
|
|
||||||
autocmd FileType sh nmap <leader>f i echo -e "--------DEBUG--------"<CR>echo -e ""<CR>echo -e "--------END DEBUG--------"<UP><LEFT>
|
|
||||||
|
|
||||||
" Adding commentary
|
|
||||||
xmap <leader>c <Plug>Commentary
|
|
||||||
nmap <leader>c <Plug>Commentary
|
|
||||||
omap <leader>c <Plug>Commentary
|
|
||||||
nmap <leader>c <Plug>CommentaryLine
|
|
||||||
|
|
||||||
xmap <C-_> <Plug>Commentary
|
|
||||||
nmap <C-_> <Plug>Commentary
|
|
||||||
omap <C-_> <Plug>Commentary
|
|
||||||
nmap <C-_> <Plug>CommentaryLine
|
|
||||||
|
|
||||||
" Better tab (visual mode only - insert mode Tab is handled by nvim-cmp above)
|
|
||||||
vnoremap <Tab> >
|
|
||||||
vnoremap <S-Tab> <
|
|
||||||
|
|
||||||
" Better word
|
|
||||||
nmap yw vey
|
|
||||||
|
|
||||||
" Select all text
|
|
||||||
nmap <C-a> gg<S-v>G
|
|
||||||
|
|
||||||
" Telescope
|
|
||||||
nmap <Leader>e <cmd>Telescope buffers<cr>
|
|
||||||
nmap <Leader>w <cmd>Telescope find_files<cr>
|
|
||||||
nmap <Leader>q <cmd>Telescope live_grep<cr>
|
|
||||||
nmap <Leader>g <cmd>Telescope git_branches<cr>
|
|
||||||
nmap <Leader>a <cmd>Telescope diagnostics<cr>
|
|
||||||
|
|
||||||
" Resize window
|
|
||||||
nnoremap Ó :vertical resize -5<CR>
|
|
||||||
nnoremap Ô :res -5<CR>
|
|
||||||
nnoremap ū :res +5<CR>
|
|
||||||
nnoremap Ł :vertical resize +5<CR>
|
|
||||||
|
|
||||||
" Split window
|
|
||||||
nnoremap _ :vsp <CR>
|
|
||||||
nnoremap - :split <CR>
|
|
||||||
|
|
||||||
" Reload file
|
|
||||||
nnoremap <F5> :edit <CR>
|
|
||||||
nnoremap <Leader><F5> :edit! <CR>
|
|
||||||
|
|
||||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
|
||||||
|
|
||||||
" Moving line up or down using alt
|
|
||||||
nnoremap <A-Up> :m-2<CR>
|
|
||||||
nnoremap <A-Down> :m+<CR>
|
|
||||||
inoremap <A-Up> <Esc>:m-2<CR>
|
|
||||||
inoremap <A-Down> <Esc>:m+<CR>
|
|
||||||
vnoremap <A-Down> :m '>+1<CR>gv=gv
|
|
||||||
vnoremap <A-Up> :m '<-2<CR>gv=gv
|
|
||||||
|
|
||||||
nnoremap Ż :m-2<CR>
|
|
||||||
nnoremap ∆ :m+<CR>
|
|
||||||
vnoremap ∆ :m '>+1<CR>gv=gv
|
|
||||||
vnoremap Ż :m '<-2<CR>gv=gv
|
|
||||||
|
|
||||||
nnoremap <A-k> :m-2<CR>
|
|
||||||
nnoremap <A-j> :m+<CR>
|
|
||||||
inoremap <A-k> <Esc>:m-2<CR>
|
|
||||||
inoremap <A-j> <Esc>:m+<CR>
|
|
||||||
vnoremap <A-j> :m '>+1<CR>gv=gv
|
|
||||||
vnoremap <A-k> :m '<-2<CR>gv=gv
|
|
||||||
|
|
||||||
" Better replace
|
|
||||||
nnoremap <Leader>s :%s//g<Left><Left>
|
|
||||||
vnoremap <Leader>s :s//g<Left><Left>
|
|
||||||
|
|
||||||
" Better adding into beginning and ending line
|
|
||||||
vnoremap F <C-v>$A
|
|
||||||
vnoremap f <C-v>0I
|
|
||||||
|
|
||||||
" Better management of tabs
|
|
||||||
nnoremap <C-t> :tabnew<CR>
|
|
||||||
|
|
||||||
nnoremap <F7> :tabprevious<CR>
|
|
||||||
nnoremap <F8> :tabnext<CR>
|
|
||||||
inoremap <F7> <Esc>:tabprevious<CR>i
|
|
||||||
inoremap <F8> <Esc>:tabnext<CR>i
|
|
||||||
|
|
||||||
nnoremap <Leader>k :tabprevious<CR>
|
|
||||||
nnoremap <Leader>j :tabnext<CR>
|
|
||||||
|
|
||||||
inoremap <C-t> <Esc>:tabnew<CR>
|
|
||||||
|
|
||||||
" Better moving
|
|
||||||
nnoremap J }
|
|
||||||
nnoremap K {
|
|
||||||
vnoremap J }
|
|
||||||
vnoremap K {
|
|
||||||
nnoremap <C-h> <C-w>h
|
|
||||||
nnoremap <C-j> <C-w>j
|
|
||||||
nnoremap <C-k> <C-w>k
|
|
||||||
nnoremap <C-l> <C-w>l
|
|
||||||
tnoremap <C-h> <C-\><C-n><C-w>h
|
|
||||||
tnoremap <C-j> <C-\><C-n><C-w>j
|
|
||||||
tnoremap <C-k> <C-\><C-n><C-w>k
|
|
||||||
tnoremap <C-l> <C-\><C-n><C-w>l
|
|
||||||
|
|
||||||
" Copy into system
|
|
||||||
noremap <Leader>y "*y
|
|
||||||
noremap <Leader>p "*p
|
|
||||||
|
|
||||||
" Code
|
|
||||||
map <Leader><Tab> Vgaip= <CR>
|
|
||||||
|
|
||||||
" Multiple cursors
|
|
||||||
let g:multi_cursor_start_word_key = '<C-n>'
|
|
||||||
let g:multi_cursor_select_all_word_key = '<A-n>'
|
|
||||||
let g:multi_cursor_start_key = 'g<C-n>'
|
|
||||||
let g:multi_cursor_select_all_key = 'g<A-n>'
|
|
||||||
let g:multi_cursor_next_key = '<C-n>'
|
|
||||||
let g:multi_cursor_prev_key = '<C-p>'
|
|
||||||
let g:multi_cursor_skip_key = '<C-x>'
|
|
||||||
let g:multi_cursor_quit_key = '<Esc>'
|
|
||||||
|
|
||||||
" Others
|
|
||||||
nnoremap ee :!mupdf $(echo % \| sed 's/tex$/pdf/') & disown<CR><CR>
|
|
||||||
map <C-d> :NvimTreeToggle<CR>
|
|
||||||
nnoremap <leader>r :NvimTreeRefresh<CR>
|
|
||||||
nnoremap <leader>n :NvimTreeFindFile<CR>
|
|
||||||
nnoremap <F11> :Goyo <CR>
|
|
||||||
cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
|
|
||||||
map <F3> :setlocal spell! spelllang=en<CR>
|
|
||||||
map <F4> :setlocal spell! spelllang=pl<CR>
|
|
||||||
|
|
||||||
" Human Errors
|
|
||||||
:command! W w
|
|
||||||
:command! Q q
|
|
||||||
:command! Wq wq
|
|
||||||
:command! X x
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Custom functions
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
lua <<EOF
|
|
||||||
function go_org_imports(wait_ms)
|
|
||||||
local params = vim.lsp.util.make_range_params()
|
|
||||||
params.context = {only = {"source.organizeImports"}}
|
|
||||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, wait_ms)
|
|
||||||
for cid, res in pairs(result or {}) do
|
|
||||||
for _, r in pairs(res.result or {}) do
|
|
||||||
if r.edit then
|
|
||||||
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
|
|
||||||
vim.lsp.util.apply_workspace_edit(r.edit, enc)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
EOF
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" Files
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
|
|
||||||
" Bash
|
|
||||||
if executable('shfmt')
|
|
||||||
let &l:formatprg='shfmt -i ' . &l:shiftwidth . ' -ln posix -sr -ci -s'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let g:shfmt_extra_args = '-i 4 -ci -sr -s'
|
|
||||||
let g:shfmt_fmt_on_save = 1
|
|
||||||
let g:shfmt_opt="-ci"
|
|
||||||
|
|
||||||
" Python
|
|
||||||
autocmd BufRead,BufNewFile *.py set textwidth=0
|
|
||||||
autocmd BufRead,BufNewFile *.py set fo-=t
|
|
||||||
autocmd BufWritePre *.py silent! undojoin | Neoformat ruff
|
|
||||||
noremap <Leader>f :silent! undojoin \| Neoformat ruff <CR> :w<CR>
|
|
||||||
|
|
||||||
" Newsboat
|
|
||||||
autocmd BufRead,BufNewFile urls set textwidth=0
|
|
||||||
|
|
||||||
" Latex
|
|
||||||
autocmd BufWritePost *.tex silent! execute "!pdflatex --shell-escape -synctex=1 -interaction=nonstopmode % > /dev/null " | redraw!
|
|
||||||
autocmd BufWritePost *.tex silent! execute "!latexmk -pdf -silent % > /dev/null" | redraw!
|
|
||||||
autocmd BufWritePost *.tex silent! execute "!rm -rf *.fls *.ilg *.nav *.snm *.toc *.idx *.lof *.lot *.synctex.gz *.aux *.fdb_latexmk *.fls *.log *.out > /dev/null" | redraw!
|
|
||||||
autocmd BufWritePost *.tex silent! execute "!pkill -HUP mupdf > /dev/null" | redraw!
|
|
||||||
|
|
||||||
" Mutt
|
|
||||||
autocmd BufRead,BufNewFile /tmp/neomutt* let g:goyo_width=80
|
|
||||||
autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo
|
|
||||||
autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo\|x!<CR>
|
|
||||||
autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo\|q!<CR>
|
|
||||||
|
|
||||||
" Yaml
|
|
||||||
autocmd BufRead,BufNewFile *.yaml,*.yml let g:indentLine_enabled = 1
|
|
||||||
autocmd BufRead,BufNewFile *.yaml,*.yml let g:indentLine_char = '⦙'
|
|
||||||
autocmd BufWritePre *.yaml,*.yml silent! undojoin | Neoformat prettier
|
|
||||||
|
|
||||||
" JSON
|
|
||||||
autocmd BufWritePre *.json silent! undojoin | Neoformat prettier
|
|
||||||
|
|
||||||
" GoLang
|
|
||||||
autocmd BufRead *.go set noexpandtab
|
|
||||||
autocmd BufWritePre *.go lua go_org_imports()
|
|
||||||
let g:go_def_mapping_enabled = 0
|
|
||||||
let g:go#fmt#autosave = v:true
|
|
||||||
autocmd BufWritePre *.go silent! undojoin | Neoformat
|
|
||||||
autocmd BufWritePre *.gomod silent! undojoin | Neoformat
|
|
||||||
|
|
||||||
" Conf
|
|
||||||
au BufNewFile,BufRead *.conf setfiletype conf
|
|
||||||
|
|
||||||
" Mikrotik
|
|
||||||
au BufNewFile,BufRead *.mikrotik setfiletype routeros
|
|
||||||
|
|
||||||
" Ebuild
|
|
||||||
au BufNewFile,BufRead,BufWritePre *.ebuild let g:shfmt_extra_args = '-ci -sr -s'
|
|
||||||
|
|
||||||
" TOML
|
|
||||||
autocmd BufWritePre *.toml silent! undojoin | Neoformat taplo
|
|
||||||
|
|
||||||
" Terraform
|
|
||||||
autocmd BufWritePre *.tf lua vim.lsp.buf.format()
|
|
||||||
autocmd BufWritePre *.tfvars lua vim.lsp.buf.format()
|
|
||||||
|
|
||||||
" Markdown
|
|
||||||
autocmd BufRead,BufNewFile *.md setlocal spell spelllang=en_us
|
|
||||||
autocmd BufWritePre *.md silent! undojoin | Neoformat mdformat
|
|
||||||
|
|
||||||
" Automatically deletes all trailing whitespace and newlines at end of file on save.
|
|
||||||
autocmd BufWritePre * %s/\s\+$//e
|
|
||||||
autocmd BufWritepre * %s/\n\+\%$//e
|
|
||||||
|
|
||||||
" highlight the visual selection after pressing enter.
|
|
||||||
xnoremap <silent> <cr> "*y:silent! let searchTerm = '\V'.substitute(escape(@*, '\/'), "\n", '\\n', "g") <bar> let @/ = searchTerm <bar> echo '/'.@/ <bar> call histadd("search", searchTerm) <bar> set hls<cr>
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
" FZF
|
|
||||||
""""""""""""""""""""""""""""""""
|
|
||||||
let $FZF_DEFAULT_COMMAND = 'find . -type f -not -path "*/\.git/*" -not -path "*/\.local/share/nvim/*" -not -path "./Library/*" '
|
|
||||||
command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --color "always" '.shellescape(<q-args>), 1, <bang>0)
|
|
||||||
command! -bang -nargs=* FindCurrentWord call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --color "always" '.shellescape(expand('<cword>')), 1, <bang>0)
|
|
||||||
set grepprg=rg\ --vimgrep
|
|
||||||
|
|
||||||
" Custom functions "
|
|
||||||
function! RemoveForti()
|
|
||||||
:%g/set uuid .*/d
|
|
||||||
:%g/set comment .*/d
|
|
||||||
:%s/ \+//g
|
|
||||||
:%s/edit \(\d\{1,}\)/edit 0/g
|
|
||||||
:g/^$/d
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! RemoveFortiAddresses()
|
|
||||||
:e!
|
|
||||||
:%g/set uuid .*/d
|
|
||||||
:%g/set comment .*/d
|
|
||||||
:%s/ \+//g
|
|
||||||
:%s/edit \(\d\{1,}\)/edit 0/g
|
|
||||||
:%s/next\n/set allow-routing enable\rnext\r/g
|
|
||||||
:g/^$/d
|
|
||||||
:%!uniq
|
|
||||||
:w!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! BlurForti()
|
|
||||||
:%g/set uuid .*/d
|
|
||||||
:%g/set description .*/d
|
|
||||||
:%g/set comment .*/d
|
|
||||||
:%g/set comments .*/d
|
|
||||||
:%s/username .*/username "XXXXXXXXXXXXXXXXXXXXXXX"/g
|
|
||||||
:%s/dn .*/dn "XXXXXXXXXXXXXXXXXXXXXXX"/g
|
|
||||||
:%s/psksecret ENC .*/psksecret XXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/password ENC .*/password XXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/passwd ENC .*/passwd XXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/group-name .*/group-name "XXXXXXXXXXXXXXXXXXXXXXX"/g
|
|
||||||
:%s/ssh-rsa .*/ssh-rsa XXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/-----BEGIN OPENSSH PRIVATE KEY.*----/-----BEGIN OPENSSH PRIVATE KEY -----\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/-----BEGIN CERTIFICATE.*----/-----BEGIN CERTIFICATE -----\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/-----BEGIN ENCRYPTED PRIVATE KEY.*----/-----BEGIN ENCRYPTED PRIVATE KEY -----\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/g
|
|
||||||
:%s/"VPN_.*"/"VPN_XXXXX"/g
|
|
||||||
:%s/\v(\d{1,3}\.){3}\d{1,3}/X.X.X.X/g
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ColoursFortiSSL()
|
|
||||||
:%s/next\n/set color 23\rset allow-routing enable\rnext\r/g
|
|
||||||
endfunction
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[global]
|
|
||||||
break-system-packages = true
|
|
||||||
@@ -1,567 +0,0 @@
|
|||||||
#set viewmode miller
|
|
||||||
set viewmode multipane
|
|
||||||
set column_ratios 1,3,4
|
|
||||||
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
|
||||||
set show_hidden false
|
|
||||||
|
|
||||||
# Ask for a confirmation when running the "delete" command?
|
|
||||||
# Valid values are "always", "never", "multiple" (default)
|
|
||||||
# With "multiple", ranger will ask only if you delete multiple files at once.
|
|
||||||
#set confirm_on_delete multiple
|
|
||||||
set confirm_on_delete never
|
|
||||||
set use_preview_script true
|
|
||||||
set automatically_count_files true
|
|
||||||
set open_all_images true
|
|
||||||
set vcs_aware false
|
|
||||||
set vcs_backend_git enabled
|
|
||||||
set vcs_backend_hg disabled
|
|
||||||
set vcs_backend_bzr disabled
|
|
||||||
set vcs_backend_svn disabled
|
|
||||||
set preview_images true
|
|
||||||
set preview_images_method urxvt
|
|
||||||
set w3m_delay 0.02
|
|
||||||
set iterm2_font_width 8
|
|
||||||
set iterm2_font_height 11
|
|
||||||
set unicode_ellipsis false
|
|
||||||
set bidi_support false
|
|
||||||
set show_hidden_bookmarks true
|
|
||||||
set colorscheme default
|
|
||||||
set preview_files true
|
|
||||||
set preview_directories true
|
|
||||||
set collapse_preview true
|
|
||||||
set save_console_history true
|
|
||||||
set status_bar_on_top false
|
|
||||||
set draw_progress_bar_in_status_bar true
|
|
||||||
set draw_borders true
|
|
||||||
set respect draw_borders
|
|
||||||
set dirname_in_tabs false
|
|
||||||
set mouse_enabled true
|
|
||||||
set display_size_in_main_column true
|
|
||||||
set display_size_in_status_bar true
|
|
||||||
|
|
||||||
# Display the free disk space in the status bar?
|
|
||||||
set display_free_space_in_status_bar true
|
|
||||||
|
|
||||||
# Display files tags in all columns or only in main column?
|
|
||||||
set display_tags_in_all_columns true
|
|
||||||
|
|
||||||
# Set a title for the window?
|
|
||||||
set update_title false
|
|
||||||
|
|
||||||
# Set the title to "ranger" in the tmux program?
|
|
||||||
set update_tmux_title true
|
|
||||||
|
|
||||||
# Shorten the title if it gets long? The number defines how many
|
|
||||||
# directories are displayed at once, 0 turns off this feature.
|
|
||||||
set shorten_title 3
|
|
||||||
|
|
||||||
# Show hostname in titlebar?
|
|
||||||
set hostname_in_titlebar false
|
|
||||||
|
|
||||||
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
|
||||||
set tilde_in_titlebar true
|
|
||||||
|
|
||||||
# How many directory-changes or console-commands should be kept in history?
|
|
||||||
set max_history_size 20
|
|
||||||
set max_console_history_size 50
|
|
||||||
|
|
||||||
# Try to keep so much space between the top/bottom border when scrolling:
|
|
||||||
set scroll_offset 10
|
|
||||||
|
|
||||||
# Flush the input after each key hit? (Noticeable when ranger lags)
|
|
||||||
set flushinput true
|
|
||||||
|
|
||||||
# Padding on the right when there's no preview?
|
|
||||||
# This allows you to click into the space to run the file.
|
|
||||||
set padding_right true
|
|
||||||
|
|
||||||
# Save bookmarks (used with mX and `X) instantly?
|
|
||||||
# This helps to synchronize bookmarks between multiple ranger
|
|
||||||
# instances but leads to *slight* performance loss.
|
|
||||||
# When false, bookmarks are saved when ranger is exited.
|
|
||||||
set autosave_bookmarks true
|
|
||||||
|
|
||||||
# Save the "`" bookmark to disk. This can be used to switch to the last
|
|
||||||
# directory by typing "``".
|
|
||||||
set save_backtick_bookmark true
|
|
||||||
|
|
||||||
# You can display the "real" cumulative size of directories by using the
|
|
||||||
# command :get_cumulative_size or typing "dc". The size is expensive to
|
|
||||||
# calculate and will not be updated automatically. You can choose
|
|
||||||
# to update it automatically though by turning on this option:
|
|
||||||
set autoupdate_cumulative_size false
|
|
||||||
|
|
||||||
# Turning this on makes sense for screen readers:
|
|
||||||
set show_cursor false
|
|
||||||
|
|
||||||
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
|
||||||
set sort natural
|
|
||||||
|
|
||||||
# Additional sorting options
|
|
||||||
set sort_reverse false
|
|
||||||
set sort_case_insensitive true
|
|
||||||
set sort_directories_first true
|
|
||||||
set sort_unicode false
|
|
||||||
|
|
||||||
# Enable this if key combinations with the Alt Key don't work for you.
|
|
||||||
# (Especially on xterm)
|
|
||||||
set xterm_alt_key false
|
|
||||||
|
|
||||||
# Whether to include bookmarks in cd command
|
|
||||||
set cd_bookmarks true
|
|
||||||
|
|
||||||
# Changes case sensitivity for the cd command tab completion
|
|
||||||
set cd_tab_case sensitive
|
|
||||||
|
|
||||||
# Use fuzzy tab completion with the "cd" command. For example,
|
|
||||||
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
|
|
||||||
set cd_tab_fuzzy false
|
|
||||||
set preview_max_size 0
|
|
||||||
set hint_collapse_threshold 10
|
|
||||||
set show_selection_in_titlebar true
|
|
||||||
set idle_delay 2000
|
|
||||||
set metadata_deep_search false
|
|
||||||
set clear_filters_on_dir_change false
|
|
||||||
set line_numbers false
|
|
||||||
set relative_current_zero false
|
|
||||||
set one_indexed false
|
|
||||||
set save_tabs_on_exit false
|
|
||||||
set wrap_scroll false
|
|
||||||
set global_inode_type_filter
|
|
||||||
set freeze_files false
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == My settings
|
|
||||||
# ===================================================================
|
|
||||||
|
|
||||||
setlocal path=~/Screenshots sort mtime
|
|
||||||
setlocal path=~/Screenshots sort_reverse False
|
|
||||||
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Local Options
|
|
||||||
# ===================================================================
|
|
||||||
# You can set local options that only affect a single directory.
|
|
||||||
|
|
||||||
# Examples:
|
|
||||||
# setlocal path=~/downloads sort mtime
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Command Aliases in the Console
|
|
||||||
# ===================================================================
|
|
||||||
|
|
||||||
alias e edit
|
|
||||||
alias q quit
|
|
||||||
alias q! quit!
|
|
||||||
alias qa quitall
|
|
||||||
alias qa! quitall!
|
|
||||||
alias qall quitall
|
|
||||||
alias qall! quitall!
|
|
||||||
alias setl setlocal
|
|
||||||
|
|
||||||
alias filter scout -prts
|
|
||||||
alias find scout -aets
|
|
||||||
alias mark scout -mr
|
|
||||||
alias unmark scout -Mr
|
|
||||||
alias search scout -rs
|
|
||||||
alias search_inc scout -rts
|
|
||||||
alias travel scout -aefklst
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Define keys for the browser
|
|
||||||
# ===================================================================
|
|
||||||
|
|
||||||
# Basic
|
|
||||||
map bg shell set-wallpaper %f
|
|
||||||
map bc shell wall -i %f
|
|
||||||
map bh cd ~
|
|
||||||
|
|
||||||
map Q quitall
|
|
||||||
map q quit
|
|
||||||
copymap q ZZ ZQ
|
|
||||||
|
|
||||||
map R reload_cwd
|
|
||||||
map F set freeze_files!
|
|
||||||
map <C-r> reset
|
|
||||||
map <C-l> redraw_window
|
|
||||||
map <C-c> abort
|
|
||||||
map <esc> change_mode normal
|
|
||||||
map ~ set viewmode!
|
|
||||||
|
|
||||||
map i display_file
|
|
||||||
map ? help
|
|
||||||
map W display_log
|
|
||||||
map w taskview_open
|
|
||||||
map S shell $SHELL
|
|
||||||
|
|
||||||
map : console
|
|
||||||
map ; console
|
|
||||||
map ! console shell%space
|
|
||||||
map @ console -p6 shell %%s
|
|
||||||
map # console shell -p%space
|
|
||||||
map s console shell%space
|
|
||||||
map r chain draw_possible_programs; console open_with%%space
|
|
||||||
map f console find%space
|
|
||||||
map cd console cd%space
|
|
||||||
|
|
||||||
map <C-p> chain console; eval fm.ui.console.history_move(-1)
|
|
||||||
|
|
||||||
# Change the line mode
|
|
||||||
map Mf linemode filename
|
|
||||||
map Mi linemode fileinfo
|
|
||||||
map Mm linemode mtime
|
|
||||||
map Mp linemode permissions
|
|
||||||
map Ms linemode sizemtime
|
|
||||||
map Mt linemode metatitle
|
|
||||||
|
|
||||||
# Tagging / Marking
|
|
||||||
map t tag_toggle
|
|
||||||
map ut tag_remove
|
|
||||||
map <Space> mark_files toggle=True
|
|
||||||
map v mark_files all=True toggle=True
|
|
||||||
map uv mark_files all=True val=False
|
|
||||||
map V toggle_visual_mode
|
|
||||||
map uV toggle_visual_mode reverse=True
|
|
||||||
|
|
||||||
# For the nostalgics: Midnight Commander bindings
|
|
||||||
map <F1> help
|
|
||||||
map <F2> rename_append
|
|
||||||
map <F3> display_file
|
|
||||||
map <F4> edit
|
|
||||||
map <F5> copy
|
|
||||||
map <F6> cut
|
|
||||||
map <F7> console mkdir%space
|
|
||||||
map <F8> console delete
|
|
||||||
map <F10> exit
|
|
||||||
|
|
||||||
# In case you work on a keyboard with dvorak layout
|
|
||||||
map <UP> move up=1
|
|
||||||
map <DOWN> move down=1
|
|
||||||
map <LEFT> move left=1
|
|
||||||
map <RIGHT> move right=1
|
|
||||||
map <HOME> move to=0
|
|
||||||
map <END> move to=-1
|
|
||||||
map <PAGEDOWN> move down=1 pages=True
|
|
||||||
map <PAGEUP> move up=1 pages=True
|
|
||||||
map <CR> move right=1
|
|
||||||
#map <DELETE> console delete
|
|
||||||
map <INSERT> console touch%space
|
|
||||||
|
|
||||||
# VIM-like
|
|
||||||
copymap <UP> k
|
|
||||||
copymap <DOWN> j
|
|
||||||
copymap <LEFT> h
|
|
||||||
copymap <RIGHT> l
|
|
||||||
copymap <HOME> gg
|
|
||||||
copymap <END> G
|
|
||||||
copymap <PAGEDOWN> <C-F>
|
|
||||||
copymap <PAGEUP> <C-B>
|
|
||||||
|
|
||||||
map J move down=0.5 pages=True
|
|
||||||
map K move up=0.5 pages=True
|
|
||||||
copymap J <C-D>
|
|
||||||
copymap K <C-U>
|
|
||||||
|
|
||||||
# Jumping around
|
|
||||||
map H history_go -1
|
|
||||||
map L history_go 1
|
|
||||||
map ] move_parent 1
|
|
||||||
map [ move_parent -1
|
|
||||||
map } traverse
|
|
||||||
map { traverse_backwards
|
|
||||||
map ) jump_non
|
|
||||||
|
|
||||||
#DEFAULT MOVEMENT
|
|
||||||
map ge cd /etc
|
|
||||||
map gh cd ~
|
|
||||||
map gu cd /usr
|
|
||||||
#map gl cd -r .
|
|
||||||
map gL cd -r %f
|
|
||||||
#map gv cd /var
|
|
||||||
map gM cd /mnt
|
|
||||||
map gr cd /
|
|
||||||
map gR eval fm.cd(ranger.RANGERDIR)
|
|
||||||
map g? cd /usr/share/doc/ranger
|
|
||||||
|
|
||||||
# External Programs
|
|
||||||
map E edit
|
|
||||||
map du shell -p du --max-depth=1 -h --apparent-size
|
|
||||||
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
|
||||||
map yp yank path
|
|
||||||
map yd yank dir
|
|
||||||
map yn yank name
|
|
||||||
map y. yank name_without_extension
|
|
||||||
|
|
||||||
# Filesystem Operations
|
|
||||||
map = chmod
|
|
||||||
|
|
||||||
map cw console rename%space
|
|
||||||
map a rename_append
|
|
||||||
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
|
||||||
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
|
||||||
|
|
||||||
map pp paste
|
|
||||||
map po paste overwrite=True
|
|
||||||
map pP paste append=True
|
|
||||||
map pO paste overwrite=True append=True
|
|
||||||
map pl paste_symlink relative=False
|
|
||||||
map pL paste_symlink relative=True
|
|
||||||
map phl paste_hardlink
|
|
||||||
map pht paste_hardlinked_subtree
|
|
||||||
|
|
||||||
map dD console delete
|
|
||||||
|
|
||||||
map dd cut
|
|
||||||
map ud uncut
|
|
||||||
map da cut mode=add
|
|
||||||
map dr cut mode=remove
|
|
||||||
map dt cut mode=toggle
|
|
||||||
|
|
||||||
map yy copy
|
|
||||||
map uy uncut
|
|
||||||
map ya copy mode=add
|
|
||||||
map yr copy mode=remove
|
|
||||||
map yt copy mode=toggle
|
|
||||||
|
|
||||||
# Temporary workarounds
|
|
||||||
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
|
||||||
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
|
||||||
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
|
||||||
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
|
||||||
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
|
||||||
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
|
||||||
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
|
||||||
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
|
||||||
|
|
||||||
# Searching
|
|
||||||
map / console search%space
|
|
||||||
map n search_next
|
|
||||||
map N search_next forward=False
|
|
||||||
map ct search_next order=tag
|
|
||||||
map cs search_next order=size
|
|
||||||
map ci search_next order=mimetype
|
|
||||||
map cc search_next order=ctime
|
|
||||||
map cm search_next order=mtime
|
|
||||||
map ca search_next order=atime
|
|
||||||
|
|
||||||
# Tabs
|
|
||||||
map <C-n> tab_new
|
|
||||||
map <C-w> tab_close
|
|
||||||
map <TAB> tab_move 1
|
|
||||||
map <S-TAB> tab_move -1
|
|
||||||
map <A-Right> tab_move 1
|
|
||||||
map <A-Left> tab_move -1
|
|
||||||
map uq tab_restore
|
|
||||||
map <a-1> tab_open 1
|
|
||||||
map <a-2> tab_open 2
|
|
||||||
map <a-3> tab_open 3
|
|
||||||
map <a-4> tab_open 4
|
|
||||||
map <a-5> tab_open 5
|
|
||||||
map <a-6> tab_open 6
|
|
||||||
map <a-7> tab_open 7
|
|
||||||
map <a-8> tab_open 8
|
|
||||||
map <a-9> tab_open 9
|
|
||||||
map <a-r> tab_shift 1
|
|
||||||
map <a-l> tab_shift -1
|
|
||||||
|
|
||||||
# Sorting
|
|
||||||
map or set sort_reverse!
|
|
||||||
map oz set sort=random
|
|
||||||
map os chain set sort=size; set sort_reverse=False
|
|
||||||
map ob chain set sort=basename; set sort_reverse=False
|
|
||||||
map on chain set sort=natural; set sort_reverse=False
|
|
||||||
map om chain set sort=mtime; set sort_reverse=False
|
|
||||||
map oc chain set sort=ctime; set sort_reverse=False
|
|
||||||
map oa chain set sort=atime; set sort_reverse=False
|
|
||||||
map ot chain set sort=type; set sort_reverse=False
|
|
||||||
map oe chain set sort=extension; set sort_reverse=False
|
|
||||||
|
|
||||||
map oS chain set sort=size; set sort_reverse=True
|
|
||||||
map oB chain set sort=basename; set sort_reverse=True
|
|
||||||
map oN chain set sort=natural; set sort_reverse=True
|
|
||||||
map oM chain set sort=mtime; set sort_reverse=True
|
|
||||||
map oC chain set sort=ctime; set sort_reverse=True
|
|
||||||
map oA chain set sort=atime; set sort_reverse=True
|
|
||||||
map oT chain set sort=type; set sort_reverse=True
|
|
||||||
map oE chain set sort=extension; set sort_reverse=True
|
|
||||||
|
|
||||||
map dc get_cumulative_size
|
|
||||||
|
|
||||||
# Settings
|
|
||||||
map zc set collapse_preview!
|
|
||||||
map zd set sort_directories_first!
|
|
||||||
map zh set show_hidden!
|
|
||||||
map <C-h> set show_hidden!
|
|
||||||
copymap <C-h> <backspace>
|
|
||||||
copymap <backspace> <backspace2>
|
|
||||||
map zI set flushinput!
|
|
||||||
map zi set preview_images!
|
|
||||||
map zm set mouse_enabled!
|
|
||||||
map zp set preview_files!
|
|
||||||
map zP set preview_directories!
|
|
||||||
map zs set sort_case_insensitive!
|
|
||||||
map zu set autoupdate_cumulative_size!
|
|
||||||
map zv set use_preview_script!
|
|
||||||
map zf console filter%space
|
|
||||||
copymap zf zz
|
|
||||||
|
|
||||||
# Filter stack
|
|
||||||
map .n console filter_stack add name%space
|
|
||||||
map .m console filter_stack add mime%space
|
|
||||||
map .d filter_stack add type d
|
|
||||||
map .f filter_stack add type f
|
|
||||||
map .l filter_stack add type l
|
|
||||||
map .| filter_stack add or
|
|
||||||
map .& filter_stack add and
|
|
||||||
map .! filter_stack add not
|
|
||||||
map .r console filter_stack rotate
|
|
||||||
map .c filter_stack clear
|
|
||||||
map .* filter_stack decompose
|
|
||||||
map .p filter_stack pop
|
|
||||||
map .. filter_stack show
|
|
||||||
|
|
||||||
# Bookmarks
|
|
||||||
map `<any> enter_bookmark %any
|
|
||||||
map '<any> enter_bookmark %any
|
|
||||||
map m<any> set_bookmark %any
|
|
||||||
map um<any> unset_bookmark %any
|
|
||||||
|
|
||||||
map m<bg> draw_bookmarks
|
|
||||||
copymap m<bg> um<bg> `<bg> '<bg>
|
|
||||||
|
|
||||||
# Generate all the chmod bindings with some python help:
|
|
||||||
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
|
||||||
|
|
||||||
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
|
||||||
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Define keys for the console
|
|
||||||
# ===================================================================
|
|
||||||
# Note: Unmapped keys are passed directly to the console.
|
|
||||||
|
|
||||||
# Basic
|
|
||||||
cmap <tab> eval fm.ui.console.tab()
|
|
||||||
cmap <s-tab> eval fm.ui.console.tab(-1)
|
|
||||||
cmap <ESC> eval fm.ui.console.close()
|
|
||||||
cmap <CR> eval fm.ui.console.execute()
|
|
||||||
cmap <C-l> redraw_window
|
|
||||||
|
|
||||||
copycmap <ESC> <C-c>
|
|
||||||
copycmap <CR> <C-j>
|
|
||||||
|
|
||||||
# Move around
|
|
||||||
cmap <up> eval fm.ui.console.history_move(-1)
|
|
||||||
cmap <down> eval fm.ui.console.history_move(1)
|
|
||||||
cmap <left> eval fm.ui.console.move(left=1)
|
|
||||||
cmap <right> eval fm.ui.console.move(right=1)
|
|
||||||
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
|
||||||
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
|
||||||
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
|
||||||
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
|
||||||
|
|
||||||
copycmap <a-b> <a-left>
|
|
||||||
copycmap <a-f> <a-right>
|
|
||||||
|
|
||||||
# Line Editing
|
|
||||||
cmap <backspace> eval fm.ui.console.delete(-1)
|
|
||||||
cmap <delete> eval fm.ui.console.delete(0)
|
|
||||||
cmap <C-w> eval fm.ui.console.delete_word()
|
|
||||||
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
|
||||||
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
|
||||||
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
|
||||||
cmap <C-y> eval fm.ui.console.paste()
|
|
||||||
|
|
||||||
# And of course the emacs way
|
|
||||||
copycmap <ESC> <C-g>
|
|
||||||
copycmap <up> <C-p>
|
|
||||||
copycmap <down> <C-n>
|
|
||||||
copycmap <left> <C-b>
|
|
||||||
copycmap <right> <C-f>
|
|
||||||
copycmap <home> <C-a>
|
|
||||||
copycmap <end> <C-e>
|
|
||||||
copycmap <delete> <C-d>
|
|
||||||
copycmap <backspace> <C-h>
|
|
||||||
|
|
||||||
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
|
||||||
# and <backspace2> (code 127). To be sure, use both.
|
|
||||||
copycmap <backspace> <backspace2>
|
|
||||||
|
|
||||||
# This special expression allows typing in numerals:
|
|
||||||
cmap <allow_quantifiers> false
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Pager Keybindings
|
|
||||||
# ===================================================================
|
|
||||||
|
|
||||||
# Movement
|
|
||||||
pmap <down> pager_move down=1
|
|
||||||
pmap <up> pager_move up=1
|
|
||||||
pmap <left> pager_move left=4
|
|
||||||
pmap <right> pager_move right=4
|
|
||||||
pmap <home> pager_move to=0
|
|
||||||
pmap <end> pager_move to=-1
|
|
||||||
pmap <pagedown> pager_move down=1.0 pages=True
|
|
||||||
pmap <pageup> pager_move up=1.0 pages=True
|
|
||||||
pmap <C-d> pager_move down=0.5 pages=True
|
|
||||||
pmap <C-u> pager_move up=0.5 pages=True
|
|
||||||
|
|
||||||
copypmap <UP> k <C-p>
|
|
||||||
copypmap <DOWN> j <C-n> <CR>
|
|
||||||
copypmap <LEFT> h
|
|
||||||
copypmap <RIGHT> l
|
|
||||||
copypmap <HOME> g
|
|
||||||
copypmap <END> G
|
|
||||||
copypmap <C-d> d
|
|
||||||
copypmap <C-u> u
|
|
||||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
|
||||||
copypmap <PAGEUP> p b <C-B>
|
|
||||||
|
|
||||||
# Basic
|
|
||||||
pmap <C-l> redraw_window
|
|
||||||
pmap <ESC> pager_close
|
|
||||||
copypmap <ESC> q Q i <F3>
|
|
||||||
pmap E edit_file
|
|
||||||
|
|
||||||
# ===================================================================
|
|
||||||
# == Taskview Keybindings
|
|
||||||
# ===================================================================
|
|
||||||
|
|
||||||
# Movement
|
|
||||||
tmap <up> taskview_move up=1
|
|
||||||
tmap <down> taskview_move down=1
|
|
||||||
tmap <home> taskview_move to=0
|
|
||||||
tmap <end> taskview_move to=-1
|
|
||||||
tmap <pagedown> taskview_move down=1.0 pages=True
|
|
||||||
tmap <pageup> taskview_move up=1.0 pages=True
|
|
||||||
tmap <C-d> taskview_move down=0.5 pages=True
|
|
||||||
tmap <C-u> taskview_move up=0.5 pages=True
|
|
||||||
|
|
||||||
copytmap <UP> k <C-p>
|
|
||||||
copytmap <DOWN> j <C-n> <CR>
|
|
||||||
copytmap <HOME> g
|
|
||||||
copytmap <END> G
|
|
||||||
copytmap <C-u> u
|
|
||||||
copytmap <PAGEDOWN> n f <C-F> <Space>
|
|
||||||
copytmap <PAGEUP> p b <C-B>
|
|
||||||
|
|
||||||
# Changing priority and deleting tasks
|
|
||||||
tmap J eval -q fm.ui.taskview.task_move(-1)
|
|
||||||
tmap K eval -q fm.ui.taskview.task_move(0)
|
|
||||||
tmap dd eval -q fm.ui.taskview.task_remove()
|
|
||||||
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
|
||||||
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
|
||||||
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
|
||||||
|
|
||||||
# Basic
|
|
||||||
tmap <C-l> redraw_window
|
|
||||||
tmap <ESC> taskview_close
|
|
||||||
copytmap <ESC> q Q w <C-c>
|
|
||||||
|
|
||||||
@@ -1,210 +0,0 @@
|
|||||||
ext jpg = open -a Preview "$@"
|
|
||||||
#ext doc = openoffice4 "$@"
|
|
||||||
#ext odt = openoffice4 "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Websites
|
|
||||||
#-------------------------------------------
|
|
||||||
# Rarely installed browsers get higher priority; It is assumed that if you
|
|
||||||
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
|
|
||||||
# other hand are often only installed as fallback browsers.
|
|
||||||
ext x?html?, has surf, X, flag f = surf -- file://"$1"
|
|
||||||
ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
|
|
||||||
ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
|
|
||||||
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
|
|
||||||
ext x?html?, has dwb, X, flag f = dwb -- "$@"
|
|
||||||
ext x?html?, has jumanji, X, flag f = jumanji -- "$@"
|
|
||||||
ext x?html?, has luakit, X, flag f = luakit -- "$@"
|
|
||||||
ext x?html?, has uzbl, X, flag f = uzbl -- "$@"
|
|
||||||
ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@"
|
|
||||||
ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@"
|
|
||||||
ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@"
|
|
||||||
ext x?html?, has midori, X, flag f = midori -- "$@"
|
|
||||||
ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@"
|
|
||||||
ext x?html?, has chromium, X, flag f = chromium -- "$@"
|
|
||||||
ext x?html?, has google-chrome, X, flag f = google-chrome -- "$@"
|
|
||||||
ext x?html?, has opera, X, flag f = opera -- "$@"
|
|
||||||
ext x?html?, has firefox, X, flag f = firefox -- "$@"
|
|
||||||
ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@"
|
|
||||||
ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@"
|
|
||||||
ext x?html?, has epiphany, X, flag f = epiphany -- "$@"
|
|
||||||
ext x?html?, has konqueror, X, flag f = konqueror -- "$@"
|
|
||||||
ext x?html?, has elinks, terminal = elinks "$@"
|
|
||||||
ext x?html?, has links2, terminal = links2 "$@"
|
|
||||||
ext x?html?, has links, terminal = links "$@"
|
|
||||||
ext x?html?, has lynx, terminal = lynx -- "$@"
|
|
||||||
ext x?html?, has w3m, terminal = w3m "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Misc
|
|
||||||
#-------------------------------------------
|
|
||||||
# Define the "editor" for text files as first action
|
|
||||||
mime ^text, label editor = ${VISUAL:-$EDITOR} -- "$@"
|
|
||||||
mime ^text, label pager = "$PAGER" -- "$@"
|
|
||||||
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
|
|
||||||
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
|
||||||
|
|
||||||
ext 1 = man "$1"
|
|
||||||
ext s[wmf]c, has zsnes, X = zsnes "$1"
|
|
||||||
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
|
|
||||||
ext nes, has fceux, X = fceux "$1"
|
|
||||||
ext exe = wine "$1"
|
|
||||||
name ^[mM]akefile$ = make
|
|
||||||
|
|
||||||
#--------------------------------------------
|
|
||||||
# Code
|
|
||||||
#-------------------------------------------
|
|
||||||
ext py = python -- "$1"
|
|
||||||
ext pl = perl -- "$1"
|
|
||||||
ext rb = ruby -- "$1"
|
|
||||||
ext js = node -- "$1"
|
|
||||||
ext sh = sh -- "$1"
|
|
||||||
ext php = php -- "$1"
|
|
||||||
|
|
||||||
#--------------------------------------------
|
|
||||||
# Audio without X
|
|
||||||
#-------------------------------------------
|
|
||||||
mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
|
|
||||||
mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
|
|
||||||
mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
|
|
||||||
ext midi?, terminal, has wildmidi = wildmidi -- "$@"
|
|
||||||
|
|
||||||
#--------------------------------------------
|
|
||||||
# Video/Audio with a GUI
|
|
||||||
#-------------------------------------------
|
|
||||||
mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
|
|
||||||
mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
|
|
||||||
mime ^video, has mpv, X, flag f = mpv -- "$@"
|
|
||||||
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
|
|
||||||
mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
|
|
||||||
mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
|
|
||||||
mime ^video, has mplayer, X, flag f = mplayer -- "$@"
|
|
||||||
mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
|
|
||||||
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
|
|
||||||
mime ^video|audio, has totem, X, flag f = totem -- "$@"
|
|
||||||
mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@"
|
|
||||||
|
|
||||||
#--------------------------------------------
|
|
||||||
# Video without X:
|
|
||||||
#-------------------------------------------
|
|
||||||
mime ^video, terminal, !X, has mpv = mpv -- "$@"
|
|
||||||
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
|
|
||||||
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Documents
|
|
||||||
#-------------------------------------------
|
|
||||||
ext pdf, has llpp, X, flag f = llpp "$@"
|
|
||||||
ext pdf, has zathura, X, flag f = zathura -- "$@"
|
|
||||||
ext pdf, has mupdf, X, flag f = mupdf "$@"
|
|
||||||
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
|
|
||||||
ext pdf, has apvlv, X, flag f = apvlv -- "$@"
|
|
||||||
ext pdf, has xpdf, X, flag f = xpdf -- "$@"
|
|
||||||
ext pdf, has evince, X, flag f = evince -- "$@"
|
|
||||||
ext pdf, has atril, X, flag f = atril -- "$@"
|
|
||||||
ext pdf, has okular, X, flag f = okular -- "$@"
|
|
||||||
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
|
|
||||||
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
|
|
||||||
ext pdf, has open, X, flag f = open "$@"
|
|
||||||
|
|
||||||
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
|
|
||||||
|
|
||||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
|
|
||||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
|
|
||||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
|
|
||||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
|
|
||||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
|
|
||||||
|
|
||||||
ext djvu, has zathura,X, flag f = zathura -- "$@"
|
|
||||||
ext djvu, has evince, X, flag f = evince -- "$@"
|
|
||||||
ext djvu, has atril, X, flag f = atril -- "$@"
|
|
||||||
ext djvu, has djview, X, flag f = djview -- "$@"
|
|
||||||
|
|
||||||
ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
|
|
||||||
ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Image Viewing:
|
|
||||||
#-------------------------------------------
|
|
||||||
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
|
|
||||||
mime ^image/svg, has display, X, flag f = display -- "$@"
|
|
||||||
|
|
||||||
mime ^image, has pqiv, X, flag f = pqiv -- "$@"
|
|
||||||
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
|
|
||||||
mime ^image, has feh, X, flag f = feh -- "$@"
|
|
||||||
mime ^image, has mirage, X, flag f = mirage -- "$@"
|
|
||||||
mime ^image, has ristretto, X, flag f = ristretto "$@"
|
|
||||||
mime ^image, has eog, X, flag f = eog -- "$@"
|
|
||||||
mime ^image, has eom, X, flag f = eom -- "$@"
|
|
||||||
mime ^image, has nomacs, X, flag f = nomacs -- "$@"
|
|
||||||
mime ^image, has geeqie, X, flag f = geeqie -- "$@"
|
|
||||||
mime ^image, has gwenview, X, flag f = gwenview -- "$@"
|
|
||||||
mime ^image, has gimp, X, flag f = gimp -- "$@"
|
|
||||||
ext xcf, X, flag f = gimp -- "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Archives
|
|
||||||
#-------------------------------------------
|
|
||||||
|
|
||||||
# avoid password prompt by providing empty password
|
|
||||||
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
|
|
||||||
# This requires atool
|
|
||||||
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER"
|
|
||||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
|
|
||||||
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@"
|
|
||||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
|
|
||||||
|
|
||||||
# Listing and extracting archives without atool:
|
|
||||||
ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
|
|
||||||
ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
|
|
||||||
ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
|
|
||||||
ext zip, has unzip = unzip -l "$1" | less
|
|
||||||
ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
|
|
||||||
ext ace, has unace = unace l "$1" | less
|
|
||||||
ext ace, has unace = for file in "$@"; do unace e "$file"; done
|
|
||||||
ext rar, has unrar = unrar l "$1" | less
|
|
||||||
ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Flag t fallback terminals
|
|
||||||
#-------------------------------------------
|
|
||||||
# Rarely installed terminal emulators get higher priority; It is assumed that
|
|
||||||
# if you install a rare terminal emulator, you probably use it.
|
|
||||||
# gnome-terminal/konsole/xterm on the other hand are often installed as part of
|
|
||||||
# a desktop environment or as fallback terminal emulators.
|
|
||||||
mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
|
|
||||||
#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
|
|
||||||
#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has st = st -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
|
|
||||||
mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
|
|
||||||
|
|
||||||
#-------------------------------------------
|
|
||||||
# Misc
|
|
||||||
#-------------------------------------------
|
|
||||||
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
|
|
||||||
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
|
|
||||||
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
|
|
||||||
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
|
|
||||||
|
|
||||||
# Define the editor for non-text files + pager as last action
|
|
||||||
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
|
|
||||||
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
|
|
||||||
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
|
||||||
|
|
||||||
# The very last action, so that it's never triggered accidentally, is to execute a program:
|
|
||||||
mime application/x-executable = "$1"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
default-stream "1080p60,1080p,720p60,720p"
|
|
||||||
default-stream best
|
|
||||||
hls-live-edge 2
|
|
||||||
hls-segment-stream-data
|
|
||||||
player-no-close
|
|
||||||
player=mpv
|
|
||||||
retry-max 100
|
|
||||||
retry-open 10
|
|
||||||
retry-streams 10
|
|
||||||
stream-segment-threads=4
|
|
||||||
twitch-disable-ads
|
|
||||||
twitch-low-latency
|
|
||||||
@@ -1,628 +0,0 @@
|
|||||||
;Packages
|
|
||||||
|
|
||||||
;; package archives
|
|
||||||
(require 'package)
|
|
||||||
(setq package-enable-at-startup nil)
|
|
||||||
(setq package-archives
|
|
||||||
'(
|
|
||||||
("melpa" . "https://melpa.org/packages/")
|
|
||||||
("ELPA" . "http://tromey.com/elpa/")
|
|
||||||
("gnu" . "http://elpa.gnu.org/packages/")
|
|
||||||
("ORG" . "https://orgmode.org/elpa/")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(package-initialize)
|
|
||||||
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
|
|
||||||
|
|
||||||
;; UTF-8
|
|
||||||
(set-language-environment "UTF-8")
|
|
||||||
|
|
||||||
;; Remove welcome screen
|
|
||||||
(setq inhibit-startup-screen t)
|
|
||||||
|
|
||||||
;; Disable menu
|
|
||||||
(menu-bar-mode 0)
|
|
||||||
|
|
||||||
;; Remove working cl
|
|
||||||
(require 'cl-lib)
|
|
||||||
(setq byte-compile-warnings '(cl-functions))
|
|
||||||
(advice-add 'sh-set-shell :around
|
|
||||||
(lambda (orig-fun &rest args)
|
|
||||||
(cl-letf (((symbol-function 'message) #'ignore))
|
|
||||||
(apply orig-fun args))))
|
|
||||||
|
|
||||||
;; install use-package
|
|
||||||
(unless (package-installed-p 'use-package)
|
|
||||||
(package-refresh-contents)
|
|
||||||
(package-install 'use-package)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Packages list refresh
|
|
||||||
(when (not package-archive-contents)
|
|
||||||
(package-refresh-contents))
|
|
||||||
|
|
||||||
;; Auto Package Update
|
|
||||||
(use-package auto-package-update
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
(progn
|
|
||||||
(setq
|
|
||||||
auto-package-update-delete-old-verions t
|
|
||||||
auto-package-update-interval 5
|
|
||||||
)
|
|
||||||
(auto-package-update-maybe)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
;; Set path to store "custom-set"
|
|
||||||
(setq custom-file "~/.emacs.d/emacs-custom.el")
|
|
||||||
|
|
||||||
;; Enable awesome-tab-mode
|
|
||||||
(add-to-list 'load-path (expand-file-name "~/.emacs.d/plugins"))
|
|
||||||
(require 'awesome-tab)
|
|
||||||
(awesome-tab-mode t)
|
|
||||||
|
|
||||||
(use-package awesome-tab
|
|
||||||
:load-path "~/.emacs.d/plugins"
|
|
||||||
:config
|
|
||||||
(awesome-tab-mode t))
|
|
||||||
(awesome-tab-mode t)
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-x j") 'awesome-tab-backward-tab)
|
|
||||||
(global-set-key (kbd "C-x k") 'awesome-tab-forward-tab)
|
|
||||||
|
|
||||||
;; 80-charaters mode
|
|
||||||
(add-hook 'text-mode-hook 'auto-fill-mode)
|
|
||||||
(setq-default fill-column 80)
|
|
||||||
|
|
||||||
(add-hook 'prog-mode-hook #'display-fill-column-indicator-mode)
|
|
||||||
|
|
||||||
; Global turn on flycheck
|
|
||||||
(add-hook 'after-init-hook #'global-flycheck-mode)
|
|
||||||
|
|
||||||
; Org Files
|
|
||||||
(add-hook 'org-mode-hook '(lambda () (setq fill-column 80)))
|
|
||||||
(add-hook 'org-mode-hook 'auto-fill-mode)
|
|
||||||
(add-hook 'org-mode-hook 'turn-on-flyspell)
|
|
||||||
|
|
||||||
;; Latex files
|
|
||||||
(add-hook 'latex-mode-hook 'turn-on-flyspell)
|
|
||||||
(setq ispell-dictionary "pl")
|
|
||||||
|
|
||||||
;; Broswer
|
|
||||||
(setq browse-url-browser-function 'browse-url-generic
|
|
||||||
browse-url-generic-program "browser-x")
|
|
||||||
|
|
||||||
;; Amx
|
|
||||||
(use-package amx
|
|
||||||
:ensure t
|
|
||||||
:after ivy
|
|
||||||
:custom
|
|
||||||
(
|
|
||||||
(amx-backend 'ivy)
|
|
||||||
(amx-show-key-bindings t)
|
|
||||||
)
|
|
||||||
:config
|
|
||||||
(amx-mode t)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Counsel
|
|
||||||
(use-package counsel
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; Custom theme
|
|
||||||
(add-to-list 'custom-theme-load-path
|
|
||||||
"~/.emacs.d/plugins/")
|
|
||||||
|
|
||||||
;; Switch-window
|
|
||||||
(use-package switch-window
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
(setq
|
|
||||||
switch-window-increase 4
|
|
||||||
switch-window-input-style 'minibuffer
|
|
||||||
switch-window-shortcut-style 'qwerty
|
|
||||||
switch-window-threshold 2
|
|
||||||
)
|
|
||||||
(setq
|
|
||||||
switch-window-qwerty-shortcuts
|
|
||||||
'( "a" "s" "d" "f" "g" "h" "j" "k" "l")
|
|
||||||
)
|
|
||||||
:bind
|
|
||||||
([remap other-window] . switch-window)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Enable japanese
|
|
||||||
(if (condition-case nil (require 'mozc)(error nil))
|
|
||||||
(setq ecb-be-more-like-better-yes-p t)
|
|
||||||
(message "Monz not available; not configuring") )
|
|
||||||
(setq default-input-method "japanese-mozc")
|
|
||||||
|
|
||||||
;; reveal dependency
|
|
||||||
(use-package htmlize
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
(use-package ox-reveal
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
;; maybe add auto-installer in the future
|
|
||||||
(setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js")
|
|
||||||
)
|
|
||||||
|
|
||||||
;; moveline
|
|
||||||
(use-package move-text
|
|
||||||
:ensure t
|
|
||||||
:config)
|
|
||||||
|
|
||||||
(global-set-key (kbd "M-<up>") 'move-text-up)
|
|
||||||
(global-set-key (kbd "M-<down>") 'move-text-down)
|
|
||||||
|
|
||||||
;; company
|
|
||||||
(use-package company
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
(global-company-mode)
|
|
||||||
|
|
||||||
(setq company-dabbrev-downcase 0)
|
|
||||||
(setq company-idle-delay 0)
|
|
||||||
|
|
||||||
;; Shell - bash
|
|
||||||
(use-package flymake-shellcheck
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package flycheck-bashate
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
|
|
||||||
(require 'bash-completion)
|
|
||||||
(bash-completion-setup)
|
|
||||||
|
|
||||||
(use-package flymake-shell
|
|
||||||
:ensure t
|
|
||||||
)
|
|
||||||
|
|
||||||
(require 'flymake-shell)
|
|
||||||
(add-hook 'sh-set-shell-hook 'flymake-shell-load)
|
|
||||||
|
|
||||||
;; Default font
|
|
||||||
(defun rc/get-default-font ()
|
|
||||||
(cond
|
|
||||||
((eq system-type 'windows-nt) "Consolas-13")
|
|
||||||
((eq system-type 'gnu/linux) "xos4 Terminus (TTF) Medium 16")))
|
|
||||||
|
|
||||||
(add-to-list 'default-frame-alist `(font . ,(rc/get-default-font)))
|
|
||||||
|
|
||||||
;; Theme
|
|
||||||
;;(use-package gruvbox-theme
|
|
||||||
;; :ensure t
|
|
||||||
;; :config
|
|
||||||
;; (load-theme 'gruvbox-dark-hard t))
|
|
||||||
|
|
||||||
(use-package dracula-theme
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
(load-theme 'dracula t))
|
|
||||||
|
|
||||||
;; Sitebar dirred
|
|
||||||
(use-package dired-sidebar
|
|
||||||
:ensure t
|
|
||||||
:commands (dired-sidebar-toggle-sidebar))
|
|
||||||
|
|
||||||
(require 'dired-sidebar)
|
|
||||||
(global-set-key (kbd "C-x d") 'dired-sidebar-toggle-sidebar)
|
|
||||||
|
|
||||||
;; Smex
|
|
||||||
(require 'smex)
|
|
||||||
(smex-initialize)
|
|
||||||
(global-set-key (kbd "M-x") 'counsel-M-x)
|
|
||||||
|
|
||||||
;;buffer-move
|
|
||||||
(require 'buffer-move)
|
|
||||||
(global-set-key (kbd "C-x b") 'counsel-buffer-or-recentf)
|
|
||||||
(global-set-key (kbd "<C-S-up>") 'buf-move-up)
|
|
||||||
(global-set-key (kbd "<C-S-down>") 'buf-move-down)
|
|
||||||
(global-set-key (kbd "<C-S-left>") 'buf-move-left)
|
|
||||||
(global-set-key (kbd "<C-S-right>") 'buf-move-right)
|
|
||||||
|
|
||||||
;; Files
|
|
||||||
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
|
|
||||||
|
|
||||||
;; Multiple-cursors
|
|
||||||
(use-package multiple-cursors
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
|
|
||||||
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
|
|
||||||
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
|
|
||||||
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
|
|
||||||
|
|
||||||
;; Magit
|
|
||||||
(use-package magit
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
(global-set-key (kbd "C-x g") 'magit-status)
|
|
||||||
|
|
||||||
;; Helpers for easily building Emacs flymake checkers.
|
|
||||||
(use-package flymake-easy
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Error list
|
|
||||||
(define-key flymake-mode-map (kbd "M-n") 'flymake-goto-next-error)
|
|
||||||
(define-key flymake-mode-map (kbd "M-p") 'flymake-goto-prev-error)
|
|
||||||
|
|
||||||
;; Ruby
|
|
||||||
(use-package flymake-ruby
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;;robe
|
|
||||||
(use-package robe
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(require 'robe)
|
|
||||||
(add-hook 'ruby-mode-hook 'robe-mode)
|
|
||||||
(add-hook 'robe-mode-hook 'ac-robe-setup)
|
|
||||||
(eval-after-load 'company
|
|
||||||
'(push 'company-robe company-backends))
|
|
||||||
|
|
||||||
(require 'flymake-ruby)
|
|
||||||
(add-hook 'ruby-mode-hook 'flymake-ruby-load)
|
|
||||||
|
|
||||||
;; Docker
|
|
||||||
(use-package dockerfile-mode
|
|
||||||
:ensure t
|
|
||||||
:defer t)
|
|
||||||
|
|
||||||
;; YAML
|
|
||||||
(require 'flymake-yaml)
|
|
||||||
|
|
||||||
(use-package yaml-mode
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;; pip install --user yamllint
|
|
||||||
(require 'flycheck-yamllint)
|
|
||||||
(eval-after-load 'flycheck
|
|
||||||
'(add-hook 'flycheck-mode-hook 'flycheck-yamllint-setup))
|
|
||||||
|
|
||||||
;; Ansible
|
|
||||||
(use-package ansible
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package ansible-doc
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package company-ansible
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(add-to-list 'company-backends 'company-ansible)
|
|
||||||
(add-hook 'yaml-mode-hook '(lambda () (ansible 1)))
|
|
||||||
(add-hook 'yaml-mode-hook #'ansible-doc-mode)
|
|
||||||
|
|
||||||
;; Markdown-mode
|
|
||||||
(custom-set-variables
|
|
||||||
'(markdown-command "/usr/bin/pandoc"))
|
|
||||||
(use-package markdown-mode
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;; C++ C
|
|
||||||
(use-package auto-complete-clang
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Apache
|
|
||||||
(use-package apache-mode
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Haskell
|
|
||||||
(use-package haskell-mode
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package flycheck-haskell
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
(add-hook 'flycheck-mode-hook #'flycheck-haskell-setup)
|
|
||||||
|
|
||||||
|
|
||||||
;; Java
|
|
||||||
;; lsp-install-server
|
|
||||||
;; jdtls
|
|
||||||
(use-package lsp-java
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
(global-set-key (kbd "C-.") 'lsp-execute-code-action)
|
|
||||||
)
|
|
||||||
|
|
||||||
(global-set-key (kbd "<f9>") 'dap-breakpoint-toggle)
|
|
||||||
(global-set-key (kbd "<f10>") 'dap-next)
|
|
||||||
(global-set-key (kbd "<f11>") 'dap-step-in)
|
|
||||||
(global-set-key (kbd "<f12>") 'lsp-jt-browser)
|
|
||||||
(global-set-key (kbd "<C-f12>") 'dap-stop-thread)
|
|
||||||
(global-set-key (kbd "<C-?>") 'comment-or-uncomment-region)
|
|
||||||
|
|
||||||
(add-hook 'dap-stopped-hook
|
|
||||||
(lambda (arg) (call-interactively #'dap-hydra)))
|
|
||||||
|
|
||||||
(setq dap-auto-configure-features '(sessions locals controls tooltip))
|
|
||||||
|
|
||||||
|
|
||||||
(require 'lsp-java)
|
|
||||||
(add-hook 'java-mode-hook #'lsp)
|
|
||||||
|
|
||||||
(require 'dap-java)
|
|
||||||
|
|
||||||
;; Treemacs
|
|
||||||
(use-package treemacs
|
|
||||||
:ensure t
|
|
||||||
:defer t
|
|
||||||
:init
|
|
||||||
(with-eval-after-load 'winum
|
|
||||||
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
|
|
||||||
:config
|
|
||||||
(progn
|
|
||||||
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0)
|
|
||||||
treemacs-deferred-git-apply-delay 0.5
|
|
||||||
treemacs-directory-name-transformer #'identity
|
|
||||||
treemacs-display-in-side-window t
|
|
||||||
treemacs-eldoc-display t
|
|
||||||
treemacs-file-event-delay 5000
|
|
||||||
treemacs-file-extension-regex treemacs-last-period-regex-value
|
|
||||||
treemacs-file-follow-delay 0.2
|
|
||||||
treemacs-file-name-transformer #'identity
|
|
||||||
treemacs-follow-after-init t
|
|
||||||
treemacs-git-command-pipe ""
|
|
||||||
treemacs-goto-tag-strategy 'refetch-index
|
|
||||||
treemacs-indentation 2
|
|
||||||
treemacs-indentation-string " "
|
|
||||||
treemacs-is-never-other-window nil
|
|
||||||
treemacs-max-git-entries 5000
|
|
||||||
treemacs-missing-project-action 'ask
|
|
||||||
treemacs-move-forward-on-expand nil
|
|
||||||
treemacs-no-png-images nil
|
|
||||||
treemacs-no-delete-other-windows t
|
|
||||||
treemacs-project-follow-cleanup nil
|
|
||||||
treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory)
|
|
||||||
treemacs-position 'left
|
|
||||||
treemacs-read-string-input 'from-child-frame
|
|
||||||
treemacs-recenter-distance 0.1
|
|
||||||
treemacs-recenter-after-file-follow nil
|
|
||||||
treemacs-recenter-after-tag-follow nil
|
|
||||||
treemacs-recenter-after-project-jump 'always
|
|
||||||
treemacs-recenter-after-project-expand 'on-distance
|
|
||||||
treemacs-show-cursor nil
|
|
||||||
treemacs-show-hidden-files t
|
|
||||||
treemacs-silent-filewatch nil
|
|
||||||
treemacs-silent-refresh nil
|
|
||||||
treemacs-sorting 'alphabetic-asc
|
|
||||||
treemacs-space-between-root-nodes t
|
|
||||||
treemacs-tag-follow-cleanup t
|
|
||||||
treemacs-tag-follow-delay 1.5
|
|
||||||
treemacs-user-mode-line-format nil
|
|
||||||
treemacs-user-header-line-format nil
|
|
||||||
treemacs-width 35
|
|
||||||
treemacs-workspace-switch-cleanup nil)
|
|
||||||
|
|
||||||
;; The default width and height of the icons is 22 pixels. If you are
|
|
||||||
;; using a Hi-DPI display, uncomment this to double the icon size.
|
|
||||||
;;(treemacs-resize-icons 44)
|
|
||||||
|
|
||||||
(treemacs-follow-mode t)
|
|
||||||
(treemacs-filewatch-mode t)
|
|
||||||
(treemacs-fringe-indicator-mode 'always)
|
|
||||||
(pcase (cons (not (null (executable-find "git")))
|
|
||||||
(not (null treemacs-python-executable)))
|
|
||||||
(`(t . t)
|
|
||||||
(treemacs-git-mode 'deferred))
|
|
||||||
(`(t . _)
|
|
||||||
(treemacs-git-mode 'simple))))
|
|
||||||
:bind
|
|
||||||
(:map global-map
|
|
||||||
("M-0" . treemacs-select-window)
|
|
||||||
("C-x t 1" . treemacs-delete-other-windows)
|
|
||||||
("C-x t t" . treemacs)
|
|
||||||
("C-x t B" . treemacs-bookmark)
|
|
||||||
("C-x t C-t" . treemacs-find-file)
|
|
||||||
("C-x t M-t" . treemacs-find-tag)))
|
|
||||||
|
|
||||||
(use-package treemacs-evil
|
|
||||||
:after treemacs evil
|
|
||||||
:ensure t)
|
|
||||||
|
|
||||||
(use-package treemacs-projectile
|
|
||||||
:after treemacs projectile
|
|
||||||
:ensure t)
|
|
||||||
|
|
||||||
(use-package treemacs-icons-dired
|
|
||||||
:after treemacs dired
|
|
||||||
:ensure t
|
|
||||||
:config (treemacs-icons-dired-mode))
|
|
||||||
|
|
||||||
(use-package treemacs-magit
|
|
||||||
:after treemacs magit
|
|
||||||
:ensure t)
|
|
||||||
|
|
||||||
(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode
|
|
||||||
:after treemacs persp-mode ;;or perspective vs. persp-mode
|
|
||||||
:ensure t
|
|
||||||
:config (treemacs-set-scope-type 'Perspectives))
|
|
||||||
|
|
||||||
;; Python
|
|
||||||
(setq python-shell-interpreter "python3")
|
|
||||||
(setq py-python-command "/usr/bin/python3")
|
|
||||||
(use-package company-jedi
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun my/python-mode-hook ()
|
|
||||||
(add-to-list 'company-backends 'company-jedi))
|
|
||||||
|
|
||||||
(add-hook 'python-mode-hook 'my/python-mode-hook)
|
|
||||||
|
|
||||||
(setq-default ebuild-mode-update-copyright nil)
|
|
||||||
|
|
||||||
(setq jedi:environment-root "jedi") ; or any other name you like
|
|
||||||
(setq jedi:environment-virtualenv
|
|
||||||
(append python-environment-virtualenv
|
|
||||||
'("--python" "/usr/local/bin/python3")))
|
|
||||||
|
|
||||||
(defun infer-indentation-style () (interactive)
|
|
||||||
(let ((space-count (how-many "^ " (point-min) (point-max)))
|
|
||||||
(tab-count (how-many "^\t" (point-min) (point-max))))
|
|
||||||
(if (> space-count tab-count) (setq indent-tabs-mode nil))
|
|
||||||
(if (> tab-count space-count) (setq indent-tabs-mode t))))
|
|
||||||
|
|
||||||
(add-hook 'python-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(if indent-tabs-mode
|
|
||||||
(setq tab-width 4
|
|
||||||
python-indent-offset 4))))
|
|
||||||
(add-hook 'python-mode-hook 'infer-indentation-style)
|
|
||||||
|
|
||||||
;; python-black
|
|
||||||
(use-package python-black
|
|
||||||
:demand t
|
|
||||||
:after python)
|
|
||||||
|
|
||||||
|
|
||||||
;;; --- Look & Feel ---
|
|
||||||
|
|
||||||
;; Org-bullets
|
|
||||||
|
|
||||||
(use-package org-bullets
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
:after org
|
|
||||||
:hook (org-mode . org-bullets-mode)
|
|
||||||
:custom
|
|
||||||
(org-bullets-bullet-list '("◉" "○" "●" "○" "●" "○" "●")))
|
|
||||||
|
|
||||||
;; Helm
|
|
||||||
(use-package helm
|
|
||||||
:ensure t
|
|
||||||
:config
|
|
||||||
)
|
|
||||||
|
|
||||||
(add-hook 'helm-minibuffer-set-up-hook
|
|
||||||
'helm-hide-minibuffer-maybe)
|
|
||||||
|
|
||||||
(setq helm-autoresize-max-height 0)
|
|
||||||
(setq helm-autoresize-min-height 20)
|
|
||||||
|
|
||||||
(helm-autoresize-mode 1)
|
|
||||||
(helm-mode 1)
|
|
||||||
|
|
||||||
;; Disable scroll bar
|
|
||||||
;; no toolbar:
|
|
||||||
(if (display-graphic-p)
|
|
||||||
(progn
|
|
||||||
(tool-bar-mode -1)
|
|
||||||
(scroll-bar-mode -1)))
|
|
||||||
|
|
||||||
;; Copy
|
|
||||||
(setq select-active-regions nil)
|
|
||||||
(setq mouse-drag-copy-region t)
|
|
||||||
(global-set-key [mouse-2] 'mouse-yank-at-click)
|
|
||||||
|
|
||||||
;; Zoom in/out.
|
|
||||||
(global-set-key (kbd "M-+") 'text-scale-increase)
|
|
||||||
(global-set-key (kbd "M--") 'text-scale-decrease)
|
|
||||||
|
|
||||||
;; line numbers:
|
|
||||||
(global-display-line-numbers-mode 1)
|
|
||||||
|
|
||||||
;; scrolling:
|
|
||||||
(setq scroll-conservatively 100)
|
|
||||||
|
|
||||||
;; Whitespaces
|
|
||||||
(global-whitespace-mode 1)
|
|
||||||
(setq whitespace-display-mappings '((space-mark 32 [?·])))
|
|
||||||
(set-face-attribute 'whitespace-space nil :background nil :foreground "gray30")
|
|
||||||
(setq whitespace-style (quote (face tabs spaces trailing space-before-tab newline indentation empty space-after-tab space-mark tab-mark)))
|
|
||||||
(add-hook 'before-save-hook (lambda () (delete-trailing-whitespace)))
|
|
||||||
|
|
||||||
;; no "bell" (audible notification):
|
|
||||||
(setq ring-bell-function 'ignore)
|
|
||||||
|
|
||||||
;; auto reloading (reverting) buffers
|
|
||||||
(global-auto-revert-mode 1)
|
|
||||||
|
|
||||||
;; disable lock files:
|
|
||||||
(setq create-lockfiles nil)
|
|
||||||
|
|
||||||
;; disable autosave:
|
|
||||||
(setq auto-save-default nil)
|
|
||||||
|
|
||||||
;; disable backups:
|
|
||||||
(setq make-backup-files nil)
|
|
||||||
|
|
||||||
;; Pass "y or n" instead of "yes or no"
|
|
||||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
|
||||||
|
|
||||||
;; Highlight parens
|
|
||||||
(show-paren-mode 1)
|
|
||||||
|
|
||||||
;; Candy
|
|
||||||
(global-prettify-symbols-mode 1)
|
|
||||||
|
|
||||||
;; Modeline
|
|
||||||
(column-number-mode 1)
|
|
||||||
(size-indication-mode 1)
|
|
||||||
|
|
||||||
;; Horizontal splitting
|
|
||||||
(defun split-and-follow-horizontally ()
|
|
||||||
(interactive)
|
|
||||||
(split-window-below)
|
|
||||||
(balance-windows)
|
|
||||||
(other-window 1)
|
|
||||||
)
|
|
||||||
(global-set-key (kbd "C-x 2") 'split-and-follow-horizontally)
|
|
||||||
|
|
||||||
;; Vertical splitting
|
|
||||||
(defun split-and-follow-vertically ()
|
|
||||||
(interactive)
|
|
||||||
(split-window-right)
|
|
||||||
(balance-windows)
|
|
||||||
(other-window 1)
|
|
||||||
)
|
|
||||||
(global-set-key (kbd "C-x 3") 'split-and-follow-vertically)
|
|
||||||
|
|
||||||
;; Kill & remove split
|
|
||||||
(defun kill-and-remove-split ()
|
|
||||||
"Kill and remove split."
|
|
||||||
(interactive)
|
|
||||||
(kill-buffer)
|
|
||||||
(delete-window)
|
|
||||||
(balance-windows)
|
|
||||||
(other-window 1)
|
|
||||||
)
|
|
||||||
(global-set-key (kbd "C-x x") 'kill-and-remove-split)
|
|
||||||
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
;;; buffer-move.el ---
|
|
||||||
|
|
||||||
;; Copyright (C) 2004-2014 Lucas Bonnet <lucas@rincevent.net.fr>
|
|
||||||
|
|
||||||
;; Author: Lucas Bonnet <lucas@rincevent.net>
|
|
||||||
;; Keywords: lisp,convenience
|
|
||||||
;; Version: 0.5
|
|
||||||
;; URL : https://github.com/lukhas/buffer-move
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or
|
|
||||||
;; modify it under the terms of the GNU General Public License
|
|
||||||
;; as published by the Free Software Foundation; either version 2
|
|
||||||
;; of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
;; This program is distributed in the hope that it will be useful,
|
|
||||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
;; GNU General Public License for more details.
|
|
||||||
|
|
||||||
;; You should have received a copy of the GNU General Public License
|
|
||||||
;; along with this program; if not, write to the Free Software
|
|
||||||
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
;; 02111-1307, USA.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; This file is for lazy people wanting to swap buffers without
|
|
||||||
;; typing C-x b on each window. This is useful when you have :
|
|
||||||
|
|
||||||
;; +--------------+-------------+
|
|
||||||
;; | | |
|
|
||||||
;; | #emacs | #gnus |
|
|
||||||
;; | | |
|
|
||||||
;; +--------------+-------------+
|
|
||||||
;; | |
|
|
||||||
;; | .emacs |
|
|
||||||
;; | |
|
|
||||||
;; +----------------------------+
|
|
||||||
|
|
||||||
;; and you want to have :
|
|
||||||
|
|
||||||
;; +--------------+-------------+
|
|
||||||
;; | | |
|
|
||||||
;; | #gnus | .emacs |
|
|
||||||
;; | | |
|
|
||||||
;; +--------------+-------------+
|
|
||||||
;; | |
|
|
||||||
;; | #emacs |
|
|
||||||
;; | |
|
|
||||||
;; +----------------------------+
|
|
||||||
|
|
||||||
;; With buffer-move, just go in #gnus, do buf-move-left, go to #emacs
|
|
||||||
;; (which now should be on top right) and do buf-move-down.
|
|
||||||
|
|
||||||
;; To use it, simply put a (require 'buffer-move) in your ~/.emacs and
|
|
||||||
;; define some keybindings. For example, i use :
|
|
||||||
|
|
||||||
;; (global-set-key (kbd "<C-S-up>") 'buf-move-up)
|
|
||||||
;; (global-set-key (kbd "<C-S-down>") 'buf-move-down)
|
|
||||||
;; (global-set-key (kbd "<C-S-left>") 'buf-move-left)
|
|
||||||
;; (global-set-key (kbd "<C-S-right>") 'buf-move-right)
|
|
||||||
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
|
|
||||||
(require 'windmove)
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun buf-move-up ()
|
|
||||||
"Swap the current buffer and the buffer above the split.
|
|
||||||
If there is no split, ie now window above the current one, an
|
|
||||||
error is signaled."
|
|
||||||
;; "Switches between the current buffer, and the buffer above the
|
|
||||||
;; split, if possible."
|
|
||||||
(interactive)
|
|
||||||
(let* ((other-win (windmove-find-other-window 'up))
|
|
||||||
(buf-this-buf (window-buffer (selected-window))))
|
|
||||||
(if (null other-win)
|
|
||||||
(error "No window above this one")
|
|
||||||
;; swap top with this one
|
|
||||||
(set-window-buffer (selected-window) (window-buffer other-win))
|
|
||||||
;; move this one to top
|
|
||||||
(set-window-buffer other-win buf-this-buf)
|
|
||||||
(select-window other-win))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun buf-move-down ()
|
|
||||||
"Swap the current buffer and the buffer under the split.
|
|
||||||
If there is no split, ie now window under the current one, an
|
|
||||||
error is signaled."
|
|
||||||
(interactive)
|
|
||||||
(let* ((other-win (windmove-find-other-window 'down))
|
|
||||||
(buf-this-buf (window-buffer (selected-window))))
|
|
||||||
(if (or (null other-win)
|
|
||||||
(string-match "^ \\*Minibuf" (buffer-name (window-buffer other-win))))
|
|
||||||
(error "No window under this one")
|
|
||||||
;; swap top with this one
|
|
||||||
(set-window-buffer (selected-window) (window-buffer other-win))
|
|
||||||
;; move this one to top
|
|
||||||
(set-window-buffer other-win buf-this-buf)
|
|
||||||
(select-window other-win))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun buf-move-left ()
|
|
||||||
"Swap the current buffer and the buffer on the left of the split.
|
|
||||||
If there is no split, ie now window on the left of the current
|
|
||||||
one, an error is signaled."
|
|
||||||
(interactive)
|
|
||||||
(let* ((other-win (windmove-find-other-window 'left))
|
|
||||||
(buf-this-buf (window-buffer (selected-window))))
|
|
||||||
(if (null other-win)
|
|
||||||
(error "No left split")
|
|
||||||
;; swap top with this one
|
|
||||||
(set-window-buffer (selected-window) (window-buffer other-win))
|
|
||||||
;; move this one to top
|
|
||||||
(set-window-buffer other-win buf-this-buf)
|
|
||||||
(select-window other-win))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun buf-move-right ()
|
|
||||||
"Swap the current buffer and the buffer on the right of the split.
|
|
||||||
If there is no split, ie now window on the right of the current
|
|
||||||
one, an error is signaled."
|
|
||||||
(interactive)
|
|
||||||
(let* ((other-win (windmove-find-other-window 'right))
|
|
||||||
(buf-this-buf (window-buffer (selected-window))))
|
|
||||||
(if (null other-win)
|
|
||||||
(error "No right split")
|
|
||||||
;; swap top with this one
|
|
||||||
(set-window-buffer (selected-window) (window-buffer other-win))
|
|
||||||
;; move this one to top
|
|
||||||
(set-window-buffer other-win buf-this-buf)
|
|
||||||
(select-window other-win))))
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'buffer-move)
|
|
||||||
;;; buffer-move.el ends here
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
;;; flycheck-yamllint.el --- Flycheck integration for YAMLLint
|
|
||||||
|
|
||||||
;; Copyright (c) 2017 Krzysztof Magosa
|
|
||||||
|
|
||||||
;; Author: Krzysztof Magosa <krzysztof@magosa.pl>
|
|
||||||
;; URL: https://github.com/krzysztof-magosa/flycheck-yamllint
|
|
||||||
;; Package-Requires: ((flycheck "30"))
|
|
||||||
;; Created: 25 March 2017
|
|
||||||
;; Version: 0.1.0
|
|
||||||
;; Keywords: convenience, languages, tools
|
|
||||||
|
|
||||||
;; Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
;; of this software and associated documentation files (the "Software"), to deal
|
|
||||||
;; in the Software without restriction, including without limitation the rights
|
|
||||||
;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
;; copies of the Software, and to permit persons to whom the Software is
|
|
||||||
;; furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
;; The above copyright notice and this permission notice shall be included in all
|
|
||||||
;; copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
;; SOFTWARE.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'flycheck)
|
|
||||||
|
|
||||||
(flycheck-def-config-file-var flycheck-yamllintrc yaml-yamllint ".yamllint"
|
|
||||||
:safe #'stringp)
|
|
||||||
|
|
||||||
(flycheck-define-checker yaml-yamllint
|
|
||||||
"A YAML syntax checker using YAMLLint.
|
|
||||||
|
|
||||||
See URL `https://github.com/adrienverge/yamllint'."
|
|
||||||
:command ("yamllint" "-f" "parsable" source (config-file "-c" flycheck-yamllintrc))
|
|
||||||
:error-patterns
|
|
||||||
((error line-start (file-name) ":" line ":" column ": [error] " (message) line-end)
|
|
||||||
(warning line-start (file-name) ":" line ":" column ": [warning] " (message) line-end))
|
|
||||||
:modes yaml-mode)
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun flycheck-yamllint-setup ()
|
|
||||||
"Setup Flycheck YAMLLint integration."
|
|
||||||
(interactive)
|
|
||||||
(add-to-list 'flycheck-checkers 'yaml-yamllint))
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'flycheck-yamllint)
|
|
||||||
;;; flycheck-yamllint.el ends here
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
;;; flymake-yaml.el --- A flymake handler for YAML
|
|
||||||
|
|
||||||
;; Copyright (C) 2013 Yasuyuki Oka
|
|
||||||
|
|
||||||
;; Author: Yasuyuki Oka <yasuyk@gmail.com>
|
|
||||||
;; Version: 0.0.2
|
|
||||||
;; URL: https://github.com/yasuyk/flymake-yaml
|
|
||||||
;; Package-Requires: ((flymake-easy "0.1"))
|
|
||||||
;; Keywords: yaml
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 of the License, or
|
|
||||||
;; (at your option) any later version.
|
|
||||||
|
|
||||||
;; This program is distributed in the hope that it will be useful,
|
|
||||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
;; GNU General Public License for more details.
|
|
||||||
|
|
||||||
;; You should have received a copy of the GNU General Public License
|
|
||||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
;;
|
|
||||||
;; Based in part on http://d.hatena.ne.jp/kitokitoki/20120306/p1
|
|
||||||
;;
|
|
||||||
;; Usage:
|
|
||||||
;;
|
|
||||||
;; (require 'flymake-yaml) ;; Not necessary if using ELPA package
|
|
||||||
;; (add-hook 'yaml-mode-hook 'flymake-yaml-load)
|
|
||||||
;;
|
|
||||||
;; Uses flymake-easy, from https://github.com/purcell/flymake-easy
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'flymake-easy)
|
|
||||||
|
|
||||||
(defconst flymake-yaml-err-line-patterns
|
|
||||||
;; Syck error message
|
|
||||||
'(("syntax error on line \\([0-9]+\\), col \\([0-9]+\\): `\\(.*\\)'" nil 1 2 3)
|
|
||||||
;; Psych error message
|
|
||||||
(".*: \\(.*\\) at line \\([0-9]+\\) column \\([0-9]+\\)" nil 2 3 1)))
|
|
||||||
|
|
||||||
(defun flymake-yaml-command (filename)
|
|
||||||
"Construct a command that flymake can use to check yaml source.
|
|
||||||
Argument FILENAME
|
|
||||||
YAML file name."
|
|
||||||
(list "ruby" "-ryaml" "-e" "YAML.load(ARGF) rescue warn $!" filename))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun flymake-yaml-load ()
|
|
||||||
"Configure flymake mode to check the current buffer's YAML syntax."
|
|
||||||
(interactive)
|
|
||||||
(when (eq major-mode 'yaml-mode)
|
|
||||||
(flymake-easy-load 'flymake-yaml-command
|
|
||||||
flymake-yaml-err-line-patterns
|
|
||||||
'tempdir
|
|
||||||
"yml")))
|
|
||||||
|
|
||||||
(provide 'flymake-yaml)
|
|
||||||
|
|
||||||
;; Local Variables:
|
|
||||||
;; coding: utf-8
|
|
||||||
;; eval: (checkdoc-minor-mode 1)
|
|
||||||
;; End:
|
|
||||||
|
|
||||||
;;; flymake-yaml.el ends here
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
;;; latexmk-mode.el --- LatexMK minor mode
|
|
||||||
;;; Commentary:
|
|
||||||
;;; none
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(define-minor-mode latexmk-mode
|
|
||||||
"Toggle LatexMK mode."
|
|
||||||
:init-value nil
|
|
||||||
:lighter " LatexMK "
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun my/run-latexmk ()
|
|
||||||
(interactive)
|
|
||||||
(start-process "latexmk" "latexmk out" "latexmk" "--silent" "--pdf" (buffer-file-name (current-buffer)))
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun my/try-run-latexmk ()
|
|
||||||
"Try to run latexmk."
|
|
||||||
|
|
||||||
(if (bound-and-true-p latexmk-mode)
|
|
||||||
(my/run-latexmk)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(add-hook 'after-save-hook 'my/try-run-latexmk)
|
|
||||||
(add-hook 'latex-mode-hook 'latexmk-mode)
|
|
||||||
;;; latexmk-mode.el ends here
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
;;; livedown.el --- Realtime Markdown previews for Emacs.
|
|
||||||
|
|
||||||
;; Copyright (C) 2014-2016 Hrvoje Simic
|
|
||||||
|
|
||||||
;; Author: Hrvoje Simic <hrvoje@twobucks.co>
|
|
||||||
;; Version: 1.0.0
|
|
||||||
;; Keywords: markdown, preview, live
|
|
||||||
;; URL: https://github.com/shime/emacs-livedown
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Realtime Markdown previews for Emacs.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(defgroup livedown nil
|
|
||||||
"Realtime Markdown previews"
|
|
||||||
:group 'livedown
|
|
||||||
:prefix "livedown-")
|
|
||||||
|
|
||||||
(defcustom livedown-port 1337
|
|
||||||
"Port on which livedown server will run."
|
|
||||||
:type 'integer
|
|
||||||
:group 'livedown)
|
|
||||||
|
|
||||||
(defcustom livedown-open t
|
|
||||||
"Open browser automatically."
|
|
||||||
:type 'boolean
|
|
||||||
:group 'livedown)
|
|
||||||
|
|
||||||
(defcustom livedown-browser nil
|
|
||||||
"Open alternative browser."
|
|
||||||
:type 'string
|
|
||||||
:group 'livedown)
|
|
||||||
|
|
||||||
(defcustom livedown-autostart nil
|
|
||||||
"Auto-open previews when opening markdown files."
|
|
||||||
:type 'boolean
|
|
||||||
:group 'livedown)
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun livedown-preview ()
|
|
||||||
"Preview the current file in livedown."
|
|
||||||
(interactive)
|
|
||||||
|
|
||||||
(call-process-shell-command
|
|
||||||
(format "livedown stop --port %s &"
|
|
||||||
livedown-port))
|
|
||||||
|
|
||||||
(start-process-shell-command
|
|
||||||
(format "emacs-livedown")
|
|
||||||
(format "emacs-livedown-buffer")
|
|
||||||
(format "livedown start %s --port %s %s %s "
|
|
||||||
buffer-file-name
|
|
||||||
livedown-port
|
|
||||||
(if livedown-browser (concat "--browser " livedown-browser) "")
|
|
||||||
(if livedown-open "--open" "")))
|
|
||||||
(print (format "%s rendered @ %s" buffer-file-name livedown-port) (get-buffer "emacs-livedown-buffer")))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun livedown-kill (&optional async)
|
|
||||||
"Stops the livedown process."
|
|
||||||
(interactive)
|
|
||||||
(let ((stop-livedown (if async 'async-shell-command 'call-process-shell-command)))
|
|
||||||
(funcall stop-livedown
|
|
||||||
(format "livedown stop --port %s &"
|
|
||||||
livedown-port))))
|
|
||||||
|
|
||||||
(if livedown-autostart
|
|
||||||
(eval-after-load 'markdown-mode '(livedown-preview)))
|
|
||||||
|
|
||||||
(add-hook 'kill-emacs-query-functions (lambda () (livedown-kill t)))
|
|
||||||
|
|
||||||
(provide 'livedown)
|
|
||||||
;;; livedown.el ends here
|
|
||||||
@@ -1,261 +0,0 @@
|
|||||||
;;; org-ac.el --- Some auto-complete sources for org-mode
|
|
||||||
|
|
||||||
;; Copyright (C) 2014 Hiroaki Otsu
|
|
||||||
|
|
||||||
;; Author: Hiroaki Otsu <ootsuhiroaki@gmail.com>
|
|
||||||
;; Keywords: org, completion
|
|
||||||
;; URL: https://github.com/aki2o/org-ac
|
|
||||||
;; Version: 0.0.2
|
|
||||||
;; Package-Requires: ((auto-complete-pcmp "0.0.1") (log4e "0.2.0") (yaxception "0.1"))
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 of the License, or
|
|
||||||
;; (at your option) any later version.
|
|
||||||
|
|
||||||
;; This file is distributed in the hope that it will be useful,
|
|
||||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
;; GNU General Public License for more details.
|
|
||||||
|
|
||||||
;; You should have received a copy of the GNU General Public License
|
|
||||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
;;
|
|
||||||
;; This extension provides auto-complete sources for org-mode.
|
|
||||||
|
|
||||||
;;; Dependency:
|
|
||||||
;;
|
|
||||||
;; - auto-complete-pcmp.el ( see <https://github.com/aki2o/auto-complete-pcmp> )
|
|
||||||
;; - yaxception.el ( see <https://github.com/aki2o/yaxception> )
|
|
||||||
;; - log4e.el ( see <https://github.com/aki2o/log4e> )
|
|
||||||
|
|
||||||
;;; Installation:
|
|
||||||
;;
|
|
||||||
;; Put this to your load-path.
|
|
||||||
;; And put the following lines in your .emacs or site-start.el file.
|
|
||||||
;;
|
|
||||||
;; (require 'org-ac)
|
|
||||||
|
|
||||||
;;; Configuration:
|
|
||||||
;;
|
|
||||||
;; ;; Make config suit for you. About the config item, see Customization or eval the following sexp.
|
|
||||||
;; ;; (customize-group "org-ac")
|
|
||||||
;;
|
|
||||||
;; (org-ac/config-default)
|
|
||||||
|
|
||||||
;;; Customization:
|
|
||||||
;;
|
|
||||||
;; [EVAL] (autodoc-document-lisp-buffer :type 'user-variable :prefix "org-ac/" :docstring t)
|
|
||||||
;; `org-ac/ac-trigger-command-keys'
|
|
||||||
;; Keystrokes for doing `ac-start' with self insert.
|
|
||||||
;;
|
|
||||||
;; *** END auto-documentation
|
|
||||||
|
|
||||||
;;; API:
|
|
||||||
;;
|
|
||||||
;; [EVAL] (autodoc-document-lisp-buffer :type 'command :prefix "org-ac/" :docstring t)
|
|
||||||
;; `org-ac/setup-current-buffer'
|
|
||||||
;; Do setup for using org-ac in current buffer.
|
|
||||||
;;
|
|
||||||
;; *** END auto-documentation
|
|
||||||
;; [Note] Functions and variables other than listed above, Those specifications may be changed without notice.
|
|
||||||
|
|
||||||
;;; Tested On:
|
|
||||||
;;
|
|
||||||
;; - Emacs ... GNU Emacs 24.3.1 (i686-pc-linux-gnu, GTK+ Version 3.4.2) of 2013-08-22 on chindi02, modified by Debian
|
|
||||||
;; - auto-complete-pcmp.el ... Version 0.0.1
|
|
||||||
;; - yaxception.el ... Version 0.1
|
|
||||||
;; - log4e.el ... Version 0.2.0
|
|
||||||
|
|
||||||
|
|
||||||
;; Enjoy!!!
|
|
||||||
|
|
||||||
|
|
||||||
(eval-when-compile (require 'cl))
|
|
||||||
(require 'org)
|
|
||||||
(require 'auto-complete-pcmp)
|
|
||||||
(require 'rx)
|
|
||||||
(require 'log4e)
|
|
||||||
(require 'yaxception)
|
|
||||||
|
|
||||||
(defgroup org-ac nil
|
|
||||||
"Auto completion for org-mode."
|
|
||||||
:group 'org
|
|
||||||
:prefix "org-ac/")
|
|
||||||
|
|
||||||
(defcustom org-ac/ac-trigger-command-keys '("\\" "*" "SPC" ":" "[" "+")
|
|
||||||
"Keystrokes for doing `ac-start' with self insert."
|
|
||||||
:type '(repeat string)
|
|
||||||
:group 'org-ac)
|
|
||||||
|
|
||||||
|
|
||||||
(log4e:deflogger "org-ac" "%t [%l] %m" "%H:%M:%S" '((fatal . "fatal")
|
|
||||||
(error . "error")
|
|
||||||
(warn . "warn")
|
|
||||||
(info . "info")
|
|
||||||
(debug . "debug")
|
|
||||||
(trace . "trace")))
|
|
||||||
(org-ac--log-set-level 'trace)
|
|
||||||
|
|
||||||
|
|
||||||
(defun* org-ac--show-message (msg &rest args)
|
|
||||||
(apply 'message (concat "[ORG-AC] " msg) args)
|
|
||||||
nil)
|
|
||||||
|
|
||||||
(defun org-ac--complete-close-option-at-current-point ()
|
|
||||||
(let ((pt (point)))
|
|
||||||
(yaxception:$
|
|
||||||
(yaxception:try
|
|
||||||
(org-ac--trace "start complete close option at current point")
|
|
||||||
(when (save-excursion
|
|
||||||
(re-search-backward "#\\+\\(begin\\|BEGIN\\)_\\([a-zA-Z0-9]+\\) *\\=" nil t))
|
|
||||||
(let* ((opennm (match-string-no-properties 1))
|
|
||||||
(typenm (match-string-no-properties 2))
|
|
||||||
(closenm (cond ((string= opennm "begin") "end")
|
|
||||||
((string= opennm "BEGIN") "END")))
|
|
||||||
(case-fold-search t))
|
|
||||||
(if (or (not (re-search-forward "^[ \t]*#\\+" nil t))
|
|
||||||
(not (re-search-forward (concat "\\=" closenm "_") nil t)))
|
|
||||||
(progn (goto-char pt)
|
|
||||||
(insert "\n#+" closenm "_" typenm)
|
|
||||||
(org-cycle))
|
|
||||||
(let ((currtypenm (if (re-search-forward "\\=\\([a-zA-Z0-9]+\\)" nil t)
|
|
||||||
(match-string-no-properties 1)
|
|
||||||
"")))
|
|
||||||
(backward-delete-char (+ (length closenm)
|
|
||||||
1
|
|
||||||
(length currtypenm)))
|
|
||||||
(insert closenm "_" typenm)))
|
|
||||||
(goto-char pt))))
|
|
||||||
(yaxception:catch 'error e
|
|
||||||
(org-ac--show-message "Failed complete close option : %s" (yaxception:get-text e))
|
|
||||||
(org-ac--error "failed complete close option at current point : %s\n%s"
|
|
||||||
(yaxception:get-text e)
|
|
||||||
(yaxception:get-stack-trace-string e))
|
|
||||||
(goto-char pt)))))
|
|
||||||
|
|
||||||
(defun org-ac--get-link-head-candidates ()
|
|
||||||
(append (ac-pcmp/get-ac-candidates)
|
|
||||||
(mapcar (lambda (x) (concat x ":")) org-link-types)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-tex
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "\\\\\\([a-zA-Z0-9_-]*\\)")
|
|
||||||
(symbol . "t")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-head
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "[^\r\n*]\\*\\([^\t\r\n]*\\)")
|
|
||||||
(symbol . "h")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-todo
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "^\\*+ \\([a-zA-Z0-9_-]*\\)")
|
|
||||||
(symbol . "d")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-tag
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "[ \t]:\\([a-zA-Z0-9_-]*\\)")
|
|
||||||
(symbol . "t")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar org-ac--regexp-link-head (rx-to-string `(and "["
|
|
||||||
(* (any " \t"))
|
|
||||||
"["
|
|
||||||
(group (* (not (any ":*]")))))))
|
|
||||||
(defvar ac-source-org-ac-link-head
|
|
||||||
`((candidates . org-ac--get-link-head-candidates)
|
|
||||||
(prefix . ,org-ac--regexp-link-head)
|
|
||||||
(symbol . "l")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . (lambda ()
|
|
||||||
(ac-pcmp/do-ac-action)
|
|
||||||
(ac-start)))))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-option
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "^[ \t]*#\\+\\([a-zA-Z0-9_:=-]*\\)")
|
|
||||||
(symbol . "o")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . (lambda ()
|
|
||||||
(ac-pcmp/do-ac-action)
|
|
||||||
(org-ac--complete-close-option-at-current-point)
|
|
||||||
(auto-complete '(ac-source-org-ac-option-key))))))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-option-key
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "^[ \t]*#\\+[a-zA-Z0-9_:=-]+ +\\([a-zA-Z0-9_-]*\\)")
|
|
||||||
(symbol . "k")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-option-options
|
|
||||||
'((candidates . ac-pcmp/get-ac-candidates)
|
|
||||||
(prefix . "^[ \t]*#\\+\\(?:options\\|OPTIONS\\):.* +\\([a-zA-Z0-9_-]*\\)")
|
|
||||||
(symbol . "x")
|
|
||||||
(requires . 0)
|
|
||||||
(cache)
|
|
||||||
(action . ac-pcmp/do-ac-action)))
|
|
||||||
|
|
||||||
(defvar ac-source-org-ac-file
|
|
||||||
'((init . (setq ac-filename-cache nil))
|
|
||||||
(candidates . org-ac/file-candidate)
|
|
||||||
(prefix . "\\[file:\\(.*\\)")
|
|
||||||
(symbol . "f")
|
|
||||||
(requires . 0)
|
|
||||||
(action . ac-start)
|
|
||||||
(limit . nil)))
|
|
||||||
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun org-ac/setup-current-buffer ()
|
|
||||||
"Do setup for using org-ac in current buffer."
|
|
||||||
(interactive)
|
|
||||||
(when (eq major-mode 'org-mode)
|
|
||||||
(loop for stroke in org-ac/ac-trigger-command-keys
|
|
||||||
do (local-set-key (read-kbd-macro stroke) 'ac-pcmp/self-insert-command-with-ac-start))
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-tex)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-head)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-todo)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-tag)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-link-head)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-option)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-option-key)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-option-options)
|
|
||||||
(add-to-list 'ac-sources 'ac-source-org-ac-file)
|
|
||||||
(auto-complete-mode t)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun org-ac/config-default ()
|
|
||||||
"Do setting recommemded configuration."
|
|
||||||
(add-to-list 'ac-modes 'org-mode)
|
|
||||||
(add-hook 'org-mode-hook 'org-ac/setup-current-buffer t))
|
|
||||||
|
|
||||||
|
|
||||||
(defun org-ac/file-candidate ()
|
|
||||||
"Adds [file: to the normal file completition, plus allows relative paths"
|
|
||||||
(if (string-match "^[~./]+" ac-prefix)
|
|
||||||
(ac-filename-candidate)
|
|
||||||
(let ((ac-prefix (concat "./" ac-prefix)))
|
|
||||||
(mapcar (lambda (path) (substring path 2))
|
|
||||||
(ac-filename-candidate)))))
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'org-ac)
|
|
||||||
;;; org-ac.el ends here
|
|
||||||
@@ -1,483 +0,0 @@
|
|||||||
;;; smex.el --- M-x interface with Ido-style fuzzy matching. -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2009-2014 Cornelius Mika and contributors
|
|
||||||
;;
|
|
||||||
;; Author: Cornelius Mika <cornelius.mika@gmail.com> and contributors
|
|
||||||
;; URL: http://github.com/nonsequitur/smex/
|
|
||||||
;; Package-Requires: ((emacs "24"))
|
|
||||||
;; Version: 3.0
|
|
||||||
;; Keywords: convenience, usability
|
|
||||||
|
|
||||||
;; This file is not part of GNU Emacs.
|
|
||||||
|
|
||||||
;;; License:
|
|
||||||
|
|
||||||
;; Licensed under the same terms as Emacs.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Quick start:
|
|
||||||
;; run (smex-initialize)
|
|
||||||
;;
|
|
||||||
;; Bind the following commands:
|
|
||||||
;; smex, smex-major-mode-commands
|
|
||||||
;;
|
|
||||||
;; For a detailed introduction see:
|
|
||||||
;; http://github.com/nonsequitur/smex/blob/master/README.markdown
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ido)
|
|
||||||
|
|
||||||
(defgroup smex nil
|
|
||||||
"M-x interface with Ido-style fuzzy matching and ranking heuristics."
|
|
||||||
:group 'extensions
|
|
||||||
:group 'convenience
|
|
||||||
:link '(emacs-library-link :tag "Lisp File" "smex.el"))
|
|
||||||
|
|
||||||
(defcustom smex-auto-update t
|
|
||||||
"If non-nil, `Smex' checks for new commands each time it is run.
|
|
||||||
Turn it off for minor speed improvements on older systems."
|
|
||||||
:type 'boolean
|
|
||||||
:group 'smex)
|
|
||||||
|
|
||||||
(defcustom smex-save-file (locate-user-emacs-file "smex-items" ".smex-items")
|
|
||||||
"File in which the smex state is saved between Emacs sessions.
|
|
||||||
Variables stored are: `smex-data', `smex-history'.
|
|
||||||
Must be set before initializing Smex."
|
|
||||||
:type 'string
|
|
||||||
:group 'smex)
|
|
||||||
|
|
||||||
(defcustom smex-history-length 7
|
|
||||||
"Determines on how many recently executed commands
|
|
||||||
Smex should keep a record.
|
|
||||||
Must be set before initializing Smex."
|
|
||||||
:type 'integer
|
|
||||||
:group 'smex)
|
|
||||||
|
|
||||||
(defcustom smex-prompt-string "M-x "
|
|
||||||
"String to display in the Smex prompt."
|
|
||||||
:type 'string
|
|
||||||
:group 'smex)
|
|
||||||
|
|
||||||
(defcustom smex-flex-matching t
|
|
||||||
"Enables Ido flex matching. On by default.
|
|
||||||
Set this to nil to disable fuzzy matching."
|
|
||||||
:type 'boolean
|
|
||||||
:group 'smex)
|
|
||||||
|
|
||||||
(defvar smex-initialized-p nil)
|
|
||||||
(defvar smex-cache)
|
|
||||||
(defvar smex-ido-cache)
|
|
||||||
(defvar smex-data)
|
|
||||||
(defvar smex-history)
|
|
||||||
(defvar smex-command-count 0)
|
|
||||||
(defvar smex-custom-action nil)
|
|
||||||
|
|
||||||
;; Check if Smex is supported
|
|
||||||
(when (equal (cons 1 1)
|
|
||||||
(ignore-errors
|
|
||||||
(subr-arity (symbol-function 'execute-extended-command))))
|
|
||||||
(error "Your Emacs has a non-elisp version of `execute-extended-command', which is incompatible with Smex"))
|
|
||||||
|
|
||||||
;;--------------------------------------------------------------------------------
|
|
||||||
;; Smex Interface
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun smex ()
|
|
||||||
(interactive)
|
|
||||||
(unless smex-initialized-p
|
|
||||||
(smex-initialize))
|
|
||||||
(if (smex-already-running)
|
|
||||||
(smex-update-and-rerun)
|
|
||||||
(and smex-auto-update
|
|
||||||
(smex-detect-new-commands)
|
|
||||||
(smex-update))
|
|
||||||
(smex-read-and-run smex-ido-cache)))
|
|
||||||
|
|
||||||
(defun smex-already-running ()
|
|
||||||
(and (boundp 'ido-choice-list)
|
|
||||||
(eql ido-choice-list smex-ido-cache)
|
|
||||||
(minibuffer-window-active-p (selected-window))))
|
|
||||||
|
|
||||||
(defun smex-update-and-rerun ()
|
|
||||||
(smex-do-with-selected-item
|
|
||||||
(lambda (_) (smex-update) (smex-read-and-run smex-ido-cache ido-text))))
|
|
||||||
|
|
||||||
(defun smex-read-and-run (commands &optional initial-input)
|
|
||||||
(let* ((chosen-item-name (smex-completing-read commands initial-input))
|
|
||||||
(chosen-item (intern chosen-item-name)))
|
|
||||||
(if smex-custom-action
|
|
||||||
(let ((action smex-custom-action))
|
|
||||||
(setq smex-custom-action nil)
|
|
||||||
(funcall action chosen-item))
|
|
||||||
(unwind-protect
|
|
||||||
(with-no-warnings ; Don't warn about interactive use of `execute-extended-command'
|
|
||||||
(execute-extended-command current-prefix-arg chosen-item-name))
|
|
||||||
(smex-rank chosen-item)))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun smex-major-mode-commands ()
|
|
||||||
"Like `smex', but limited to commands that are relevant to the active major mode."
|
|
||||||
(interactive)
|
|
||||||
(unless smex-initialized-p
|
|
||||||
(smex-initialize))
|
|
||||||
(let ((commands (delete-dups (append (smex-extract-commands-from-keymap (current-local-map))
|
|
||||||
(smex-extract-commands-from-features major-mode)))))
|
|
||||||
(setq commands (smex-sort-according-to-cache commands))
|
|
||||||
(setq commands (mapcar #'symbol-name commands))
|
|
||||||
(smex-read-and-run commands)))
|
|
||||||
|
|
||||||
(defun smex-completing-read (choices initial-input)
|
|
||||||
(let ((ido-completion-map ido-completion-map)
|
|
||||||
(ido-setup-hook (cons 'smex-prepare-ido-bindings ido-setup-hook))
|
|
||||||
(ido-enable-prefix nil)
|
|
||||||
(ido-enable-flex-matching smex-flex-matching)
|
|
||||||
(ido-max-prospects 10)
|
|
||||||
(minibuffer-completion-table choices))
|
|
||||||
(ido-completing-read (smex-prompt-with-prefix-arg) choices nil nil
|
|
||||||
initial-input 'extended-command-history (car choices))))
|
|
||||||
|
|
||||||
(defun smex-prompt-with-prefix-arg ()
|
|
||||||
(if (not current-prefix-arg)
|
|
||||||
smex-prompt-string
|
|
||||||
(concat
|
|
||||||
(if (eq current-prefix-arg '-)
|
|
||||||
"- "
|
|
||||||
(if (integerp current-prefix-arg)
|
|
||||||
(format "%d " current-prefix-arg)
|
|
||||||
(if (= (car current-prefix-arg) 4)
|
|
||||||
"C-u "
|
|
||||||
(format "%d " (car current-prefix-arg)))))
|
|
||||||
smex-prompt-string)))
|
|
||||||
|
|
||||||
(defun smex-prepare-ido-bindings ()
|
|
||||||
(define-key ido-completion-map (kbd "TAB") 'minibuffer-complete)
|
|
||||||
(define-key ido-completion-map (kbd "C-h f") 'smex-describe-function)
|
|
||||||
(define-key ido-completion-map (kbd "C-h w") 'smex-where-is)
|
|
||||||
(define-key ido-completion-map (kbd "M-.") 'smex-find-function)
|
|
||||||
(define-key ido-completion-map (kbd "C-a") 'move-beginning-of-line))
|
|
||||||
|
|
||||||
;;--------------------------------------------------------------------------------
|
|
||||||
;; Cache and Maintenance
|
|
||||||
|
|
||||||
(defun smex-rebuild-cache ()
|
|
||||||
(interactive)
|
|
||||||
(setq smex-cache nil)
|
|
||||||
|
|
||||||
;; Build up list 'new-commands' and later put it at the end of 'smex-cache'.
|
|
||||||
;; This speeds up sorting.
|
|
||||||
(let (new-commands)
|
|
||||||
(mapatoms (lambda (symbol)
|
|
||||||
(when (commandp symbol)
|
|
||||||
(let ((known-command (assq symbol smex-data)))
|
|
||||||
(if known-command
|
|
||||||
(setq smex-cache (cons known-command smex-cache))
|
|
||||||
(setq new-commands (cons (list symbol) new-commands)))))))
|
|
||||||
(if (eq (length smex-cache) 0)
|
|
||||||
(setq smex-cache new-commands)
|
|
||||||
(setcdr (last smex-cache) new-commands)))
|
|
||||||
|
|
||||||
(setq smex-cache (sort smex-cache 'smex-sorting-rules))
|
|
||||||
(smex-restore-history)
|
|
||||||
(setq smex-ido-cache (smex-convert-for-ido smex-cache)))
|
|
||||||
|
|
||||||
(defun smex-convert-for-ido (command-items)
|
|
||||||
(mapcar (lambda (command-item) (symbol-name (car command-item))) command-items))
|
|
||||||
|
|
||||||
(defun smex-restore-history ()
|
|
||||||
"Rearranges `smex-cache' according to `smex-history'"
|
|
||||||
(if (> (length smex-history) smex-history-length)
|
|
||||||
(setcdr (nthcdr (- smex-history-length 1) smex-history) nil))
|
|
||||||
(mapc (lambda (command)
|
|
||||||
(unless (eq command (caar smex-cache))
|
|
||||||
(let ((command-cell-position (smex-detect-position
|
|
||||||
smex-cache
|
|
||||||
(lambda (cell)
|
|
||||||
(eq command (caar cell))))))
|
|
||||||
(when command-cell-position
|
|
||||||
(let ((command-cell (smex-remove-nth-cell
|
|
||||||
command-cell-position smex-cache)))
|
|
||||||
(setcdr command-cell smex-cache)
|
|
||||||
(setq smex-cache command-cell))))))
|
|
||||||
(reverse smex-history)))
|
|
||||||
|
|
||||||
(defun smex-sort-according-to-cache (list)
|
|
||||||
"Sorts a list of commands by their order in `smex-cache'"
|
|
||||||
(let (sorted)
|
|
||||||
(dolist (command-item smex-cache)
|
|
||||||
(let ((command (car command-item)))
|
|
||||||
(when (memq command list)
|
|
||||||
(setq sorted (cons command sorted))
|
|
||||||
(setq list (delq command list)))))
|
|
||||||
(nreverse (append list sorted))))
|
|
||||||
|
|
||||||
(defun smex-update ()
|
|
||||||
(interactive)
|
|
||||||
(smex-save-history)
|
|
||||||
(smex-rebuild-cache))
|
|
||||||
|
|
||||||
(defun smex-detect-new-commands ()
|
|
||||||
(let ((i 0))
|
|
||||||
(mapatoms (lambda (symbol) (if (commandp symbol) (setq i (1+ i)))))
|
|
||||||
(unless (= i smex-command-count)
|
|
||||||
(setq smex-command-count i))))
|
|
||||||
|
|
||||||
(defun smex-auto-update (&optional idle-time)
|
|
||||||
"Update Smex when Emacs has been idle for IDLE-TIME."
|
|
||||||
(unless idle-time (setq idle-time 60))
|
|
||||||
(run-with-idle-timer idle-time t
|
|
||||||
'(lambda () (if (smex-detect-new-commands) (smex-update)))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun smex-initialize ()
|
|
||||||
(interactive)
|
|
||||||
(unless ido-mode (smex-initialize-ido))
|
|
||||||
(smex-load-save-file)
|
|
||||||
(smex-detect-new-commands)
|
|
||||||
(smex-rebuild-cache)
|
|
||||||
(add-hook 'kill-emacs-hook 'smex-save-to-file)
|
|
||||||
(setq smex-initialized-p t))
|
|
||||||
|
|
||||||
(defun smex-initialize-ido ()
|
|
||||||
"Sets up a minimal Ido environment for `ido-completing-read'."
|
|
||||||
(with-no-warnings ; `ido-init-completion-maps' is deprecated in Emacs 25
|
|
||||||
(ido-init-completion-maps))
|
|
||||||
(add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup))
|
|
||||||
|
|
||||||
(defsubst smex-save-file-not-empty-p ()
|
|
||||||
(string-match-p "\[^[:space:]\]" (buffer-string)))
|
|
||||||
|
|
||||||
(defun smex-load-save-file ()
|
|
||||||
"Loads `smex-history' and `smex-data' from `smex-save-file'"
|
|
||||||
(let ((save-file (expand-file-name smex-save-file)))
|
|
||||||
(if (file-readable-p save-file)
|
|
||||||
(with-temp-buffer
|
|
||||||
(insert-file-contents save-file)
|
|
||||||
(condition-case nil
|
|
||||||
(setq smex-history (read (current-buffer))
|
|
||||||
smex-data (read (current-buffer)))
|
|
||||||
(error (if (smex-save-file-not-empty-p)
|
|
||||||
(error "Invalid data in smex-save-file (%s). Can't restore history."
|
|
||||||
smex-save-file)
|
|
||||||
(unless (boundp 'smex-history) (setq smex-history nil))
|
|
||||||
(unless (boundp 'smex-data) (setq smex-data nil))))))
|
|
||||||
(setq smex-history nil smex-data nil))))
|
|
||||||
|
|
||||||
(defun smex-save-history ()
|
|
||||||
"Updates `smex-history'"
|
|
||||||
(setq smex-history nil)
|
|
||||||
(let ((cell smex-cache))
|
|
||||||
(dotimes (_ smex-history-length)
|
|
||||||
(setq smex-history (cons (caar cell) smex-history))
|
|
||||||
(setq cell (cdr cell))))
|
|
||||||
(setq smex-history (nreverse smex-history)))
|
|
||||||
|
|
||||||
(defmacro smex-pp (list-var)
|
|
||||||
`(smex-pp* ,list-var ,(symbol-name list-var)))
|
|
||||||
|
|
||||||
(defun smex-save-to-file ()
|
|
||||||
(interactive)
|
|
||||||
(smex-save-history)
|
|
||||||
(with-temp-file (expand-file-name smex-save-file)
|
|
||||||
(smex-pp smex-history)
|
|
||||||
(smex-pp smex-data)))
|
|
||||||
|
|
||||||
;;--------------------------------------------------------------------------------
|
|
||||||
;; Ranking
|
|
||||||
|
|
||||||
(defun smex-sorting-rules (command-item other-command-item)
|
|
||||||
"Returns true if COMMAND-ITEM should sort before OTHER-COMMAND-ITEM."
|
|
||||||
(let* ((count (or (cdr command-item ) 0))
|
|
||||||
(other-count (or (cdr other-command-item) 0))
|
|
||||||
(name (car command-item))
|
|
||||||
(other-name (car other-command-item))
|
|
||||||
(length (length (symbol-name name)))
|
|
||||||
(other-length (length (symbol-name other-name))))
|
|
||||||
(or (> count other-count) ; 1. Frequency of use
|
|
||||||
(and (= count other-count)
|
|
||||||
(or (< length other-length) ; 2. Command length
|
|
||||||
(and (= length other-length)
|
|
||||||
(string< name other-name))))))) ; 3. Alphabetical order
|
|
||||||
|
|
||||||
(defun smex-rank (command)
|
|
||||||
(let ((command-item (or (assq command smex-cache)
|
|
||||||
;; Update caches and try again if not found.
|
|
||||||
(progn (smex-update)
|
|
||||||
(assq command smex-cache)))))
|
|
||||||
(when command-item
|
|
||||||
(smex-update-counter command-item)
|
|
||||||
|
|
||||||
;; Don't touch the cache order if the chosen command
|
|
||||||
;; has just been execucted previously.
|
|
||||||
(unless (eq command-item (car smex-cache))
|
|
||||||
(let (command-cell
|
|
||||||
(pos (smex-detect-position smex-cache (lambda (cell)
|
|
||||||
(eq command-item (car cell))))))
|
|
||||||
;; Remove the just executed command.
|
|
||||||
(setq command-cell (smex-remove-nth-cell pos smex-cache))
|
|
||||||
;; And put it on top of the cache.
|
|
||||||
(setcdr command-cell smex-cache)
|
|
||||||
(setq smex-cache command-cell)
|
|
||||||
|
|
||||||
;; Repeat the same for the ido cache. Should this be DRYed?
|
|
||||||
(setq command-cell (smex-remove-nth-cell pos smex-ido-cache))
|
|
||||||
(setcdr command-cell smex-ido-cache)
|
|
||||||
(setq smex-ido-cache command-cell)
|
|
||||||
|
|
||||||
;; Now put the last history item back to its normal place.
|
|
||||||
(smex-sort-item-at smex-history-length))))))
|
|
||||||
|
|
||||||
(defun smex-update-counter (command-item)
|
|
||||||
(let ((count (cdr command-item)))
|
|
||||||
(setcdr command-item
|
|
||||||
(if count
|
|
||||||
(1+ count)
|
|
||||||
;; Else: Command has just been executed for the first time.
|
|
||||||
;; Add it to `smex-data'.
|
|
||||||
(if smex-data
|
|
||||||
(setcdr (last smex-data) (list command-item))
|
|
||||||
(setq smex-data (list command-item)))
|
|
||||||
1))))
|
|
||||||
|
|
||||||
(defun smex-sort-item-at (n)
|
|
||||||
"Sorts item at position N in `smex-cache'."
|
|
||||||
(let* ((command-cell (nthcdr n smex-cache))
|
|
||||||
(command-item (car command-cell)))
|
|
||||||
(let ((insert-at (smex-detect-position
|
|
||||||
command-cell
|
|
||||||
(lambda (cell)
|
|
||||||
(smex-sorting-rules command-item (car cell))))))
|
|
||||||
;; TODO: Should we handle the case of 'insert-at' being nil?
|
|
||||||
;; This will never happen in practice.
|
|
||||||
(when (> insert-at 1)
|
|
||||||
(setq command-cell (smex-remove-nth-cell n smex-cache))
|
|
||||||
;; smex-cache just got shorter by one element, so subtract '1' from insert-at.
|
|
||||||
(setq insert-at (+ n (- insert-at 1)))
|
|
||||||
(smex-insert-cell command-cell insert-at smex-cache)
|
|
||||||
|
|
||||||
;; Repeat the same for the ido cache. DRY?
|
|
||||||
(setq command-cell (smex-remove-nth-cell n smex-ido-cache))
|
|
||||||
(smex-insert-cell command-cell insert-at smex-ido-cache)))))
|
|
||||||
|
|
||||||
(defun smex-detect-position (cell function)
|
|
||||||
"Detects, relatively to CELL, the position of the cell
|
|
||||||
on which FUNCTION returns true.
|
|
||||||
Only checks cells after CELL, starting with the cell right after CELL.
|
|
||||||
Returns nil when reaching the end of the list."
|
|
||||||
(let ((pos 1))
|
|
||||||
(catch 'break
|
|
||||||
(while t
|
|
||||||
(setq cell (cdr cell))
|
|
||||||
(if (not cell)
|
|
||||||
(throw 'break nil)
|
|
||||||
(if (funcall function cell) (throw 'break pos))
|
|
||||||
(setq pos (1+ pos)))))))
|
|
||||||
|
|
||||||
(defun smex-remove-nth-cell (n list)
|
|
||||||
"Removes and returns the Nth cell in LIST."
|
|
||||||
(let* ((previous-cell (nthcdr (- n 1) list))
|
|
||||||
(result (cdr previous-cell)))
|
|
||||||
(setcdr previous-cell (cdr result))
|
|
||||||
result))
|
|
||||||
|
|
||||||
(defun smex-insert-cell (new-cell n list)
|
|
||||||
"Inserts cell at position N in LIST."
|
|
||||||
(let* ((cell (nthcdr (- n 1) list))
|
|
||||||
(next-cell (cdr cell)))
|
|
||||||
(setcdr (setcdr cell new-cell) next-cell)))
|
|
||||||
|
|
||||||
;;--------------------------------------------------------------------------------
|
|
||||||
;; Help and Reference
|
|
||||||
|
|
||||||
(defun smex-do-with-selected-item (fn)
|
|
||||||
(setq smex-custom-action fn)
|
|
||||||
(ido-exit-minibuffer))
|
|
||||||
|
|
||||||
(defun smex-describe-function ()
|
|
||||||
(interactive)
|
|
||||||
(smex-do-with-selected-item (lambda (chosen)
|
|
||||||
(describe-function chosen)
|
|
||||||
(pop-to-buffer "*Help*"))))
|
|
||||||
|
|
||||||
(defun smex-where-is ()
|
|
||||||
(interactive)
|
|
||||||
(smex-do-with-selected-item 'where-is))
|
|
||||||
|
|
||||||
(defun smex-find-function ()
|
|
||||||
(interactive)
|
|
||||||
(smex-do-with-selected-item 'find-function))
|
|
||||||
|
|
||||||
(defun smex-extract-commands-from-keymap (map)
|
|
||||||
(let (commands)
|
|
||||||
(smex-parse-keymap map commands)
|
|
||||||
commands))
|
|
||||||
|
|
||||||
(defun smex-parse-keymap (map commands)
|
|
||||||
(map-keymap (lambda (_binding element)
|
|
||||||
(if (and (listp element) (eq 'keymap (car element)))
|
|
||||||
(smex-parse-keymap element commands)
|
|
||||||
;; Strings are commands, too. Reject them.
|
|
||||||
(if (and (symbolp element) (commandp element))
|
|
||||||
(push element commands))))
|
|
||||||
map))
|
|
||||||
|
|
||||||
(defun smex-extract-commands-from-features (mode)
|
|
||||||
(let ((library-path (symbol-file mode))
|
|
||||||
(mode-name (symbol-name mode))
|
|
||||||
commands)
|
|
||||||
|
|
||||||
(string-match "\\(.+?\\)\\(-mode\\)?$" mode-name)
|
|
||||||
;; 'lisp-mode' -> 'lisp'
|
|
||||||
(setq mode-name (match-string 1 mode-name))
|
|
||||||
(if (string= mode-name "c") (setq mode-name "cc"))
|
|
||||||
(setq mode-name (regexp-quote mode-name))
|
|
||||||
|
|
||||||
(dolist (feature load-history)
|
|
||||||
(let ((feature-path (car feature)))
|
|
||||||
(when (and feature-path (or (equal feature-path library-path)
|
|
||||||
(string-match mode-name (file-name-nondirectory
|
|
||||||
feature-path))))
|
|
||||||
(dolist (item (cdr feature))
|
|
||||||
(if (and (listp item) (eq 'defun (car item)))
|
|
||||||
(let ((function (cdr item)))
|
|
||||||
(when (commandp function)
|
|
||||||
(setq commands (append commands (list function))))))))))
|
|
||||||
commands))
|
|
||||||
|
|
||||||
(defun smex-show-unbound-commands ()
|
|
||||||
"Shows unbound commands in a new buffer,
|
|
||||||
sorted by frequency of use."
|
|
||||||
(interactive)
|
|
||||||
(setq smex-data (sort smex-data 'smex-sorting-rules))
|
|
||||||
(let ((unbound-commands (delq nil
|
|
||||||
(mapcar (lambda (command-item)
|
|
||||||
(unless (where-is-internal (car command-item))
|
|
||||||
command-item))
|
|
||||||
smex-data))))
|
|
||||||
(view-buffer-other-window "*Smex: Unbound Commands*")
|
|
||||||
(setq buffer-read-only t)
|
|
||||||
(let ((inhibit-read-only t))
|
|
||||||
(erase-buffer)
|
|
||||||
(smex-pp unbound-commands))
|
|
||||||
(set-buffer-modified-p nil)
|
|
||||||
(goto-char (point-min))))
|
|
||||||
|
|
||||||
;; A copy of `ido-pp' that's compatible with lexical bindings
|
|
||||||
(defun smex-pp* (list list-name)
|
|
||||||
(let ((print-level nil) (eval-expression-print-level nil)
|
|
||||||
(print-length nil) (eval-expression-print-length nil))
|
|
||||||
(insert "\n;; ----- " list-name " -----\n(\n ")
|
|
||||||
(while list
|
|
||||||
(let* ((elt (car list))
|
|
||||||
(s (if (consp elt) (car elt) elt)))
|
|
||||||
(if (and (stringp s) (= (length s) 0))
|
|
||||||
(setq s nil))
|
|
||||||
(if s
|
|
||||||
(prin1 elt (current-buffer)))
|
|
||||||
(if (and (setq list (cdr list)) s)
|
|
||||||
(insert "\n "))))
|
|
||||||
(insert "\n)\n")))
|
|
||||||
|
|
||||||
(provide 'smex)
|
|
||||||
;;; smex.el ends here
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
;; -*- emacs-lisp -*- <21/03/22 00:03:53 /home/yorune/.emacs.d/tramp>
|
|
||||||
;; Tramp connection history. Don't change this file.
|
|
||||||
;; Run `M-x tramp-cleanup-all-connections' instead.
|
|
||||||
|
|
||||||
(((tramp-file-name "sudo" "root" nil "Gentoo" nil nil nil)
|
|
||||||
nil))
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
((magit-commit nil)
|
|
||||||
(magit-dispatch nil)
|
|
||||||
(magit-push nil))
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
[user]
|
|
||||||
name = Marcin Woźniak
|
|
||||||
email = y0rune@aol.com
|
|
||||||
signingkey = D34FB8A44F324B8A
|
|
||||||
|
|
||||||
[include]
|
|
||||||
path = ~/.gituser.config
|
|
||||||
path = ~/.gitconfig.local
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
[gpg]
|
|
||||||
program = gpg
|
|
||||||
|
|
||||||
[commit]
|
|
||||||
gpgsign = true
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
[pull]
|
|
||||||
rebase = false
|
|
||||||
|
|
||||||
[push]
|
|
||||||
autoSetupRemote = true
|
|
||||||
|
|
||||||
[init]
|
|
||||||
defaultBranch = main
|
|
||||||
|
|
||||||
[alias]
|
|
||||||
ci = commit --verbose
|
|
||||||
co = checkout
|
|
||||||
cp = cherry-pick
|
|
||||||
df = !git --no-pager diff
|
|
||||||
br = !git branch | cat
|
|
||||||
dfh = !git --no-pager diff
|
|
||||||
diffh = !git --no-pager diff
|
|
||||||
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an - %ae>%Creset' --abbrev-commit --branches
|
|
||||||
prune-tags = !git tag -l | xargs git tag -d && git fetch -t
|
|
||||||
show = --no-pager show --color --pretty=format:%b
|
|
||||||
squash-all = "!f(){ git reset $(git commit-tree HEAD^{tree} \"$@\");};f"
|
|
||||||
st = status --ignore-submodules=dirty -s
|
|
||||||
untrack-file = !git update-index --assume-unchanged
|
|
||||||
exclude-file = !git update-index --assume-unchanged
|
|
||||||
c = commit --author='Marcin Woźniak <y0rune@aol.com> -s'
|
|
||||||
cw = commit --author='Marcin Woźniak <marcin.wozniak@wundermanthompson.com> -s'
|
|
||||||
retag = "!f() { if [ -z \"$1\" ]; then echo \"No version provided. Skipping git push.\"; else git tag --delete $1 2>/dev/null; git tag -a $1 -m \"Version $1\"; git push --tags -f; git push -f; fi; }; f"
|
|
||||||
delete-branch = "!$HOME/.local/bin/git-delete-branch"
|
|
||||||
|
|
||||||
[url "git@github.com:"]
|
|
||||||
insteadOf = "https://github.com/"
|
|
||||||
|
|
||||||
[credential "https://github.com"]
|
|
||||||
helper =
|
|
||||||
helper = !/usr/bin/gh auth git-credential
|
|
||||||
|
|
||||||
[credential "https://gist.github.com"]
|
|
||||||
helper =
|
|
||||||
helper = !/usr/bin/gh auth git-credential
|
|
||||||
|
|
||||||
[filter "lfs"]
|
|
||||||
process = git-lfs filter-process
|
|
||||||
required = true
|
|
||||||
clean = git-lfs clean -- %f
|
|
||||||
smudge = git-lfs smudge -- %f
|
|
||||||
@@ -1,282 +0,0 @@
|
|||||||
.config/backup-started*
|
|
||||||
.Xauthority
|
|
||||||
.matplotlib
|
|
||||||
.Trash
|
|
||||||
.DS_Store
|
|
||||||
.ansible
|
|
||||||
.CFUserTextEncoding
|
|
||||||
.cups/
|
|
||||||
.docker/
|
|
||||||
.oh-my-zsh/
|
|
||||||
.shell.pre-oh-my-zsh
|
|
||||||
.zcompdum*
|
|
||||||
.zsh_history
|
|
||||||
.zsh_sessions/
|
|
||||||
.emacs.d/emacs-custom.el
|
|
||||||
.emacs.d/smex-items
|
|
||||||
notes
|
|
||||||
Applications/
|
|
||||||
Desktop/
|
|
||||||
Library/
|
|
||||||
Pictures/
|
|
||||||
Public/
|
|
||||||
VirtualBox*
|
|
||||||
synergy.log
|
|
||||||
.config/Element/
|
|
||||||
.config/TabNine/
|
|
||||||
.config/coc/
|
|
||||||
.config/google-chrome/
|
|
||||||
.config/teamviewer/
|
|
||||||
.ipython/
|
|
||||||
.bugz_token
|
|
||||||
.irbrc
|
|
||||||
.jupyter/
|
|
||||||
.local/bin/autopep8
|
|
||||||
.local/bin/isort-identify-imports
|
|
||||||
.local/bin/pycodestyle
|
|
||||||
.local/bin/surprise
|
|
||||||
.local/bin/yamllint
|
|
||||||
.config/Signal/
|
|
||||||
.config/lazygit/
|
|
||||||
.config/libreoffice/
|
|
||||||
.config/quassel-irc.org/
|
|
||||||
.local/bin/pytube
|
|
||||||
.local/bin/spotify_dl
|
|
||||||
.packer.d/
|
|
||||||
.spotifydl/
|
|
||||||
.netrc
|
|
||||||
.nvimlog
|
|
||||||
.python_history
|
|
||||||
.vmware/
|
|
||||||
.local/bin/epylint
|
|
||||||
.local/bin/isort
|
|
||||||
.local/bin/pylint
|
|
||||||
.local/bin/pyreverse
|
|
||||||
.local/bin/symilar
|
|
||||||
.aws/
|
|
||||||
.anthy/
|
|
||||||
.aspell.*
|
|
||||||
.bash_history
|
|
||||||
.bash_logout
|
|
||||||
.bash_profile
|
|
||||||
.bashrc
|
|
||||||
.bitcoin
|
|
||||||
.bundle/
|
|
||||||
.cache/
|
|
||||||
.cargo
|
|
||||||
.cert/
|
|
||||||
.swt/
|
|
||||||
.smb
|
|
||||||
.emacs.d/ido.last
|
|
||||||
.local/bin/black*
|
|
||||||
.config/zsh/
|
|
||||||
.fzf.bash
|
|
||||||
.fzf.zsh
|
|
||||||
.fzf/
|
|
||||||
.local/bin/ansible*
|
|
||||||
.recently-used
|
|
||||||
.eclipse/
|
|
||||||
.emacs.d/.dap-breakpoints
|
|
||||||
.password
|
|
||||||
.chatty/
|
|
||||||
.config/transmission-daemon/
|
|
||||||
.config/wireshark/
|
|
||||||
.config/tea/
|
|
||||||
.config/ibus/
|
|
||||||
.config/vivaldi/
|
|
||||||
.config/gtk-2.0/
|
|
||||||
.config/*.conf
|
|
||||||
.config/BraveSoftware
|
|
||||||
.config/GIMP/
|
|
||||||
.config/Microsoft/
|
|
||||||
.config/Postman/
|
|
||||||
.config/QtProject.conf
|
|
||||||
.config/VSCodium
|
|
||||||
.config/autostart/
|
|
||||||
.config/cmus
|
|
||||||
.config/configstore
|
|
||||||
.config/dconf
|
|
||||||
.config/discord
|
|
||||||
.config/freerdp
|
|
||||||
.config/fzf
|
|
||||||
.config/gtk-3.0
|
|
||||||
.config/htop
|
|
||||||
.config/ibu
|
|
||||||
.config/keepassxc/
|
|
||||||
.config/mimeapps.list
|
|
||||||
.config/mpv/watch_later/
|
|
||||||
.config/msmtp
|
|
||||||
.config/mutt
|
|
||||||
.config/neofetch/
|
|
||||||
.config/newsboat/urlswork
|
|
||||||
.config/nvim/autoload
|
|
||||||
.config/nvim/plugged
|
|
||||||
.config/procps
|
|
||||||
.config/pulse
|
|
||||||
.config/qalculate
|
|
||||||
.config/spicy
|
|
||||||
.config/teams/
|
|
||||||
.config/vpn
|
|
||||||
.config/weatherreport
|
|
||||||
.dbus/
|
|
||||||
.emacs.d/.lsp-session-v1
|
|
||||||
.emacs.d/.mc-lists.el
|
|
||||||
.emacs.d/ac-comphist.dat
|
|
||||||
.emacs.d/auto-save-list/
|
|
||||||
.emacs.d/eclipse.jdt.ls/
|
|
||||||
.emacs.d/elpa/
|
|
||||||
.emacs.d/workspace/
|
|
||||||
.fehbg
|
|
||||||
.fltk/
|
|
||||||
.gem/
|
|
||||||
.ghc/
|
|
||||||
.gitconfig
|
|
||||||
.gkrellm2/data/
|
|
||||||
.gnome/
|
|
||||||
.gnupg/
|
|
||||||
.gtkrc-2.0
|
|
||||||
.history_zsh
|
|
||||||
.icons/
|
|
||||||
.irb_history
|
|
||||||
.irssi/
|
|
||||||
.java/
|
|
||||||
.jd2/
|
|
||||||
.lesshst
|
|
||||||
.local/bin/__pycache__/
|
|
||||||
.local/bin/backupSynology
|
|
||||||
.local/bin/chardetect
|
|
||||||
.local/bin/epylint
|
|
||||||
.local/bin/flask
|
|
||||||
.local/bin/futurize
|
|
||||||
.local/bin/haruhi-dl
|
|
||||||
.local/bin/isort
|
|
||||||
.local/bin/pasteurize
|
|
||||||
.local/bin/pwiz.py
|
|
||||||
.local/bin/pylint
|
|
||||||
.local/bin/pyreverse
|
|
||||||
.local/bin/symilar
|
|
||||||
.local/bin/vpnst
|
|
||||||
.local/bin/wheel
|
|
||||||
.local/bin/estimator_ckpt_converter
|
|
||||||
.local/bin/f2py3.9
|
|
||||||
.local/bin/google-oauthlib-tool
|
|
||||||
.local/bin/import_pb_to_tensorboard
|
|
||||||
.local/bin/markdown_py
|
|
||||||
.local/bin/pyrsa-*
|
|
||||||
.local/bin/saved_model_cli
|
|
||||||
.local/bin/tensorboard
|
|
||||||
.local/bin/tf_upgrade_v2
|
|
||||||
.local/bin/tflite_convert
|
|
||||||
.local/bin/toco
|
|
||||||
.local/bin/toco_from_protos
|
|
||||||
.local/bin/tqdm
|
|
||||||
.local/bin/f2py
|
|
||||||
.local/bin/f2py3
|
|
||||||
.keras/
|
|
||||||
.config/menus
|
|
||||||
.local/bin/wheel
|
|
||||||
.local/include/
|
|
||||||
.local/lib/
|
|
||||||
.local/lib64/
|
|
||||||
.local/share/
|
|
||||||
.logSynology
|
|
||||||
.m2/
|
|
||||||
.mbsyncrc
|
|
||||||
.megaCmd/
|
|
||||||
.minecraft/
|
|
||||||
.mozc/
|
|
||||||
.mozilla/
|
|
||||||
.node_repl_history
|
|
||||||
.notmuch-config
|
|
||||||
.npm/
|
|
||||||
.nv/
|
|
||||||
.nvidia-settings-rc
|
|
||||||
.openoffice/
|
|
||||||
.oracle_jre_usage/
|
|
||||||
.password-store/
|
|
||||||
.pki/
|
|
||||||
.plannaplan
|
|
||||||
.pvpn-cli/
|
|
||||||
.pylint.d/
|
|
||||||
.screenlayout/
|
|
||||||
.solargraph/
|
|
||||||
.sqlite_history
|
|
||||||
.ssh/
|
|
||||||
.sshservers
|
|
||||||
.steam/
|
|
||||||
.steampath
|
|
||||||
.steampid
|
|
||||||
.sts4/
|
|
||||||
.thunderbird/
|
|
||||||
.tig_history
|
|
||||||
.tlauncher/
|
|
||||||
.tooling/
|
|
||||||
.ts3client/
|
|
||||||
.var/
|
|
||||||
.vim/
|
|
||||||
.viminfo
|
|
||||||
.vimspector.log
|
|
||||||
.vnc/
|
|
||||||
.vscode-oss/
|
|
||||||
.vscode-server/
|
|
||||||
.vscode/
|
|
||||||
.w3m/
|
|
||||||
.weechat/
|
|
||||||
.wget-hsts
|
|
||||||
.wine/
|
|
||||||
.wmWeatherReports/
|
|
||||||
.yarnrc
|
|
||||||
.zcompdump-Gentoo-5.8
|
|
||||||
Documents
|
|
||||||
Downloads
|
|
||||||
Linux
|
|
||||||
MEGA
|
|
||||||
Muzyka
|
|
||||||
Screenshots
|
|
||||||
Wallpapers
|
|
||||||
developer-quiz.txt
|
|
||||||
git/
|
|
||||||
go/
|
|
||||||
ittv-credentials
|
|
||||||
mcserver/
|
|
||||||
mega
|
|
||||||
www
|
|
||||||
Movies/
|
|
||||||
Music/
|
|
||||||
notes.org
|
|
||||||
|
|
||||||
.config/backup.log
|
|
||||||
.config/gh/config.yml
|
|
||||||
.config/gh/hosts.yml
|
|
||||||
.local/state/gh/state.yml
|
|
||||||
.emacs.d/ido.last~
|
|
||||||
.config/karabiner/automatic_backups
|
|
||||||
.config/qBittorrent
|
|
||||||
.config/envman
|
|
||||||
.emacs.d/.last-package-update-day
|
|
||||||
.emacs.d/amx-items
|
|
||||||
.local/bin/pathman
|
|
||||||
.local/bin/webi
|
|
||||||
.local/opt/pathman-v0.5.2/bin
|
|
||||||
Musik/
|
|
||||||
|
|
||||||
.config/ytmdl
|
|
||||||
golang
|
|
||||||
.virtualenvs/debugpy
|
|
||||||
.local/bin/mgorny-dev-scripts
|
|
||||||
.local/bin/serviceman
|
|
||||||
.local/opt/serviceman-v0.8.0/bin
|
|
||||||
.emacs.d/recentf
|
|
||||||
.config/filezilla
|
|
||||||
.local/state/mume
|
|
||||||
.putty
|
|
||||||
.redhat
|
|
||||||
.cpanm
|
|
||||||
.node-gyp/14.16.0
|
|
||||||
.packettracer
|
|
||||||
.dlv
|
|
||||||
Cisco Packet Tracer 8.0.0
|
|
||||||
.local/bin/kubectl
|
|
||||||
.rustup
|
|
||||||
.local/tss-sdk
|
|
||||||
.local/bin/tss
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
sensor sensor_config_version 1
|
|
||||||
sensor sensor_sysdep_private 1
|
|
||||||
sensor sensor_float_factor 10000
|
|
||||||
sensor gkrellm_float_factor 1000
|
|
||||||
sensor "temp1" "coretemp-hwmon2/temp1" 10000 0 0 0
|
|
||||||
sensor "temp2" "coretemp-hwmon2/temp2" 10000 0 0 0
|
|
||||||
sensor "temp3" "coretemp-hwmon2/temp3" 10000 0 0 0
|
|
||||||
sensor "temp4" "coretemp-hwmon2/temp4" 10000 0 0 0
|
|
||||||
sensor "temp5" "coretemp-hwmon2/temp5" 10000 0 0 0
|
|
||||||
sensor "GPU C" "nVidia GPU Core" 10000 0 1 0
|
|
||||||
sensor "temp" "thermal_zone0" 10000 0 1 0
|
|
||||||
sensor "Vcor1" "bat0-hwmon1/in0" 10000 0 0 0
|
|
||||||
sensor units_fahrenheit 0
|
|
||||||
sensor show_units 1
|
|
||||||
sensor volt_display_mode 0
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
/home/yorune/.gkrellm2/themes/invisible HC
|
|
||||||
0
|
|
||||||
Sans 11
|
|
||||||
Sans 9
|
|
||||||
Sans 8
|
|
||||||
190
|
|
||||||
|
Before Width: | Height: | Size: 136 B |
|
Before Width: | Height: | Size: 844 B |
|
Before Width: | Height: | Size: 143 B |
|
Before Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 143 B |
@@ -1,91 +0,0 @@
|
|||||||
# invisible.
|
|
||||||
|
|
||||||
author = "Jkx <jkx@larsen-b.com>, color remix by Shawn Jeffcoat <shawnjeffcoat@gmail.com>"
|
|
||||||
|
|
||||||
chart_width_min = 58
|
|
||||||
chart_width_max = 58
|
|
||||||
chart_width_ref = 58
|
|
||||||
allow_scaling = true
|
|
||||||
frame_top_height = 0
|
|
||||||
frame_bottom_height = 0
|
|
||||||
frame_left_width = 0
|
|
||||||
frame_right_width = 0
|
|
||||||
frame_top_border = 0,0,0,0
|
|
||||||
frame_bottom_border = 0,0,0,0
|
|
||||||
frame_left_border = 0,0,0,0
|
|
||||||
frame_right_border = 0,0,0,0
|
|
||||||
|
|
||||||
chart_in_color = #01FF19
|
|
||||||
chart_in_color_grid = #FAFD00
|
|
||||||
chart_out_color = #FE0101
|
|
||||||
chart_out_color_grid = #FAFD00
|
|
||||||
|
|
||||||
bg_grid_mode = 1
|
|
||||||
|
|
||||||
rx_led_x = -14
|
|
||||||
rx_led_y = 11
|
|
||||||
tx_led_x = -1
|
|
||||||
tx_led_y = 11
|
|
||||||
|
|
||||||
timer_time_x = 1
|
|
||||||
timer_button_x = -4
|
|
||||||
|
|
||||||
bg_timer_border = 2,2,2,2
|
|
||||||
|
|
||||||
button_panel_border = 2,2,2,2
|
|
||||||
button_meter_border = 2,2,2,2
|
|
||||||
|
|
||||||
large_font = "-adobe-helvetica-medium-r-normal-*-*-100-*-*-p-*-*-*"
|
|
||||||
normal_font = "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-*-*"
|
|
||||||
small_font = "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-*-*"
|
|
||||||
|
|
||||||
bg_slider_panel_border = 1,1,1,1
|
|
||||||
bg_slider_meter_border = 1,1,1,1
|
|
||||||
|
|
||||||
StyleChart *.border = 5,5,5,5
|
|
||||||
StyleChart *.font = normal_font
|
|
||||||
StyleChart *.alt_font = small_font
|
|
||||||
StyleChart *.textcolor = #FFFFFF #000000 shadow
|
|
||||||
StyleChart *.alt_textcolor = #FFFFFF #000000 shadow
|
|
||||||
StyleChart *.transparency = 1
|
|
||||||
|
|
||||||
StylePanel *.border = 0,0,11,2
|
|
||||||
StylePanel *.font = normal_font
|
|
||||||
StylePanel *.alt_font = normal_font
|
|
||||||
StylePanel *.textcolor = #FFFFFF #000000 shadow
|
|
||||||
StylePanel *.alt_textcolor = #FFFFFF #000000 shadow
|
|
||||||
StylePanel *.label_position = 50
|
|
||||||
StylePanel *.margin = 1
|
|
||||||
StylePanel *.krell_x_hot = 63
|
|
||||||
StylePanel *.krell_depth = 65
|
|
||||||
StylePanel *.krell_yoff = 3
|
|
||||||
StylePanel *.transparency = 1
|
|
||||||
|
|
||||||
StyleMeter *.border = 0,0,12,4
|
|
||||||
StyleMeter *.font = normal_font
|
|
||||||
StyleMeter *.alt_font = small_font
|
|
||||||
StyleMeter *.textcolor = #FFFFFF #000000 shadow
|
|
||||||
StyleMeter *.alt_textcolor = #FFFFFF #000000 shadow
|
|
||||||
StyleMeter *.label_position = 50
|
|
||||||
StyleMeter *.margin = 1
|
|
||||||
StyleMeter *.krell_x_hot = 63
|
|
||||||
StyleMeter *.krell_depth = 65
|
|
||||||
StyleMeter *.krell_yoff = 4
|
|
||||||
StyleMeter *.transparency = 1
|
|
||||||
|
|
||||||
StylePanel net.label_position = 0
|
|
||||||
StyleMeter mem.label_position = 0
|
|
||||||
StyleMeter mem.border = 0,0,12,4
|
|
||||||
StyleMeter swap.label_position = 0
|
|
||||||
StyleMeter swap.border = 0,0,12,2
|
|
||||||
StyleMeter cal.font = med_font
|
|
||||||
StyleMeter cal.alt_font = large_font
|
|
||||||
StyleMeter clock.font = large_font
|
|
||||||
StyleMeter fs.border = 0,0,12,4
|
|
||||||
StyleMeter timer.border = 0,0,0,0
|
|
||||||
StyleMeter host.border = 0,0,0,3
|
|
||||||
StyleMeter cal.border = 0,0,0,4
|
|
||||||
StyleMeter clock.border = 0,0,0,4
|
|
||||||
StyleMeter uptime.border = 0,0,0,2
|
|
||||||
StyleMeter fs.label_position = 0
|
|
||||||
StyleMeter fs.alt_font = normal_font
|
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 381 B |
|
Before Width: | Height: | Size: 147 B |
|
Before Width: | Height: | Size: 465 B |
|
Before Width: | Height: | Size: 143 B |
|
Before Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 143 B |
@@ -1,91 +0,0 @@
|
|||||||
# invisible.
|
|
||||||
|
|
||||||
author = "Jkx <jkx@larsen-b.com>"
|
|
||||||
|
|
||||||
chart_width_min = 58
|
|
||||||
chart_width_max = 58
|
|
||||||
chart_width_ref = 58
|
|
||||||
allow_scaling = true
|
|
||||||
frame_top_height = 0
|
|
||||||
frame_bottom_height = 0
|
|
||||||
frame_left_width = 0
|
|
||||||
frame_right_width = 0
|
|
||||||
frame_top_border = 0,0,0,0
|
|
||||||
frame_bottom_border = 0,0,0,0
|
|
||||||
frame_left_border = 0,0,0,0
|
|
||||||
frame_right_border = 0,0,0,0
|
|
||||||
|
|
||||||
chart_in_color = #11c4f1
|
|
||||||
chart_in_color_grid = #11c4f1
|
|
||||||
chart_out_color = #8758b3
|
|
||||||
chart_out_color_grid = #8758b3
|
|
||||||
|
|
||||||
bg_grid_mode = 1
|
|
||||||
|
|
||||||
rx_led_x = -14
|
|
||||||
rx_led_y = 11
|
|
||||||
tx_led_x = -1
|
|
||||||
tx_led_y = 11
|
|
||||||
|
|
||||||
timer_time_x = 1
|
|
||||||
timer_button_x = -4
|
|
||||||
|
|
||||||
bg_timer_border = 2,2,2,2
|
|
||||||
|
|
||||||
button_panel_border = 2,2,2,2
|
|
||||||
button_meter_border = 2,2,2,2
|
|
||||||
|
|
||||||
large_font = "-adobe-helvetica-medium-r-normal-*-*-100-*-*-p-*-*-*"
|
|
||||||
normal_font = "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-*-*"
|
|
||||||
small_font = "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-*-*"
|
|
||||||
|
|
||||||
bg_slider_panel_border = 1,1,1,1
|
|
||||||
bg_slider_meter_border = 1,1,1,1
|
|
||||||
|
|
||||||
StyleChart *.border = 5,5,5,5
|
|
||||||
StyleChart *.font = normal_font
|
|
||||||
StyleChart *.alt_font = small_font
|
|
||||||
StyleChart *.textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StyleChart *.alt_textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StyleChart *.transparency = 1
|
|
||||||
|
|
||||||
StylePanel *.border = 0,0,11,2
|
|
||||||
StylePanel *.font = normal_font
|
|
||||||
StylePanel *.alt_font = normal_font
|
|
||||||
StylePanel *.textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StylePanel *.alt_textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StylePanel *.label_position = 50
|
|
||||||
StylePanel *.margin = 1
|
|
||||||
StylePanel *.krell_x_hot = 63
|
|
||||||
StylePanel *.krell_depth = 65
|
|
||||||
StylePanel *.krell_yoff = 3
|
|
||||||
StylePanel *.transparency = 1
|
|
||||||
|
|
||||||
StyleMeter *.border = 0,0,12,4
|
|
||||||
StyleMeter *.font = normal_font
|
|
||||||
StyleMeter *.alt_font = small_font
|
|
||||||
StyleMeter *.textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StyleMeter *.alt_textcolor = #C1C1C1 #000000 shadow
|
|
||||||
StyleMeter *.label_position = 50
|
|
||||||
StyleMeter *.margin = 1
|
|
||||||
StyleMeter *.krell_x_hot = 63
|
|
||||||
StyleMeter *.krell_depth = 65
|
|
||||||
StyleMeter *.krell_yoff = 4
|
|
||||||
StyleMeter *.transparency = 1
|
|
||||||
|
|
||||||
StylePanel net.label_position = 0
|
|
||||||
StyleMeter mem.label_position = 0
|
|
||||||
StyleMeter mem.border = 0,0,12,4
|
|
||||||
StyleMeter swap.label_position = 0
|
|
||||||
StyleMeter swap.border = 0,0,12,2
|
|
||||||
StyleMeter cal.font = med_font
|
|
||||||
StyleMeter cal.alt_font = large_font
|
|
||||||
StyleMeter clock.font = large_font
|
|
||||||
StyleMeter fs.border = 0,0,12,4
|
|
||||||
StyleMeter timer.border = 0,0,0,0
|
|
||||||
StyleMeter host.border = 0,0,0,3
|
|
||||||
StyleMeter cal.border = 0,0,0,4
|
|
||||||
StyleMeter clock.border = 0,0,0,4
|
|
||||||
StyleMeter uptime.border = 0,0,0,2
|
|
||||||
StyleMeter fs.label_position = 0
|
|
||||||
StyleMeter fs.alt_font = normal_font
|
|
||||||
|
Before Width: | Height: | Size: 817 B |
|
Before Width: | Height: | Size: 812 B |
|
Before Width: | Height: | Size: 222 B |
@@ -1,158 +0,0 @@
|
|||||||
### GKrellM user config. Auto written, do not edit (usually) ###
|
|
||||||
### Version 2.3.11 ###
|
|
||||||
enable_hostname 1
|
|
||||||
hostname_short 0
|
|
||||||
enable_sysname 0
|
|
||||||
mbmon_port 0
|
|
||||||
sticky_state 1
|
|
||||||
dock_type 0
|
|
||||||
decorated 0
|
|
||||||
skip_taskbar 0
|
|
||||||
skip_pager 0
|
|
||||||
above 1
|
|
||||||
below 0
|
|
||||||
track_gtk_theme_name 0
|
|
||||||
default_track_theme "Default"
|
|
||||||
save_position 1
|
|
||||||
chart_width 105
|
|
||||||
update_HZ 10
|
|
||||||
allow_multiple_instances 0
|
|
||||||
float_factor 1000
|
|
||||||
hostname sysname_mode 1
|
|
||||||
clock_cal clock_launch
|
|
||||||
clock_cal clock_tooltip
|
|
||||||
clock_cal cal_launch
|
|
||||||
clock_cal cal_tooltip
|
|
||||||
clock_cal hour_chime_command
|
|
||||||
clock_cal quarter_chime_command
|
|
||||||
clock_cal loop_chime_enable 0
|
|
||||||
clock_cal clock_options 1
|
|
||||||
clock_cal cal_options 1
|
|
||||||
clock_cal cal_format %a <span foreground="$A"><big><big>%e</big></big></span> %b
|
|
||||||
clock_cal clock_format %H:%M <span foreground="$A"><small>%S</small></span>
|
|
||||||
cpu enable 0
|
|
||||||
cpu smp_mode 0
|
|
||||||
cpu enabled cpu 0
|
|
||||||
cpu extra_info cpu 1
|
|
||||||
cpu chart_config cpu 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu0 1
|
|
||||||
cpu extra_info cpu0 1
|
|
||||||
cpu chart_config cpu0 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu1 1
|
|
||||||
cpu extra_info cpu1 1
|
|
||||||
cpu chart_config cpu1 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu2 1
|
|
||||||
cpu extra_info cpu2 1
|
|
||||||
cpu chart_config cpu2 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu3 1
|
|
||||||
cpu extra_info cpu3 1
|
|
||||||
cpu chart_config cpu3 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu4 1
|
|
||||||
cpu extra_info cpu4 1
|
|
||||||
cpu chart_config cpu4 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu5 1
|
|
||||||
cpu extra_info cpu5 1
|
|
||||||
cpu chart_config cpu5 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu6 1
|
|
||||||
cpu extra_info cpu6 1
|
|
||||||
cpu chart_config cpu6 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu enabled cpu7 1
|
|
||||||
cpu extra_info cpu7 1
|
|
||||||
cpu chart_config cpu7 40 20 0 0 0 0 : 0 0 0 0 500 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
cpu show_panel_labels 1
|
|
||||||
cpu omit_nice_mode 0
|
|
||||||
cpu config_tracking 0
|
|
||||||
cpu sensor_mode 0
|
|
||||||
cpu text_format $T
|
|
||||||
proc enable 1 1
|
|
||||||
proc launch
|
|
||||||
proc tooltip_comment
|
|
||||||
proc sensor_mode 0
|
|
||||||
proc text_format \w88\a$p\f procs\n\e$u\f users
|
|
||||||
proc chart_config 40 100 0 0 0 0 : 1 0 0 0 500 : 0 0 0 0 500
|
|
||||||
disk assign_method 2
|
|
||||||
disk device Disk 0 0 0 0 1 0 0 Disk
|
|
||||||
disk chart_config Disk 40 20000000 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
disk device sda 0 0 45 1 1 -1 0 sda
|
|
||||||
disk chart_config sda 40 10000000 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
disk device sda1 0 0 45 0 1 1 0 sda1
|
|
||||||
disk device sda2 0 0 45 0 1 2 0 sda2
|
|
||||||
disk device sda3 0 0 45 0 1 3 0 sda3
|
|
||||||
disk device sr0 0 0 96 0 1 -1 0 sr0
|
|
||||||
disk device dm-0 0 0 555 0 1 -1 0 dm-0
|
|
||||||
disk device dm-1 0 0 556 0 1 -1 0 dm-1
|
|
||||||
disk text_format $T
|
|
||||||
inet text_format all \t$a\f $l\N$A\f $L
|
|
||||||
inet update_interval all 1
|
|
||||||
net enables br-b27b19007b8e 0 1 0
|
|
||||||
net chart_config br-b27b19007b8e 40 5 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables docker0 0 1 0
|
|
||||||
net chart_config docker0 40 5 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables eth0 1 1 0
|
|
||||||
net chart_config eth0 40 2000000 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables lo 0 1 0
|
|
||||||
net enables veth1ee909d 0 1 0
|
|
||||||
net chart_config veth1ee909d 40 100 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables veth34ebeda 0 1 0
|
|
||||||
net chart_config veth34ebeda 40 100 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables veth665662f 0 1 0
|
|
||||||
net chart_config veth665662f 40 100 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables vethc201b27 0 1 0
|
|
||||||
net chart_config vethc201b27 40 100 0 1 0 0 : 0 0 0 0 500 : 0 0 0 0 500
|
|
||||||
net enables wlan0 0 1 0
|
|
||||||
net timer_enabled 0
|
|
||||||
net timer_seconds 0
|
|
||||||
net timer_iface none
|
|
||||||
net timer_on
|
|
||||||
net timer_off
|
|
||||||
net text_format $T\b\c\f$L
|
|
||||||
net reset_mday 1
|
|
||||||
net net_enabled_as_default 1
|
|
||||||
net net_stats_window_height 200
|
|
||||||
meminfo mem_meter 1 0 0
|
|
||||||
meminfo swap_meter 0 0
|
|
||||||
meminfo swap_chart 0 1
|
|
||||||
meminfo mem_launch
|
|
||||||
meminfo mem_tooltip
|
|
||||||
meminfo mem_data_format $t - $f free
|
|
||||||
meminfo swap_launch
|
|
||||||
meminfo swap_tooltip
|
|
||||||
meminfo swap_data_format $t - $f free
|
|
||||||
meminfo text_format $T
|
|
||||||
fs fs_check_timeout 2
|
|
||||||
fs nfs_check_timeout 16
|
|
||||||
fs auto_eject 0
|
|
||||||
fs binary_units 0
|
|
||||||
fs data_format $t - $f free
|
|
||||||
mail mailbox-local mbox /var/mail/yorune
|
|
||||||
mail mua
|
|
||||||
mail notify
|
|
||||||
mail fetch_command
|
|
||||||
mail remote_check_timeout 5
|
|
||||||
mail local_check_timeout 4
|
|
||||||
mail fetch_check_is_local 0
|
|
||||||
mail msg_count_mode 0
|
|
||||||
mail animation_select_mode 0
|
|
||||||
mail fetch_check_only_mode 0
|
|
||||||
mail reset_remote_mode 0
|
|
||||||
mail unseen_is_new 0
|
|
||||||
mail enable 0 0 0 0
|
|
||||||
mail animation_continuous 0
|
|
||||||
mail show_tooltip 1
|
|
||||||
mail mh_seq_ignore 0
|
|
||||||
battery enable 1
|
|
||||||
battery enable_composite 1
|
|
||||||
battery estimate_time 0
|
|
||||||
battery estimate_time_discharge 1500
|
|
||||||
battery estimate_time_charge 3000
|
|
||||||
battery estimate_time_charge_model 0
|
|
||||||
battery full_cap_fallback 5000
|
|
||||||
battery poll_interval 5
|
|
||||||
battery launch1
|
|
||||||
battery tooltip_comment
|
|
||||||
battery alert_units_percent 0
|
|
||||||
battery display_mode 0 0
|
|
||||||
battery display_mode 0 1
|
|
||||||
uptime enable 1
|
|
||||||
uptime launch
|
|
||||||
uptime tooltip
|
|
||||||
@@ -1,675 +0,0 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
|
||||||
software and other kinds of works.
|
|
||||||
|
|
||||||
The licenses for most software and other practical works are designed
|
|
||||||
to take away your freedom to share and change the works. By contrast,
|
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
|
||||||
share and change all versions of a program--to make sure it remains free
|
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
|
||||||
GNU General Public License for most of our software; it applies also to
|
|
||||||
any other work released this way by its authors. You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
them if you wish), that you receive source code or can get it if you
|
|
||||||
want it, that you can change the software or use pieces of it in new
|
|
||||||
free programs, and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
|
||||||
or can get the source code. And you must show them these terms so they
|
|
||||||
know their rights.
|
|
||||||
|
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
|
||||||
|
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
|
||||||
that there is no warranty for this free software. For both users' and
|
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
|
||||||
changed, so that their problems will not be attributed erroneously to
|
|
||||||
authors of previous versions.
|
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
|
||||||
modified versions of the software inside them, although the manufacturer
|
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
|
||||||
protecting users' freedom to change the software. The systematic
|
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
|
||||||
stand ready to extend this provision to those domains in future versions
|
|
||||||
of the GPL, as needed to protect the freedom of users.
|
|
||||||
|
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
|
||||||
patents cannot be used to render the program non-free.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
0. Definitions.
|
|
||||||
|
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
|
||||||
|
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
|
||||||
works, such as semiconductor masks.
|
|
||||||
|
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
|
||||||
"recipients" may be individuals or organizations.
|
|
||||||
|
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
|
||||||
earlier work or a work "based on" the earlier work.
|
|
||||||
|
|
||||||
A "covered work" means either the unmodified Program or a work based
|
|
||||||
on the Program.
|
|
||||||
|
|
||||||
To "propagate" a work means to do anything with it that, without
|
|
||||||
permission, would make you directly or secondarily liable for
|
|
||||||
infringement under applicable copyright law, except executing it on a
|
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
|
||||||
distribution (with or without modification), making available to the
|
|
||||||
public, and in some countries other activities as well.
|
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
|
||||||
|
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
|
||||||
to the extent that it includes a convenient and prominently visible
|
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
|
||||||
tells the user that there is no warranty for the work (except to the
|
|
||||||
extent that warranties are provided), that licensees may convey the
|
|
||||||
work under this License, and how to view a copy of this License. If
|
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
|
||||||
|
|
||||||
1. Source Code.
|
|
||||||
|
|
||||||
The "source code" for a work means the preferred form of the work
|
|
||||||
for making modifications to it. "Object code" means any non-source
|
|
||||||
form of a work.
|
|
||||||
|
|
||||||
A "Standard Interface" means an interface that either is an official
|
|
||||||
standard defined by a recognized standards body, or, in the case of
|
|
||||||
interfaces specified for a particular programming language, one that
|
|
||||||
is widely used among developers working in that language.
|
|
||||||
|
|
||||||
The "System Libraries" of an executable work include anything, other
|
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
|
||||||
packaging a Major Component, but which is not part of that Major
|
|
||||||
Component, and (b) serves only to enable use of the work with that
|
|
||||||
Major Component, or to implement a Standard Interface for which an
|
|
||||||
implementation is available to the public in source code form. A
|
|
||||||
"Major Component", in this context, means a major essential component
|
|
||||||
(kernel, window system, and so on) of the specific operating system
|
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
|
||||||
produce the work, or an object code interpreter used to run it.
|
|
||||||
|
|
||||||
The "Corresponding Source" for a work in object code form means all
|
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
|
||||||
control those activities. However, it does not include the work's
|
|
||||||
System Libraries, or general-purpose tools or generally available free
|
|
||||||
programs which are used unmodified in performing those activities but
|
|
||||||
which are not part of the work. For example, Corresponding Source
|
|
||||||
includes interface definition files associated with source files for
|
|
||||||
the work, and the source code for shared libraries and dynamically
|
|
||||||
linked subprograms that the work is specifically designed to require,
|
|
||||||
such as by intimate data communication or control flow between those
|
|
||||||
subprograms and other parts of the work.
|
|
||||||
|
|
||||||
The Corresponding Source need not include anything that users
|
|
||||||
can regenerate automatically from other parts of the Corresponding
|
|
||||||
Source.
|
|
||||||
|
|
||||||
The Corresponding Source for a work in source code form is that
|
|
||||||
same work.
|
|
||||||
|
|
||||||
2. Basic Permissions.
|
|
||||||
|
|
||||||
All rights granted under this License are granted for the term of
|
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
|
||||||
permission to run the unmodified Program. The output from running a
|
|
||||||
covered work is covered by this License only if the output, given its
|
|
||||||
content, constitutes a covered work. This License acknowledges your
|
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
|
||||||
|
|
||||||
You may make, run and propagate covered works that you do not
|
|
||||||
convey, without conditions so long as your license otherwise remains
|
|
||||||
in force. You may convey covered works to others for the sole purpose
|
|
||||||
of having them make modifications exclusively for you, or provide you
|
|
||||||
with facilities for running those works, provided that you comply with
|
|
||||||
the terms of this License in conveying all material for which you do
|
|
||||||
not control copyright. Those thus making or running the covered works
|
|
||||||
for you must do so exclusively on your behalf, under your direction
|
|
||||||
and control, on terms that prohibit them from making any copies of
|
|
||||||
your copyrighted material outside their relationship with you.
|
|
||||||
|
|
||||||
Conveying under any other circumstances is permitted solely under
|
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
|
||||||
makes it unnecessary.
|
|
||||||
|
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
|
||||||
|
|
||||||
No covered work shall be deemed part of an effective technological
|
|
||||||
measure under any applicable law fulfilling obligations under article
|
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
|
||||||
similar laws prohibiting or restricting circumvention of such
|
|
||||||
measures.
|
|
||||||
|
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
|
||||||
circumvention of technological measures to the extent such circumvention
|
|
||||||
is effected by exercising rights under this License with respect to
|
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
|
||||||
modification of the work as a means of enforcing, against the work's
|
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
|
||||||
technological measures.
|
|
||||||
|
|
||||||
4. Conveying Verbatim Copies.
|
|
||||||
|
|
||||||
You may convey verbatim copies of the Program's source code as you
|
|
||||||
receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
|
||||||
keep intact all notices stating that this License and any
|
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
|
||||||
recipients a copy of this License along with the Program.
|
|
||||||
|
|
||||||
You may charge any price or no price for each copy that you convey,
|
|
||||||
and you may offer support or warranty protection for a fee.
|
|
||||||
|
|
||||||
5. Conveying Modified Source Versions.
|
|
||||||
|
|
||||||
You may convey a work based on the Program, or the modifications to
|
|
||||||
produce it from the Program, in the form of source code under the
|
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
|
||||||
released under this License and any conditions added under section
|
|
||||||
7. This requirement modifies the requirement in section 4 to
|
|
||||||
"keep intact all notices".
|
|
||||||
|
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
|
||||||
License will therefore apply, along with any applicable section 7
|
|
||||||
additional terms, to the whole of the work, and all its parts,
|
|
||||||
regardless of how they are packaged. This License gives no
|
|
||||||
permission to license the work in any other way, but it does not
|
|
||||||
invalidate such permission if you have separately received it.
|
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
|
||||||
work need not make them do so.
|
|
||||||
|
|
||||||
A compilation of a covered work with other separate and independent
|
|
||||||
works, which are not by their nature extensions of the covered work,
|
|
||||||
and which are not combined with it such as to form a larger program,
|
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
|
||||||
used to limit the access or legal rights of the compilation's users
|
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
|
||||||
in an aggregate does not cause this License to apply to the other
|
|
||||||
parts of the aggregate.
|
|
||||||
|
|
||||||
6. Conveying Non-Source Forms.
|
|
||||||
|
|
||||||
You may convey a covered work in object code form under the terms
|
|
||||||
of sections 4 and 5, provided that you also convey the
|
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
|
||||||
in one of these ways:
|
|
||||||
|
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
|
||||||
customarily used for software interchange.
|
|
||||||
|
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by a
|
|
||||||
written offer, valid for at least three years and valid for as
|
|
||||||
long as you offer spare parts or customer support for that product
|
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
|
||||||
more than your reasonable cost of physically performing this
|
|
||||||
conveying of source, or (2) access to copy the
|
|
||||||
Corresponding Source from a network server at no charge.
|
|
||||||
|
|
||||||
c) Convey individual copies of the object code with a copy of the
|
|
||||||
written offer to provide the Corresponding Source. This
|
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
|
||||||
with subsection 6b.
|
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
|
||||||
Corresponding Source in the same way through the same place at no
|
|
||||||
further charge. You need not require recipients to copy the
|
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
|
||||||
patent license under the contributor's essential patent claims, to
|
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
|
||||||
the Program, the only way you could satisfy both those terms and this
|
|
||||||
License would be to refrain entirely from conveying the Program.
|
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
|
||||||
permission to link or combine any covered work with a work licensed
|
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
|
||||||
combined work, and to convey the resulting work. The terms of this
|
|
||||||
License will continue to apply to the part which is the covered work,
|
|
||||||
but the special requirements of the GNU Affero General Public License,
|
|
||||||
section 13, concerning interaction through a network will apply to the
|
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the GNU General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Program specifies that a certain numbered version of the GNU General
|
|
||||||
Public License "or any later version" applies to it, you have the
|
|
||||||
option of following the terms and conditions either of that numbered
|
|
||||||
version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of the
|
|
||||||
GNU General Public License, you may choose any version ever published
|
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
|
||||||
public statement of acceptance of a version permanently authorizes you
|
|
||||||
to choose that version for the Program.
|
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. Limitation of Liability.
|
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 930 B |
|
Before Width: | Height: | Size: 695 B |
@@ -1,77 +0,0 @@
|
|||||||
Chatty is a Twitch Chat Client, supporting many Twitch-specific features such as emotes,
|
|
||||||
nick colors, displaying stream information and much more.
|
|
||||||
|
|
||||||
Website: https://chatty.github.io
|
|
||||||
E-Mail: chattyclient@gmail.com
|
|
||||||
Twitter: @ChattyClient (https://twitter.com/ChattyClient)
|
|
||||||
YouTube: https://www.youtube.com/user/chattyclient
|
|
||||||
Discord: https://discord.gg/WTuqGeJ
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
This is a Java program, so you need to have the JRE 8 (Java Runtime Environment) or later installed.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
No real need for installation, just extract the Chatty_*.zip file into a
|
|
||||||
folder and start the Chatty.jar with Java.
|
|
||||||
|
|
||||||
Starting Chatty
|
|
||||||
---------------
|
|
||||||
|
|
||||||
You may be able to just double-click the Chatty.jar. If it asks you to select a program
|
|
||||||
to open it with, choose Java.
|
|
||||||
|
|
||||||
You can also create a shortcut to start Chatty, when creating the shortcut use:
|
|
||||||
|
|
||||||
javaw -jar "<Path to Chatty.jar>"
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
javaw -jar "C:\Program Files (x86)\Chatty\Chatty.jar"
|
|
||||||
|
|
||||||
This also allows you to add launch options, for example defining the channel to join:
|
|
||||||
|
|
||||||
javaw -jar "C:\Program Files (x86)\Chatty\Chatty.jar" -channel twitch
|
|
||||||
|
|
||||||
If you create a shortcut like this, make sure you set the working directory correctly
|
|
||||||
(specified in a field labeled "Run in" or similar). This can be important for some features.
|
|
||||||
|
|
||||||
You may also need to specify the full path to Java if just "javaw -jar" doesn't work:
|
|
||||||
|
|
||||||
C:\Windows\System32\javaw.exe -jar "C:\Program Files (x86)\Chatty\Chatty.jar"
|
|
||||||
|
|
||||||
Or to use a specific JRE:
|
|
||||||
|
|
||||||
C:\Program Files\Java\jre1.8.0_261\bin\javaw.exe -jar "<Path to Chatty.jar>"
|
|
||||||
|
|
||||||
Settings
|
|
||||||
--------
|
|
||||||
|
|
||||||
Settings are saved in a ".chatty" subfolder of your user directory by default. You can
|
|
||||||
find out where the settings are saved to by entering "/dir" in Chatty.
|
|
||||||
|
|
||||||
You can change this location to your current working directory by using the "-cd" launch
|
|
||||||
option, to a specified directory by using the "-d <dir>" launch option (the dir has to
|
|
||||||
exist already) or to a directory located next to the Chatty.jar by using the "-portable"
|
|
||||||
launch option.
|
|
||||||
|
|
||||||
Logfile
|
|
||||||
-------
|
|
||||||
|
|
||||||
There is a /debuglogs subdirectory in the settings directory which contains a
|
|
||||||
number of different debug logs. There is more information on them in the help.
|
|
||||||
|
|
||||||
More Help
|
|
||||||
---------
|
|
||||||
|
|
||||||
There is more help available in Chatty under <Help - About/Help> and online on the
|
|
||||||
Chatty website as mentioned at the beginning of this file.
|
|
||||||
|
|
||||||
Licence
|
|
||||||
-------
|
|
||||||
|
|
||||||
Chatty is released under the GPLv3. See the in-app help and the GitHub repository
|
|
||||||
for more detailed information.
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
####################################################
|
|
||||||
#
|
|
||||||
# SRC_PREPARE
|
|
||||||
#
|
|
||||||
# Marcin Woźniak
|
|
||||||
# y0rune@aol.com
|
|
||||||
#
|
|
||||||
# Last edit: 16-09-2020
|
|
||||||
#
|
|
||||||
###################################################
|
|
||||||
|
|
||||||
mainteiner="Marcin Woźniak"
|
|
||||||
|
|
||||||
function scanning(){
|
|
||||||
EUSCAN=$(euscan --nocolor --quiet "$1")
|
|
||||||
if [ -n "$EUSCAN" ]; then
|
|
||||||
echo $1
|
|
||||||
echo "=============== NOW: $(find ./* -mindepth 2 -maxdepth 2 -name ''"$1"'*.ebuild' | sort | tail -1) =================
|
|
||||||
$(echo -e "$EUSCAN" | tail -1)"
|
|
||||||
sleep 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function folder(){
|
|
||||||
cd "$1"; git pull || exit
|
|
||||||
|
|
||||||
PACKAGES=()
|
|
||||||
|
|
||||||
for FILE in */*
|
|
||||||
do
|
|
||||||
PACKAGE=$(echo "$FILE" | grep -Eo '[A-z0-9_-]+$')
|
|
||||||
PACKAGES+=("$PACKAGE")
|
|
||||||
done
|
|
||||||
|
|
||||||
for i in "${PACKAGES[@]}"
|
|
||||||
do
|
|
||||||
scanning "$i" &
|
|
||||||
done
|
|
||||||
|
|
||||||
for j in $(jobs -p)
|
|
||||||
do
|
|
||||||
wait "$j"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -n ">>> Done scanning $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
function nofolder(){
|
|
||||||
if [ -z "${1}" ]; then
|
|
||||||
echo "No overlay names given"
|
|
||||||
echo "Please give at least one overlay name as a commandline argument"
|
|
||||||
echo "Exiting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for overlay in "${@}"
|
|
||||||
do
|
|
||||||
for ebuild in $(EIX_LIMIT=0 eix --only-names --in-overlay "${overlay}")
|
|
||||||
do
|
|
||||||
euscan --nocolor --quiet "${ebuild}" &
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
for j in $(jobs -p)
|
|
||||||
do
|
|
||||||
wait "$j"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -n ">>> Done scanning ${overlay}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function help(){
|
|
||||||
echo "You can use:"
|
|
||||||
echo "* -r or --repo <HERE-REPO-NAME>"
|
|
||||||
echo "* -f or --folder <FOLDER-NAME>"
|
|
||||||
echo
|
|
||||||
echo "Example of usage"
|
|
||||||
echo "./logeuscan -r src_prepare-overlay"
|
|
||||||
echo "./logeuscan -f ~/git/src_prepare-overlay"
|
|
||||||
}
|
|
||||||
|
|
||||||
function main(){
|
|
||||||
[ "$(whereis eix | wc -w)" -le "1" ] && { echo "The eix is NOT installed"; exit; }
|
|
||||||
[ "$(whereis euscan | wc -w)" -le "1" ] && { echo "The euscan is NOT installed"; exit; }
|
|
||||||
case $1 in
|
|
||||||
-h|--help)
|
|
||||||
help
|
|
||||||
;;
|
|
||||||
-r|--repo)
|
|
||||||
nofolder "$2" | tee -a "euscan-$(date -I).log"
|
|
||||||
;;
|
|
||||||
-f|--folder)
|
|
||||||
folder "$2" | tee -a "euscan-$(date -I).log"
|
|
||||||
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "No found variable"; echo; help
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
NUMBER="-1"
|
|
||||||
|
|
||||||
while true
|
|
||||||
do
|
|
||||||
clear
|
|
||||||
|
|
||||||
LOGS=( $(sudo find /var/tmp/portage/ -mindepth 1 -maxdepth 5 -name "build.log") $(sudo find /var/tmpnotmpfs/portage/ -mindepth 1 -maxdepth 5 -name "build.log") )
|
|
||||||
LEN=${#LOGS[@]}
|
|
||||||
|
|
||||||
for (( i=0; i<$LEN; i++ ));
|
|
||||||
do
|
|
||||||
echo "$(( $i + 1 )) - ${LOGS[$i]}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo
|
|
||||||
read -rsp $'Select number to show logs...\n' -t2 -n1 NUMBER
|
|
||||||
|
|
||||||
[[ $NUMBER -gt 0 ]] && break
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "\n\e[93m File: ${LOGS[$NUMBER-1]} \e[0m\n"
|
|
||||||
sudo cat ${LOGS[$NUMBER-1]}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
NUMBER="-1"
|
|
||||||
|
|
||||||
if command -v sudo; then
|
|
||||||
sudo=$(which sudo)
|
|
||||||
elif command -v doas; then
|
|
||||||
sudo=$(which doas)
|
|
||||||
else
|
|
||||||
echo "Do you have installed sudo or doas on your system??"
|
|
||||||
fi
|
|
||||||
|
|
||||||
while true
|
|
||||||
do
|
|
||||||
clear
|
|
||||||
|
|
||||||
LOGS=( $(${sudo} find /var/tmp/portage/ -mindepth 1 -maxdepth 5 -name "build.log") $(${sudo} find /var/tmpnotmpfs/portage/ -mindepth 1 -maxdepth 5 -name "build.log") )
|
|
||||||
LEN=${#LOGS[@]}
|
|
||||||
|
|
||||||
for (( i=0; i<$LEN; i++ ));
|
|
||||||
do
|
|
||||||
echo "$(( $i + 1 )) - ${LOGS[$i]}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo
|
|
||||||
read -rsp $'Select number to show logs...\n' -t2 -n1 NUMBER
|
|
||||||
|
|
||||||
[[ $NUMBER -gt 0 ]] && break
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "\n\e[93m File: ${LOGS[$NUMBER-1]} \e[0m\n"
|
|
||||||
${sudo} tail -f "${LOGS[$NUMBER-1]}"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo -e $(date)
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
sudo emerge --sync
|
|
||||||
sudo $HOME/.local/bin/eix-repos-sync
|
|
||||||
sudo eix-update
|
|
||||||
sudo emerge -auDN @world
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo -e $(date)
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
BACKUP="/home/yorune/MEGA/Systems/Linux/portage"
|
|
||||||
TMP_KERNEL="/tmp/kernel-config-$(uname -r)"
|
|
||||||
DEFAULT_KERNEL="/usr/src/linux/.config"
|
|
||||||
GRUBRELOAD=1
|
|
||||||
|
|
||||||
function starting() {
|
|
||||||
echo -e "\e[93m----------------------COMPILING------------------------------\e[0m"
|
|
||||||
sudo cp -rv "$DEFAULT_KERNEL" "$TMP_KERNEL"
|
|
||||||
cp -r "$TMP_KERNEL" "$BACKUP/kernel-config"
|
|
||||||
sudo cp -r /etc/portage/* $BACKUP
|
|
||||||
qlist -I | sort -u > $BACKUP/list-of-programs
|
|
||||||
}
|
|
||||||
|
|
||||||
function selection() {
|
|
||||||
echo -e "\e[93m----------------------SELECTION-----------------------------\e[0m"
|
|
||||||
sudo eselect kernel list
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
read -rp "New kernel is: " KERVER
|
|
||||||
echo
|
|
||||||
echo -e "Your kernel now is \e[91m$(uname -sr)\e[0m"
|
|
||||||
echo -e "Your selected kernel is \e[91m$KERVER\e[0m"
|
|
||||||
sudo eselect kernel set "$KERVER"
|
|
||||||
sudo eselect kernel list | grep -iE "\*"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
function compilation() {
|
|
||||||
read -rp "Do you want to accept and compile (Y/N): " agreed
|
|
||||||
echo
|
|
||||||
if [ "$agreed" == "y" ] || [ "$agreed" == "Y" ]
|
|
||||||
then
|
|
||||||
echo -e "\e[91m----------------------\e[5mSTARTING\e[0m\e[91m------------------------------\e[0m" && sleep 10
|
|
||||||
$NOW > /tmp/compiling-starting
|
|
||||||
NEW_KERNEL="/tmp/new-kernel-config"
|
|
||||||
sudo cp -r "$TMP_KERNEL" "$DEFAULT_KERNEL"
|
|
||||||
cd /usr/src/linux || exit
|
|
||||||
sudo make menuconfig; sleep 2; sudo cp -r "$DEFAULT_KERNEL" "$NEW_KERNEL"
|
|
||||||
sudo genkernel all --makeopts=-j"$(nproc --all)" \
|
|
||||||
--kernel-config=$NEW_KERNEL \
|
|
||||||
--callback="emerge nvidia-drivers::gentoo" \
|
|
||||||
--zfs
|
|
||||||
elif [ "$agreed" == "N" ] || [ "$agreed" == "n" ]
|
|
||||||
then
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function ending() {
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo -e "\e[93m----------------------CHECKING-----------------------------\e[0m"
|
|
||||||
checking
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo -e "\e[93m----------------------REMEMBER-----------------------------\e[0m"
|
|
||||||
echo "You can remove:"
|
|
||||||
echo "* /lib/modules/OLD_KERNEL"
|
|
||||||
echo "* /boot/initramfs-genkernel-OLD_KERNEL"
|
|
||||||
echo "* /boot/vmlinuz-OLD_KERNEL"
|
|
||||||
echo "* /boot/System.map-OLD_KERNEL"
|
|
||||||
echo "* /boot/initramfs-OLD_KERNEL"
|
|
||||||
echo "* /usr/src/linux-OLD_KERNEL"
|
|
||||||
echo
|
|
||||||
echo -e "AFTER EVERYTHING YOU MUST WRITE COMMAND \e[91m"sudo grub-mkconfig -o /boot/grub/grub.cfg"\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
function checking() {
|
|
||||||
KERNEL=$(eselect kernel list \
|
|
||||||
| awk '{print $2}' \
|
|
||||||
| grep -Eo '[0-9]+.[0-9]+.[0-9]+' \
|
|
||||||
| tail -n1)
|
|
||||||
|
|
||||||
INITRANFS="initramfs-$KERNEL-gentoo-x86_64.img"
|
|
||||||
SYSTEMMAP="System.map-$KERNEL-gentoo-x86_64"
|
|
||||||
VMLINUZ="vmlinuz-$KERNEL-gentoo-x86_64"
|
|
||||||
|
|
||||||
ifchecking "$INITRANFS"
|
|
||||||
ifchecking "$SYSTEMMAP"
|
|
||||||
ifchecking "$VMLINUZ"
|
|
||||||
[ "$GRUBRELOAD" -eq "1" ] && sudo grub-mkconfig -o /boot/grub/grub.cfg \
|
|
||||||
|| echo "Please check all files and regenerate grub again!"
|
|
||||||
}
|
|
||||||
|
|
||||||
function ifchecking () {
|
|
||||||
FILE=/boot/$1
|
|
||||||
if test -f "$FILE"; then
|
|
||||||
echo "$FILE exist in the /boot folder ;)"
|
|
||||||
else
|
|
||||||
echo "$FILE NOT exist in the /boot folder ;)"
|
|
||||||
GRUBRELOAD=0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function addgit() {
|
|
||||||
cd "$BACKUP" || exit
|
|
||||||
sleep 20
|
|
||||||
git add .
|
|
||||||
git commit -m "Updated: $(date)"
|
|
||||||
git push
|
|
||||||
cd "$HOME" || exit
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
clear
|
|
||||||
|
|
||||||
BEGIN=$(date +"%s")
|
|
||||||
|
|
||||||
starting
|
|
||||||
addgit
|
|
||||||
selection
|
|
||||||
compilation
|
|
||||||
|
|
||||||
echo -e "\e[31mI am leaving! Thank You!\e[0m" && sleep 3
|
|
||||||
|
|
||||||
TERMIN=$(date +"%s")
|
|
||||||
DIFFTLPS=$(($TERMIN-$BEGIN))
|
|
||||||
|
|
||||||
echo -e "\e[93m------------------TIME COMPILATION-------------------------\e[0m"
|
|
||||||
echo -e "\e[93m$(($DIFFTLPS / 60)) minutes and $(($DIFFTLPS % 60)) seconds \e[0m elapsed for Script Execution." && sleep 3
|
|
||||||
ending
|
|
||||||
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
||||||
@@ -1,617 +0,0 @@
|
|||||||
#!/opt/homebrew/opt/bash/bin/bash
|
|
||||||
# shellcheck disable=2010,2045,2086,2155
|
|
||||||
|
|
||||||
# Path to the zsh folder
|
|
||||||
ZSHFOLDER=$HOME/.config/zsh
|
|
||||||
CONFIG="$HOME/.config"
|
|
||||||
OHMYZSH="$HOME/.oh-my-zsh"
|
|
||||||
|
|
||||||
mkdir -p $ZSHFOLDER $CONFIG $OHMYZSH
|
|
||||||
|
|
||||||
# Colours
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;0;32m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Stable version
|
|
||||||
TERRAFORM_VERSION="1.5.7"
|
|
||||||
|
|
||||||
# Python
|
|
||||||
if which python3 > /dev/null 2>&1; then
|
|
||||||
python="python3"
|
|
||||||
pip="pip3"
|
|
||||||
else
|
|
||||||
export PYTHONVERSION=$(ls -la /opt/homebrew/opt/ |
|
|
||||||
grep -iEo 'python@.* ->' |
|
|
||||||
sed 's/ ->//g' |
|
|
||||||
sort |
|
|
||||||
tail -n1 |
|
|
||||||
sed 's/python@//g')
|
|
||||||
python="/opt/homebrew/bin/python$PYTHONVERSION"
|
|
||||||
pip="/opt/homebrew/bin/pip$PYTHONVERSION"
|
|
||||||
fi
|
|
||||||
|
|
||||||
PIPEXT="--user --force --quiet --no-warn-script-location"
|
|
||||||
PIPEXTPRE="--pre $PIPEXT"
|
|
||||||
|
|
||||||
# Gentoo release
|
|
||||||
GENTOO="/etc/gentoo-release"
|
|
||||||
|
|
||||||
# Function for basic install
|
|
||||||
|
|
||||||
install=""
|
|
||||||
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
install="brew install"
|
|
||||||
elif [[ -f $GENTOO ]]; then
|
|
||||||
install="sudo emerge --update"
|
|
||||||
elif [[ -f /etc/debian_version ]]; then
|
|
||||||
sudo apt update
|
|
||||||
install="sudo apt install -y"
|
|
||||||
elif [[ -f /etc/redhat-release ]]; then
|
|
||||||
install="sudo dnf install"
|
|
||||||
fi
|
|
||||||
|
|
||||||
function timestamp() {
|
|
||||||
echo -e "${GREEN}[+]${NC} $(date +'%F %T') [INFO] $*"
|
|
||||||
}
|
|
||||||
|
|
||||||
function err() {
|
|
||||||
echo -e "${RED}[-] $(date +'%F %T') [ERROR] $*${NC}" >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function command_start() {
|
|
||||||
timestamp "Command $* has been started."
|
|
||||||
if ! "$@"; then
|
|
||||||
err "---------"
|
|
||||||
err "Command $* went wrong."
|
|
||||||
err "---------"
|
|
||||||
# exit
|
|
||||||
fi
|
|
||||||
timestamp "Command $* has been ended."
|
|
||||||
}
|
|
||||||
|
|
||||||
function command_exists() {
|
|
||||||
if command -v "$1" > /dev/null 2>&1; then
|
|
||||||
timestamp "Command $1 has been found"
|
|
||||||
else
|
|
||||||
err "Command $1 has been NOT found"
|
|
||||||
|
|
||||||
# Return false
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function update_pip() {
|
|
||||||
# Update the pip
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$python -m pip install --upgrade pip --user --no-warn-script-location
|
|
||||||
elif [[ -f $GENTOO ]]; then
|
|
||||||
$install dev-python/pip
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_neovim_module_for_python() {
|
|
||||||
# Python module in neovim
|
|
||||||
$pip install pynvim neovim imps $PIPEXTPRE
|
|
||||||
|
|
||||||
# Ruby module for neovim
|
|
||||||
gem install solargraph
|
|
||||||
|
|
||||||
# Node module for neovim
|
|
||||||
npm install @github/copilot-language-server -g --force
|
|
||||||
npm install tree-sitter-cli -g --force
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_node() {
|
|
||||||
if command_exists npm; then
|
|
||||||
timestamp "Node has been found"
|
|
||||||
else
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
brew uninstall node --ignore-dependencies
|
|
||||||
sudo rm -rf /opt/homebrew/lib/node_modules/npm/
|
|
||||||
$install node
|
|
||||||
elif [[ -f $GENTOO ]]; then
|
|
||||||
$install dev-lang/nodejs
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_pyright() {
|
|
||||||
# Install pyright
|
|
||||||
sudo npm -s -g i pyright --force
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_mdformat() {
|
|
||||||
# Install mdformat
|
|
||||||
$pip install mdformat $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_ruff() {
|
|
||||||
# Install ruff
|
|
||||||
$pip install ruff $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_bash-language-server() {
|
|
||||||
# Install bash-language-server
|
|
||||||
sudo npm -s -g i bash-language-server --force
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_yaml-language-server() {
|
|
||||||
# Install yaml-language-server
|
|
||||||
sudo npm -s -g i yaml-language-server --force
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_shfmt() {
|
|
||||||
# Install shfmt
|
|
||||||
GO111MODULE=on go install mvdan.cc/sh/v3/cmd/shfmt@latest
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_lazy() {
|
|
||||||
# Install shfmt
|
|
||||||
GO111MODULE=on go install github.com/jesseduffield/lazygit@latest
|
|
||||||
GO111MODULE=on go install github.com/jesseduffield/lazydocker@latest
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_dlv() {
|
|
||||||
GO111MODULE=on go install github.com/go-delve/delve/cmd/dlv@latest
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_terraform_stable() {
|
|
||||||
# Install terraform and terraform-ls
|
|
||||||
GO111MODULE=on go install github.com/hashicorp/terraform-ls@latest
|
|
||||||
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install tflint -q
|
|
||||||
$install tfenv -q
|
|
||||||
TFENV_ARCH=amd64 tfenv install "$TERRAFORM_VERSION"
|
|
||||||
tfenv use "$TERRAFORM_VERSION"
|
|
||||||
else
|
|
||||||
GO111MODULE=on go install github.com/hashicorp/terraform@v"$TERRAFORM_VERSION"
|
|
||||||
curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_terraform() {
|
|
||||||
# Install terraform and terraform-ls
|
|
||||||
GO111MODULE=on go install github.com/hashicorp/terraform-ls@latest
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install tflint -q
|
|
||||||
$install tfenv -q
|
|
||||||
TFENV_ARCH=amd64 tfenv install latest
|
|
||||||
mapfile -t TFENV_VER_ARRAY < <(tfenv list | grep -ioE ' [0-9.]+' | sed -e '1,1d')
|
|
||||||
if [ "${#TFENV_VER_ARRAY[@]}" -gt "2" ]; then
|
|
||||||
for i in "${TFENV_VER_ARRAY[@]}"; do
|
|
||||||
tfenv uninstall "$i" && timestamp "Removed - terraform '$i' version"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
GO111MODULE=on go install github.com/hashicorp/terraform@latest
|
|
||||||
curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_terragrunt() {
|
|
||||||
# Install terragrunt
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install terragrunt -q
|
|
||||||
else
|
|
||||||
TERRAGRUNT=$HOME/.local/bin/terragrunt
|
|
||||||
REMOTE_VERSION=$(curl -s https://api.github.com/repos/gruntwork-io/terragrunt/releases/latest | grep -iEo '"tag_name":.*' | sed 's/"tag_name"://g;s/"//g;s/,//g;s/ //g')
|
|
||||||
|
|
||||||
CURRENT_VERSION="0.0.0"
|
|
||||||
[ -f $TERRAGRUNT ] && CURRENT_VERSION=$($TERRAGRUNT version)
|
|
||||||
|
|
||||||
if [ "$REMOTE_VERSION" == "$CURRENT_VERSION" ]; then
|
|
||||||
timestamp "The current version of the TSS-SDK is the same as the newest version"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
brew install wget
|
|
||||||
wget https://github.com/gruntwork-io/terragrunt/releases/latest/download/terragrunt_linux_amd64 -O $TERRAGRUNT
|
|
||||||
chmod +x "$TERRAGRUNT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_shellcheck() {
|
|
||||||
# Install shellcheck
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install shellcheck -q
|
|
||||||
else
|
|
||||||
curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_marksman() {
|
|
||||||
# Install marksman
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install marksman -q
|
|
||||||
else
|
|
||||||
wget https://github.com/artempyanykh/marksman/releases/latest/download/marksman-linux-x64 -O $HOME/.local/bin/marksman
|
|
||||||
chmod +x $HOME/.local/bin/marksman
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_go() {
|
|
||||||
# Install the golang
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install golang -q
|
|
||||||
elif [[ -f $GENTOO ]]; then
|
|
||||||
$install dev-lang/go
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_gopls() {
|
|
||||||
# Install gopls
|
|
||||||
GO111MODULE=on go install golang.org/x/tools/gopls@latest
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_ansible() {
|
|
||||||
# Install Ansible
|
|
||||||
$pip install ansible ansible-lint ansible-core $PIPEXTPRE
|
|
||||||
$pip install ansible-parallel $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_ansible-language-server() {
|
|
||||||
# Install ansible-language-server
|
|
||||||
sudo npm -s -g i @ansible/ansible-language-server --force
|
|
||||||
sudo npm -s -g i yaml-language-server --force
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_azure_cli() {
|
|
||||||
# Install azure_cli
|
|
||||||
$install azure-cli
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_awscli() {
|
|
||||||
# Install awscli
|
|
||||||
$install awscli
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_ytdlp() {
|
|
||||||
# Install yt-dlp
|
|
||||||
$pip install yt-dlp $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_spotifydl() {
|
|
||||||
# Install spotify_dl
|
|
||||||
$pip install spotdl $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_fzf() {
|
|
||||||
# Install fzf
|
|
||||||
FOLDER="$CONFIG/fzf"
|
|
||||||
mkdir -p $FOLDER
|
|
||||||
|
|
||||||
if [ -d $FOLDER ]; then
|
|
||||||
cd $CONFIG || err "Folder $CONFIG has been NOT found"
|
|
||||||
git clone https://github.com/junegunn/fzf.git $FOLDER && timestamp "Cloning the FZF"
|
|
||||||
cd $FOLDER || err "Folder $FOLDER has been NOT found"
|
|
||||||
git pull -q && timestamp "Pulled the $FOLDER configuration"
|
|
||||||
make install
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_zsh_addons() {
|
|
||||||
|
|
||||||
if [ ! -d $ZSHFOLDER/aws ]; then
|
|
||||||
mkdir -p "$ZSHFOLDER/azure-cli" "$ZSHFOLDER/aws"
|
|
||||||
|
|
||||||
curl -s https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/aws/aws.plugin.zsh \
|
|
||||||
-o "$ZSHFOLDER"/aws/aws.plugin.zsh &&
|
|
||||||
timestamp "Downloaded the newest version of aws plugin for zsh"
|
|
||||||
|
|
||||||
curl -s https://raw.githubusercontent.com/Azure/azure-cli/dev/az.completion \
|
|
||||||
-o "$ZSHFOLDER"/azure-cli/az.completion &&
|
|
||||||
timestamp "Downloaded the newest version of az plugin for zsh"
|
|
||||||
|
|
||||||
cd $ZSHFOLDER || err "Folder $ZSHFOLDER has been NOT found"
|
|
||||||
git clone https://github.com/popstas/zsh-command-time.git &&
|
|
||||||
timestamp "Cloning the zsh-command-time"
|
|
||||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &&
|
|
||||||
timestamp "Cloning the zsh-syntax-highlighting"
|
|
||||||
git clone https://github.com/zsh-users/zsh-autosuggestions.git &&
|
|
||||||
timestamp "Cloning the zsh-autosuggestions"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i in $(ls $ZSHFOLDER); do
|
|
||||||
FOLDER="$ZSHFOLDER/$i"
|
|
||||||
if [ -d "$FOLDER/.git" ]; then
|
|
||||||
cd "$FOLDER" || err "Folder $FOLDER has been NOT found"
|
|
||||||
git pull -q && timestamp "Pulling the $FOLDER configuration"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ! -d $OHMYZSH ]; then
|
|
||||||
cd $OHMYZSH || err "Folder $OHMYZSH has been NOT found"
|
|
||||||
git pull -q && timestamp "Pulling the $OHMYZSH configuration"
|
|
||||||
fi
|
|
||||||
|
|
||||||
curl -s https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/aws/aws.plugin.zsh -o "$ZSHFOLDER"/aws/aws.plugin.zsh && timestamp "Downloaded the newest version of aws plugin for zsh"
|
|
||||||
curl -s https://raw.githubusercontent.com/Azure/azure-cli/dev/az.completion -o "$ZSHFOLDER"/azure-cli/az.completion && timestamp "Downloaded the newest version of az plugin for zsh"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_speedtest() {
|
|
||||||
# Install speedtest-cli
|
|
||||||
$pip install speedtest-cli $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_gh_cli() {
|
|
||||||
# Install gh-cli
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install gh
|
|
||||||
elif [[ -f $GENTOO ]]; then
|
|
||||||
$install dev-util/github-cli
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_kubernetes() {
|
|
||||||
# Install kubectl
|
|
||||||
LINK=""
|
|
||||||
CURRENT_VERSION=""
|
|
||||||
REMOTE_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
|
|
||||||
KUBECTL_LOCATION="/opt/homebrew/bin/kubectl"
|
|
||||||
|
|
||||||
[ -f $KUBECTL_LOCATION ] && CURRENT_VERSION=$($KUBECTL_LOCATION version --client | grep --color=no -iEo 'Client Version: v[0-9\.]+' | grep -ioE --color=no 'v[0-9\.]+')
|
|
||||||
|
|
||||||
if [ "$REMOTE_VERSION" == "$CURRENT_VERSION" ]; then
|
|
||||||
timestamp "The current version of the kubectl is the same as the newest version"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
LINK="http://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
|
|
||||||
else
|
|
||||||
LINK="http://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
|
||||||
fi
|
|
||||||
|
|
||||||
wget "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" -O $KUBECTL_LOCATION
|
|
||||||
chmod +x $KUBECTL_LOCATION
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_rust() {
|
|
||||||
# Install rust
|
|
||||||
if command_exists rustc; then
|
|
||||||
rustup update
|
|
||||||
rustup component add rust-analyzer
|
|
||||||
else
|
|
||||||
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_tss_client() {
|
|
||||||
# Install tss
|
|
||||||
TSS_VERSION_STABLE="$1"
|
|
||||||
CURRENT_VERSION="1.5.7"
|
|
||||||
|
|
||||||
if [ -z "$TSS_VERSION_STABLE" ]; then
|
|
||||||
TSS_VERSION_STABLE=""
|
|
||||||
timestamp "TSS_VERSION_STABLE variable is empty, the latest version will be installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Example link: https://downloads.ss.thycotic.com/secretserversdk/1.5.7/secretserver-sdk-1.5.7-linux-x64.zip
|
|
||||||
TSSDOCS="https://docs.delinea.com/online-help/secret-server/api-scripting/sdk-devops/sdk-downloads/index.htm"
|
|
||||||
LINK=""
|
|
||||||
REMOTE_VERSION=""
|
|
||||||
|
|
||||||
if [ "$(uname)" == "Darwin" ]; then
|
|
||||||
if [ -n "$TSS_VERSION_STABLE" ]; then
|
|
||||||
LINK="https://downloads.ss.thycotic.com/secretserversdk/$TSS_VERSION_STABLE/secretserver-sdk-$TSS_VERSION_STABLE-osx-x64.zip"
|
|
||||||
REMOTE_VERSION=$TSS_VERSION
|
|
||||||
else
|
|
||||||
LINK=$(curl -s -L $TSSDOCS | grep -iEo 'href=".*-osx-x64.zip"' | sed 's/href\=//g;s/"//g' | sort -r | head -n1)
|
|
||||||
REMOTE_VERSION=$(echo $LINK | grep -iEo '[0-9.]+-osx' | sed 's/-osx//g')
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
LINK=$(curl -s -L $TSSDOCS | grep -iEo 'href=".*-linux-x64.zip"' | sed 's/href\=//g;s/"//g' | sort -r | head -n1)
|
|
||||||
REMOTE_VERSION=$(echo $LINK | grep -iEo '[0-9.]+-linux' | sed 's/-linux//g')
|
|
||||||
fi
|
|
||||||
|
|
||||||
TSSFOLDER="$HOME/.local/tss-sdk"
|
|
||||||
TSSLINK="$HOME/.local/bin/tss"
|
|
||||||
|
|
||||||
[ -f $TSSLINK ] && CURRENT_VERSION=$($TSSLINK version)
|
|
||||||
|
|
||||||
timestamp "Current version of the TSS-SDK: $CURRENT_VERSION"
|
|
||||||
timestamp "Remote version of the TSS-SDK: $REMOTE_VERSION"
|
|
||||||
|
|
||||||
if [ "$REMOTE_VERSION" == "$CURRENT_VERSION" ]; then
|
|
||||||
timestamp "The current version of the TSS-SDK is the same as the newest version"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
rm -rfv $TSSFOLDER $TSSLINK
|
|
||||||
mkdir $TSSFOLDER
|
|
||||||
timestamp "Downloading the newest version of the TSS-SDK"
|
|
||||||
timestamp "Link: $LINK"
|
|
||||||
wget $LINK -P $TSSFOLDER
|
|
||||||
unzip $TSSFOLDER/secretserver-sdk-*.zip -d $TSSFOLDER
|
|
||||||
rm -rfv $TSSFOLDER/secretserver-sdk-*.zip
|
|
||||||
ln -s $TSSFOLDER/tss $TSSLINK
|
|
||||||
chmod +x $TSSLINK
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_precommit() {
|
|
||||||
# Install pre-commit
|
|
||||||
$pip install pre-commit $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_streamlink() {
|
|
||||||
# Install streamlink
|
|
||||||
$pip install streamlink $PIPEXTPRE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_brew_programs() {
|
|
||||||
# Install brew programs
|
|
||||||
INSTALLED_PROGRAMS=$(brew list)
|
|
||||||
while IFS='' read -r line; do LIST_OF_PROGRAMS+=("$line"); done < <(cat "$HOME"/.brew_programs)
|
|
||||||
while IFS='' read -r line; do LIST_OF_PROGRAMS_CASK+=("$line"); done < <(cat "$HOME"/.brew_programs_cask)
|
|
||||||
while IFS='' read -r line; do LIST_OF_PROGRAMS_DISABLE+=("$line"); done < <(cat "$HOME"/.brew_programs_disable)
|
|
||||||
|
|
||||||
timestamp "Installing brew programs"
|
|
||||||
|
|
||||||
for i in "${LIST_OF_PROGRAMS[@]}"; do
|
|
||||||
if [[ ! " ${INSTALLED_PROGRAMS[*]} " =~ ${i} ]] &&
|
|
||||||
[[ ! " ${LIST_OF_PROGRAMS_DISABLE[*]} " =~ ${i} ]]; then
|
|
||||||
timestamp "Installing the $i brew program"
|
|
||||||
brew install $i --force
|
|
||||||
if $? -ne 0; then
|
|
||||||
err "Failed to install the $i brew program"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
timestamp "Installing brew cask programs"
|
|
||||||
|
|
||||||
for i in "${LIST_OF_PROGRAMS_CASK[@]}"; do
|
|
||||||
if [[ ! " ${INSTALLED_PROGRAMS[*]} " =~ ${i} ]] &&
|
|
||||||
[[ ! " ${LIST_OF_PROGRAMS_DISABLE[*]} " =~ ${i} ]]; then
|
|
||||||
timestamp "Installing the $i brew cask program"
|
|
||||||
brew install $i --cask --appdir=~/Applications --force
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
xattr -r -d com.apple.quarantine /Applications/Spotify.app
|
|
||||||
xattr -r -d com.apple.quarantine /opt/homebrew/bin/mpv /Applications/mpv.app
|
|
||||||
|
|
||||||
duti -s io.mpv avi all
|
|
||||||
duti -s io.mpv mkv all
|
|
||||||
duti -s io.mpv mp4 all
|
|
||||||
duti -s io.mpv ts all
|
|
||||||
|
|
||||||
xattr -r -d com.apple.quarantine /Applications/chatterino.app
|
|
||||||
|
|
||||||
brew cleanup --prune=all
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_prettier() {
|
|
||||||
$install prettier
|
|
||||||
$install prettierd
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_google_cloud_sdk() {
|
|
||||||
# Install google cloud sdk
|
|
||||||
if [[ "$(uname)" == "Darwin" ]]; then
|
|
||||||
$install google-cloud-sdk
|
|
||||||
else
|
|
||||||
curl -s https://sdk.cloud.google.com | bash
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_lib_wandio() {
|
|
||||||
local REPO="LibtraceTeam/wandio"
|
|
||||||
local REMOTE_VERSION=$(curl -s \
|
|
||||||
https://api.github.com/repos/$REPO/releases/latest |
|
|
||||||
grep -iEo '"tag_name":.*' |
|
|
||||||
sed 's/"tag_name"://g;s/"//g;s/,//g;s/ //g')
|
|
||||||
local RELEASE="${REMOTE_VERSION}.tar.gz"
|
|
||||||
local DEST="/tmp/wandio-$REMOTE_VERSION.tar.gz"
|
|
||||||
local DEST_FOLDER="/tmp/wandio-$REMOTE_VERSION"
|
|
||||||
|
|
||||||
$install autoconf automake libtool
|
|
||||||
wget https://github.com/$REPO/archive/refs/tags/$RELEASE -O $DEST
|
|
||||||
tar -xvf $DEST -C /tmp
|
|
||||||
cd $DEST_FOLDER || err "Folder $DEST_FOLDER has been NOT found"
|
|
||||||
./bootstrap.sh
|
|
||||||
./configure
|
|
||||||
make -j"$(nproc)"
|
|
||||||
sudo make install && timestamp "Installed the newest version of the $REPO"
|
|
||||||
rm -rfv $DEST $DEST_FOLDER
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_bgpreader() {
|
|
||||||
local CURRENT_VERSION="0.0.0"
|
|
||||||
local REPO="CAIDA/libbgpstream"
|
|
||||||
local NAME="${REPO##*/}"
|
|
||||||
local REMOTE_VERSION=$(curl -s \
|
|
||||||
https://api.github.com/repos/$REPO/releases/latest |
|
|
||||||
grep -iEo '"tag_name":.*' |
|
|
||||||
sed 's/"tag_name"://g;s/"//g;s/,//g;s/ //g')
|
|
||||||
local RELEASE="$NAME-${REMOTE_VERSION/v/}.tar.gz"
|
|
||||||
local DEST="/tmp/$NAME-$REMOTE_VERSION.tar.gz"
|
|
||||||
local DEST_FOLDER="/tmp/$NAME-$REMOTE_VERSION"
|
|
||||||
|
|
||||||
if command_exists bgpreader; then
|
|
||||||
CURRENT_VERSION="v$(bgpreader -v 2>&1 | grep -ioE '[0-9\.]+')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$CURRENT_VERSION" == "$REMOTE_VERSION" ]; then
|
|
||||||
timestamp "The current version of the BGPREADER is the same as the newest version"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
$install autoconf automake libtool
|
|
||||||
command_start install_lib_wandio
|
|
||||||
wget https://github.com/$REPO/releases/download/$REMOTE_VERSION/$RELEASE -O $DEST
|
|
||||||
tar -xvf $DEST -C /tmp
|
|
||||||
cd /tmp/$NAME-* || err "Folder /tmp/$NAME-* has been NOT found"
|
|
||||||
./configure --without-kafka
|
|
||||||
make -j"$(nproc)"
|
|
||||||
sudo make install && timestamp "Installed the newest version of the $REPO"
|
|
||||||
rm -rfv /tmp/$NAME-*
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_font_terminess() {
|
|
||||||
local REPO="ryanoasis/nerd-fonts"
|
|
||||||
local REMOTE_VERSION=$(curl -s \
|
|
||||||
https://api.github.com/repos/$REPO/releases/latest |
|
|
||||||
grep -iEo '"tag_name":.*' |
|
|
||||||
sed 's/"tag_name"://g;s/"//g;s/,//g;s/ //g')
|
|
||||||
local RELEASE="Terminus.zip"
|
|
||||||
local DEST="/tmp/Terminess"
|
|
||||||
|
|
||||||
if [ ! -f $HOME/Library/Fonts/TerminessNerdFont-Regular.ttf ]; then
|
|
||||||
mkdir -p $DEST
|
|
||||||
cd $DEST || err "Folder $DEST has been NOT found"
|
|
||||||
wget https://github.com/$REPO/releases/download/$REMOTE_VERSION/$RELEASE -O $DEST/$RELEASE
|
|
||||||
unzip $RELEASE -d $DEST
|
|
||||||
mv $DEST/*.ttf ~/Library/Fonts
|
|
||||||
cd $HOME || err "Folder $HOME has been NOT found"
|
|
||||||
rm -rfv $DEST
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
command_start update_pip
|
|
||||||
command_start install_neovim_module_for_python
|
|
||||||
command_start install_node
|
|
||||||
command_start install_go
|
|
||||||
# command_start install_pyright
|
|
||||||
command_start install_mdformat
|
|
||||||
command_start install_ruff
|
|
||||||
command_start install_lazy
|
|
||||||
command_start install_dlv
|
|
||||||
command_start install_bash-language-server
|
|
||||||
command_start install_yaml-language-server
|
|
||||||
command_start install_marksman
|
|
||||||
command_start install_shfmt
|
|
||||||
command_start install_shellcheck
|
|
||||||
command_start install_gopls
|
|
||||||
# command_start install_terraform
|
|
||||||
command_start install_terraform_stable
|
|
||||||
command_start install_terragrunt
|
|
||||||
command_start install_azure_cli
|
|
||||||
command_start install_ansible
|
|
||||||
command_start install_ansible-language-server
|
|
||||||
command_start install_ytdlp
|
|
||||||
command_start install_spotifydl
|
|
||||||
command_start install_awscli
|
|
||||||
command_start install_speedtest
|
|
||||||
command_start install_gh_cli
|
|
||||||
command_start install_kubernetes
|
|
||||||
command_start install_rust
|
|
||||||
command_start install_tss_client "1.5.9"
|
|
||||||
command_start install_precommit
|
|
||||||
command_start install_streamlink
|
|
||||||
command_start install_fzf
|
|
||||||
command_start install_prettier
|
|
||||||
command_start install_google_cloud_sdk
|
|
||||||
command_start install_bgpreader
|
|
||||||
command_start install_font_terminess
|
|
||||||
command_start install_zsh_addons
|
|
||||||
command_start install_brew_programs
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#/bin/bash
|
|
||||||
function main(){
|
|
||||||
wineapp=$(readlink -f $(whereis wine64))
|
|
||||||
"$wineapp" "~/Applications/Winbox.exe"
|
|
||||||
}
|
|
||||||
main
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
source $HOME/.password
|
|
||||||
mkdir -p ~/Movies/{Anime,Videos}
|
|
||||||
mkdir -p ~/Music
|
|
||||||
|
|
||||||
#sudo mount -t cifs //192.168.0.220/Mega -o username=${USERNAME},password=${PASSWORD},vers=2\.0 /mnt/synology
|
|
||||||
#sudo mount -t cifs //192.168.0.220/music -o username=${USERNAME},password=${PASSWORD},vers=2\.0 ~/Music
|
|
||||||
#sudo mount -t cifs //192.168.0.220/usbshare1/Video -o username=${USERNAME},password=${PASSWORD},vers=2\.0 ~/Movies/Videos
|
|
||||||
#sudo mount -t cifs //192.168.0.220/usbshare1/Anime -o username=${USERNAME},password=${PASSWORD},vers=2\.0 ~/Movies/Anime
|
|
||||||
#sudo mount -t cifs //192.168.0.220/Studia -o username=${USERNAME},password=${PASSWORD},vers=2\.0 ~/Collage
|
|
||||||
|
|
||||||
if [ -e /mnt/synology/Systems ]
|
|
||||||
then
|
|
||||||
echo "Starting $(date)" > ~/.cache/.logSynology
|
|
||||||
sudo rsync -r --bwlimit=512 --update --progress /home/yorune/MEGA/ /mnt/synology >> ~/.cache/.logSynology
|
|
||||||
rsync -r --bwlimit=512 --update --progress \
|
|
||||||
/home/yorune/Documents/Mega-Documents/Magisterka-Marcin/ \
|
|
||||||
~/Documents/Collage/Magisterka-Marcin
|
|
||||||
cp -rv /home/yorune/git/{dwm,dwmblocks,st,dmenu,mons,slock} ~/MEGA/Systems/Linux/apps
|
|
||||||
echo "Ending $(date)" >> ~/.cache/.logSynology
|
|
||||||
fi
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
MEGA_VOLUME="/Volumes/MEGA"
|
|
||||||
MEGA="$HOME/MEGA"
|
|
||||||
STARTED="$HOME/.config/backup-started-$(date +%d-%m)"
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
if [[ ! -e "$STARTED" ]]; then
|
|
||||||
touch "$STARTED" && echo -e "[LOG] $(date) Created the file $STARTED"
|
|
||||||
|
|
||||||
echo -e "[LOG] $(date) Started $HOME/.ssh/ -> $MEGA/ssh"
|
|
||||||
rsync --bwlimit=2048 --update --progress -r "$HOME/.ssh/" "$MEGA/ssh/"
|
|
||||||
echo -e "[LOG] $(date) Finished $HOME/.ssh/ -> $MEGA/ssh"
|
|
||||||
|
|
||||||
echo -e "[LOG] $(date) Started $HOME/.gnupg/ -> $MEGA/gnupg"
|
|
||||||
rsync --bwlimit=2048 --update --progress -r "$HOME/.gnupg/" "$MEGA/gnupg/"
|
|
||||||
echo -e "[LOG] $(date) Finished $HOME/.gnupg/ -> $MEGA/gnupg"
|
|
||||||
|
|
||||||
if [[ -e "$MEGA_VOLUME" ]]; then
|
|
||||||
echo -e "[LOG] $(date) Started $MEGA -> $MEGA_VOLUME"
|
|
||||||
rsync --bwlimit=2048 --update --progress -r --exclude '.DS_Store' \
|
|
||||||
--exclude '.debris' \
|
|
||||||
--exclude 'Icon*' \
|
|
||||||
"$MEGA/" "$MEGA_VOLUME/"
|
|
||||||
else
|
|
||||||
echo -e "[ERROR] The folder $MEGA_VOLUME does NOT exist"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "[LOG] $(date) Removed the files $STARTED and $STARTED *"
|
|
||||||
rm -rf "$STARTED"
|
|
||||||
rm -rf "$HOME/.config/backup-started-*"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main >"$HOME/.config/backup.log"
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Marcin Wozniak
|
|
||||||
# Last edit: 2023-05-05
|
|
||||||
#
|
|
||||||
# shellcheck disable=1091
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
set -u
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Colours
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;0;32m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
ADDR=$1
|
|
||||||
LOG_FILE="bgp-$ADDR-$(date -I).log"
|
|
||||||
|
|
||||||
function timestamp() {
|
|
||||||
echo -e "${GREEN}[+]${NC} $(date +'%F %T') [INFO] $*"
|
|
||||||
}
|
|
||||||
|
|
||||||
function err() {
|
|
||||||
echo -e "${RED}[-] $(date +'%F %T') [ERROR] $*${NC}" >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function command_start() {
|
|
||||||
timestamp "Command $* has been started."
|
|
||||||
if ! "$@"; then
|
|
||||||
err "Command $* went wrong."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
timestamp "Command $* has been ended."
|
|
||||||
}
|
|
||||||
|
|
||||||
function bgpcheck() {
|
|
||||||
timestamp "CHECKING BGP FOR $ADDR at RT.IR9.AMS.NL.retn.net"
|
|
||||||
curl --silent \
|
|
||||||
"https://lg.retn.net/cgi/LG.cgi?r=87&p=4&q=b&a=$ADDR" |
|
|
||||||
sed '/table>/d;/<link/d;/<meta/d;/tr>/d;/td>/d;/query/d;/html/d;/head/d;/title/d;/img/d;/body/d;/center/d;/h2/d;/<p>/d;/<hr /d '
|
|
||||||
timestamp "---------------------------------------"
|
|
||||||
|
|
||||||
timestamp "CHECKING BGP FOR $ADDR at RT.NIA.POZ.PL.retn.net"
|
|
||||||
curl --silent \
|
|
||||||
"https://lg.retn.net/cgi/LG.cgi?r=ab&p=4&q=b&a=$ADDR" |
|
|
||||||
sed '/table>/d;/<link/d;/<meta/d;/tr>/d;/td>/d;/query/d;/html/d;/head/d;/title/d;/img/d;/body/d;/center/d;/h2/d;/<p>/d;/<hr /d'
|
|
||||||
timestamp "---------------------------------------"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
command_start bgpcheck
|
|
||||||
}
|
|
||||||
|
|
||||||
main | tee "$LOG_FILE"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
chmod +x *
|
|
||||||
chown -R yorune: *
|
|
||||||
sudo cp -pr * /bin/
|
|
||||||
#sudo cp /etc/bash.bashrc ../configs
|
|
||||||
#cp /home/yorune/Arch/configs/zshrc /home/yorune/.zshrc
|
|
||||||
#cp /home/yorune/Arch/configs/vimrc /home/yorune/.vimrc
|
|
||||||
echo DONE!!
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
export GTK_IM_MODULE=ibus
|
|
||||||
export XMODIFIERS=@im=ibus
|
|
||||||
export QT_IM_MODULE=ibus
|
|
||||||
|
|
||||||
KERNEL=$(uname -sr)
|
|
||||||
[[ $KERNEL =~ "icrosoft" ]] && "/mnt/c/Program Files/Mozilla Firefox/firefox.exe" "$@"
|
|
||||||
[[ $KERNEL =~ "gentoo" ]] && GDK_DPI_SCALE="1.2" firefox "$@"
|
|
||||||
[[ $KERNEL =~ "Darwin" ]] && open -a Firefox\ Nightly "$@"
|
|
||||||
#[[ $KERNEL =~ "gentoo" ]] && __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 __GLX_VENDOR_LIBRARY_NAME=nvidia __GL_SYNC_TO_VBLANK=0 GDK_DPI_SCALE="1.2" firefox "$@"
|
|
||||||
|
|
||||||
# Firefox
|
|
||||||
# media.ffmpeg.vaapi.enabled -> true
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/usr/bin/python3.8
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
from chardet.cli.chardetect import main
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
|
||||||
sys.exit(main())
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
java -jar "$HOME"/.local/bin/Chatty/Chatty.jar 2>/dev/null
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
cidr2mask() {
|
|
||||||
local i mask=""
|
|
||||||
local full_octets=$(($1 / 8))
|
|
||||||
local partial_octet=$(($1 % 8))
|
|
||||||
|
|
||||||
for ((i = 0; i < 4; i += 1)); do
|
|
||||||
if [ $i -lt $full_octets ]; then
|
|
||||||
mask+=255
|
|
||||||
elif [ $i -eq $full_octets ]; then
|
|
||||||
mask+=$((256 - 2 ** (8 - partial_octet)))
|
|
||||||
else
|
|
||||||
mask+=0
|
|
||||||
fi
|
|
||||||
test $i -lt 3 && mask+=.
|
|
||||||
done
|
|
||||||
|
|
||||||
echo $mask
|
|
||||||
}
|
|
||||||
|
|
||||||
cidr2mask "$@"
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
"$HOME/.local/bin/cleanertmp"
|
|
||||||
sudo emerge -a --depclean
|
|
||||||
sudo emerge -a @preserved-rebuild
|
|
||||||
sudo eclean -C -q packages
|
|
||||||
sudo eclean -C -q -d -t1w distfiles
|
|
||||||
sudo revdep-rebuild
|
|
||||||
sudo perl-cleaner --all
|
|
||||||
sudo etc-update
|
|
||||||
sudo env-update
|
|
||||||
source /etc/profile
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
sudo rm -rf /var/tmp/portage/*
|
|
||||||
sudo rm -rf /var/tmp/binpkgs/*
|
|
||||||
sudo rm -rf /var/tmp/genkernel/*
|
|
||||||
sudo rm -rf /var/cache/genkernel/*
|
|
||||||
sudo rm -rf /var/tmpnotmpfs/portage/*
|
|
||||||
sudo eclean-dist -d
|
|
||||||
sudo eclean-pkg -d
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
pkill -RTMIN+11 dwmblocks
|
|
||||||
[ "$1" = "play" ] && cmus-remote -u
|
|
||||||
[ "$1" = "next" ] && cmus-remote -n
|
|
||||||
[ "$1" = "prev" ] && cmus-remote -r
|
|
||||||