diff --git a/.config/autostart/Nextcloud.desktop b/.config/autostart/Nextcloud.desktop new file mode 100644 index 0000000..219765f --- /dev/null +++ b/.config/autostart/Nextcloud.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Nextcloud +GenericName=File Synchronizer +Exec="/usr/bin/nextcloud" --background +Terminal=false +Icon=Nextcloud +Categories=Network +Type=Application +StartupNotify=false +X-GNOME-Autostart-enabled=true +X-GNOME-Autostart-Delay=10 diff --git a/.config/autostart/Zoiper5.desktop b/.config/autostart/Zoiper5.desktop new file mode 100644 index 0000000..31924a7 --- /dev/null +++ b/.config/autostart/Zoiper5.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Zoiper5 +Comment=VoIP Softphone +Exec=/usr/lib/zoiper/zoiper +Terminal=false +Icon= +Type=Application diff --git a/.config/autostart/discord.desktop b/.config/autostart/discord.desktop new file mode 100644 index 0000000..5c62263 --- /dev/null +++ b/.config/autostart/discord.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Exec=/home/templis/.config/discord/app-1.0.151/Discord +Hidden=false +NoDisplay=false +Name=Discord +Icon=/home/templis/.config/discord/app-1.0.151/discord.png +Comment=Text and voice chat for gamers. +X-GNOME-Autostart-enabled=true diff --git a/.config/autostart/kitty.desktop b/.config/autostart/kitty.desktop new file mode 100644 index 0000000..4fce1c0 --- /dev/null +++ b/.config/autostart/kitty.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Categories=System;TerminalEmulator; +Comment=Fast, feature-rich, GPU based terminal +Exec=kitty +GenericName=Terminal emulator +Icon=kitty +Name=kitty +StartupNotify=true +TryExec=kitty +Type=Application +Version=1.0 +X-TerminalArgAppId=--class +X-TerminalArgDir=--working-directory +X-TerminalArgExec=-- +X-TerminalArgHold=--hold +X-TerminalArgTitle=--title diff --git a/.config/autostart/ntfy-kde.sh.desktop b/.config/autostart/ntfy-kde.sh.desktop new file mode 100644 index 0000000..452c62b --- /dev/null +++ b/.config/autostart/ntfy-kde.sh.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Exec=/home/templis/.config/old-autostart-scripts/ntfy-kde.sh +Icon=application-x-executable-script +Name=ntfy-kde.sh +Type=Application +X-KDE-AutostartScript=true diff --git a/.config/autostart/org.keepassxc.KeePassXC.desktop b/.config/autostart/org.keepassxc.KeePassXC.desktop new file mode 100644 index 0000000..12566cd --- /dev/null +++ b/.config/autostart/org.keepassxc.KeePassXC.desktop @@ -0,0 +1,17 @@ +[Desktop Entry] +Name=KeePassXC +GenericName=Passwortmanager +Exec=keepassxc +TryExec=keepassxc +Icon=keepassxc +StartupWMClass=keepassxc +StartupNotify=false +Terminal=false +Type=Application +Version=1.0 +Categories=Utility;Security;Qt; +MimeType=application/x-keepass2; +X-GNOME-Autostart-enabled=true +X-GNOME-Autostart-Delay=2 +X-KDE-autostart-after=panel +X-LXQt-Need-Tray=true diff --git a/.config/autostart/org.mozilla.Thunderbird.desktop b/.config/autostart/org.mozilla.Thunderbird.desktop new file mode 100644 index 0000000..9398b09 --- /dev/null +++ b/.config/autostart/org.mozilla.Thunderbird.desktop @@ -0,0 +1,168 @@ +[Desktop Entry] +Name=Thunderbird +Comment=Send and receive mail with Thunderbird +Comment[ast]=Lleer y escribir corréu electrónicu +Comment[ca]=Llegiu i escriviu correu +Comment[cs]=Čtení a psaní pošty +Comment[da]=Skriv/læs e-post/nyhedsgruppe med Mozilla Thunderbird +Comment[de]=E-Mails und Nachrichten mit Thunderbird lesen und schreiben +Comment[el]=Διαβάστε και γράψτε γράμματα με το Mozilla Thunderbird +Comment[es]=Lea y escriba correos y noticias con Thunderbird +Comment[fi]=Lue ja kirjoita sähköposteja +Comment[fr]=Lire et écrire des courriels +Comment[gl]=Lea e escriba correo electrónico +Comment[he]=קריאה/כתיבה של דוא״ל/חדשות באמצעות Mozilla Thunderbird +Comment[hr]=Čitajte/šaljite e-poštu s Thunderbird +Comment[hu]=Levelek írása és olvasása a Thunderbirddel +Comment[it]=Per leggere e scrivere email +Comment[ja]=メールの読み書き +Comment[ko]=Mozilla Thunderbird 메일/뉴스 읽기 및 쓰기 클라이언트 +Comment[nl]=E-mail/nieuws lezen en schrijven met Mozilla Thunderbird +Comment[pl]=Czytanie i wysyłanie e-maili +Comment[pt_BR]=Leia e escreva suas mensagens +Comment[ru]=Читайте и пишите письма +Comment[sk]=Čítajte a píšte poštu pomocou programu Thunderbird +Comment[sv]=Läs och skriv e-post +Comment[uk]=Читання та написання листів +Comment[vi]=Đọc và soạn thư điện tử +Comment[zh_CN]=阅读邮件或新闻 +Comment[zh_TW]=以 Mozilla Thunderbird 讀寫郵件或新聞 +GenericName=Mail Client +GenericName[ast]=Client de correu +GenericName[ca]=Client de correu +GenericName[cs]=Poštovní klient +GenericName[da]=E-postklient +GenericName[de]=E-Mail-Anwendung +GenericName[el]=Λογισμικό αλληλογραφίας +GenericName[es]=Cliente de correo +GenericName[fi]=Sähköpostiohjelma +GenericName[fr]=Client de messagerie +GenericName[gl]=Cliente de correo electrónico +GenericName[he]=לקוח דוא״ל +GenericName[hr]=Klijent e-pošte +GenericName[hu]=Levelezőkliens +GenericName[it]=Client email +GenericName[ja]=電子メールクライアント +GenericName[ko]=메일 클라이언트 +GenericName[nl]=E-mailprogramma +GenericName[pl]=Klient poczty +GenericName[pt_BR]=Cliente de E-mail +GenericName[ru]=Почтовый клиент +GenericName[sk]=Poštový klient +GenericName[uk]=Поштова програма +GenericName[vi]=Phần mềm khách quản lý thư điện tử +GenericName[zh_CN]=邮件新闻客户端 +GenericName[zh_TW]=郵件用戶端 +Exec=thunderbird %u +Terminal=false +Type=Application +Icon=org.mozilla.Thunderbird +Categories=Network;Email; +MimeType=message/rfc822;x-scheme-handler/mailto;text/calendar;text/vcard;text/x-vcard;x-scheme-handler/webcal;x-scheme-handler/webcals;x-scheme-handler/mid; +StartupNotify=true +StartupWMClass=thunderbird +Actions=ComposeMessage;OpenAddressBook; + +[Desktop Action ComposeMessage] +Name=Write new message +Name[ar]=اكتب رسالة جديدة +Name[ast]=Redactar mensaxe nuevu +Name[be]=Напісаць новы ліст +Name[bg]=Съставяне на ново съобщение +Name[br]=Skrivañ ur gemennadenn nevez +Name[ca]=Escriu un missatge nou +Name[cs]=Napsat novou zprávu +Name[da]=Skriv en ny meddelelse +Name[de]=Neue Nachricht verfassen +Name[el]=Σύνταξη νέου μηνύματος +Name[es_AR]=Escribir un nuevo mensaje +Name[es_ES]=Redactar nuevo mensaje +Name[et]=Kirjuta uus kiri +Name[eu]=Idatzi mezu berria +Name[fi]=Kirjoita uusi viesti +Name[fr]=Rédiger un nouveau message +Name[fy_NL]=Skriuw in nij berjocht +Name[ga_IE]=Scríobh teachtaireacht nua +Name[gd]=Sgrìobh teachdaireachd ùr +Name[gl]=Escribir unha nova mensaxe +Name[he]=כתיבת הודעה חדשה +Name[hr]=Piši novu poruku +Name[hu]=Új üzenet írása +Name[hy_AM]=Գրել նոր նամակ +Name[is]=SKrifa nýjan póst +Name[it]=Scrivi nuovo messaggio +Name[ja]=新しいメッセージを作成する +Name[ko]=새 메시지 작성 +Name[lt]=Rašyti naują laišką +Name[nb_NO]=Skriv ny melding +Name[nl]=Nieuw bericht aanmaken +Name[nn_NO]=Skriv ny melding +Name[pl]=Nowa wiadomość +Name[pt_BR]=Nova mensagem +Name[pt_PT]=Escrever nova mensagem +Name[rm]=Scriver in nov messadi +Name[ro]=Scrie un mesaj nou +Name[ru]=Создать новое сообщение +Name[sk]=Nová e-mailová správa +Name[sl]=Sestavi novo sporočilo +Name[sq]=Shkruani mesazh të ri +Name[sr]=Писање нове поруке +Name[sv_SE]=Skriv ett nytt meddelande +Name[tr]=Yeni ileti yaz +Name[uk]=Написати нового листа +Name[vi]=Viết thư mới +Name[zh_CN]=编写新消息 +Name[zh_TW]=寫一封新訊息 +Exec=thunderbird -compose + +[Desktop Action OpenAddressBook] +Name=Open address book +Name[ar]=افتح دفتر العناوين +Name[ast]=Abrir llibreta de direiciones +Name[be]=Адкрыць адрасную кнігу +Name[bg]=Отваряне на адресник +Name[br]=Digeriñ ur c'harned chomlec'hioù +Name[ca]=Obre la llibreta d'adreces +Name[cs]=Otevřít Adresář +Name[da]=Åbn adressebog +Name[de]=Adressbuch öffnen +Name[el]=Άνοιγμα ευρετηρίου διευθύνσεων +Name[es_AR]=Abrir libreta de direcciones +Name[es_ES]=Abrir libreta de direcciones +Name[et]=Ava aadressiraamat +Name[eu]=Ireki helbide-liburua +Name[fi]=Avaa osoitekirja +Name[fr]=Ouvrir un carnet d'adresses +Name[fy_NL]=Iepenje adresboek +Name[ga_IE]=Oscail leabhar seoltaí +Name[gd]=Fosgail leabhar-sheòlaidhean +Name[gl]=Abrir a axenda de enderezos +Name[he]=פתיחת ספר כתובות +Name[hr]=Otvori adresar +Name[hu]=Címjegyzék megnyitása +Name[hy_AM]=Բացել Հասցեագիրքը +Name[is]=Opna nafnaskrá +Name[it]=Apri rubrica +Name[ja]=アドレス帳を開く +Name[ko]=주소록 열기 +Name[lt]=Atverti adresų knygą +Name[nb_NO]=Åpne adressebok +Name[nl]=Adresboek openen +Name[nn_NO]=Opne adressebok +Name[pl]=Książka adresowa +Name[pt_BR]=Catálogo de endereços +Name[pt_PT]=Abrir livro de endereços +Name[rm]=Avrir il cudeschet d'adressas +Name[ro]=Deschide agenda de contacte +Name[ru]=Открыть адресную книгу +Name[sk]=Otvoriť adresár +Name[sl]=Odpri adressar +Name[sq]=Hapni libër adresash +Name[sr]=Отвори адресар +Name[sv_SE]=Öppna adressboken +Name[tr]=Adres defterini aç +Name[uk]=Відкрити адресну книгу +Name[vi]=Mở sổ địa chỉ +Name[zh_CN]=打开通讯录 +Name[zh_TW]=開啟通訊錄 +Exec=thunderbird -addressbook diff --git a/.config/autostart/redshift-gtk.desktop b/.config/autostart/redshift-gtk.desktop new file mode 100644 index 0000000..be9f688 --- /dev/null +++ b/.config/autostart/redshift-gtk.desktop @@ -0,0 +1,87 @@ +[Desktop Entry] +Version=1.0 +Name=Redshift +Name[be]=Redshift +Name[ca]=Redshift +Name[cs]=Redshift +Name[da]=Redshift +Name[de]=Redshift +Name[en_GB]=Redshift +Name[es]=Redshift +Name[fr]=Redshift +Name[he]=Redshift +Name[hu]=Redshift +Name[it]=Redshift +Name[ja]=Redshift +Name[lt]=Redshift +Name[nb]=Rødskift +Name[pl]=Redshift +Name[pt]=Redshift +Name[pt_BR]=Redshift +Name[ro]=Redshift +Name[ru]=Redshift +Name[sr]=Редшифт +Name[sv]=Redshift +Name[tr]=Redshift +Name[uk]=Redshift +Name[zh_CN]=红移 +Name[zh_TW]=Redshift +GenericName=Color temperature adjustment +GenericName[be]=Рэгуляванне каляровай тэмпературы +GenericName[ca]=Ajust de la temperatura de color +GenericName[cs]=Nastavení teploty barev +GenericName[da]=Justering af farvetemperatur +GenericName[de]=Farbtemperaturanpassung +GenericName[en_GB]=Colour temperature adjustment +GenericName[es]=Ajuste de la temperatura de color +GenericName[fr]=Réglage de la température de couleur +GenericName[he]=התאמת טמפרטורת צבע +GenericName[hu]=Színhőmérséklet beállítása +GenericName[it]=Regolazione della temperatura del colore +GenericName[ja]=色温度の調整 +GenericName[lt]=Spalvos temperatūros reguliavimas +GenericName[nb]=Justering av fargetemperatur +GenericName[nl]=Bijstelling van kleurtemperatuur +GenericName[pl]=Dostosowanie temperatury barwowej +GenericName[pt_BR]=Ajuste de temperatura de cor +GenericName[ru]=Настройка цветовой температуры +GenericName[sr]=Прилагођавање температуре боје +GenericName[sv]=Färgtemperaturjustering +GenericName[tr]=Renk sıcaklığı ayarı +GenericName[uk]=Налаштування колірної температури +GenericName[zh_CN]=色温调节 +GenericName[zh_TW]=色溫調整 +Comment=Color temperature adjustment tool +Comment[be]=Інструмент рэгулявання каляровай тэмпературы +Comment[ca]=Eina per a l'ajust de la temperatura de color +Comment[cs]=Nástroj pro přizpůsobení barevné teploty +Comment[da]=Justeringsværktøj for farvetemperatur +Comment[de]=Farbtemperaturanpassungswerkzeug +Comment[en_GB]=Colour temperature adjustment tool +Comment[es]=Herramienta para el ajuste de la temperatura de color +Comment[fr]=Outil de réglage de la température de couleur +Comment[he]=כלי להתאמת טמפרטורת צבע +Comment[hu]=Színhőmérséklet beállító eszköz +Comment[it]=Strumento per la regolazione della temperatura del colore +Comment[ja]=色温度の調整ツール +Comment[lt]=Spalvos temperatūros reguliavimo įrankis +Comment[nb]=Justeringsverktøy for fargetemperatur +Comment[nl]=Hulpmiddel voor het bijstellen van de kleurtemperatuur +Comment[pl]=Narzędzie do dostosowywania temperatury barwowej +Comment[pt_BR]=Ferramenta de ajuste de temperatura de cor +Comment[ru]=Инструмент регулирования цветовой температуры +Comment[sr]=Алатка за прилагођавање температуре боје +Comment[sv]=Justeringsverktyg för färgtemperaturer +Comment[tr]=Renk sıcaklığı ayarlama aracı +Comment[uk]=Знаряддя налаштувань колірної температури +Comment[zh_CN]=色温调节工具 +Comment[zh_TW]=色溫調整工具 +Exec=redshift-gtk +Icon=redshift +Terminal=false +Type=Application +Categories=Utility; +StartupNotify=true +Hidden=true +X-GNOME-Autostart-enabled=false + diff --git a/.config/autostart/signal-desktop.desktop b/.config/autostart/signal-desktop.desktop new file mode 100644 index 0000000..3ef2f0c --- /dev/null +++ b/.config/autostart/signal-desktop.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Application +Name=Signal +Comment=Signal - Private Messenger +Comment[de]=Signal - Sicherer Messenger +Icon=signal-desktop +Exec=signal-desktop -- %u +Terminal=false +Categories=Network;InstantMessaging; +StartupWMClass=Signal +MimeType=x-scheme-handler/sgnl;x-scheme-handler/signalcaptcha; +Keywords=sgnl;chat;im;messaging;messenger;sms;security;privat; +X-GNOME-UsesNotifications=true diff --git a/.config/breezerc b/.config/breezerc new file mode 100644 index 0000000..e2db295 --- /dev/null +++ b/.config/breezerc @@ -0,0 +1,3 @@ +[Style] +MenuItemDrawStrongFocus=false +MnemonicsMode=MN_ALWAYS diff --git a/.config/compton.conf b/.config/compton.conf deleted file mode 100644 index 7f1efd6..0000000 --- a/.config/compton.conf +++ /dev/null @@ -1,44 +0,0 @@ -shadow = true; -no-dnd-shadow = true; -no-dock-shadow = true; -clear-shadow = true; -shadow-radius = 12; -shadow-offset-x = -12; -shadow-offset-y = -12; -shadow-opacity = 0.95; -shadow-red = 0.18; -shadow-green = 0.2; -shadow-blue = 0.25; -shadow-exclude = [ "class_g = 'Cairo-clock'", "class_g = 'CoverGloobus'", "class_g = 'Tilda'", "class_g = 'Conky'", "class_g ?= 'Notify-osd'", "class_g = 'Firefox'", "class_g = 'Firefox-esr'", "class_g = 'Dmenu'", "name = 'Notification'", "_GTK_FRAME_EXTENTS@:c" ]; -fading = true; -fade-delta = 0.25; -fade-in-step = 0.02; -fade-out-step = 0.02; -fade-exclude = [ ]; -backend = "glx"; -mark-wmwin-focused = true; -mark-ovredir-focused = true; -detect-rounded-corners = true; -detect-client-opacity = true; -refresh-rate = 0; -vsync = "none"; -dbe = false; -paint-on-overlay = true; -focus-exclude = [ "class_g = 'Cairo-clock'", "class_g = 'CoverGloobus'", "class_g = 'Tilda'", "class_g = 'Firefox'", "class_g = 'Firefox-esr'" ]; -detect-transient = true; -detect-client-leader = true; -invert-color-include = [ ]; -glx-copy-from-front = false; -glx-swap-method = "undefined"; -wintypes : -{ - tooltip : - { - fade = true; - shadow = true; - opacity = 0.75; - focus = true; - }; -}; -opacity-rule = [ "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" ]; -inactive-dim = 0.0; diff --git a/.config/dolphinrc b/.config/dolphinrc new file mode 100644 index 0000000..26cb353 --- /dev/null +++ b/.config/dolphinrc @@ -0,0 +1,32 @@ +MenuBar=Disabled + +[$Version] +update_info=dolphin_detailsmodesettings.upd:rename-leading-padding,dolphin_detailsmodesettings.upd:move-content-display + +[FileDialogSize] +4 screens: Height=584 +4 screens: Width=872 + +[General] +EditableUrl=true +LockPanels=false +ShowFullPath=true +Version=202 +ViewPropsTimestamp=2023,11,4,22,5,12.659 + +[KFileDialog Settings] +Places Icons Auto-resize=false +Places Icons Static Size=22 + +[MainWindow] +MenuBar=Disabled + +[PreviewSettings] +Plugins=appimagethumbnail,audiothumbnail,comicbookthumbnail,cursorthumbnail,directorythumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,imagethumbnail,jpegthumbnail,kraorathumbnail,opendocumentthumbnail,svgthumbnail,windowsexethumbnail,windowsimagethumbnail,fontthumbnail,FreeCAD,evince,ffmpegthumbnailer,gdk-pixbuf-thumbnailer,gnome-font-viewer,gsf-office,totem + +[VersionControl] +enabledPlugins=Git + +[ViewPropertiesDialog] +4 screens: Height=324 +4 screens: Width=490 diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc index 4798d4c..318c8b0 100644 --- a/.config/dunst/dunstrc +++ b/.config/dunst/dunstrc @@ -1,257 +1,100 @@ [global] -font = Iosevka Term 14 + ### Monitor ### + # HDMI-A-1 (TV) = Monitor 3 (via xrandr --listmonitors) + monitor = 3 + follow = none -# Allow a small subset of html markup: -# bold -# italic -# strikethrough -# underline -# -# For a complete reference see -# . -# If markup is not allowed, those tags will be stripped out of the -# message. -markup = yes -plain_text = no + ### Geometry ### + width = (0, 480) + height = (0, 300) + origin = top-right + offset = (10, 10) + scale = 0 + notification_limit = 0 -# 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 = "%s\n%b" + ### Borders & Spacing ### + padding = 14 + horizontal_padding = 18 + text_icon_padding = 12 + frame_width = 2 + frame_color = "#d79921" + gap_size = 8 + separator_height = 2 + separator_color = frame + corner_radius = 6 -# Sort messages by urgency. -sort = no + ### Progress Bar ### + progress_bar = true + progress_bar_height = 8 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 400 + progress_bar_corner_radius = 4 -# Show how many messages are currently hidden (because of geometry). -indicate_hidden = yes + ### Text ### + font = monospace 13 + line_height = 3 + markup = full -# Alignment of message text. -# Possible values are "left", "center" and "right". -alignment = center + # Gruvbox: farbige Überschrift + gedimmter Body + format = %s\n%b -# The frequency with wich 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 + alignment = left + vertical_alignment = center + word_wrap = yes + ellipsize = middle + ignore_newline = no + show_age_threshold = 120 + relative_timestamps = true -# Show age of message if message is older than show_age_threshold -# seconds. -# Set to -1 to disable. -show_age_threshold = -1 + ### Icons ### + enable_recursive_icon_lookup = true + icon_theme = "Gruvbox, Adwaita, gnome" + icon_position = left + min_icon_size = 0 + max_icon_size = 48 + icon_corner_radius = 4 -# Split notifications into multiple lines if they don't fit into -# geometry. -word_wrap = yes + ### History ### + sticky_history = yes + history_length = 50 -# Ignore newlines '\n' in notifications. -ignore_newline = no + ### Misc ### + dmenu = /usr/bin/rofi -dmenu -p "Dunst" + browser = /usr/bin/firefox + always_run_script = true + title = Dunst + class = Dunst + force_xwayland = false + force_xinerama = false + layer = overlay -# Hide duplicate's count and stack them -stack_duplicates = yes -hide_duplicates_count = yes + ### Mouse ### + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all -# 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 respectevly. -# 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 = "250x50-40+40" -geometry = "300x50-15+49" - -# 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 windowmanager is -# present (e.g. xcompmgr, compiz, etc.). -transparency = 0.5 - -# 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 = 0 - -# 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 windowmanager that exports the -# _NET_ACTIVE_WINDOW property. -# This should be the case for almost all modern windowmanagers. -# -# If this option is set to mouse or keyboard, the monitor option -# will be ignored. -follow = none - -# Should a notification popped up from history be sticky or timeout -# as if it would normally do. -sticky_history = yes - -# Maximum amount of notifications kept in history -history_length = 15 - -# 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 = 3 - -# Draw a line of "separatpr_height" pixel height between two -# notifications. -# Set to 0 to disable. -separator_height = 2 - -# Padding between text and separator. -padding = 6 - -# Horizontal padding. -horizontal_padding = 6 - -# 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 -max_icon_size = 80 - -# Paths to default icons. -icon_path = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/ - -frame_width = 3 -frame_color = "#EBDBB2" - -[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. -frame_color = "#458588" -foreground = "#83A598" -background = "#282828" -#background = "#2B313C" -timeout = 4 + background = "#282828" + foreground = "#a89984" + frame_color = "#504945" + format = %s\n%b + timeout = 15 + default_icon = dialog-information [urgency_normal] -frame_color = "#928374" -foreground = "#EBDBB2" -background = "#282828" -#background = "#2B313C" -timeout = 6 + background = "#282828" + foreground = "#ebdbb2" + frame_color = "#d79921" + format = %s\n%b + timeout = 0 + default_icon = dialog-information [urgency_critical] -frame_color = "#CC241D" -foreground = "#FB4934" -background = "#282828" -#background = "#2B313C" -timeout = 8 - - -# 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 + background = "#1d2021" + foreground = "#ebdbb2" + frame_color = "#cc241d" + format = %s\n%b + timeout = 0 + default_icon = dialog-warning diff --git a/.config/i3/config b/.config/i3/config index b5b0325..78223a9 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -1,414 +1,205 @@ -# This file has been auto-generated by i3-config-wizard(1). -# It will not be overwritten, so edit it as you like. -# -# Should you change your keyboard layout somewhen, delete -# this file and re-run i3-config-wizard(1). -# +# i3 config — portiert von ~/.config/sway/config -# i3 config file (v4) -# -# Please see http://i3wm.org/docs/userguide.html for a complete reference! +# === Monitor-Layout via xrandr (X11) === +exec --no-startup-id xrandr \ + --output HDMI-A-1 --mode 1920x1080 --rate 50 --pos 0x1732 --rotate normal \ + --output DP-2 --mode 2560x1440 --rate 59.95 --pos 301x1080 --rotate right \ + --output DP-1 --mode 2560x1440 --rate 59.95 --pos 1741x1732 --rotate normal --primary \ + --output DP-3 --mode 2560x1440 --rate 59.95 --pos 4301x1732 --rotate normal -# colors +# === Tastatur (X11) === +exec_always --no-startup-id setxkbmap -layout "de,us" -option "caps:XF86Launch5" -# class border backgr. text -#client.focused #C9B5BD #C9B5BD #825969 -#client.focused_inactive #191919 #191919 #999999 -#client.unfocused #191919 #191919 #999999 -#client.urgent #cd989a #cd989a #2e3436 -#client.background #121212 -# class border bground text indicator child_border -client.focused #D5C4A1 #D5C4A1 #282828 #282828 #282828 -client.focused_inactive #7C6F64 #7C6F64 #EBDBB2 #5F676A #5F676A -client.unfocused #282828 #282828 #EBDBB2 #282828 #282828 -client.urgent #FB4934 #FB4934 #282828 #FB4934 #FB4934 -client.placeholder #D65D0E #D65D0E #282828 #282828 #282828 -client.background #282828 +# === Touchpad (X11) === +exec_always --no-startup-id xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1 2>/dev/null || true +exec_always --no-startup-id xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Scroll Method Enabled" 0 0 1 2>/dev/null || true -# set default font -#font -*-cure-medium-*-*-*-11-*-*-*-*-*-*-* -#font pango: Noto Sans 8 -#font pango: Inconsolata 11, FontAwesome 12, Font Awesome 5 Free 12, Font Awesome 5 Brands 12 -font pango: Noto Sans 8 - -# set modifier keys for more clarity and readability in config -# mod is on most keyboards the "windows" key +# === Modifier === set $mod Mod4 set $alt Mod1 -# Monitor settings -set $monL DP-0 -set $monR DP-2 -set $monP DP-4 - -# Font for window titles. Will also be used by the bar unless a different font -# is used in the bar {} block below. ISO 10646 = Unicode -#font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 -# The font above is very space-efficient, that is, it looks good, sharp and -# clear in small sizes. However, if you need a lot of unicode glyphs or -# right-to-left text rendering, you should instead use pango for rendering and -# chose a FreeType font, such as: -# font pango:DejaVu Sans Mono 10 - -# Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod -#set the border of your windows +# === Borders === bindsym $mod+t border normal bindsym $mod+y border 1pixel bindsym $mod+u border none -# start a terminal -# with some examples for other font or other terminal emulators -#bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=9:antialias=true" -letsp -1 -sh 20 -#bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:PragmataPro:size=8:antialias=true" -letsp -1 -sh 20 -#bindsym $mod+Return exec terminology -#bindsym $mod+Return exec tilda -bindsym $mod+Return exec termite +# === Terminal === +bindsym $mod+Return exec foot -# kill focused window +# === Fenster schließen === bindsym $mod+Shift+q kill bindsym $alt+F4 kill -# if this don't work, you can even start xkill bindsym $mod+Shift+k exec xkill -# enables a feature like on other windowmanagers or windows, -# to show running "processes" and switch between them +# === App-Switcher / Launcher === bindsym $alt+Tab exec rofi -show window +set $menu exec wofi --show drun +bindsym $mod+d exec $menu -# start dmenu (a program launcher) -#bindsym $mod+d exec dmenu_run -# instead -bindsym $mod+d exec j4-dmenu-desktop --dmenu="dmenu -i -nf '#EBDBB2' -nb '#665C54' -sb '#fe8019' -sf '#282828'" - -# There also is the (new) i3-dmenu-desktop which only displays applications -# shipping a .desktop file. It is a wrapper around dmenu, so you need that -# installed. -# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop - -# change focus - the vi way -# I don't use them, cause i need this keys for other purposes -# e.g. $mod+h for split horizontal -#bindsym $mod+h focus left -#bindsym $mod+j focus down -#bindsym $mod+k focus up -#bindsym $mod+l focus right - -# alternatively, you can use the cursor keys: -bindsym $mod+Left focus left -bindsym $mod+Down focus down -bindsym $mod+Up focus up +# === Fokus === +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up bindsym $mod+Right focus right -# move focused window - the vi way -# I don't use them, cause i need this keys for other purposes -# e.g. $mod+Shift+l for lock my Desktop -#bindsym $mod+Shift+h move left -#bindsym $mod+Shift+j move down -#bindsym $mod+Shift+k move up -#bindsym $mod+Shift+l move right - -# alternatively, you can use the cursor keys: -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Up move up +# === Fenster verschieben === +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right -# split in horizontal orientation +# === Split === bindsym $mod+h split h - -# split in vertical orientation bindsym $mod+v split v -# enter fullscreen mode for the focused container -bindsym $mod+f fullscreen +# === Fullscreen === +bindsym $mod+z fullscreen -# change container layout (stacked, tabbed, toggle split) +# === Layout === bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split -# toggle tiling / floating +# === Floating === bindsym $mod+Shift+space floating toggle - -# change focus between tiling / floating windows bindsym $mod+space focus mode_toggle - -# focus the parent container bindsym $mod+a focus parent -# focus the child container -#bindsym $mod+d focus child +# === Workspaces === +bindsym $mod+1 workspace 1: 1: Text +bindsym $mod+2 workspace 2: 2: Web +bindsym $mod+3 workspace 3: 3: Office +bindsym $mod+4 workspace 4: 4: KeePass +bindsym $mod+5 workspace 5: 5: Mail +bindsym $mod+6 workspace 6: 6: Chat +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 -# variables for workpacenames; -set $ws1 1: Text -set $ws2 2: Web -set $ws3 3: Office -set $ws4 4: KeePass -set $ws5 5: Mail -set $ws6 6: Chat -set $ws7 7: Stuff -set $ws8 8 -set $ws9 9: WebWork -set $ws10 10 - -# Assign Workspaces to specific outputs -workspace "$ws1" output $monP -workspace "$ws2" output $monP -workspace "$ws3" output $monP -workspace "$ws4" output $monL -workspace "$ws5" output $monR -workspace "$ws6" output $monR -workspace "$ws7" output $monR -workspace "$ws8" output $monP -workspace "$ws9" output $monL -workspace "$ws10" output $monP - -# switch to workspace -bindsym $mod+1 workspace $ws1 -bindsym $mod+2 workspace $ws2 -bindsym $mod+3 workspace $ws3 -bindsym $mod+4 workspace $ws4 -bindsym $mod+5 workspace $ws5 -bindsym $mod+6 workspace $ws6 -bindsym $mod+7 workspace $ws7 -bindsym $mod+8 workspace $ws8 -bindsym $mod+9 workspace $ws9 -bindsym $mod+0 workspace $ws10 - -# move focused container to workspace -bindsym $mod+Shift+1 move container to workspace $ws1 -bindsym $mod+Shift+2 move container to workspace $ws2 -bindsym $mod+Shift+3 move container to workspace $ws3 -bindsym $mod+Shift+4 move container to workspace $ws4 -bindsym $mod+Shift+5 move container to workspace $ws5 -bindsym $mod+Shift+6 move container to workspace $ws6 -bindsym $mod+Shift+7 move container to workspace $ws7 -bindsym $mod+Shift+8 move container to workspace $ws8 -bindsym $mod+Shift+9 move container to workspace $ws9 -bindsym $mod+Shift+0 move container to workspace $ws10 - -# reload the configuration file -bindsym $mod+Shift+c reload -# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) -bindsym $mod+Shift+r restart - -# exit i3 (logs you out of your X session) -bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" - -# Lock the current session -bindsym $mod+Shift+l exec i3lock - - -# add the ability to reboot shutdown etc. -#......... -set $sysmenu "system: [r]estart [l]logout [p)oweroff re[b]oot" -bindsym $mod+Shift+Delete mode "$sysmenu" - -mode $sysmenu { - bindsym r restart - bindsym l exit - bindsym p exec sudo shutdown -P now - bindsym b exec sudo shutdown -r now - bindsym Return mode "default" - bindsym Escape mode "default" -} -#......... - -set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown -mode "$mode_system" { - bindsym l exec --no-startup-id ~/.i3/i3exit lock, mode "default" - bindsym e exec --no-startup-id ~/.i3/i3exit logout, mode "default" - bindsym s exec --no-startup-id ~/.i3/i3exit suspend, mode "default" - bindsym h exec --no-startup-id ~/.i3/i3exit hibernate, mode "default" - bindsym r exec --no-startup-id ~/.i3/i3exit reboot, mode "default" - bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" - - # back to normal: Enter or Escape - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+Pause mode "$mode_system" - - -# for gaming under wine - some Games are crashing, if there are more than one monitor -#......... -set $displaymenu [g]aming [w]ork -bindsym $mod+Shift+x mode "$displaymenu" - -mode "$displaymenu" { - bindsym g exec --no-startup-id xrandr --output DVI-D-0 --off --output HDMI-0 --off --output DP-5 --off --output DP-4 --primary --mode 2560x1440 --pos 1080x0 --rotate normal --output DP-3 --off --output DP-2 --off --output DP-1 --off --output DP-0 --off, mode "default" - bindsym w exec --no-startup-id xrandr --output DVI-D-0 --off --output HDMI-0 --off --output DP-5 --off --output DP-4 --primary --mode 2560x1440 --pos 1080x0 --rotate normal --output DP-3 --off --output DP-2 --mode 1920x1080 --pos 3640x0 --rotate normal --output DP-1 --off --output DP-0 --mode 1920x1080 --pos 0x0 --rotate right, mode "default" - bindsym Return mode "default" - bindsym Escaoe mode "default" -} -#......... +bindsym $mod+Shift+1 move container to workspace 1: 1: Text +bindsym $mod+Shift+2 move container to workspace 2: 2: Web +bindsym $mod+Shift+3 move container to workspace 3: 3: Office +bindsym $mod+Shift+4 move container to workspace 4: 4: KeePass +bindsym $mod+Shift+5 move container to workspace 5: 5: Mail +bindsym $mod+Shift+6 move container to workspace 6: 6: Chat +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 +# Workspace zwischen Monitoren verschieben bindsym $mod+Prior move workspace to output left -bindsym $mod+Next move workspace to output right +bindsym $mod+Next move workspace to output right -# resize window (you can also use the mouse for that) -#......... +# === Scratchpad === +bindsym $mod+Shift+minus move scratchpad +bindsym $mod+minus scratchpad show + +# === Config neu laden / i3 neu starten === +bindsym $mod+Shift+r restart +bindsym $mod+Shift+c reload + +# === Session-Ende === +bindsym $mod+Shift+e exec i3-nagbar -t warning \ + -m "i3 beenden?" \ + -b "Ja, beenden" "i3-msg exit" \ + -b "Neu starten" "i3-msg restart" + +bindsym $mod+Shift+Delete exec i3-nagbar -t default \ + -m "Systemmenü" \ + -b "i3 beenden" "i3-msg exit" \ + -b "Neu laden" "i3-msg reload" \ + -b "Ausschalten" "exec sudo shutdown -P now" \ + -b "Neustart" "exec sudo shutdown -r now" + +# === Bildschirm sperren === +bindsym $mod+Shift+l exec i3lock -c 000000 + +# === Bildschirmsperre + Idle (X11) === +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock -c 000000 & + +# === Screenshot === +bindsym --release Print exec maim -s ~/library/Bilder/Screenshots/screenshot_$(date +%s).png + +# === Lautstärke === +bindsym XF86AudioRaiseVolume exec pamixer -i 5 +bindsym XF86AudioLowerVolume exec pamixer -d 5 +bindsym XF86AudioMute exec pamixer -t + +# === Resize-Modus === bindsym $mod+r mode "resize" - mode "resize" { - # These bindings trigger as soon as you enter the resize mode + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym odiaeresis resize grow width 10 px or 10 ppt - # Pressing left will shrink the window’s width. - # Pressing right will grow the window’s width. - # Pressing up will shrink the window’s height. - # Pressing down will grow the window’s height. - bindsym j resize shrink width 10 px or 10 ppt - bindsym k resize grow height 10 px or 10 ppt - bindsym l resize shrink height 10 px or 10 ppt - bindsym odiaeresis resize grow width 10 px or 10 ppt + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt - # same bindings, but for the arrow keys - bindsym Left resize shrink width 10 px or 10 ppt - bindsym Down resize grow height 10 px or 10 ppt - bindsym Up resize shrink height 10 px or 10 ppt - bindsym Right resize grow width 10 px or 10 ppt - - # back to normal: Enter or Escape - bindsym Return mode "default" - bindsym Escape mode "default" + bindsym Return mode "default" + bindsym Escape mode "default" } -#........ -# Start i3bar to display a workspace bar (plus the system information i3status -# finds out, if available) - -# this is the bottom bar +# === Statusbar === bar { - status_command i3status-rs /home/templis/.config/i3status/config_bot.toml - font pango:FontAwesome 12 - colors { - background #282828 - statusline #EBDBB2 - separator #EBDBB2 - - focused_workspace #D5C4A1 #D5C4A1 #282828 - active_workspace #7C6F64 #7C6F64 #EBDBB2 - inactive_workspace #282828 #282828 #EBDBB2 - urgent_workspace #FB4934 #FB4934 #282828 - binding_mode #D65D0E #D65D0E #282828 - } - -} -bar { - position top - tray_output none - workspace_buttons no - status_command i3status-rs /home/templis/.config/i3status/config_top.toml - font pango:FontAwesome 12 - colors { - background #282828 - statusline #EBDBB2 - separator #EBDBB2 - - focused_workspace #D5C4A1 #D5C4A1 #282828 - active_workspace #7C6F64 #7C6F64 #EBDBB2 - inactive_workspace #282828 #282828 #EBDBB2 - urgent_workspace #FB4934 #FB4934 #282828 - binding_mode #D65D0E #D65D0E #282828 - } + status_command i3status } - -# snipping/screenshot Tool -#bindsym --release Print exec scrot -s -e 'mv $f ~/Bilder/Screenshots/screenshot_%Y-%m-%d_%H%M%S.png' -bindsym --release Print exec maim -s ~/Bilder/Screenshots/screenshot_$(date +%s).png - - -## Media keys -#bindsym XF86AudioRaiseVolume exec exec pamixer -i 5 -#bindsym XF86AudioLowerVolume exec exec pamixer -d 5 -#bindsym XF86AudioMute exec pamixer -t -bindsym XF86AudioRaiseVolume exec $HOME/.scripts/volume.sh up -bindsym XF86AudioLowerVolume exec $HOME/.scripts/volume.sh down -bindsym XF86AudioMute exec $HOME/.scripts/volume.sh mute - - -# Enable GLX Graphics -# used especially for Laptop and enable/disable discrete graphics -# bindsym $mod+g exec /home/templis/dri.sh - -# Set floating Windows for special applications +# === Standard-Layout === workspace_layout tabbed -for_window [window_role="pop-up"] floating enable,move absolute center -for_window [class="Pinentry"] floating enable -for_window [class="Eog"] floating enable -for_window [class="Geary"] floating enable -for_window [class="Gcr-prompter"] floating enable -for_window [class="Tipswindow.py"] floating enable -for_window [class="XVroot"] floating enable -for_window [class="XVcontrols"] floating enable -for_window [class="Vlc"] floating enable -for_window [class="Synergy"] floating enable + +# === Floating-Regeln === +for_window [window_role="pop-up"] floating enable, move absolute center +for_window [class="Pinentry"] floating enable +for_window [class="Eog"] floating enable +for_window [class="Geary"] floating enable +for_window [class="Gcr-prompter"] floating enable +for_window [class="Vlc"] floating enable +for_window [class="Synergy"] floating enable for_window [class="libreoffice-writer"] floating enable -for_window [class="Shotwell"] floating enable -for_window [class="UpLauncher"] floating enable -for_window [title="^Minecraft .*"] floating enable +for_window [class="Shotwell"] floating enable +for_window [class="anydesk"] floating enable +for_window [class="galculator"] floating enable +for_window [window_type="dialog"] floating enable +for_window [window_role="dialog"] floating enable +for_window [title="^Preferences$"] floating enable +for_window [title="^Minecraft .*"] floating enable for_window [title="Steam - Update News"] kill -for_window [title="Preferences$"] floating enable -for_window [class="^Pidgin$" window_role="^conversation$"] resize grow width 0 px or 30 ppt -# Assign special applications to defined workspaces -assign [class="Chromium"] 2: Web -assign [class="chrome"] 2: Web -assign [class="firefox"] 2: Web -assign [class="libreoffice"] 3: Office -assign [class="Gimp"] 3: Office -assign [class="^Minecraft Launcher .*"] 3: Office -assign [class="Linphone"] 3: Office -assign [class="KeePass2"] 4: KeePass -assign [class="keepassxc"] 4: KeePass -assign [class="KeePassXC"] 4: KeePass -assign [class="(?i)thunderbird"] 5: Mail -assign [class="Signal"] 6: Chat +# === Workspace-Zuweisungen === +assign [class="(?i)firefox"] 2: 2: Web +assign [class="(?i)chromium"] 2: 2: Web +assign [class="(?i)chrome"] 2: 2: Web +assign [class="libreoffice"] 3: 3: Office +assign [class="Gimp"] 3: 3: Office +assign [class="keepassxc"] 4: 4: KeePass +assign [class="KeePassXC"] 4: 4: KeePass +assign [class="(?i)thunderbird"] 5: 5: Mail +assign [class="Signal"] 6: 6: Chat -# Start some needet applications -# Please take care to install/configure it, if you intend to include it! +# === Autostart === +exec --no-startup-id xrdb -load ~/.Xresources +exec --no-startup-id xrdb -merge ~/.Xresources -# start Sound Daemon -exec pulseaudio --start -exec /usr/bin/pasystray - -# BROWSERS!!!11!elf! -exec MOZ_X11_EGL=1;firefox -#exec chromium -#exec google-chrome-stable - -# networkmanager gui -exec nm-applet - -# eye saver -#Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night. +exec firefox +exec nm-applet --indicator exec redshift-gtk -l 48.52160730:9.05050278 - -# nextcloud exec nextcloud - -# start one terminal on workspace 1 for failure management etc. -exec --no-startup-id i3-msg 'workspace 1: Text; exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8" -letsp -1 -sh 20' - -# trayicon to listen to some radio stations exec radiotray-ng - -# start i3 with a random wallpaper -exec feh --randomize --bg-fill ~/Bilder/Wallpaper/* - -# autodetect and automount USB Sticks and external media -exec udisksvm >/dev/null & - -# Start Signal exec signal-desktop - -# Start keepassxc exec keepassxc +exec ~/.scripts/start_keyring.sh +exec dunst +# Notification-History Picker (Inhalt kopieren) +bindsym $mod+n exec ~/.config/dunst/notification-picker.sh +exec udisksvm >/dev/null & +exec systemctl --user start mako-mirror.service -# Start thunderbird -exec thunderbird - -#Start compton -exec --no-startup-id compton -b +# include modules +include ~/.config/i3/conf.d/* diff --git a/.config/i3/config.backup b/.config/i3/config.backup deleted file mode 100644 index 39b3d9b..0000000 Binary files a/.config/i3/config.backup and /dev/null differ diff --git a/.config/i3/conky.conf b/.config/i3/conky.conf deleted file mode 100644 index c3d94dd..0000000 Binary files a/.config/i3/conky.conf and /dev/null differ diff --git a/.config/i3/conky.lua b/.config/i3/conky.lua deleted file mode 100644 index c328cfb..0000000 Binary files a/.config/i3/conky.lua and /dev/null differ diff --git a/.config/i3/conkyrc b/.config/i3/conkyrc deleted file mode 100644 index 875b028..0000000 Binary files a/.config/i3/conkyrc and /dev/null differ diff --git a/.config/i3/dunstrc b/.config/i3/dunstrc deleted file mode 100644 index b83acb5..0000000 Binary files a/.config/i3/dunstrc and /dev/null differ diff --git a/.config/i3/i3bar.bar-0.log b/.config/i3/i3bar.bar-0.log deleted file mode 100644 index 6f705b5..0000000 Binary files a/.config/i3/i3bar.bar-0.log and /dev/null differ diff --git a/.config/i3/i3bar.bar-1.log b/.config/i3/i3bar.bar-1.log deleted file mode 100644 index 883b3ad..0000000 Binary files a/.config/i3/i3bar.bar-1.log and /dev/null differ diff --git a/.config/i3/i3exit b/.config/i3/i3exit deleted file mode 100755 index 3e6d286..0000000 Binary files a/.config/i3/i3exit and /dev/null differ diff --git a/.config/i3/i3status.conf b/.config/i3/i3status.conf deleted file mode 100644 index 53b6a18..0000000 Binary files a/.config/i3/i3status.conf and /dev/null differ diff --git a/.config/i3/startup_conky b/.config/i3/startup_conky deleted file mode 100755 index e080c37..0000000 Binary files a/.config/i3/startup_conky and /dev/null differ diff --git a/.config/i3/status.toml b/.config/i3/status.toml deleted file mode 100644 index 9242370..0000000 Binary files a/.config/i3/status.toml and /dev/null differ diff --git a/.config/i3/weather.sh b/.config/i3/weather.sh deleted file mode 100755 index 5226ae9..0000000 Binary files a/.config/i3/weather.sh and /dev/null differ diff --git a/.config/i3/yagostatus.yml b/.config/i3/yagostatus.yml deleted file mode 100644 index e99598e..0000000 Binary files a/.config/i3/yagostatus.yml and /dev/null differ diff --git a/.config/i3status/config_bot.toml b/.config/i3status/config_bot.toml deleted file mode 100644 index fc330f5..0000000 --- a/.config/i3status/config_bot.toml +++ /dev/null @@ -1,21 +0,0 @@ -icons = "awesome" - -[theme] -name = "gruvbox-dark" - -[theme.overrides] -info_bg = "#D5C4A1" -info_fg = "#282828" - -[[block]] -block = "music" -player = "spotify" -buttons = ["play", "next"] - -[[block]] -block = "pacman" -interval = 10 - -[[block]] -block = "sound" -step_width = 3 diff --git a/.config/i3status/config_top.toml b/.config/i3status/config_top.toml deleted file mode 100644 index 27e45dd..0000000 --- a/.config/i3status/config_top.toml +++ /dev/null @@ -1,73 +0,0 @@ -icons = "awesome" - -[theme] -name = "gruvbox-dark" - -[theme.overrides] -info_bg = "#D5C4A1" -info_fg = "#282828" - -[[block]] -block = "disk_space" -path = "/" -alias = "/" -info_type = "available" -unit = "GB" -interval = 20 -warning = 20.0 -alert = 10.0 - -[[block]] -block = "memory" -display_type = "memory" -format_mem = "{Mup}%" -format_swap = "{SUp}%" - -[[block]] -block = "cpu" -interval = 1 - -[[block]] -block = "net" -device = "wlan1" -ssid = true -signal_strength = true -ip = true -speed_up = false -graph_up = true -interval = 5 -hide_missing = true -hide_inactive = true - -[[block]] -block = "net" -device = "wlan0" -ssid = true -signal_strength = true -ip = true -speed_up = false -graph_up = true -interval = 5 -hide_missing = true -hide_inactive = true - -[[block]] -block = "net" -device = "eno0" -ip = true -speed_up = false -graph_up = true -interval = 5 -hide_missing = true -hide_inactive = true - -[[block]] -block = "load" -interval = 1 -format = "{1m}" - -[[block]] -block = "time" -interval = 60 -format = "%a %d.%m %R" - diff --git a/.config/katerc b/.config/katerc new file mode 100644 index 0000000..3f7ee4a --- /dev/null +++ b/.config/katerc @@ -0,0 +1,169 @@ +[General] +Days Meta Infos=30 +PinnedDocuments= +Quickopen Filter Mode=0 +Quickopen List Mode=true +Save Meta Infos=true +Show Full Path in Title=false +Show Menu Bar=true +Show Status Bar=true +Show Tab Bar=true +Show Url Nav Bar=true + +[KTextEditor Document] +Allow End of Line Detection=true +Auto Detect Indent=true +Auto Reload If State Is In Version Control=true +Auto Save=false +Auto Save Interval=0 +Auto Save On Focus Out=false +BOM=false +Backup Local=false +Backup Prefix= +Backup Remote=false +Backup Suffix=~ +Camel Cursor=true +Encoding=UTF-8 +End of Line=0 +Indent On Backspace=true +Indent On Tab=true +Indent On Text Paste=false +Indentation Mode=normal +Indentation Width=4 +Keep Extra Spaces=false +Line Length Limit=10000 +Newline at End of File=true +On-The-Fly Spellcheck=false +Overwrite Mode=false +PageUp/PageDown Moves Cursor=false +Remove Spaces=1 +ReplaceTabsDyn=true +Show Spaces=0 +Show Tabs=true +Smart Home=true +Swap Directory= +Swap File Mode=1 +Swap Sync Interval=15 +Tab Handling=2 +Tab Width=4 +Trailing Marker Size=1 +Word Wrap=false +Word Wrap Column=80 + +[KTextEditor Editor] +Encoding Prober Type=1 +Fallback Encoding=ISO 8859-15 + +[KTextEditor Renderer] +Animate Bracket Matching=false +Auto Color Theme Selection=true +Color Theme=gruvbox Dark +Font=Hack,10,-1,7,50,0,0,0,0,0 +Line Height Multiplier=1 +Show Indentation Lines=false +Show Whole Bracket Expression=false +Word Wrap Marker=false + +[KTextEditor View] +Allow Mark Menu=true +Auto Brackets=true +Auto Center Lines=0 +Auto Completion=true +Auto Completion Preselect First Entry=true +Backspace Remove Composed Characters=false +Bookmark Menu Sorting=0 +Bracket Match Preview=false +Chars To Enclose Selection=<>(){}[]'" +Default Mark Type=1 +Dynamic Word Wrap=true +Dynamic Word Wrap Align Indent=80 +Dynamic Word Wrap At Static Marker=false +Dynamic Word Wrap Indicators=1 +Dynamic Wrap not at word boundaries=false +Enable Tab completion=false +Fold First Line=false +Folding Bar=true +Folding Preview=true +Icon Bar=false +Input Mode=0 +Keyword Completion=true +Line Modification=true +Line Numbers=true +Max Clipboard History Entries=20 +Maximum Search History Size=100 +Mouse Paste At Cursor Position=false +Multiple Cursor Modifier=134217728 +Persistent Selection=false +Scroll Bar Marks=false +Scroll Bar Mini Map All=true +Scroll Bar Mini Map Width=60 +Scroll Bar MiniMap=true +Scroll Bar Preview=true +Scroll Past End=false +Search/Replace Flags=140 +Shoe Line Ending Type in Statusbar=false +Show Documentation With Completion=true +Show File Encoding=true +Show Focus Frame Around Editor=true +Show Folding Icons On Hover Only=true +Show Line Count=false +Show Scrollbars=0 +Show Statusbar Dictionary=true +Show Statusbar Highlighting Mode=true +Show Statusbar Input Mode=true +Show Statusbar Line Column=true +Show Statusbar Tab Settings=true +Show Word Count=false +Smart Copy Cut=true +Statusbar Line Column Compact Mode=true +Text Drag And Drop=true +User Sets Of Chars To Enclose Selection= +Vi Input Mode Steal Keys=false +Vi Relative Line Numbers=false +Word Completion=true +Word Completion Minimal Word Length=3 +Word Completion Remove Tail=true + +[KTextEditor::Search] +Search History=tutorial + +[MainWindow] +4 screens: Height=648 +4 screens: Width=1152 +4 screens: Window-Maximized=true + +[filetree] +editShade=87,88,24 +listMode=false +middleClickToClose=false +shadingEnabled=true +showCloseButton=false +showFullPathOnRoots=false +showToolbar=true +sortRole=0 +viewShade=68,74,75 + +[lspclient] +AllowedServerCommandLines=/usr/bin/marksman server +AutoHover=true +AutoImport=true +BlockedServerCommandLines= +CompletionDocumentation=true +CompletionParens=true +Diagnostics=true +FormatOnSave=false +HighlightGoto=true +HighlightSymbol=true +IncrementalSync=false +InlayHints=false +Messages=true +ReferencesDeclaration=true +SemanticHighlighting=true +ServerConfiguration= +ShowCompletions=true +SignatureHelp=true +SymbolDetails=false +SymbolExpand=true +SymbolSort=false +SymbolTree=true +TypeFormatting=false diff --git a/.config/kcminputrc b/.config/kcminputrc new file mode 100644 index 0000000..e6205fa --- /dev/null +++ b/.config/kcminputrc @@ -0,0 +1,13 @@ +[%24Version] +update_info=delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize, kcminputrc_fix_botched_5_21_0.upd:kcminputrc_fix_botched_5_21_0_pre, kcminputrc_fix_botched_5_21_0.upd:kcminputrc_fix_botched_5_21_0, kcminputrc_repeat.upd:kcminputrc_migrate_key_repeat + +[Mouse] +cursorSize=72 +cursorTheme=Bibata-Original-Amber + +[Tmp] +update_info=delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize + +[Libinput][9011][26214][ydotoold virtual device] +PointerAcceleration=0 +PointerAccelerationProfile=1 diff --git a/.config/kdeglobals b/.config/kdeglobals new file mode 100644 index 0000000..8cfa85f --- /dev/null +++ b/.config/kdeglobals @@ -0,0 +1,148 @@ +[$Version] +update_info=filepicker.upd:filepicker-remove-old-previews-entry,fonts_global.upd:Fonts_Global,fonts_global_toolbar.upd:Fonts_Global_Toolbar,icons_remove_effects.upd:IconsRemoveEffects,kwin.upd:animation-speed,style_widgetstyle_default_breeze.upd:StyleWidgetStyleDefaultBreeze,deepin-kwin.upd:animation-speed + +[ColorEffects:Disabled] +ChangeSelectionColor= +Color=56,56,56 +ColorAmount=0 +ColorEffect=0 +ContrastAmount=0.65000000000000002 +ContrastEffect=1 +Enable= +IntensityAmount=0.10000000000000001 +IntensityEffect=2 + +[ColorEffects:Inactive] +ChangeSelectionColor=true +Color=112,111,110 +ColorAmount=0.025000000000000001 +ColorEffect=2 +ContrastAmount=0.10000000000000001 +ContrastEffect=2 +Enable=true +IntensityAmount=0 +IntensityEffect=0 + +[Colors:Button] +BackgroundAlternate=60,56,54 +BackgroundNormal=40,40,40 +DecorationFocus=104,157,106 +DecorationHover=131,165,152 +ForegroundActive=142,192,124 +ForegroundInactive=55,115,117 +ForegroundLink=184,187,38 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=235,219,178 +ForegroundPositive=39,174,96 +ForegroundVisited=127,140,141 + +[Colors:Selection] +BackgroundAlternate=142,192,124 +BackgroundNormal=104,157,106 +DecorationFocus=104,157,106 +DecorationHover=131,165,152 +ForegroundActive=252,252,252 +ForegroundInactive=235,219,178 +ForegroundLink=253,188,75 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=235,219,178 +ForegroundPositive=39,174,96 +ForegroundVisited=189,195,199 + +[Colors:Tooltip] +BackgroundAlternate=60,56,54 +BackgroundNormal=40,40,40 +DecorationFocus=104,157,106 +DecorationHover=131,165,152 +ForegroundActive=184,187,38 +ForegroundInactive=55,115,117 +ForegroundLink=142,192,124 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=235,219,178 +ForegroundPositive=39,174,96 +ForegroundVisited=127,140,141 + +[Colors:View] +BackgroundAlternate=60,56,54 +BackgroundNormal=40,40,40 +DecorationFocus=104,157,106 +DecorationHover=131,165,152 +ForegroundActive=184,187,38 +ForegroundInactive=55,115,117 +ForegroundLink=142,192,124 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=235,219,178 +ForegroundPositive=39,174,96 +ForegroundVisited=127,140,141 + +[Colors:Window] +BackgroundAlternate=60,56,54 +BackgroundNormal=40,40,40 +DecorationFocus=104,157,106 +DecorationHover=131,165,152 +ForegroundActive=184,187,38 +ForegroundInactive=55,115,117 +ForegroundLink=142,192,124 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=235,219,178 +ForegroundPositive=39,174,96 +ForegroundVisited=127,140,141 + +[General] +ColorSchemeHash=68f7da041112b660ac4e6911cf4bf8a7b361feda +LastUsedCustomAccentColor=101,55,207 + +[Icons] +Theme=Gruvbox + +[KDE] +LookAndFeelPackage=org.kde.breezedark.desktop +ShowDeleteCommand=false +widgetStyle=Breeze + +[KFileDialog Settings] +Allow Expansion=false +Automatically select filename extension=true +Breadcrumb Navigation=true +Decoration position=2 +LocationCombo Completionmode=5 +PathCombo Completionmode=5 +Show Bookmarks=false +Show Full Path=false +Show Inline Previews=true +Show Preview=false +Show Speedbar=true +Show hidden files=true +Sort by=Date +Sort directories first=true +Sort hidden files last=false +Sort reversed=true +Speedbar Width=188 +View Style=DetailTree + +[PreviewSettings] +EnableRemoteFolderThumbnail=false +MaximumRemoteSize=0 + +[Shortcuts] +GotoLine= + +[Sounds] +Theme=oxygen + +[Toolbar style] +ToolButtonStyle=TextUnderIcon +ToolButtonStyleOtherToolbars=TextUnderIcon + +[WM] +activeBackground=39,39,39 +activeBlend=235,219,178 +activeForeground=235,219,178 +inactiveBackground=40,40,40 +inactiveBlend=60,56,54 +inactiveForeground=204,190,155 diff --git a/.config/kglobalshortcutsrc b/.config/kglobalshortcutsrc new file mode 100644 index 0000000..7ccdbbb --- /dev/null +++ b/.config/kglobalshortcutsrc @@ -0,0 +1,470 @@ +[ActivityManager] +_k_friendly_name=Aktivitätenverwaltung +switch-to-activity-af3b6c4e-6eaf-4bea-857d-4860feb3cd94=none,none,Zu Aktivität „Standard“ wechseln + +[KDE Keyboard Layout Switcher] +Switch keyboard layout to Deutsch=none,none,Tastaturbelegung zu Deutsch umschalten +Switch to Last-Used Keyboard Layout=Meta+Alt+L,Meta+Alt+L,Auf zuletzt verwendete Tastaturbelegung umschalten +Switch to Next Keyboard Layout=Meta+Alt+K,Meta+Alt+K,Auf nächste Tastaturbelegung umschalten +_k_friendly_name=Umschaltung der Tastaturbelegung + +[claude] +6BDC7FE403BD0C01E80873CD7F418EEF-Ctrl+Alt+Space=none,Ctrl+Alt+Space,Claude shortcut: Ctrl+Alt+Space +_k_friendly_name=Claude + +[deepin-kwin] +Activate Window Demanding Attention=none,none,Fenster aktivieren\\, das Aufmerksamkeit erfordert +Decrease Opacity=none,none,Decrease Opacity of Active Window by 5 % +Expose=none,Ctrl+F9,Fenster der aktuellen Arbeitsfläche anzeigen +ExposeAll=none,Launch (C)\tCtrl+F10,Fenster aller Arbeitsflächen anzeigen +ExposeClass=none,Ctrl+F7,Fenster der Fensterklasse anzeigen +Increase Opacity=none,none,Increase Opacity of Active Window by 5 % +Invert Screen Colors=none,none,Invert Screen Colors +Kill Window=Ctrl+Alt+Esc,Ctrl+Alt+Esc,Fenster beseitigen +MinimizeAll=Meta+Shift+D,none,MinimizeAll +MoveMouseToCenter=none,Meta+F6,Mauszeiger zentrieren +MoveMouseToFocus=none,Meta+F5,Mauszeiger in den Fokus verschieben +MoveZoomDown=none,none,Vergrößerten Bereich nach unten verschieben +MoveZoomLeft=none,none,Vergrößerten Bereich nach links verschieben +MoveZoomRight=none,none,Vergrößerten Bereich nach rechts verschieben +MoveZoomUp=none,none,Vergrößerten Bereich nach oben verschieben +Setup Window Shortcut=none,none,Kurzbefehl für Fenster einrichten +Show Desktop=none,Meta+D,Show Desktop +ShowDesktopGrid=Ctrl+F8,Ctrl+F8,Arbeitsflächen-Raster anzeigen +ShowMultitasking=none,Meta+S,Show Multitasking View +Suspend Compositing=none,Alt+Shift+F12,Compositing aussetzen +Switch One Desktop Down=none,Meta+Ctrl+Down,Eine Arbeitsfläche nach unten +Switch One Desktop Up=none,Meta+Ctrl+Up,Eine Arbeitsfläche nach oben +Switch One Desktop to the Left=none,Meta+Ctrl+Left,Eine Arbeitsfläche nach links +Switch One Desktop to the Right=none,Meta+Ctrl+Right,Eine Arbeitsfläche nach rechts +Switch Window Down=none,Meta+Alt+Down,Zum Fenster darunter wechseln +Switch Window Left=none,Meta+Alt+Left,Zum Fenster links wechseln +Switch Window Right=none,Meta+Alt+Right,Zum Fenster rechts wechseln +Switch Window Up=none,Meta+Alt+Up,Zum Fenster darüber wechseln +Switch to Desktop 1=none,Ctrl+F1,Auf Arbeitsfläche 1 umschalten +Switch to Desktop 2=none,Ctrl+F2,Auf Arbeitsfläche 2 umschalten +Switch to Desktop 3=none,Ctrl+F3,Auf Arbeitsfläche 3 umschalten +Switch to Desktop 4=none,Ctrl+F4,Auf Arbeitsfläche 4 umschalten +Switch to Desktop 5=none,none,Auf Arbeitsfläche 5 umschalten +Switch to Desktop 6=none,none,Auf Arbeitsfläche 6 umschalten +Switch to Next Desktop=none,none,Zur nächsten Arbeitsfläche umschalten +Switch to Next Screen=none,none,Zum nächsten Bildschirm wechseln +Switch to Previous Desktop=none,none,Zur vorherigen Arbeitsfläche umschalten +Switch to Previous Screen=none,none,Zum vorherigen Bildschirm wechseln +Switch to Screen 0=none,none,Zum Bildschirm 0 wechseln +Switch to Screen 1=none,none,Zum Bildschirm 1 wechseln +Switch to Screen 2=none,none,Zum Bildschirm 2 wechseln +Switch to Screen 3=none,none,Zum Bildschirm 3 wechseln +Switch to Screen 4=none,none,Zum Bildschirm 4 wechseln +Switch to Screen 5=none,none,Zum Bildschirm 5 wechseln +Switch to Screen 6=none,none,Zum Bildschirm 6 wechseln +Switch to Screen 7=none,none,Zum Bildschirm 7 wechseln +Toggle Night Color=none,none,Nachtfarben umschalten +Toggle Window Raise/Lower=none,none,Fenster nach vorne/hinten +Walk Through Desktop List=none,none,Nächster Eintrag in Arbeitsflächenliste +Walk Through Desktop List (Reverse)=none,none,Nächster Eintrag in Arbeitsflächenliste (Gegenrichtung) +Walk Through Desktops=none,none,Zwischen Arbeitsflächen umschalten +Walk Through Desktops (Reverse)=none,none,Zwischen Arbeitsflächen umschalten (Gegenrichtung) +Walk Through Windows=none,Alt+Tab,Zwischen Fenstern wechseln +Walk Through Windows (Reverse)=none,Alt+Shift+Backtab,Zwischen Fenstern wechseln (Gegenrichtung) +Walk Through Windows Alternative=none,none,Alternatives Wechseln zwischen Fenstern +Walk Through Windows Alternative (Reverse)=none,none,Alternatives Wechseln zwischen Fenstern (Gegenrichtung) +Walk Through Windows of Current Application=none,Alt+`,Zwischen Fenstern der aktuellen Anwendung wechseln +Walk Through Windows of Current Application (Reverse)=none,Alt+~,Zwischen Fenstern der aktuellen Anwendung wechseln (Gegenrichtung) +Walk Through Windows of Current Application Alternative=none,none,Alternatives Wechseln zwischen Fenstern der aktuellen Anwendung +Walk Through Windows of Current Application Alternative (Reverse)=none,none,Alternatives Wechseln zwischen Fenstern der aktuellen Anwendung (Gegenrichtung) +Window Above Other Windows=none,none,Fenster im Vordergrund halten +Window Absolute Maximize=none,none,Window Absolute Maximize +Window Below Other Windows=none,none,Fenster im Hintergrund halten +Window Close=none,Alt+F4,Fenster schließen +Window Fullscreen=none,none,Fenster auf Vollbildgröße +Window Grow Horizontal=none,none,Fenster waagerecht maximieren +Window Grow Vertical=none,none,Fenster senkrecht maximieren +Window Lower=none,none,Fenster nach hinten +Window Maximize=none,Meta+PgUp,Fenster maximieren +Window Maximize Horizontal=none,none,Fenster waagerecht maximieren +Window Maximize Vertical=none,none,Fenster senkrecht maximieren +Window Minimize=none,Meta+PgDown,Fenster minimieren +Window Move=none,none,Fenster verschieben +Window Move Center=none,none,Fenster zentrieren +Window No Border=none,none,Hide Window Border +Window On All Desktops=none,none,Fenster auf allen Arbeitsflächen anzeigen +Window One Desktop Down=none,Meta+Ctrl+Shift+Down,Fenster eine Arbeitsfläche nach unten +Window One Desktop Up=none,Meta+Ctrl+Shift+Up,Fenster eine Arbeitsfläche nach oben +Window One Desktop to the Left=none,Meta+Ctrl+Shift+Left,Fenster eine Arbeitsfläche nach links +Window One Desktop to the Right=none,Meta+Ctrl+Shift+Right,Fenster eine Arbeitsfläche nach rechts +Window Operations Menu=none,Alt+F3,Fensteraktionen-Menü +Window Pack Down=none,none,Fenster nach unten verschieben +Window Pack Left=none,none,Fenster nach links verschieben +Window Pack Right=none,none,Fenster nach rechts verschieben +Window Pack Up=none,none,Fenster nach oben verschieben +Window Quick Tile Bottom=none,none,Fenster am unteren Bildschirmrand anordnen +Window Quick Tile Bottom Left=none,none,Fenster am linken unteren Bildschirmrand anordnen +Window Quick Tile Bottom Right=none,none,Fenster am rechten unteren Bildschirmrand anordnen +Window Quick Tile Left=none,Meta+Left,Fenster am linken Bildschirmrand anordnen +Window Quick Tile Right=none,Meta+Right,Fenster am rechten Bildschirmrand anordnen +Window Quick Tile Top=none,none,Fenster am oberen Bildschirmrand anordnen +Window Quick Tile Top Left=none,none,Fenster am linken oberen Bildschirmrand anordnen +Window Quick Tile Top Right=none,none,Fenster am rechten oberen Bildschirmrand anordnen +Window Raise=none,none,Fenster nach vorne +Window Resize=none,none,Fenstergröße ändern +Window Shade=none,none,Fensterheber betätigen +Window Shrink Horizontal=none,none,Fenster waagerecht verkleinern +Window Shrink Vertical=none,none,Fenster senkrecht verkleinern +Window Unmaximize=none,none,Window Unmaximize +Window to Desktop 1=none,none,Fenster auf Arbeitsfläche 1 +Window to Desktop 2=none,none,Fenster auf Arbeitsfläche 2 +Window to Desktop 3=none,none,Fenster auf Arbeitsfläche 3 +Window to Desktop 4=none,none,Fenster auf Arbeitsfläche 4 +Window to Desktop 5=none,none,Fenster auf Arbeitsfläche 5 +Window to Desktop 6=none,none,Fenster auf Arbeitsfläche 6 +Window to Next Desktop=none,none,Fenster auf nächste Arbeitsfläche verschieben +Window to Next Screen=none,Meta+Shift+Right,Fenster auf nächsten Bildschirm verschieben +Window to Previous Desktop=none,none,Fenster auf vorherige Arbeitsfläche verschieben +Window to Previous Screen=none,Meta+Shift+Left,Fenster auf vorherigen Bildschirm verschieben +Window to Screen 0=none,none,Fenster auf Bildschirm 0 +Window to Screen 1=none,none,Fenster auf Bildschirm 1 +Window to Screen 2=none,none,Fenster auf Bildschirm 2 +Window to Screen 3=none,none,Fenster auf Bildschirm 3 +Window to Screen 4=none,none,Fenster auf Bildschirm 4 +Window to Screen 5=none,none,Fenster auf Bildschirm 5 +Window to Screen 6=none,none,Fenster auf Bildschirm 6 +Window to Screen 7=none,none,Fenster auf Bildschirm 7 +_k_friendly_name=KWin +view_actual_size=none,Meta+0,Auf Originalgröße zoomen +view_zoom_in=none,Meta+=,Vergrößern +view_zoom_out=none,Meta+-,Verkleinern + +[kaccess] +Toggle Screen Reader On and Off=Meta+Alt+S,Meta+Alt+S,Screenreader ein-/ausschalten +_k_friendly_name=Zugangshilfen + +[khotkeys] +_k_friendly_name=Dienst für eigene Kurzbefehle +{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=none,none,Suchen + +[klipper] +_k_friendly_name=Klipper +clear-history=none,none,Bisherigen Inhalt der Zwischenablage löschen +clipboard_action=none,Meta+Ctrl+X,Automatisches Aufklappmenü für Aktionen +cycleNextAction=none,none,Nächstes Element im Verlauf +cyclePrevAction=none,none,Vorheriges Element im Verlauf +edit_clipboard=none,none,Inhalt bearbeiten ... +repeat_action=none,Meta+Ctrl+R,Aktionen der aktuellen Zwischenablage manuell aufrufen +show-barcode=none,none,Strichcode anzeigen ... +show-on-mouse-pos=none,Meta+V,Elemente an Mausposition anzeigen + +[kmix] +_k_friendly_name=Lautstärke +decrease_microphone_volume=Microphone Volume Down,Microphone Volume Down,Mikrofonlautstärke verringern +decrease_volume=Volume Down,Volume Down,Lautstärke verringern +decrease_volume_small=Shift+Volume Down,Shift+Volume Down,Lautstärke um 1 % verringern +increase_microphone_volume=Microphone Volume Up,Microphone Volume Up,Mikrofonlautstärke erhöhen +increase_volume=Volume Up,Volume Up,Lautstärke erhöhen +increase_volume_small=Shift+Volume Up,Shift+Volume Up,Lautstärke um 1 % erhöhen +mic_mute=Microphone Mute\tMeta+Volume Mute,Microphone Mute\tMeta+Volume Mute,Mikrofon stummschalten +mute=Volume Mute,Volume Mute,Stummschalten +push_to_talk=none,none,Drücken zum Sprechen + +[ksmserver] +Halt Without Confirmation=none,none,Ohne Rückfrage herunterfahren +Lock Session=Screensaver\tMeta+L,Screensaver\tMeta+L,Sitzung sperren +Log Out=Ctrl+Alt+Del,Ctrl+Alt+Del,Abmeldedialog anzeigen +Log Out Without Confirmation=none,none,Ohne Rückfrage abmelden +LogOut=none,none,Abmelden +Reboot=none,none,Neu starten +Reboot Without Confirmation=none,none,Ohne Rückfrage neu starten +Shut Down=none,none,Herunterfahren +_k_friendly_name=Sitzungsverwaltung + +[kwin] +Activate Window Demanding Attention=Meta+Ctrl+A,Meta+Ctrl+A,Fenster aktivieren\\, das Aufmerksamkeit erfordert +Cycle Overview=none,none,Durch Überblick und Rasteransicht wechseln +Cycle Overview Opposite=none,none,Durch Rasteransicht und Überblick wechseln +Decrease Opacity=none,none,Die Deckkraft des aktiven Fensters um 5 % verringern +Edit Tiles=Meta+T,Meta+T,Tiling-Editor ein-/ausschalten +Expose=Ctrl+F9,Ctrl+F9\tMeta+F9,Fenster der aktuellen Arbeitsfläche anzeigen +ExposeAll=Launch (C)\tCtrl+F10,Launch (C)\tCtrl+F10\tMeta+F10,Fenster aller Arbeitsflächen anzeigen +ExposeClass=Ctrl+F7,Ctrl+F7\tMeta+F7,Fenster der Fensterklasse anzeigen +ExposeClassCurrentDesktop=none,none,Fenster der Fensterklasse auf der aktuellen Arbeitsfläche anzeigen +Grid View=Meta+G,Meta+G,Übersicht umschalten +Increase Opacity=none,none,Die Deckkraft des aktiven Fensters um 5 % erhöhen +Kill Window=Meta+Ctrl+Esc,Meta+Ctrl+Esc,Fenster beseitigen +Move Tablet to Next LogicalOutput=none,none,Tablet zur nächsten Ausgabe verschieben +Move Tablet to Next Output=none,none,Tablet zur nächsten Ausgabe verschieben +MoveMouseToCenter=Meta+F6,Meta+F6,Mauszeiger zentrieren +MoveMouseToFocus=Meta+F5,Meta+F5,Mauszeiger in den Fokus verschieben +MoveZoomDown=none,none,Vergrößerten Bereich nach unten verschieben +MoveZoomLeft=none,none,Vergrößerten Bereich nach links verschieben +MoveZoomRight=none,none,Vergrößerten Bereich nach rechts verschieben +MoveZoomUp=none,none,Vergrößerten Bereich nach oben verschieben +Overview=Meta+W,Meta+W,Übersicht umschalten +Setup Window Shortcut=none,none,Kurzbefehl für Fenster einrichten +Show Desktop=Meta+D,Meta+D,Blick auf die Arbeitsfläche +Suspend Compositing=Alt+Shift+F12,Alt+Shift+F12,Compositing aussetzen +Switch One Desktop Down=Meta+Ctrl+Down,Meta+Ctrl+Down,Eine Arbeitsfläche nach unten +Switch One Desktop Up=Meta+Ctrl+Up,Meta+Ctrl+Up,Eine Arbeitsfläche nach oben +Switch One Desktop to the Left=Meta+Ctrl+Left,Meta+Ctrl+Left,Eine Arbeitsfläche nach links +Switch One Desktop to the Right=Meta+Ctrl+Right,Meta+Ctrl+Right,Eine Arbeitsfläche nach rechts +Switch Window Down=Meta+Alt+Down,Meta+Alt+Down,Zum Fenster darunter wechseln +Switch Window Left=Meta+Alt+Left,Meta+Alt+Left,Zum Fenster links wechseln +Switch Window Right=Meta+Alt+Right,Meta+Alt+Right,Zum Fenster rechts wechseln +Switch Window Up=Meta+Alt+Up,Meta+Alt+Up,Zum Fenster darüber wechseln +Switch to Desktop 1=Ctrl+F1,Ctrl+F1\tMeta+F1,Auf Arbeitsfläche 1 umschalten +Switch to Desktop 10=none,none,Auf Arbeitsfläche 10 umschalten +Switch to Desktop 11=none,none,Auf Arbeitsfläche 11 umschalten +Switch to Desktop 12=none,none,Auf Arbeitsfläche 12 umschalten +Switch to Desktop 13=none,none,Auf Arbeitsfläche 13 umschalten +Switch to Desktop 14=none,none,Auf Arbeitsfläche 14 umschalten +Switch to Desktop 15=none,none,Auf Arbeitsfläche 15 umschalten +Switch to Desktop 16=none,none,Auf Arbeitsfläche 16 umschalten +Switch to Desktop 17=none,none,Auf Arbeitsfläche 17 umschalten +Switch to Desktop 18=none,none,Auf Arbeitsfläche 18 umschalten +Switch to Desktop 19=none,none,Auf Arbeitsfläche 19 umschalten +Switch to Desktop 2=Ctrl+F2,Ctrl+F2\tMeta+F2,Auf Arbeitsfläche 2 umschalten +Switch to Desktop 20=none,none,Auf Arbeitsfläche 20 umschalten +Switch to Desktop 21=none,none,Auf Arbeitsfläche 21 umschalten +Switch to Desktop 22=none,none,Auf Arbeitsfläche 22 umschalten +Switch to Desktop 23=none,none,Auf Arbeitsfläche 23 umschalten +Switch to Desktop 24=none,none,Auf Arbeitsfläche 24 umschalten +Switch to Desktop 25=none,none,Auf Arbeitsfläche 25 umschalten +Switch to Desktop 3=Ctrl+F3,Ctrl+F3\tMeta+F3,Auf Arbeitsfläche 3 umschalten +Switch to Desktop 4=Ctrl+F4,Ctrl+F4\tMeta+F4,Auf Arbeitsfläche 4 umschalten +Switch to Desktop 5=none,none,Auf Arbeitsfläche 5 umschalten +Switch to Desktop 6=none,none,Auf Arbeitsfläche 6 umschalten +Switch to Desktop 7=none,none,Auf Arbeitsfläche 7 umschalten +Switch to Desktop 8=none,none,Auf Arbeitsfläche 8 umschalten +Switch to Desktop 9=none,none,Auf Arbeitsfläche 9 umschalten +Switch to Next Desktop=none,none,Zur nächsten Arbeitsfläche umschalten +Switch to Next Screen=none,none,Zum nächsten Bildschirm wechseln +Switch to Previous Desktop=none,none,Zur vorherigen Arbeitsfläche umschalten +Switch to Previous Screen=none,none,Zum vorherigen Bildschirm wechseln +Switch to Screen 0=none,none,Zum Bildschirm 0 wechseln +Switch to Screen 1=none,none,Zum Bildschirm 1 wechseln +Switch to Screen 2=none,none,Zum Bildschirm 2 wechseln +Switch to Screen 3=none,none,Zum Bildschirm 3 wechseln +Switch to Screen 4=none,none,Zum Bildschirm 4 wechseln +Switch to Screen 5=none,none,Zum Bildschirm 5 wechseln +Switch to Screen 6=none,none,Zum Bildschirm 6 wechseln +Switch to Screen 7=none,none,Zum Bildschirm 7 wechseln +Switch to Screen Above=none,none,Zum Bildschirm oben wechseln +Switch to Screen Below=none,none,Zum Bildschirm unten wechseln +Switch to Screen to the Left=none,none,Zum Bildschirm links wechseln +Switch to Screen to the Right=none,none,Zum Bildschirm rechts wechseln +Toggle Night Color=none,none,Nachtlicht aussetzen/fortsetzen +Toggle Window Raise/Lower=none,none,Fenster nach vorne/hinten +Walk Through Windows=Alt+Tab,Alt+Tab\tMeta+Tab,Zwischen Fenstern wechseln +Walk Through Windows (Reverse)=Alt+Shift+Backtab,Alt+Shift+Tab\tMeta+Shift+Tab,Zwischen Fenstern wechseln (Gegenrichtung) +Walk Through Windows Alternative=none,none,Alternatives Wechseln zwischen Fenstern +Walk Through Windows Alternative (Reverse)=none,none,Alternatives Wechseln zwischen Fenstern (Gegenrichtung) +Walk Through Windows of Current Application=Alt+`,Alt+`\tMeta+`,Zwischen Fenstern der aktuellen Anwendung wechseln +Walk Through Windows of Current Application (Reverse)=Alt+~,Alt+~\tMeta+~,Zwischen Fenstern der aktuellen Anwendung wechseln (Gegenrichtung) +Walk Through Windows of Current Application Alternative=none,none,Alternatives Wechseln zwischen Fenstern der aktuellen Anwendung +Walk Through Windows of Current Application Alternative (Reverse)=none,none,Alternatives Wechseln zwischen Fenstern der aktuellen Anwendung (Gegenrichtung) +Window Above Other Windows=none,none,Fenster im Vordergrund halten +Window Below Other Windows=none,none,Fenster im Hintergrund halten +Window Close=Alt+F4,Alt+F4,Fenster schließen +Window Custom Quick Tile Bottom=none,none,Fenster im benutzerdefinierten Raster nach unten anordnen +Window Custom Quick Tile Left=none,none,Fenster im benutzerdefinierten Raster nach links anordnen +Window Custom Quick Tile Right=none,none,Fenster im benutzerdefinierten Raster nach rechts anordnen +Window Custom Quick Tile Top=none,none,Fenster im benutzerdefinierten Raster nach oben anordnen +Window Fullscreen=none,none,Fenster auf Vollbildgröße +Window Grow Horizontal=none,none,Fenster waagerecht maximieren +Window Grow Vertical=none,none,Fenster senkrecht maximieren +Window Lower=none,none,Fenster nach hinten +Window Maximize=Meta+PgUp,Meta+PgUp,Fenster maximieren +Window Maximize Horizontal=none,none,Fenster waagerecht maximieren +Window Maximize Vertical=none,none,Fenster senkrecht maximieren +Window Minimize=Meta+PgDown,Meta+PgDown,Fenster minimieren +Window Move=none,none,Fenster verschieben +Window Move Center=none,none,Fenster zentrieren +Window No Border=none,none,Titelleiste und Rahmen des Fensters ein-/ausschalten +Window On All Desktops=none,none,Fenster auf allen Arbeitsflächen anzeigen +Window One Desktop Down=Meta+Ctrl+Shift+Down,Meta+Ctrl+Shift+Down,Fenster eine Arbeitsfläche nach unten +Window One Desktop Up=Meta+Ctrl+Shift+Up,Meta+Ctrl+Shift+Up,Fenster eine Arbeitsfläche nach oben +Window One Desktop to the Left=none,Meta+Ctrl+Shift+Left,Fenster eine Arbeitsfläche nach links +Window One Desktop to the Right=none,Meta+Ctrl+Shift+Right,Fenster eine Arbeitsfläche nach rechts +Window One Screen Down=none,none,Fenster einen Bildschirm nach unten verschieben +Window One Screen Up=none,none,Fenster einen Bildschirm nach oben verschieben +Window One Screen to the Left=none,none,Fenster einen Bildschirm nach links verschieben +Window One Screen to the Right=none,none,Fenster einen Bildschirm nach rechts verschieben +Window Operations Menu=Alt+F3,Alt+F3,Fenstermenü +Window Pack Down=none,none,Fenster nach unten verschieben +Window Pack Left=none,none,Fenster nach links verschieben +Window Pack Right=none,none,Fenster nach rechts verschieben +Window Pack Up=none,none,Fenster nach oben verschieben +Window Quick Tile Bottom=Meta+Down,Meta+Down,Fenster am unteren Bildschirmrand anordnen +Window Quick Tile Bottom Left=none,none,Fenster am linken unteren Bildschirmrand anordnen +Window Quick Tile Bottom Right=none,none,Fenster am rechten unteren Bildschirmrand anordnen +Window Quick Tile Left=Meta+Left,Meta+Left,Fenster am linken Bildschirmrand anordnen +Window Quick Tile Right=Meta+Right,Meta+Right,Fenster am rechten Bildschirmrand anordnen +Window Quick Tile Top=Meta+Up,Meta+Up,Fenster am oberen Bildschirmrand anordnen +Window Quick Tile Top Left=none,none,Fenster am linken oberen Bildschirmrand anordnen +Window Quick Tile Top Right=none,none,Fenster am rechten oberen Bildschirmrand anordnen +Window Raise=none,none,Fenster nach vorne +Window Resize=none,none,Fenstergröße ändern +Window Restore=Meta+Backspace,Meta+Backspace,Fenster wiederherstellen +Window Shade=none,none,Fensterheber betätigen +Window Shrink Horizontal=none,none,Fenster waagerecht verkleinern +Window Shrink Vertical=none,none,Fenster senkrecht verkleinern +Window to Desktop 1=none,none,Fenster auf Arbeitsfläche 1 +Window to Desktop 10=none,none,Fenster auf Arbeitsfläche 10 +Window to Desktop 11=none,none,Fenster auf Arbeitsfläche 11 +Window to Desktop 12=none,none,Fenster auf Arbeitsfläche 12 +Window to Desktop 13=none,none,Fenster auf Arbeitsfläche 13 +Window to Desktop 14=none,none,Fenster auf Arbeitsfläche 14 +Window to Desktop 15=none,none,Fenster auf Arbeitsfläche 15 +Window to Desktop 16=none,none,Fenster auf Arbeitsfläche 16 +Window to Desktop 17=none,none,Fenster auf Arbeitsfläche 17 +Window to Desktop 18=none,none,Fenster auf Arbeitsfläche 18 +Window to Desktop 19=none,none,Fenster auf Arbeitsfläche 19 +Window to Desktop 2=none,none,Fenster auf Arbeitsfläche 2 +Window to Desktop 20=none,none,Fenster auf Arbeitsfläche 20 +Window to Desktop 21=none,none,Fenster auf Arbeitsfläche 21 +Window to Desktop 22=none,none,Fenster auf Arbeitsfläche 22 +Window to Desktop 23=none,none,Fenster auf Arbeitsfläche 23 +Window to Desktop 24=none,none,Fenster auf Arbeitsfläche 24 +Window to Desktop 25=none,none,Fenster auf Arbeitsfläche 25 +Window to Desktop 3=none,none,Fenster auf Arbeitsfläche 3 +Window to Desktop 4=none,none,Fenster auf Arbeitsfläche 4 +Window to Desktop 5=none,none,Fenster auf Arbeitsfläche 5 +Window to Desktop 6=none,none,Fenster auf Arbeitsfläche 6 +Window to Desktop 7=none,none,Fenster auf Arbeitsfläche 7 +Window to Desktop 8=none,none,Fenster auf Arbeitsfläche 8 +Window to Desktop 9=none,none,Fenster auf Arbeitsfläche 9 +Window to Next Desktop=none,none,Fenster auf nächste Arbeitsfläche verschieben +Window to Next Screen=Meta+Shift+Right,Meta+Shift+Right,Fenster auf nächsten Bildschirm verschieben +Window to Previous Desktop=none,none,Fenster auf vorherige Arbeitsfläche verschieben +Window to Previous Screen=Meta+Shift+Left,Meta+Shift+Left,Fenster auf vorherigen Bildschirm verschieben +Window to Screen 0=none,none,Fenster auf Bildschirm 0 verschieben +Window to Screen 1=none,none,Fenster auf Bildschirm 1 verschieben +Window to Screen 2=none,none,Fenster auf Bildschirm 2 verschieben +Window to Screen 3=none,none,Fenster auf Bildschirm 3 verschieben +Window to Screen 4=none,none,Fenster auf Bildschirm 4 verschieben +Window to Screen 5=none,none,Fenster auf Bildschirm 5 verschieben +Window to Screen 6=none,none,Fenster auf Bildschirm 6 verschieben +Window to Screen 7=none,none,Fenster auf Bildschirm 7 verschieben +_k_friendly_name=KWin +disableInputCapture=Meta+Shift+Esc,Meta+Shift+Esc,Aktive Eingabeerfassung deaktivieren +view_actual_size=Meta+0,Meta+0,Auf Originalgröße zoomen +view_zoom_in=Meta++\tMeta+=,Meta++\tMeta+=,Vergrößern +view_zoom_out=Meta+-,Meta+-,Verkleinern + +[mediacontrol] +_k_friendly_name=Mediensteuerung +mediavolumedown=none,none,Medienwiedergabe leiser +mediavolumeup=none,none,Medienwiedergabe lauter +nextmedia=Media Next,Media Next,Nächstes Medium wiedergeben +pausemedia=Media Pause,Media Pause,Medienwiedergabe pausieren +playmedia=none,none,Medienwiedergabe starten +playpausemedia=Media Play,Media Play,Medienwiedergabe starten/pausieren +previousmedia=Media Previous,Media Previous,Vorheriges Medium wiedergeben +seekbackwardmedia=Media Rewind,Media Rewind,Medienwiedergabe 5 s zurück +seekbackwardmedialong=none,none,Medienwiedergabe 30 s zurück +seekforwardmedia=Media Fast Forward,Media Fast Forward,Medienwiedergabe 5 s vor +seekforwardmedialong=none,none,Medienwiedergabe 30 s vor +stopmedia=Media Stop,Media Stop,Medienwiedergabe anhalten + +[org.chromium.Chromium] +40D9EF9A25A0702DE1462EAF3594C581-Ctrl+Alt+D=Ctrl+Alt+D,none,Electron shortcut Ctrl+Alt+D +6BDC7FE403BD0C01E80873CD7F418EEF-Ctrl+Alt+Space=none,none,Electron shortcut Ctrl+Alt+Space +C73DD1156089FD1431EF39259EA8DFFD-=none,none,Electron shortcut\s +CB41BA6854A0E6679763C7E2D3C55437-Ctrl+D=none,none,Electron shortcut Ctrl+D +D25A8E9372C603BCD2D59A27DEDCE3AF-Ctrl+Alt+S=Ctrl+Alt+S,none,Electron shortcut Ctrl+Alt+S +_k_friendly_name=org.chromium.Chromium + +[org_kde_powerdevil] +Decrease Keyboard Brightness=Keyboard Brightness Down,Keyboard Brightness Down,Helligkeit der Tastatur-Hintergrundbeleuchtung verringern +Decrease Screen Brightness=Monitor Brightness Down,Monitor Brightness Down,Bildschirmhelligkeit verringern +Decrease Screen Brightness Small=Shift+Monitor Brightness Down,Shift+Monitor Brightness Down,Bildschirmhelligkeit um 1 % verringern +Hibernate=Hibernate,Hibernate,Ruhezustand +Increase Keyboard Brightness=Keyboard Brightness Up,Keyboard Brightness Up,Helligkeit der Tastatur-Hintergrundbeleuchtung erhöhen +Increase Screen Brightness=Monitor Brightness Up,Monitor Brightness Up,Bildschirmhelligkeit erhöhen +Increase Screen Brightness Small=Shift+Monitor Brightness Up,Shift+Monitor Brightness Up,Bildschirmhelligkeit um 1 % erhöhen +PowerDown=Power Down,Power Down,Ausschalten +PowerOff=Power Off,Power Off,Ausschalten +Sleep=Sleep,Sleep,Standby-Modus +Toggle Keyboard Backlight=Keyboard Light On/Off,Keyboard Light On/Off,Hintergrundbeleuchtung der Tastatur umschalten +Turn Off Screen=none,none,Bildschirm ausschalten +_k_friendly_name=Energieverwaltung +powerProfile=Battery\tMeta+B,Battery\tMeta+B,Energieprofil wechseln + +[plasmashell] +Slideshow Wallpaper Next Image=none,none,Nächstes Hintergrundbild +_k_friendly_name=plasmashell +activate application launcher=Meta,Meta\tAlt+F1,Anwendungsstarter aktivieren +activate task manager entry 1=Meta+1,Meta+1,Fensterleisteneintrag 1 aktivieren +activate task manager entry 10=none,none,Fensterleisteneintrag 10 aktivieren +activate task manager entry 2=Meta+2,Meta+2,Fensterleisteneintrag 2 aktivieren +activate task manager entry 3=Meta+3,Meta+3,Fensterleisteneintrag 3 aktivieren +activate task manager entry 4=Meta+4,Meta+4,Fensterleisteneintrag 4 aktivieren +activate task manager entry 5=Meta+5,Meta+5,Fensterleisteneintrag 5 aktivieren +activate task manager entry 6=Meta+6,Meta+6,Fensterleisteneintrag 6 aktivieren +activate task manager entry 7=Meta+7,Meta+7,Fensterleisteneintrag 7 aktivieren +activate task manager entry 8=Meta+8,Meta+8,Fensterleisteneintrag 8 aktivieren +activate task manager entry 9=Meta+9,Meta+9,Fensterleisteneintrag 9 aktivieren +activate widget 114=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 139=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 164=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 190=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 216=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 241=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 266=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 292=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 376=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 401=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 403=none,none,Miniprogramm Fensterleiste nur mit Symbolen aktivieren +activate widget 426=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 45=none,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 458=none,none,Miniprogramm Fensterleiste nur mit Symbolen aktivieren +activate widget 6=Alt+F1,none,Miniprogramm Anwendungsstarter aktivieren +activate widget 69=none,none,Miniprogramm Anwendungsstarter aktivieren +clear history=none,none,Benachrichtigungsverlauf leeren +clear-history=none,none,Verlauf der Zwischenablage leeren +clipboard_action=Meta+Ctrl+X,Meta+Ctrl+X,Automatisches Aufklappmenü für Aktionen +cycle-panels=Meta+Alt+P,Meta+Alt+P,Tastaturfokus zwischen Kontrollleisten umschalten +cycleNextAction=none,none,Nächstes Element im Verlauf +cyclePrevAction=none,none,Vorheriges Element im Verlauf +edit_clipboard=none,none,Inhalt bearbeiten … +manage activities=Meta+Q,Meta+Q,Aktivitätenwechsler anzeigen +next activity=Meta+A,none,Zwischen Aktivitäten wechseln +previous activity=Meta+Shift+A,none,Zwischen Aktivitäten wechseln (Gegenrichtung) +repeat_action=Meta+Ctrl+R,none,Aktionen der aktuellen Zwischenablage manuell aufrufen +show dashboard=Ctrl+F12,Ctrl+F12,Arbeitsfläche anzeigen +show-barcode=none,none,Strichcode anzeigen … +show-on-mouse-pos=Meta+V,Meta+V,Elemente der Zwischenablage an Mausposition anzeigen +switch to next activity=none,none,Zur nächsten Aktivität wechseln +switch to previous activity=none,none,Zur vorherigen Aktivität wechseln +toggle do not disturb=none,none,Nicht stören umschalten + +[services][com.mitchellh.ghostty.desktop] +_launch=none + +[services][net.local.firefox.desktop] +_launch=Meta+Shift+G + +[services][org.kde.spectacle.desktop] +RecordWindow=none +RectangularRegionScreenShot=Print\tMeta+Shift+Print +_launch=none + +[services][org.kde.touchpadshortcuts.desktop] +ToggleTouchpad=Touchpad Toggle\tMeta+Ctrl+Zenkaku Hankaku + +[ukui-window-switch] +_k_friendly_name=ukui-window-switch +windows previous=none,Alt+Shift+Tab, +windows switch next=none,Alt+Tab, +workspace shortcut 1=Ctrl+Alt+W,Ctrl+Alt+W, +workspace shortcut 2=none,Meta+Tab, + +[wacomtablet] +Map to fullscreen=Meta+Ctrl+F,Meta+Ctrl+F,Bildschirmfüllend abbilden +Map to screen 1=Meta+Ctrl+1,Meta+Ctrl+1,Auf Bildschirm 1 abbilden +Map to screen 2=Meta+Ctrl+2,Meta+Ctrl+2,Auf Bildschirm 2 abbilden +Next Profile=Meta+Ctrl+N,Meta+Ctrl+N,Nächstes Profil +Previous Profile=Meta+Ctrl+P,Meta+Ctrl+P,Vorheriges Profil +Toggle screen map selection=Meta+Ctrl+M,Meta+Ctrl+M,Zwischen allen Bildschirmen umschalten +Toggle stylus mode=Meta+Ctrl+S,Meta+Ctrl+S,Funktionsweise des Stift-Werkzeugs zwischen relativ/absolut umschalten +Toggle touch tool=Meta+Ctrl+T,Meta+Ctrl+T,Touch-Werkzeug aktivieren/deaktivieren +_k_friendly_name=Wacom-Tablett diff --git a/.config/klipperrc b/.config/klipperrc new file mode 100644 index 0000000..be21f6a --- /dev/null +++ b/.config/klipperrc @@ -0,0 +1,3 @@ +[General] +Number of Actions=0 +Version=5.27.10 diff --git a/.config/konsolerc b/.config/konsolerc new file mode 100644 index 0000000..663f9ef --- /dev/null +++ b/.config/konsolerc @@ -0,0 +1,14 @@ +[General] +ConfigVersion=1 + +[MainWindow] +3 screens: Window-Maximized=true +4 screens: Height=524 +4 screens: Width=911 +4 screens: Window-Maximized=true +4 screens: XPosition=5130 +4 screens: YPosition=1754 +DP-1 DP-2 DP-3 HDMI-1=DP-3 + +[UiSettings] +ColorScheme= diff --git a/.config/krunnerrc b/.config/krunnerrc new file mode 100644 index 0000000..c36d549 --- /dev/null +++ b/.config/krunnerrc @@ -0,0 +1,2 @@ +[PlasmaRunnerManager] +migrated=true diff --git a/.config/kscreenlockerrc b/.config/kscreenlockerrc new file mode 100644 index 0000000..d625c36 --- /dev/null +++ b/.config/kscreenlockerrc @@ -0,0 +1,11 @@ +[$Version] +update_info=kscreenlocker.upd:0.1-autolock + +[Daemon] +LockGrace=30 +Timeout=30 + +[Greeter][Wallpaper][org.kde.image][General] +Blur=false +FillMode=2 +Image=/usr/share/wallpapers/tueit-lock.jpg diff --git a/.config/ksmserverrc b/.config/ksmserverrc new file mode 100644 index 0000000..2ed164a --- /dev/null +++ b/.config/ksmserverrc @@ -0,0 +1,5 @@ +[$Version] +update_info=ksmserver_update_loginMode_value.upd:ksmserver_update_loginMode_value_default_enum + +[General] +loginMode=emptySession diff --git a/.config/kwinrc b/.config/kwinrc new file mode 100644 index 0000000..23d89ed --- /dev/null +++ b/.config/kwinrc @@ -0,0 +1,129 @@ +[$Version] +update_info=deepin-kwin.upd:replace-scalein-with-scale,deepin-kwin.upd:port-minimizeanimation-effect-to-js,deepin-kwin.upd:port-scale-effect-to-js,deepin-kwin.upd:port-dimscreen-effect-to-js,deepin-kwin.upd:auto-bordersize,deepin-kwin.upd:animation-speed,deepin-kwin.upd:desktop-grid-click-behavior,deepin-kwin.upd:no-swap-encourage,deepin-kwin.upd:make-translucency-effect-disabled-by-default,deepin-kwin.upd:remove-flip-switch-effect,deepin-kwin.upd:remove-cover-switch-effect,deepin-kwin.upd:remove-cubeslide-effect,deepin-kwin.upd:remove-xrender-backend,deepin-kwin.upd:enable-scale-effect-by-default + +[%24Version] +update_info=kwin.upd:replace-scalein-with-scale, kwin.upd:port-minimizeanimation-effect-to-js, kwin.upd:port-scale-effect-to-js, kwin.upd:port-dimscreen-effect-to-js, kwin.upd:auto-bordersize, kwin.upd:animation-speed, kwin.upd:desktop-grid-click-behavior, kwin.upd:no-swap-encourage, kwin.upd:make-translucency-effect-disabled-by-default, kwin.upd:remove-flip-switch-effect, kwin.upd:remove-cover-switch-effect, kwin.upd:remove-cubeslide-effect, kwin.upd:remove-xrender-backend, kwin.upd:enable-scale-effect-by-default, kwin.upd:overview-group-plugin-id, kwin.upd:animation-speed-cleanup, kwin.upd:replace-cascaded-zerocornered + +[Desktops] +Id_1=aa936320-5382-4ef8-a72a-955ac8ba9852 +Number=1 +Rows=1 + +[Effect-Blur] +BlurStrength=10 +NoiseStrength=0 + +[Effect-diminactive] +DimFullScreen=false + +[NightColor] +Active=true +NightTemperature=3300 + +[Plugins] +diminactiveEnabled=true +firefox-debug-trackerEnabled=true +firefox-positioner-v2Enabled=true +magiclampEnabled=true +sheetEnabled=true +slidebackEnabled=true +squashEnabled=false +translucencyEnabled=true + +[TabBox] +ActivitiesMode=0 +DesktopMode=0 +HighlightWindows=false +LayoutName=thumbnail_grid +OrderMinimizedMode=1 +SwitchingMode=1 + +[Tiling] +tiles={layoutDirection:horizontal, tiles:[{width:0.25}, {width:0.5}, {width:0.25}]} + +[Tiling][19ce1a50-3006-52a1-84a0-fe6d91c5a3a2] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][19e8b959-5acd-5fe2-8d5e-b8e7214c9ddd] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][1a184837-61b8-5cfd-a9c2-05eb6ae2634e] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][25a689d3-f432-5e29-8990-a9b240750f21] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][2a1f23f7-790d-502e-94be-24661006ddcb] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][3b09003e-31fd-5563-a5d0-e1df30d8aa4c] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][3d17d22f-69cd-567c-929e-cde5c6265b44] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][4a080247-a3d0-56f9-ae02-67ffbd22116a] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][73e8e717-6daa-52ea-bf33-58780ec7b5f2] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][942d64fb-2d96-5ca2-bec4-71036c105d56] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][a17abf1c-055e-521a-a24a-02b173e1b770] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][aa936320-5382-4ef8-a72a-955ac8ba9852][592d0d31-ae44-4d03-9880-2174afd06e68] +padding=4 +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][aa936320-5382-4ef8-a72a-955ac8ba9852][629cbaff-2ffb-4aed-aec6-fe5e60da69e7] +padding=4 +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][aa936320-5382-4ef8-a72a-955ac8ba9852][7e6bd5bc-03e6-419c-b921-d7a203faf74e] +padding=4 +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][aa936320-5382-4ef8-a72a-955ac8ba9852][7fdaa52a-9b20-4d49-a15b-a729b00d91d1] +padding=4 +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][aa936320-5382-4ef8-a72a-955ac8ba9852][ca9d53fb-f189-46e3-b83b-437ecc6c7ec5] +padding=4 +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][c2e0b504-b4f8-5997-aae5-d7583376f0ba] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][c7be3cff-bf49-5593-8290-d669ec950203] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][da493791-2926-5b57-90da-adabcc25eb20] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][eaeb17d9-a578-52b8-a8e8-b2c01cd37ea7] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Tiling][f8cdf9db-2aad-5a4f-a51b-75962656515a] +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} + +[Wayland] +InputMethod[$e]=/usr/share/applications/fcitx5-wayland-launcher.desktop + +[Windows] +BorderlessMaximizedWindows=false +FocusStealingPreventionLevel=1 +HideUtilityWindowsForInactive=false +HighlightWindowOnDemandAttention=true +ShadeHover=true + +[Xwayland] +Scale=1 +XwaylandEisNoPromptApps=xembedsniproxy + +[org.kde.kdecoration2] +ButtonsOnLeft=M +library=org.kde.kwin.aurorae.v2 +theme=__aurorae__svg__GruvboxAurorae diff --git a/.config/kwinrulesrc b/.config/kwinrulesrc new file mode 100644 index 0000000..264ac6f --- /dev/null +++ b/.config/kwinrulesrc @@ -0,0 +1,56 @@ +[$Version] +update_info=kwinrules.upd:replace-placement-string-to-enum,kwinrules.upd:use-virtual-desktop-ids,deepin-kwinrules.upd:replace-placement-string-to-enum,deepin-kwinrules.upd:use-virtual-desktop-ids + +[General] +count=7 +rules=MainBraveRule,secondBraveRule,ansibleBraveRule,TVBraveRule,ZoiperNoFocus,KittyFocusProtect,KeePassXCFocusProtect + +[KeePassXCFocusProtect] +Description=KeePassXC focus protection +fpplevel=4 +fpplevelrule=2 +wmclass=org.keepassxc.KeePassXC +wmclassmatch=1 + +[KittyFocusProtect] +Description=kitty focus protection +fpplevel=4 +fpplevelrule=2 +wmclass=kitty +wmclassmatch=1 + +[MainBraveRule] +Description=Brave Main +screen=0 +screenrule=2 +wmclass=brave-Main +wmclassmatch=1 + +[TVBraveRule] +Description=Brave TV +screen=3 +screenrule=2 +wmclass=brave-TV +wmclassmatch=1 + +[ZoiperNoFocus] +Description=Zoiper no focus steal +fsplevel=4 +fsplevelrule=2 +wmclass=Zoiper +wmclasscomplete=false +wmclassmatch=1 + +[ansibleBraveRule] +Description=Brave ansible +screen=1 +screenrule=2 +wmclass=brave-ansible +wmclassmatch=1 + +[secondBraveRule] +Description=Brave second +screen=2 +screenrule=2 +wmclass=brave-second +wmclassmatch=1 diff --git a/.config/nvim/autoload/plug.vim b/.config/nvim/autoload/plug.vim index ac14332..a225a6d 100644 --- a/.config/nvim/autoload/plug.vim +++ b/.config/nvim/autoload/plug.vim @@ -1,67 +1,36 @@ " vim-plug: Vim plugin manager " ============================ " -" Download plug.vim and put it in ~/.vim/autoload +" 1. Download plug.vim and put it in 'autoload' directory " +" # Vim " curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ " https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim " -" Edit your .vimrc +" # Neovim +" sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ +" https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' " -" call plug#begin('~/.vim/plugged') +" 2. Add a vim-plug section to your ~/.vimrc (or ~/.config/nvim/init.vim for Neovim) " -" " Make sure you use single quotes +" call plug#begin() " -" " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align -" Plug 'junegunn/vim-easy-align' +" " List your plugins here +" Plug 'tpope/vim-sensible' " -" " Any valid git URL is allowed -" Plug 'https://github.com/junegunn/vim-github-dashboard.git' -" -" " Multiple Plug commands can be written in a single line using | separators -" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' -" -" " On-demand loading -" Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } -" Plug 'tpope/vim-fireplace', { 'for': 'clojure' } -" -" " Using a non-master branch -" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } -" -" " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) -" Plug 'fatih/vim-go', { 'tag': '*' } -" -" " Plugin options -" Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' } -" -" " Plugin outside ~/.vim/plugged with post-update hook -" Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } -" -" " Unmanaged plugin (manually installed and updated) -" Plug '~/my-prototype-plugin' -" -" " Initialize plugin system " call plug#end() " -" Then reload .vimrc and :PlugInstall to install plugins. +" 3. Reload the file or restart Vim, then you can, " -" Plug options: +" :PlugInstall to install plugins +" :PlugUpdate to update plugins +" :PlugDiff to review the changes from the last update +" :PlugClean to remove plugins no longer in the list " -"| Option | Description | -"| ----------------------- | ------------------------------------------------ | -"| `branch`/`tag`/`commit` | Branch/tag/commit of the repository to use | -"| `rtp` | Subdirectory that contains Vim plugin | -"| `dir` | Custom directory for the plugin | -"| `as` | Use different name for the plugin | -"| `do` | Post-update hook (string or funcref) | -"| `on` | On-demand loading: Commands or ``-mappings | -"| `for` | On-demand loading: File types | -"| `frozen` | Do not update unless explicitly specified | -" -" More information: https://github.com/junegunn/vim-plug +" For more information, see https://github.com/junegunn/vim-plug " " -" Copyright (c) 2017 Junegunn Choi +" Copyright (c) 2024 Junegunn Choi " " MIT License " @@ -106,7 +75,7 @@ if s:is_win && &shellslash else let s:me = resolve(expand(':p')) endif -let s:base_spec = { 'branch': 'master', 'frozen': 0 } +let s:base_spec = { 'branch': '', 'frozen': 0 } let s:TYPE = { \ 'string': type(''), \ 'list': type([]), @@ -116,6 +85,94 @@ let s:TYPE = { let s:loaded = get(s:, 'loaded', {}) let s:triggers = get(s:, 'triggers', {}) +function! s:is_powershell(shell) + return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$' +endfunction + +function! s:isabsolute(dir) abort + return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)') +endfunction + +function! s:git_dir(dir) abort + let gitdir = s:trim(a:dir) . '/.git' + if isdirectory(gitdir) + return gitdir + endif + if !filereadable(gitdir) + return '' + endif + let gitdir = matchstr(get(readfile(gitdir), 0, ''), '^gitdir: \zs.*') + if len(gitdir) && !s:isabsolute(gitdir) + let gitdir = a:dir . '/' . gitdir + endif + return isdirectory(gitdir) ? gitdir : '' +endfunction + +function! s:git_origin_url(dir) abort + let gitdir = s:git_dir(a:dir) + let config = gitdir . '/config' + if empty(gitdir) || !filereadable(config) + return '' + endif + return matchstr(join(readfile(config)), '\[remote "origin"\].\{-}url\s*=\s*\zs\S*\ze') +endfunction + +function! s:git_revision(dir) abort + let gitdir = s:git_dir(a:dir) + let head = gitdir . '/HEAD' + if empty(gitdir) || !filereadable(head) + return '' + endif + + let line = get(readfile(head), 0, '') + let ref = matchstr(line, '^ref: \zs.*') + if empty(ref) + return line + endif + + if filereadable(gitdir . '/' . ref) + return get(readfile(gitdir . '/' . ref), 0, '') + endif + + if filereadable(gitdir . '/packed-refs') + for line in readfile(gitdir . '/packed-refs') + if line =~# ' ' . ref + return matchstr(line, '^[0-9a-f]*') + endif + endfor + endif + + return '' +endfunction + +function! s:git_local_branch(dir) abort + let gitdir = s:git_dir(a:dir) + let head = gitdir . '/HEAD' + if empty(gitdir) || !filereadable(head) + return '' + endif + let branch = matchstr(get(readfile(head), 0, ''), '^ref: refs/heads/\zs.*') + return len(branch) ? branch : 'HEAD' +endfunction + +function! s:git_origin_branch(spec) + if len(a:spec.branch) + return a:spec.branch + endif + + " The file may not be present if this is a local repository + let gitdir = s:git_dir(a:spec.dir) + let origin_head = gitdir.'/refs/remotes/origin/HEAD' + if len(gitdir) && filereadable(origin_head) + return matchstr(get(readfile(origin_head), 0, ''), + \ '^ref: refs/remotes/origin/\zs.*') + endif + + " The command may not return the name of a branch in detached HEAD state + let result = s:lines(s:system('git symbolic-ref --short HEAD', a:spec.dir)) + return v:shell_error ? '' : result[-1] +endfunction + if s:is_win function! s:plug_call(fn, ...) let shellslash = &shellslash @@ -150,10 +207,11 @@ endfunction function! plug#begin(...) if a:0 > 0 - let s:plug_home_org = a:1 let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p')) elseif exists('g:plug_home') let home = s:path(g:plug_home) + elseif has('nvim') + let home = stdpath('data') . '/plugged' elseif !empty(&rtp) let home = s:path(split(&rtp, ',')[0]) . '/plugged' else @@ -179,7 +237,7 @@ function! s:define_commands() endif if has('win32') \ && &shellslash - \ && (&shell =~# 'cmd\.exe' || &shell =~# 'powershell\.exe') + \ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell)) return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.') endif if !has('nvim') @@ -262,7 +320,7 @@ function! plug#end() endif let lod = { 'ft': {}, 'map': {}, 'cmd': {} } - if exists('g:did_load_filetypes') + if get(g:, 'did_load_filetypes', 0) filetype off endif for name in g:plugs_order @@ -301,6 +359,9 @@ function! plug#end() if !empty(types) augroup filetypedetect call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim') + if has('nvim-0.5.0') + call s:source(s:rtp(plug), 'ftdetect/**/*.lua', 'after/ftdetect/**/*.lua') + endif augroup END endif for type in types @@ -311,13 +372,15 @@ function! plug#end() for [cmd, names] in items(lod.cmd) execute printf( - \ 'command! -nargs=* -range -bang -complete=file %s call s:lod_cmd(%s, "", , , , %s)', - \ cmd, string(cmd), string(names)) + \ has('patch-7.4.1898') + \ ? 'command! -nargs=* -range -bang -complete=file %s call s:lod_cmd(%s, "", , , , ,%s)' + \ : 'command! -nargs=* -range -bang -complete=file %s call s:lod_cmd(%s, "", , , , %s)' + \ , cmd, string(cmd), string(names)) endfor for [map, names] in items(lod.map) for [mode, map_prefix, key_prefix] in - \ [['i', '', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] + \ [['i', '', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] execute printf( \ '%snoremap %s %s:call lod_map(%s, %s, %s, "%s")', \ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix) @@ -348,6 +411,9 @@ endfunction function! s:load_plugin(spec) call s:source(s:rtp(a:spec), 'plugin/**/*.vim', 'after/plugin/**/*.vim') + if has('nvim-0.5.0') + call s:source(s:rtp(a:spec), 'plugin/**/*.lua', 'after/plugin/**/*.lua') + endif endfunction function! s:reload_plugins() @@ -372,7 +438,7 @@ endfunction function! s:git_version_requirement(...) if !exists('s:git_version') - let s:git_version = map(split(split(s:system('git --version'))[2], '\.'), 'str2nr(v:val)') + let s:git_version = map(split(split(s:system(['git', '--version']))[2], '\.'), 'str2nr(v:val)') endif return s:version_requirement(s:git_version, a:000) endfunction @@ -419,7 +485,7 @@ if s:is_win let batchfile = s:plug_tempname().'.bat' call writefile(s:wrap_cmds(a:cmd), batchfile) let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0}) - if &shell =~# 'powershell\.exe' + if s:is_powershell(&shell) let cmd = '& ' . cmd endif return [batchfile, cmd] @@ -565,6 +631,9 @@ function! s:lod(names, types, ...) let rtp = s:rtp(g:plugs[name]) for dir in a:types call s:source(rtp, dir.'/**/*.vim') + if has('nvim-0.5.0') " see neovim#14686 + call s:source(rtp, dir.'/**/*.lua') + endif endfor if a:0 if !s:source(rtp, a:1) && !empty(s:glob(rtp, a:2)) @@ -584,11 +653,19 @@ function! s:lod_ft(pat, names) call s:doautocmd('filetypeindent', 'FileType') endfunction -function! s:lod_cmd(cmd, bang, l1, l2, args, names) - call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) - call s:dobufread(a:names) - execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args) -endfunction +if has('patch-7.4.1898') + function! s:lod_cmd(cmd, bang, l1, l2, args, mods, names) + call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) + call s:dobufread(a:names) + execute printf('%s %s%s%s %s', a:mods, (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args) + endfunction +else + function! s:lod_cmd(cmd, bang, l1, l2, args, names) + call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) + call s:dobufread(a:names) + execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args) + endfunction +endif function! s:lod_map(map, names, with_prefix, prefix) call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) @@ -632,16 +709,38 @@ function! plug#(repo, ...) let g:plugs[name] = spec let s:loaded[name] = get(s:loaded, name, 0) catch - return s:err(v:exception) + return s:err(repo . ' ' . v:exception) endtry endfunction function! s:parse_options(arg) let opts = copy(s:base_spec) let type = type(a:arg) + let opt_errfmt = 'Invalid argument for "%s" option of :Plug (expected: %s)' if type == s:TYPE.string + if empty(a:arg) + throw printf(opt_errfmt, 'tag', 'string') + endif let opts.tag = a:arg elseif type == s:TYPE.dict + for opt in ['branch', 'tag', 'commit', 'rtp', 'dir', 'as'] + if has_key(a:arg, opt) + \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt])) + throw printf(opt_errfmt, opt, 'string') + endif + endfor + for opt in ['on', 'for'] + if has_key(a:arg, opt) + \ && type(a:arg[opt]) != s:TYPE.list + \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt])) + throw printf(opt_errfmt, opt, 'string or list') + endif + endfor + if has_key(a:arg, 'do') + \ && type(a:arg.do) != s:TYPE.funcref + \ && (type(a:arg.do) != s:TYPE.string || empty(a:arg.do)) + throw printf(opt_errfmt, 'do', 'string or funcref') + endif call extend(opts, a:arg) if has_key(opts, 'dir') let opts.dir = s:dirpath(s:plug_expand(opts.dir)) @@ -694,11 +793,12 @@ endfunction function! s:syntax() syntax clear syntax region plug1 start=/\%1l/ end=/\%2l/ contains=plugNumber - syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX + syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX,plugAbort syn match plugNumber /[0-9]\+[0-9.]*/ contained syn match plugBracket /[[\]]/ contained syn match plugX /x/ contained - syn match plugDash /^-/ + syn match plugAbort /\~/ contained + syn match plugDash /^-\{1}\ / syn match plugPlus /^+/ syn match plugStar /^*/ syn match plugMessage /\(^- \)\@<=.*/ @@ -716,11 +816,13 @@ function! s:syntax() syn match plugError /^x.*/ syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/ syn match plugH2 /^.*:\n-\+$/ + syn match plugH2 /^-\{2,}/ syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean hi def link plug1 Title hi def link plug2 Repeat hi def link plugH2 Type hi def link plugX Exception + hi def link plugAbort Ignore hi def link plugBracket Structure hi def link plugNumber Number @@ -756,7 +858,7 @@ function! s:lastline(msg) endfunction function! s:new_window() - execute get(g:, 'plug_window', 'vertical topleft new') + execute get(g:, 'plug_window', '-tabnew') endfunction function! s:plug_window_exists() @@ -818,7 +920,7 @@ function! s:prepare(...) endif endfor - call s:job_abort() + call s:job_abort(0) if s:switch_in() if b:plug_preview == 1 pc @@ -828,7 +930,7 @@ function! s:prepare(...) call s:new_window() endif - nnoremap q :if b:plug_preview==1pcendifbd + nnoremap q :call close_pane() if a:0 == 0 call s:finish_bindings() endif @@ -850,6 +952,17 @@ function! s:prepare(...) endif endfunction +function! s:close_pane() + if b:plug_preview == 1 + pc + let b:plug_preview = -1 + elseif exists('s:jobs') && !empty(s:jobs) + call s:job_abort(1) + else + bd + endif +endfunction + function! s:assign_name() " Assign buffer name let prefix = '[Plugins]' @@ -864,8 +977,15 @@ endfunction function! s:chsh(swap) let prev = [&shell, &shellcmdflag, &shellredir] - if !s:is_win && a:swap - set shell=sh shellredir=>%s\ 2>&1 + if !s:is_win + set shell=sh + endif + if a:swap + if s:is_powershell(&shell) + let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s' + elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$' + set shellredir=>%s\ 2>&1 + endif endif return prev endfunction @@ -898,10 +1018,15 @@ function! s:regress_bar() endfunction function! s:is_updated(dir) - return !empty(s:system_chomp('git log --pretty=format:"%h" "HEAD...HEAD@{1}"', a:dir)) + return !empty(s:system_chomp(['git', 'log', '--pretty=format:%h', 'HEAD...HEAD@{1}'], a:dir)) endfunction function! s:do(pull, force, todo) + if has('nvim') + " Reset &rtp to invalidate Neovim cache of loaded Lua modules + " See https://github.com/junegunn/vim-plug/pull/1157#issuecomment-1809226110 + let &rtp = &rtp + endif for [name, spec] in items(a:todo) if !isdirectory(spec.dir) continue @@ -935,6 +1060,7 @@ function! s:do(pull, force, todo) endif elseif type == s:TYPE.funcref try + call s:load_plugin(spec) let status = installed ? 'installed' : (updated ? 'updated' : 'unchanged') call spec.do({ 'name': name, 'status': status, 'force': a:force }) catch @@ -959,14 +1085,21 @@ function! s:hash_match(a, b) return stridx(a:a, a:b) == 0 || stridx(a:b, a:a) == 0 endfunction +function! s:disable_credential_helper() + return s:git_version_requirement(2) && get(g:, 'plug_disable_credential_helper', 1) +endfunction + function! s:checkout(spec) let sha = a:spec.commit - let output = s:system('git rev-parse HEAD', a:spec.dir) - if !v:shell_error && !s:hash_match(sha, s:lines(output)[0]) + let output = s:git_revision(a:spec.dir) + let error = 0 + if !empty(output) && !s:hash_match(sha, s:lines(output)[0]) + let credential_helper = s:disable_credential_helper() ? '-c credential.helper= ' : '' let output = s:system( - \ 'git fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir) + \ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir) + let error = v:shell_error endif - return output + return [output, error] endfunction function! s:finish(pull) @@ -1027,7 +1160,7 @@ function! s:update_impl(pull, force, args) abort let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ? \ remove(args, -1) : get(g:, 'plug_threads', 16) - let managed = filter(copy(g:plugs), 's:is_managed(v:key)') + let managed = filter(deepcopy(g:plugs), 's:is_managed(v:key)') let todo = empty(args) ? filter(managed, '!v:val.frozen || !isdirectory(v:val.dir)') : \ filter(managed, 'index(args, v:key) >= 0') @@ -1079,11 +1212,17 @@ function! s:update_impl(pull, force, args) abort normal! 2G silent! redraw - let s:clone_opt = get(g:, 'plug_shallow', 1) ? - \ '--depth 1' . (s:git_version_requirement(1, 7, 10) ? ' --no-single-branch' : '') : '' + " Set remote name, overriding a possible user git config's clone.defaultRemoteName + let s:clone_opt = ['--origin', 'origin'] + if get(g:, 'plug_shallow', 1) + call extend(s:clone_opt, ['--depth', '1']) + if s:git_version_requirement(1, 7, 10) + call add(s:clone_opt, '--no-single-branch') + endif + endif if has('win32unix') || has('wsl') - let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input' + call extend(s:clone_opt, ['-c', 'core.eol=lf', '-c', 'core.autocrlf=input']) endif let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : '' @@ -1155,9 +1294,11 @@ function! s:update_finish() if !pos continue endif + let out = '' + let error = 0 if has_key(spec, 'commit') call s:log4(name, 'Checking out '.spec.commit) - let out = s:checkout(spec) + let [out, error] = s:checkout(spec) elseif has_key(spec, 'tag') let tag = spec.tag if tag =~ '\*' @@ -1170,19 +1311,16 @@ function! s:update_finish() endif call s:log4(name, 'Checking out '.tag) let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir) - else - let branch = get(spec, 'branch', 'master') - call s:log4(name, 'Merging origin/'.s:esc(branch)) - let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1' - \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir) + let error = v:shell_error endif - if !v:shell_error && filereadable(spec.dir.'/.gitmodules') && + if !error && filereadable(spec.dir.'/.gitmodules') && \ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir)) call s:log4(name, 'Updating submodules. This may take a while.') let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir) + let error = v:shell_error endif let msg = s:format_message(v:shell_error ? 'x': '-', name, out) - if v:shell_error + if error call add(s:update.errors, name) call s:regress_bar() silent execute pos 'd _' @@ -1206,7 +1344,12 @@ function! s:update_finish() endif endfunction -function! s:job_abort() +function! s:mark_aborted(name, message) + let attrs = { 'running': 0, 'error': 1, 'abort': 1, 'lines': [a:message] } + let s:jobs[a:name] = extend(get(s:jobs, a:name, {}), attrs) +endfunction + +function! s:job_abort(cancel) if (!s:nvim && !s:vim8) || !exists('s:jobs') return endif @@ -1220,8 +1363,18 @@ function! s:job_abort() if j.new call s:rm_rf(g:plugs[name].dir) endif + if a:cancel + call s:mark_aborted(name, 'Aborted') + endif endfor - let s:jobs = {} + + if a:cancel + for todo in values(s:update.todo) + let todo.abort = 1 + endfor + else + let s:jobs = {} + endif endfunction function! s:last_non_empty_line(lines) @@ -1235,6 +1388,16 @@ function! s:last_non_empty_line(lines) return '' endfunction +function! s:bullet_for(job, ...) + if a:job.running + return a:job.new ? '+' : '*' + endif + if get(a:job, 'abort', 0) + return '~' + endif + return a:job.error ? 'x' : get(a:000, 0, '-') +endfunction + function! s:job_out_cb(self, data) abort let self = a:self let data = remove(self.lines, -1) . a:data @@ -1243,9 +1406,10 @@ function! s:job_out_cb(self, data) abort " To reduce the number of buffer updates let self.tick = get(self, 'tick', -1) + 1 if !self.running || self.tick % len(s:jobs) == 0 - let bullet = self.running ? (self.new ? '+' : '*') : (self.error ? 'x' : '-') let result = self.error ? join(self.lines, "\n") : s:last_non_empty_line(self.lines) - call s:log(bullet, self.name, result) + if len(result) + call s:log(s:bullet_for(self), self.name, result) + endif endif endfunction @@ -1258,27 +1422,31 @@ endfunction function! s:job_cb(fn, job, ch, data) if !s:plug_window_exists() " plug window closed - return s:job_abort() + return s:job_abort(0) endif call call(a:fn, [a:job, a:data]) endfunction function! s:nvim_cb(job_id, data, event) dict abort - return a:event == 'stdout' ? + return (a:event == 'stdout' || a:event == 'stderr') ? \ s:job_cb('s:job_out_cb', self, 0, join(a:data, "\n")) : \ s:job_cb('s:job_exit_cb', self, 0, a:data) endfunction -function! s:spawn(name, cmd, opts) - let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''], - \ 'new': get(a:opts, 'new', 0) } +function! s:spawn(name, spec, queue, opts) + let job = { 'name': a:name, 'spec': a:spec, 'running': 1, 'error': 0, 'lines': [''], + \ 'new': get(a:opts, 'new', 0), 'queue': copy(a:queue) } + let Item = remove(job.queue, 0) + let argv = type(Item) == s:TYPE.funcref ? call(Item, [a:spec]) : Item let s:jobs[a:name] = job - let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir, 0) : a:cmd - let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd] if s:nvim + if has_key(a:opts, 'dir') + let job.cwd = a:opts.dir + endif call extend(job, { \ 'on_stdout': function('s:nvim_cb'), + \ 'on_stderr': function('s:nvim_cb'), \ 'on_exit': function('s:nvim_cb'), \ }) let jid = s:plug_call('jobstart', argv, job) @@ -1291,9 +1459,16 @@ function! s:spawn(name, cmd, opts) \ 'Invalid arguments (or job table is full)'] endif elseif s:vim8 + let cmd = join(map(copy(argv), 'plug#shellescape(v:val, {"script": 0})')) + if has_key(a:opts, 'dir') + let cmd = s:with_cd(cmd, a:opts.dir, 0) + endif + let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd] let jid = job_start(s:is_win ? join(argv, ' ') : argv, { \ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]), + \ 'err_cb': function('s:job_cb', ['s:job_out_cb', job]), \ 'exit_cb': function('s:job_cb', ['s:job_exit_cb', job]), + \ 'err_mode': 'raw', \ 'out_mode': 'raw' \}) if job_status(jid) == 'run' @@ -1304,27 +1479,33 @@ function! s:spawn(name, cmd, opts) let job.lines = ['Failed to start job'] endif else - let job.lines = s:lines(call('s:system', [cmd])) + let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [argv, a:opts.dir] : [argv])) let job.error = v:shell_error != 0 let job.running = 0 endif endfunction function! s:reap(name) - let job = s:jobs[a:name] + let job = remove(s:jobs, a:name) if job.error call add(s:update.errors, a:name) elseif get(job, 'new', 0) let s:update.new[a:name] = 1 endif - let s:update.bar .= job.error ? 'x' : '=' - let bullet = job.error ? 'x' : '-' + let more = len(get(job, 'queue', [])) let result = job.error ? join(job.lines, "\n") : s:last_non_empty_line(job.lines) - call s:log(bullet, a:name, empty(result) ? 'OK' : result) - call s:bar() + if len(result) + call s:log(s:bullet_for(job), a:name, result) + endif - call remove(s:jobs, a:name) + if !job.error && more + let job.spec.queue = job.queue + let s:update.todo[a:name] = job.spec + else + let s:update.bar .= s:bullet_for(job, '=') + call s:bar() + endif endfunction function! s:bar() @@ -1377,6 +1558,16 @@ function! s:update_vim() call s:tick() endfunction +function! s:checkout_command(spec) + let a:spec.branch = s:git_origin_branch(a:spec) + return ['git', 'checkout', '-q', a:spec.branch, '--'] +endfunction + +function! s:merge_command(spec) + let a:spec.branch = s:git_origin_branch(a:spec) + return ['git', 'merge', '--ff-only', 'origin/'.a:spec.branch] +endfunction + function! s:tick() let pull = s:update.pull let prog = s:progress_opt(s:nvim || s:vim8) @@ -1391,18 +1582,39 @@ while 1 " Without TCO, Vim stack is bound to explode let name = keys(s:update.todo)[0] let spec = remove(s:update.todo, name) - let new = empty(globpath(spec.dir, '.git', 1)) + if get(spec, 'abort', 0) + call s:mark_aborted(name, 'Skipped') + call s:reap(name) + continue + endif - call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') - redraw + let queue = get(spec, 'queue', []) + let new = empty(globpath(spec.dir, '.git', 1)) + + if empty(queue) + call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') + redraw + endif let has_tag = has_key(spec, 'tag') - if !new + if len(queue) + call s:spawn(name, spec, queue, { 'dir': spec.dir }) + elseif !new let [error, _] = s:git_validate(spec, 0) if empty(error) if pull - let fetch_opt = (has_tag && !empty(globpath(spec.dir, '.git/shallow'))) ? '--depth 99999999' : '' - call s:spawn(name, printf('git fetch %s %s 2>&1', fetch_opt, prog), { 'dir': spec.dir }) + let cmd = s:disable_credential_helper() ? ['git', '-c', 'credential.helper=', 'fetch'] : ['git', 'fetch'] + if has_tag && !empty(globpath(spec.dir, '.git/shallow')) + call extend(cmd, ['--depth', '99999999']) + endif + if !empty(prog) + call add(cmd, prog) + endif + let queue = [cmd, split('git remote set-head origin -a')] + if !has_tag && !has_key(spec, 'commit') + call extend(queue, [function('s:checkout_command'), function('s:merge_command')]) + endif + call s:spawn(name, spec, queue, { 'dir': spec.dir }) else let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 } endif @@ -1410,12 +1622,14 @@ while 1 " Without TCO, Vim stack is bound to explode let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 } endif else - call s:spawn(name, - \ printf('git clone %s %s %s %s 2>&1', - \ has_tag ? '' : s:clone_opt, - \ prog, - \ plug#shellescape(spec.uri, {'script': 0}), - \ plug#shellescape(s:trim(spec.dir), {'script': 0})), { 'new': 1 }) + let cmd = ['git', 'clone'] + if !has_tag + call extend(cmd, s:clone_opt) + endif + if !empty(prog) + call add(cmd, prog) + endif + call s:spawn(name, spec, [extend(cmd, [spec.uri, s:trim(spec.dir)]), function('s:checkout_command'), function('s:merge_command')], { 'new': 1 }) endif if !s:jobs[name].running @@ -1452,7 +1666,7 @@ G_NVIM = vim.eval("has('nvim')") == '1' G_PULL = vim.eval('s:update.pull') == '1' G_RETRIES = int(vim.eval('get(g:, "plug_retries", 2)')) + 1 G_TIMEOUT = int(vim.eval('get(g:, "plug_timeout", 60)')) -G_CLONE_OPT = vim.eval('s:clone_opt') +G_CLONE_OPT = ' '.join(vim.eval('s:clone_opt')) G_PROGRESS = vim.eval('s:progress_opt(1)') G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads')) G_STOP = thr.Event() @@ -1989,7 +2203,7 @@ function! s:update_ruby() end } if VIM::evaluate('s:mac_gui') == 1 - clone_opt = VIM::evaluate('s:clone_opt') + clone_opt = VIM::evaluate('s:clone_opt').join(' ') progress = VIM::evaluate('s:progress_opt(1)') nthr.times do mtx.synchronize do @@ -2055,13 +2269,29 @@ function! s:shellesc_sh(arg) return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'" endfunction +" Escape the shell argument based on the shell. +" Vim and Neovim's shellescape() are insufficient. +" 1. shellslash determines whether to use single/double quotes. +" Double-quote escaping is fragile for cmd.exe. +" 2. It does not work for powershell. +" 3. It does not work for *sh shells if the command is executed +" via cmd.exe (ie. cmd.exe /c sh -c command command_args) +" 4. It does not support batchfile syntax. +" +" Accepts an optional dictionary with the following keys: +" - shell: same as Vim/Neovim 'shell' option. +" If unset, fallback to 'cmd.exe' on Windows or 'sh'. +" - script: If truthy and shell is cmd.exe, escape for batchfile syntax. function! plug#shellescape(arg, ...) + if a:arg =~# '^[A-Za-z0-9_/:.-]\+$' + return a:arg + endif let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {} let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh') let script = get(opts, 'script', 1) - if shell =~# 'cmd\.exe' + if shell =~# 'cmd\(\.exe\)\?$' return s:shellesc_cmd(a:arg, script) - elseif shell =~# 'powershell\.exe' || shell =~# 'pwsh$' + elseif s:is_powershell(shell) return s:shellesc_ps1(a:arg) endif return s:shellesc_sh(a:arg) @@ -2098,15 +2328,34 @@ endfunction function! s:with_cd(cmd, dir, ...) let script = a:0 > 0 ? a:1 : 1 - return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd) + let pwsh = s:is_powershell(&shell) + let cd = s:is_win && !pwsh ? 'cd /d' : 'cd' + let sep = pwsh ? ';' : '&&' + return printf('%s %s %s %s', cd, plug#shellescape(a:dir, {'script': script, 'shell': &shell}), sep, a:cmd) endfunction function! s:system(cmd, ...) let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd - if s:is_win + if type(a:cmd) == s:TYPE.list + " Neovim's system() supports list argument to bypass the shell + " but it cannot set the working directory for the command. + " Assume that the command does not rely on the shell. + if has('nvim') && a:0 == 0 + return system(a:cmd) + endif + let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})')) + if s:is_powershell(&shell) + let cmd = '& ' . cmd + endif + else + let cmd = a:cmd + endif + if a:0 > 0 + let cmd = s:with_cd(cmd, a:1, type(a:cmd) != s:TYPE.list) + endif + if s:is_win && type(a:cmd) != s:TYPE.list let [batchfile, cmd] = s:batchfile(cmd) endif return system(cmd) @@ -2126,18 +2375,17 @@ endfunction function! s:git_validate(spec, check_branch) let err = '' if isdirectory(a:spec.dir) - let result = s:lines(s:system('git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url', a:spec.dir)) + let result = [s:git_local_branch(a:spec.dir), s:git_origin_url(a:spec.dir)] let remote = result[-1] - if v:shell_error + if empty(remote) let err = join([remote, 'PlugClean required.'], "\n") elseif !s:compare_git_uri(remote, a:spec.uri) let err = join(['Invalid URI: '.remote, \ 'Expected: '.a:spec.uri, \ 'PlugClean required.'], "\n") elseif a:check_branch && has_key(a:spec, 'commit') - let result = s:lines(s:system('git rev-parse HEAD 2>&1', a:spec.dir)) - let sha = result[-1] - if v:shell_error + let sha = s:git_revision(a:spec.dir) + if empty(sha) let err = join(add(result, 'PlugClean required.'), "\n") elseif !s:hash_match(sha, a:spec.commit) let err = join([printf('Invalid HEAD (expected: %s, actual: %s)', @@ -2145,8 +2393,9 @@ function! s:git_validate(spec, check_branch) \ 'PlugUpdate required.'], "\n") endif elseif a:check_branch - let branch = result[0] + let current_branch = result[0] " Check tag + let origin_branch = s:git_origin_branch(a:spec) if has_key(a:spec, 'tag') let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir) if a:spec.tag !=# tag && a:spec.tag !~ '\*' @@ -2154,25 +2403,29 @@ function! s:git_validate(spec, check_branch) \ (empty(tag) ? 'N/A' : tag), a:spec.tag) endif " Check branch - elseif a:spec.branch !=# branch + elseif origin_branch !=# current_branch let err = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.', - \ branch, a:spec.branch) + \ current_branch, origin_branch) endif if empty(err) - let [ahead, behind] = split(s:lastline(s:system(printf( - \ 'git rev-list --count --left-right HEAD...origin/%s', - \ a:spec.branch), a:spec.dir)), '\t') - if !v:shell_error && ahead - if behind + let ahead_behind = split(s:lastline(s:system([ + \ 'git', 'rev-list', '--count', '--left-right', + \ printf('HEAD...origin/%s', origin_branch) + \ ], a:spec.dir)), '\t') + if v:shell_error || len(ahead_behind) != 2 + let err = "Failed to compare with the origin. The default branch might have changed.\nPlugClean required." + else + let [ahead, behind] = ahead_behind + if ahead && behind " Only mention PlugClean if diverged, otherwise it's likely to be " pushable (and probably not that messed up). let err = printf( \ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n" - \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', a:spec.branch, ahead, behind) - else + \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind) + elseif ahead let err = printf("Ahead of origin/%s by %d commit(s).\n" \ .'Cannot update until local changes are pushed.', - \ a:spec.branch, ahead) + \ origin_branch, ahead) endif endif endif @@ -2185,7 +2438,9 @@ endfunction function! s:rm_rf(dir) if isdirectory(a:dir) - call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . plug#shellescape(a:dir)) + return s:system(s:is_win + \ ? 'rmdir /S /Q '.plug#shellescape(a:dir) + \ : ['rm', '-rf', a:dir]) endif endfunction @@ -2199,7 +2454,7 @@ function! s:clean(force) let errs = {} let [cnt, total] = [0, len(g:plugs)] for [name, spec] in items(g:plugs) - if !s:is_managed(name) + if !s:is_managed(name) || get(spec, 'frozen', 0) call add(dirs, spec.dir) else let [err, clean] = s:git_validate(spec, 1) @@ -2267,6 +2522,7 @@ endfunction function! s:delete(range, force) let [l1, l2] = a:range let force = a:force + let err_count = 0 while l1 <= l2 let line = getline(l1) if line =~ '^- ' && isdirectory(line[2:]) @@ -2275,11 +2531,22 @@ function! s:delete(range, force) let answer = force ? 1 : s:ask('Delete '.line[2:].'?', 1) let force = force || answer > 1 if answer - call s:rm_rf(line[2:]) + let err = s:rm_rf(line[2:]) setlocal modifiable - call setline(l1, '~'.line[1:]) - let s:clean_count += 1 - call setline(4, printf('Removed %d directories.', s:clean_count)) + if empty(err) + call setline(l1, '~'.line[1:]) + let s:clean_count += 1 + else + delete _ + call append(l1 - 1, s:format_message('x', line[1:], err)) + let l2 += len(s:lines(err)) + let err_count += 1 + endif + let msg = printf('Removed %d directories.', s:clean_count) + if err_count > 0 + let msg .= printf(' Failed to remove %d directories.', err_count) + endif + call setline(4, msg) setlocal nomodifiable endif endif @@ -2294,7 +2561,7 @@ function! s:upgrade() let new = tmp . '/plug.vim' try - let out = s:system(printf('git clone --depth 1 %s %s', plug#shellescape(s:plug_src), plug#shellescape(tmp))) + let out = s:system(['git', 'clone', '--depth', '1', s:plug_src, tmp]) if v:shell_error return s:err('Error upgrading vim-plug: '. out) endif @@ -2419,26 +2686,34 @@ function! s:preview_commit() let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}') if empty(sha) - return + let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$') + if empty(name) + return + endif + let title = 'HEAD@{1}..' + let command = 'git diff --no-color HEAD@{1}' + else + let title = sha + let command = 'git show --no-color --pretty=medium '.sha + let name = s:find_name(line('.')) endif - let name = s:find_name(line('.')) if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir) return endif - if exists('g:plug_pwindow') && !s:is_preview_window_open() - execute g:plug_pwindow - execute 'e' sha + if !s:is_preview_window_open() + execute get(g:, 'plug_pwindow', 'vertical rightbelow new') + execute 'e' title else - execute 'pedit' sha + execute 'pedit' title wincmd P endif - setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable + setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha + let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command if s:is_win let [batchfile, cmd] = s:batchfile(cmd) endif @@ -2488,18 +2763,23 @@ function! s:diff() endif call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:') for [k, v] in plugs - let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..' - let cmd = 'git log --graph --color=never ' - \ . (s:git_version_requirement(2, 10, 0) ? '--no-show-signature ' : '') - \ . join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 'plug#shellescape(v:val)')) - if has_key(v, 'rtp') - let cmd .= ' -- '.plug#shellescape(v.rtp) - endif - let diff = s:system_chomp(cmd, v.dir) - if !empty(diff) - let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' - call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) - let cnts[origin] += 1 + let branch = s:git_origin_branch(v) + if len(branch) + let range = origin ? '..origin/'.branch : 'HEAD@{1}..' + let cmd = ['git', 'log', '--graph', '--color=never'] + if s:git_version_requirement(2, 10, 0) + call add(cmd, '--no-show-signature') + endif + call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range]) + if has_key(v, 'rtp') + call extend(cmd, ['--', v.rtp]) + endif + let diff = s:system_chomp(cmd, v.dir) + if !empty(diff) + let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' + call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) + let cnts[origin] += 1 + endif endif let bar .= '=' call s:progress_bar(2, bar, len(total)) @@ -2559,9 +2839,9 @@ function! s:snapshot(force, ...) abort 1 let anchor = line('$') - 3 let names = sort(keys(filter(copy(g:plugs), - \'has_key(v:val, "uri") && !has_key(v:val, "commit") && isdirectory(v:val.dir)'))) + \'has_key(v:val, "uri") && isdirectory(v:val.dir)'))) for name in reverse(names) - let sha = s:system_chomp('git rev-parse --short HEAD', g:plugs[name].dir) + let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir) if !empty(sha) call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha)) redraw diff --git a/.config/nvim/autoload/plug.vim.old b/.config/nvim/autoload/plug.vim.old index 52c6b2a..2c4111b 100644 --- a/.config/nvim/autoload/plug.vim.old +++ b/.config/nvim/autoload/plug.vim.old @@ -99,7 +99,13 @@ let s:mac_gui = has('gui_macvim') && has('gui_running') let s:is_win = has('win32') let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win) let s:vim8 = has('patch-8.0.0039') && exists('*job_start') -let s:me = resolve(expand(':p')) +if s:is_win && &shellslash + set noshellslash + let s:me = resolve(expand(':p')) + set shellslash +else + let s:me = resolve(expand(':p')) +endif let s:base_spec = { 'branch': 'master', 'frozen': 0 } let s:TYPE = { \ 'string': type(''), @@ -110,10 +116,42 @@ let s:TYPE = { let s:loaded = get(s:, 'loaded', {}) let s:triggers = get(s:, 'triggers', {}) +if s:is_win + function! s:plug_call(fn, ...) + let shellslash = &shellslash + try + set noshellslash + return call(a:fn, a:000) + finally + let &shellslash = shellslash + endtry + endfunction +else + function! s:plug_call(fn, ...) + return call(a:fn, a:000) + endfunction +endif + +function! s:plug_getcwd() + return s:plug_call('getcwd') +endfunction + +function! s:plug_fnamemodify(fname, mods) + return s:plug_call('fnamemodify', a:fname, a:mods) +endfunction + +function! s:plug_expand(fmt) + return s:plug_call('expand', a:fmt, 1) +endfunction + +function! s:plug_tempname() + return s:plug_call('tempname') +endfunction + function! plug#begin(...) if a:0 > 0 let s:plug_home_org = a:1 - let home = s:path(fnamemodify(expand(a:1), ':p')) + let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p')) elseif exists('g:plug_home') let home = s:path(g:plug_home) elseif !empty(&rtp) @@ -121,7 +159,7 @@ function! plug#begin(...) else return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.') endif - if fnamemodify(home, ':t') ==# 'plugin' && fnamemodify(home, ':h') ==# s:first_rtp + if s:plug_fnamemodify(home, ':t') ==# 'plugin' && s:plug_fnamemodify(home, ':h') ==# s:first_rtp return s:err('Invalid plug home. '.home.' is a standard Vim runtime path and is not allowed.') endif @@ -139,6 +177,16 @@ function! s:define_commands() if !executable('git') return s:err('`git` executable not found. Most commands will not be available. To suppress this message, prepend `silent!` to `call plug#begin(...)`.') endif + if has('win32') + \ && &shellslash + \ && (&shell =~# 'cmd\.exe' || &shell =~# 'powershell\.exe') + return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.') + endif + if !has('nvim') + \ && (has('win32') || has('win32unix')) + \ && !has('multi_byte') + return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.') + endif command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(0, []) command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(0, []) command! -nargs=0 -bar -bang PlugClean call s:clean(0) @@ -193,9 +241,17 @@ function! s:ask_no_interrupt(...) endtry endfunction +function! s:lazy(plug, opt) + return has_key(a:plug, a:opt) && + \ (empty(s:to_a(a:plug[a:opt])) || + \ !isdirectory(a:plug.dir) || + \ len(s:glob(s:rtp(a:plug), 'plugin')) || + \ len(s:glob(s:rtp(a:plug), 'after/plugin'))) +endfunction + function! plug#end() if !exists('g:plugs') - return s:err('Call plug#begin() first') + return s:err('plug#end() called without calling plug#begin() first') endif if exists('#PlugLOD') @@ -214,7 +270,7 @@ function! plug#end() continue endif let plug = g:plugs[name] - if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for') + if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for') let s:loaded[name] = 1 continue endif @@ -326,11 +382,11 @@ function! s:progress_opt(base) \ s:git_version_requirement(1, 7, 1) ? '--progress' : '' endfunction -if s:is_win - function! s:rtp(spec) - return s:path(a:spec.dir . get(a:spec, 'rtp', '')) - endfunction +function! s:rtp(spec) + return s:path(a:spec.dir . get(a:spec, 'rtp', '')) +endfunction +if s:is_win function! s:path(path) return s:trim(substitute(a:path, '/', '\', 'g')) endfunction @@ -342,11 +398,33 @@ if s:is_win function! s:is_local_plug(repo) return a:repo =~? '^[a-z]:\|^[%~]' endfunction -else - function! s:rtp(spec) - return s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) + + " Copied from fzf + function! s:wrap_cmds(cmds) + let cmds = [ + \ '@echo off', + \ 'setlocal enabledelayedexpansion'] + \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds]) + \ + ['endlocal'] + if has('iconv') + if !exists('s:codepage') + let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0) + endif + return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage)) + endif + return map(cmds, 'v:val."\r"') endfunction + function! s:batchfile(cmd) + let batchfile = s:plug_tempname().'.bat' + call writefile(s:wrap_cmds(a:cmd), batchfile) + let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0}) + if &shell =~# 'powershell\.exe' + let cmd = '& ' . cmd + endif + return [batchfile, cmd] + endfunction +else function! s:path(path) return s:trim(a:path) endfunction @@ -426,8 +504,8 @@ endfunction function! s:dobufread(names) for name in a:names - let path = s:rtp(g:plugs[name]).'/**' - for dir in ['ftdetect', 'ftplugin'] + let path = s:rtp(g:plugs[name]) + for dir in ['ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin'] if len(finddir(dir, path)) if exists('#BufRead') doautocmd BufRead @@ -546,7 +624,7 @@ function! plug#(repo, ...) try let repo = s:trim(a:repo) let opts = a:0 == 1 ? s:parse_options(a:1) : s:base_spec - let name = get(opts, 'as', fnamemodify(repo, ':t:s?\.git$??')) + let name = get(opts, 'as', s:plug_fnamemodify(repo, ':t:s?\.git$??')) let spec = extend(s:infer_properties(name, repo), opts) if !has_key(g:plugs, name) call add(g:plugs_order, name) @@ -566,7 +644,7 @@ function! s:parse_options(arg) elseif type == s:TYPE.dict call extend(opts, a:arg) if has_key(opts, 'dir') - let opts.dir = s:dirpath(expand(opts.dir)) + let opts.dir = s:dirpath(s:plug_expand(opts.dir)) endif else throw 'Invalid argument type (expected: string or dictionary)' @@ -577,7 +655,7 @@ endfunction function! s:infer_properties(name, repo) let repo = a:repo if s:is_local_plug(repo) - return { 'dir': s:dirpath(expand(repo)) } + return { 'dir': s:dirpath(s:plug_expand(repo)) } else if repo =~ ':' let uri = repo @@ -730,7 +808,7 @@ function! s:finish_bindings() endfunction function! s:prepare(...) - if empty(getcwd()) + if empty(s:plug_getcwd()) throw 'Invalid current working directory. Cannot proceed.' endif @@ -763,6 +841,9 @@ function! s:prepare(...) execute 'silent! unmap ' k endfor setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell + if exists('+colorcolumn') + setlocal colorcolumn= + endif setf vim-plug if exists('g:syntax_on') call s:syntax() @@ -783,31 +864,28 @@ endfunction function! s:chsh(swap) let prev = [&shell, &shellcmdflag, &shellredir] - if s:is_win - set shell=cmd.exe shellcmdflag=/c shellredir=>%s\ 2>&1 - elseif a:swap + if !s:is_win && a:swap set shell=sh shellredir=>%s\ 2>&1 endif return prev endfunction function! s:bang(cmd, ...) + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(a:0) " FIXME: Escaping is incomplete. We could use shellescape with eval, " but it won't work on Windows. let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd if s:is_win - let batchfile = tempname().'.bat' - call writefile(["@echo off\r", cmd . "\r"], batchfile) - let cmd = batchfile + let [batchfile, cmd] = s:batchfile(cmd) endif let g:_plug_bang = (s:is_win && has('gui_running') ? 'silent ' : '').'!'.escape(cmd, '#!%') execute "normal! :execute g:_plug_bang\\" finally unlet g:_plug_bang let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -886,7 +964,7 @@ function! s:checkout(spec) let output = s:system('git rev-parse HEAD', a:spec.dir) if !v:shell_error && !s:hash_match(sha, s:lines(output)[0]) let output = s:system( - \ 'git fetch --depth 999999 && git checkout '.s:esc(sha).' --', a:spec.dir) + \ 'git fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir) endif return output endfunction @@ -1004,10 +1082,12 @@ function! s:update_impl(pull, force, args) abort let s:clone_opt = get(g:, 'plug_shallow', 1) ? \ '--depth 1' . (s:git_version_requirement(1, 7, 10) ? ' --no-single-branch' : '') : '' - if has('win32unix') + if has('win32unix') || has('wsl') let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input' endif + let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : '' + " Python version requirement (>= 2.7) if python && !has('python3') && !ruby && !use_job && s:update.threads > 1 redir => pyv @@ -1081,7 +1161,7 @@ function! s:update_finish() elseif has_key(spec, 'tag') let tag = spec.tag if tag =~ '\*' - let tags = s:lines(s:system('git tag --list '.s:shellesc(tag).' --sort -version:refname 2>&1', spec.dir)) + let tags = s:lines(s:system('git tag --list '.plug#shellescape(tag).' --sort -version:refname 2>&1', spec.dir)) if !v:shell_error && !empty(tags) let tag = tags[0] call s:log4(name, printf('Latest tag for %s -> %s', spec.tag, tag)) @@ -1089,17 +1169,17 @@ function! s:update_finish() endif endif call s:log4(name, 'Checking out '.tag) - let out = s:system('git checkout -q '.s:esc(tag).' -- 2>&1', spec.dir) + let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir) else - let branch = s:esc(get(spec, 'branch', 'master')) - call s:log4(name, 'Merging origin/'.branch) - let out = s:system('git checkout -q '.branch.' -- 2>&1' - \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only origin/'.branch.' 2>&1')), spec.dir) + let branch = get(spec, 'branch', 'master') + call s:log4(name, 'Merging origin/'.s:esc(branch)) + let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1' + \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir) endif if !v:shell_error && filereadable(spec.dir.'/.gitmodules') && \ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir)) call s:log4(name, 'Updating submodules. This may take a while.') - let out .= s:bang('git submodule update --init --recursive 2>&1', spec.dir) + let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir) endif let msg = s:format_message(v:shell_error ? 'x': '-', name, out) if v:shell_error @@ -1138,7 +1218,7 @@ function! s:job_abort() silent! call job_stop(j.jobid) endif if j.new - call s:system('rm -rf ' . s:shellesc(g:plugs[name].dir)) + call s:rm_rf(g:plugs[name].dir) endif endfor let s:jobs = {} @@ -1191,22 +1271,17 @@ endfunction function! s:spawn(name, cmd, opts) let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''], - \ 'batchfile': (s:is_win && (s:nvim || s:vim8)) ? tempname().'.bat' : '', \ 'new': get(a:opts, 'new', 0) } let s:jobs[a:name] = job - let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir) : a:cmd - if !empty(job.batchfile) - call writefile(["@echo off\r", cmd . "\r"], job.batchfile) - let cmd = job.batchfile - endif - let argv = add(s:is_win ? ['cmd', '/c'] : ['sh', '-c'], cmd) + let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir, 0) : a:cmd + let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd] if s:nvim call extend(job, { \ 'on_stdout': function('s:nvim_cb'), \ 'on_exit': function('s:nvim_cb'), \ }) - let jid = jobstart(argv, job) + let jid = s:plug_call('jobstart', argv, job) if jid > 0 let job.jobid = jid else @@ -1249,9 +1324,6 @@ function! s:reap(name) call s:log(bullet, a:name, empty(result) ? 'OK' : result) call s:bar() - if has_key(job, 'batchfile') && !empty(job.batchfile) - call delete(job.batchfile) - endif call remove(s:jobs, a:name) endfunction @@ -1266,9 +1338,10 @@ function! s:bar() endfunction function! s:logpos(name) - for i in range(4, line('$')) + let max = line('$') + for i in range(4, max > 4 ? max : 4) if getline(i) =~# '^[-+x*] '.a:name.':' - for j in range(i + 1, line('$')) + for j in range(i + 1, max > 5 ? max : 5) if getline(j) !~ '^ ' return [i, j - 1] endif @@ -1318,7 +1391,7 @@ while 1 " Without TCO, Vim stack is bound to explode let name = keys(s:update.todo)[0] let spec = remove(s:update.todo, name) - let new = !isdirectory(spec.dir) + let new = empty(globpath(spec.dir, '.git', 1)) call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') redraw @@ -1341,8 +1414,8 @@ while 1 " Without TCO, Vim stack is bound to explode \ printf('git clone %s %s %s %s 2>&1', \ has_tag ? '' : s:clone_opt, \ prog, - \ s:shellesc(spec.uri), - \ s:shellesc(s:trim(spec.dir))), { 'new': 1 }) + \ plug#shellescape(spec.uri, {'script': 0}), + \ plug#shellescape(s:trim(spec.dir), {'script': 0})), { 'new': 1 }) endif if !s:jobs[name].running @@ -1969,19 +2042,29 @@ function! s:update_ruby() EOF endfunction -function! s:shellesc_cmd(arg) - let escaped = substitute(a:arg, '[&|<>()@^]', '^&', 'g') - let escaped = substitute(escaped, '%', '%%', 'g') - let escaped = substitute(escaped, '"', '\\^&', 'g') - let escaped = substitute(escaped, '\(\\\+\)\(\\^\)', '\1\1\2', 'g') - return '^"'.substitute(escaped, '\(\\\+\)$', '\1\1', '').'^"' +function! s:shellesc_cmd(arg, script) + let escaped = substitute('"'.a:arg.'"', '[&|<>()@^!"]', '^&', 'g') + return substitute(escaped, '%', (a:script ? '%' : '^') . '&', 'g') endfunction -function! s:shellesc(arg) - if &shell =~# 'cmd.exe$' - return s:shellesc_cmd(a:arg) +function! s:shellesc_ps1(arg) + return "'".substitute(escape(a:arg, '\"'), "'", "''", 'g')."'" +endfunction + +function! s:shellesc_sh(arg) + return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'" +endfunction + +function! plug#shellescape(arg, ...) + let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {} + let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh') + let script = get(opts, 'script', 1) + if shell =~# 'cmd\.exe' + return s:shellesc_cmd(a:arg, script) + elseif shell =~# 'powershell\.exe' || shell =~# 'pwsh$' + return s:shellesc_ps1(a:arg) endif - return shellescape(a:arg) + return s:shellesc_sh(a:arg) endfunction function! s:glob_dir(path) @@ -2013,23 +2096,23 @@ function! s:format_message(bullet, name, message) endif endfunction -function! s:with_cd(cmd, dir) - return printf('cd%s %s && %s', s:is_win ? ' /d' : '', s:shellesc(a:dir), a:cmd) +function! s:with_cd(cmd, dir, ...) + let script = a:0 > 0 ? a:1 : 1 + return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd) endfunction function! s:system(cmd, ...) + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd if s:is_win - let batchfile = tempname().'.bat' - call writefile(["@echo off\r", cmd . "\r"], batchfile) - let cmd = batchfile + let [batchfile, cmd] = s:batchfile(cmd) endif - return system(s:is_win ? '('.cmd.')' : cmd) + return system(cmd) finally let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -2102,7 +2185,7 @@ endfunction function! s:rm_rf(dir) if isdirectory(a:dir) - call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(a:dir)) + call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . plug#shellescape(a:dir)) endif endfunction @@ -2134,7 +2217,7 @@ function! s:clean(force) let allowed = {} for dir in dirs - let allowed[s:dirpath(fnamemodify(dir, ':h:h'))] = 1 + let allowed[s:dirpath(s:plug_fnamemodify(dir, ':h:h'))] = 1 let allowed[dir] = 1 for child in s:glob_dir(dir) let allowed[child] = 1 @@ -2207,11 +2290,11 @@ endfunction function! s:upgrade() echo 'Downloading the latest version of vim-plug' redraw - let tmp = tempname() + let tmp = s:plug_tempname() let new = tmp . '/plug.vim' try - let out = s:system(printf('git clone --depth 1 %s %s', s:plug_src, tmp)) + let out = s:system(printf('git clone --depth 1 %s %s', plug#shellescape(s:plug_src), plug#shellescape(tmp))) if v:shell_error return s:err('Error upgrading vim-plug: '. out) endif @@ -2352,18 +2435,17 @@ function! s:preview_commit() wincmd P endif setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable + let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = 'cd '.s:shellesc(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha + let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha if s:is_win - let batchfile = tempname().'.bat' - call writefile(["@echo off\r", cmd . "\r"], batchfile) - let cmd = batchfile + let [batchfile, cmd] = s:batchfile(cmd) endif execute 'silent %!' cmd finally let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd] - if s:is_win + if s:is_win && filereadable(batchfile) call delete(batchfile) endif endtry @@ -2407,7 +2489,13 @@ function! s:diff() call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:') for [k, v] in plugs let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..' - let diff = s:system_chomp('git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)')), v.dir) + let cmd = 'git log --graph --color=never ' + \ . (s:git_version_requirement(2, 10, 0) ? '--no-show-signature ' : '') + \ . join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 'plug#shellescape(v:val)')) + if has_key(v, 'rtp') + let cmd .= ' -- '.plug#shellescape(v.rtp) + endif + let diff = s:system_chomp(cmd, v.dir) if !empty(diff) let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) @@ -2453,7 +2541,7 @@ function! s:revert() return endif - call s:system('git reset --hard HEAD@{1} && git checkout '.s:esc(g:plugs[name].branch).' --', g:plugs[name].dir) + call s:system('git reset --hard HEAD@{1} && git checkout '.plug#shellescape(g:plugs[name].branch).' --', g:plugs[name].dir) setlocal modifiable normal! "_dap setlocal nomodifiable @@ -2481,7 +2569,7 @@ function! s:snapshot(force, ...) abort endfor if a:0 > 0 - let fn = expand(a:1) + let fn = s:plug_expand(a:1) if filereadable(fn) && !(a:force || s:ask(a:1.' already exists. Overwrite?')) return endif @@ -2507,3 +2595,4 @@ endif let &cpo = s:cpo_save unlet s:cpo_save + diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index c7c2d4f..cee4a3f 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -1,8 +1,13 @@ +set mouse= call plug#begin('~/.config/nvim/plugged') " Plugins { - " ctrl-p is a fuzzy file finder. - Plug 'kien/ctrlp.vim' + " neo-tree is a file finder. + "Plug 'nvim-neo-tree/neo-tree.nvim' + " Requirement for neo-tree + "Plug 'nvim-lua/plenary.nvim' + "Plug 'nvim-tree/nvim-web-devicons' + "Plug 'MunifTanjim/nui.nvim' " airline is a better status line and a tab-bar for nvim. Plug 'bling/vim-airline' " gruvbox colorscheme. Seems to work the best for me. @@ -12,7 +17,18 @@ call plug#begin('~/.config/nvim/plugged') "autocompletion Plugin for Code autocomplete Plug 'zchee/deoplete-jedi' " Left side File Tree - "Plug 'scrooloose/nerdtree' + Plug 'scrooloose/nerdtree' + " Adds filetype-specific icons to NERDTree files and folders, + Plug 'ryanoasis/vim-devicons' + " Adds syntax highlighting to NERDTree based on filetype. + Plug 'tiagofumo/vim-nerdtree-syntax-highlight' + " + " fzf fuzzy finder for the current directory + Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } + " whichkey shows with space which keys you can press + Plug 'folke/which-key.nvim' + " firenvim ist ein socket um den browser editor durch nvim zu ersetzen + Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } } " install with nvim +PlugInstall +qall " update with nvim +PlugUpgrade +PlugUpdate +PlugClean +qall " you can also update it in nvim with syntax autocompletion and stuff - simply @@ -210,6 +226,12 @@ let mapleader="\" " } " Plugin Settings { + " Plug { + autocmd VimEnter * + \ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) + \| PlugInstall --sync | q + \| endif + " } " Airline { let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#buffer_idx_mode = 1 @@ -224,14 +246,6 @@ let mapleader="\" let g:airline_right_alt_sep = '' let g:airline_theme= 'gruvbox' " } - " CtrlP { - " Open file menu - nnoremap o :CtrlP - " Open buffer menu - nnoremap b :CtrlPBuffer - " Open most recently used files - nnoremap f :CtrlPMRUFiles - " } " neomake { autocmd! BufWritePost * Neomake nnoremap l :lopen diff --git a/.config/nvim/nvimrc b/.config/nvim/nvimrc deleted file mode 100644 index 78271f0..0000000 Binary files a/.config/nvim/nvimrc and /dev/null differ diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add deleted file mode 100644 index ae1b13f..0000000 Binary files a/.config/nvim/spell/en.utf-8.add and /dev/null differ diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl deleted file mode 100644 index b3e2758..0000000 Binary files a/.config/nvim/spell/en.utf-8.add.spl and /dev/null differ diff --git a/.config/plasma-org.kde.plasma.desktop-appletsrc b/.config/plasma-org.kde.plasma.desktop-appletsrc new file mode 100644 index 0000000..8b41c3e --- /dev/null +++ b/.config/plasma-org.kde.plasma.desktop-appletsrc @@ -0,0 +1,753 @@ +[ActionPlugins][0] +MiddleButton;NoModifier=org.kde.paste +RightButton;NoModifier=org.kde.contextmenu + +[ActionPlugins][1] +RightButton;NoModifier=org.kde.contextmenu + +[Containments][287] +ItemGeometries-1024x768= +ItemGeometries-2560x1440= +ItemGeometriesHorizontal= +activityId=af3b6c4e-6eaf-4bea-857d-4860feb3cd94 +formfactor=0 +immutability=1 +lastScreen=0 +location=0 +plugin=org.kde.plasma.folder +wallpaperplugin=org.kde.image + +[Containments][287][General] +positions={"1024x768":[],"2560x1440":[]} + +[Containments][287][Wallpaper][org.kde.image][General] +Image=/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/Free-HD-Gif-Wallpapers.gif +SlidePaths=/home/templis/.local/share/wallpapers/,/usr/share/wallpapers/ + +[Containments][288] +ItemGeometries-1440x2560= +ItemGeometries-2560x1440= +ItemGeometriesHorizontal= +ItemGeometriesVertical= +activityId=af3b6c4e-6eaf-4bea-857d-4860feb3cd94 +formfactor=0 +immutability=1 +lastScreen=1 +location=0 +plugin=org.kde.plasma.folder +wallpaperplugin=org.kde.image + +[Containments][288][General] +ToolBoxButtonState=topcenter +ToolBoxButtonX=324 +positions={"1440x2560":[]} + +[Containments][288][Wallpaper][org.kde.image][General] +Image=/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/Free-HD-Gif-Wallpapers.gif +SlidePaths=/home/templis/.local/share/wallpapers/,/usr/share/wallpapers/ + +[Containments][289] +ItemGeometries-1440x2560= +ItemGeometries-2560x1440= +ItemGeometriesHorizontal= +ItemGeometriesVertical= +activityId=af3b6c4e-6eaf-4bea-857d-4860feb3cd94 +formfactor=0 +immutability=1 +lastScreen=2 +location=0 +plugin=org.kde.plasma.folder +wallpaperplugin=org.kde.image + +[Containments][289][General] +ToolBoxButtonState=topcenter +ToolBoxButtonX=529 +positions={"2560x1440":[]} + +[Containments][289][Wallpaper][org.kde.image][General] +Image=/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/Free-HD-Gif-Wallpapers.gif +SlidePaths=/home/templis/.local/share/wallpapers/,/usr/share/wallpapers/ + +[Containments][290] +ItemGeometries-1920x1080= +ItemGeometriesHorizontal= +activityId=af3b6c4e-6eaf-4bea-857d-4860feb3cd94 +formfactor=0 +immutability=1 +lastScreen=3 +location=0 +plugin=org.kde.plasma.folder +wallpaperplugin=org.kde.image + +[Containments][290][General] +ToolBoxButtonState=topcenter +ToolBoxButtonX=209 +positions={"1920x1080":[]} + +[Containments][290][Wallpaper][org.kde.image][General] +Image=/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/Free-HD-Gif-Wallpapers.gif +SlidePaths=/home/templis/.local/share/wallpapers/,/usr/share/wallpapers/ + +[Containments][291] +activityId= +formfactor=2 +immutability=1 +lastScreen=0 +location=4 +plugin=org.kde.panel +wallpaperplugin=org.kde.image + +[Containments][291][Applets][292] +immutability=1 +plugin=org.kde.plasma.kickoff + +[Containments][291][Applets][292][Configuration] +popupHeight=516 +popupWidth=691 + +[Containments][291][Applets][292][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][291][Applets][292][Configuration][General] +favoritesPortedToKAstats=true +icon=distributor-logo-archlinux +systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown + +[Containments][291][Applets][293] +immutability=1 +plugin=org.kde.plasma.pager + +[Containments][291][Applets][294] +immutability=1 +plugin=org.kde.plasma.icontasks + +[Containments][291][Applets][294][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][291][Applets][294][Configuration][General] +launchers=applications:systemsettings.desktop,preferred://filemanager +showOnlyCurrentActivity=false +showOnlyCurrentDesktop=false +showOnlyCurrentScreen=true +wheelSkipMinimized=false + +[Containments][291][Applets][296] +activityId= +formfactor=2 +immutability=1 +lastScreen=0 +location=4 +plugin=org.kde.plasma.systemtray +popupHeight=438 +popupWidth=438 +wallpaperplugin=org.kde.image + +[Containments][291][Applets][296][Applets][358] +immutability=1 +plugin=org.kde.plasma.clipboard + +[Containments][291][Applets][296][Applets][359] +immutability=1 +plugin=org.kde.plasma.devicenotifier + +[Containments][291][Applets][296][Applets][360] +immutability=1 +plugin=org.kde.plasma.manage-inputmethod + +[Containments][291][Applets][296][Applets][361] +immutability=1 +plugin=org.kde.plasma.notifications + +[Containments][291][Applets][296][Applets][362] +immutability=1 +plugin=org.kde.plasma.keyboardindicator + +[Containments][291][Applets][296][Applets][363] +immutability=1 +plugin=org.kde.plasma.weather + +[Containments][291][Applets][296][Applets][364] +immutability=1 +plugin=org.kde.plasma.keyboardlayout + +[Containments][291][Applets][296][Applets][365] +immutability=1 +plugin=org.kde.plasma.volume + +[Containments][291][Applets][296][Applets][365][Configuration][General] +migrated=true + +[Containments][291][Applets][296][Applets][366] +immutability=1 +plugin=org.kde.plasma.vault + +[Containments][291][Applets][296][Applets][367] +immutability=1 +plugin=org.kde.plasma.cameraindicator + +[Containments][291][Applets][296][Applets][368] +immutability=1 +plugin=org.kde.plasma.printmanager + +[Containments][291][Applets][296][Applets][369] +immutability=1 +plugin=org.kde.kdeconnect + +[Containments][291][Applets][296][Applets][370] +immutability=1 +plugin=org.kde.kscreen + +[Containments][291][Applets][296][Applets][371] +immutability=1 +plugin=org.kde.plasma.battery + +[Containments][291][Applets][296][Applets][372] +immutability=1 +plugin=org.kde.plasma.brightness + +[Containments][291][Applets][296][Applets][374] +immutability=1 +plugin=org.kde.plasma.mediacontroller + +[Containments][291][Applets][296][Applets][446] +immutability=1 +plugin=org.kde.plasma.bluetooth + +[Containments][291][Applets][296][Applets][447] +immutability=1 +plugin=org.kde.plasma.networkmanagement + +[Containments][291][Applets][296][Applets][447][Configuration][General] +currentDetailsTab=details + +[Containments][291][Applets][296][ConfigDialog] +DialogHeight=630 +DialogWidth=810 + +[Containments][291][Applets][296][General] +extraItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather +knownItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather + +[Containments][291][Applets][307] +immutability=1 +plugin=org.kde.plasma.digitalclock + +[Containments][291][Applets][307][Configuration] +popupHeight=456 +popupWidth=810 + +[Containments][291][Applets][307][Configuration][Appearance] +enabledCalendarPlugins=holidaysevents +firstDayOfWeek=1 +fontWeight=400 +showWeekNumbers=true + +[Containments][291][Applets][307][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][291][Applets][464] +immutability=1 +plugin=org.kde.plasma.windowlist + +[Containments][291][Applets][464][Configuration] +popupHeight=400 +popupWidth=560 + +[Containments][291][Applets][465] +immutability=1 +plugin=org.kde.plasma.windowlist + +[Containments][291][Applets][465][Configuration] +popupHeight=400 +popupWidth=560 + +[Containments][291][General] +AppletOrder=292;293;294;465;296;307;464 + +[Containments][375] +activityId= +formfactor=2 +immutability=1 +lastScreen=2 +location=4 +plugin=org.kde.panel +wallpaperplugin=org.kde.image + +[Containments][375][Applets][376] +immutability=1 +plugin=org.kde.plasma.kickoff + +[Containments][375][Applets][376][Configuration] +popupHeight=510 +popupWidth=677 + +[Containments][375][Applets][376][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][375][Applets][376][Configuration][General] +favoritesPortedToKAstats=true +icon=start-here-archlinux +systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown + +[Containments][375][Applets][376][Configuration][Shortcuts] +global=Alt+F1 + +[Containments][375][Applets][377] +immutability=1 +plugin=org.kde.plasma.pager + +[Containments][375][Applets][379] +immutability=1 +plugin=org.kde.plasma.marginsseparator + +[Containments][375][Applets][379][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][375][Applets][380] +activityId= +formfactor=2 +immutability=1 +lastScreen=2 +location=4 +plugin=org.kde.plasma.systemtray +popupHeight=432 +popupWidth=432 +wallpaperplugin=org.kde.image + +[Containments][375][Applets][380][Applets][382] +immutability=1 +plugin=org.kde.plasma.clipboard + +[Containments][375][Applets][380][Applets][383] +immutability=1 +plugin=org.kde.plasma.devicenotifier + +[Containments][375][Applets][380][Applets][384] +immutability=1 +plugin=org.kde.plasma.manage-inputmethod + +[Containments][375][Applets][380][Applets][385] +immutability=1 +plugin=org.kde.plasma.notifications + +[Containments][375][Applets][380][Applets][386] +immutability=1 +plugin=org.kde.plasma.keyboardindicator + +[Containments][375][Applets][380][Applets][387] +immutability=1 +plugin=org.kde.plasma.weather + +[Containments][375][Applets][380][Applets][388] +immutability=1 +plugin=org.kde.plasma.keyboardlayout + +[Containments][375][Applets][380][Applets][389] +immutability=1 +plugin=org.kde.plasma.volume + +[Containments][375][Applets][380][Applets][389][Configuration][General] +migrated=true + +[Containments][375][Applets][380][Applets][390] +immutability=1 +plugin=org.kde.plasma.vault + +[Containments][375][Applets][380][Applets][391] +immutability=1 +plugin=org.kde.plasma.cameraindicator + +[Containments][375][Applets][380][Applets][392] +immutability=1 +plugin=org.kde.plasma.printmanager + +[Containments][375][Applets][380][Applets][395] +immutability=1 +plugin=org.kde.kdeconnect + +[Containments][375][Applets][380][Applets][396] +immutability=1 +plugin=org.kde.kscreen + +[Containments][375][Applets][380][Applets][397] +immutability=1 +plugin=org.kde.plasma.mediacontroller + +[Containments][375][Applets][380][Applets][398] +immutability=1 +plugin=org.kde.plasma.bluetooth + +[Containments][375][Applets][380][Applets][399] +immutability=1 +plugin=org.kde.plasma.networkmanagement + +[Containments][375][Applets][380][Applets][451] +immutability=1 +plugin=org.kde.plasma.battery + +[Containments][375][Applets][380][Applets][452] +immutability=1 +plugin=org.kde.plasma.brightness + +[Containments][375][Applets][380][General] +extraItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather +knownItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather + +[Containments][375][Applets][393] +immutability=1 +plugin=org.kde.plasma.digitalclock + +[Containments][375][Applets][393][Configuration] +popupHeight=451 +popupWidth=560 + +[Containments][375][Applets][394] +immutability=1 +plugin=org.kde.plasma.showdesktop + +[Containments][375][Applets][394][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][375][Applets][458] +immutability=1 +plugin=org.kde.plasma.icontasks + +[Containments][375][Applets][458][Configuration] +popupHeight=400 +popupWidth=560 + +[Containments][375][Applets][458][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][375][Applets][458][Configuration][General] +interactiveMute=false +launchers=preferred://filemanager,preferred://browser +showOnlyCurrentScreen=true +wheelEnabled=TaskOnly + +[Containments][375][General] +AppletOrder=376;458;377;379;380;393;394 + +[Containments][400] +activityId= +formfactor=2 +immutability=1 +lastScreen=1 +location=4 +plugin=org.kde.panel +wallpaperplugin=org.kde.image + +[Containments][400][Applets][401] +immutability=1 +plugin=org.kde.plasma.kickoff + +[Containments][400][Applets][401][Configuration] +popupHeight=510 +popupWidth=677 + +[Containments][400][Applets][401][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][400][Applets][401][Configuration][General] +favoritesPortedToKAstats=true +icon=distributor-logo-archlinux +systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown + +[Containments][400][Applets][401][Configuration][Shortcuts] +global=Alt+F1 + +[Containments][400][Applets][402] +immutability=1 +plugin=org.kde.plasma.pager + +[Containments][400][Applets][403] +immutability=1 +plugin=org.kde.plasma.icontasks + +[Containments][400][Applets][403][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][400][Applets][403][Configuration][General] +interactiveMute=false +launchers=preferred://filemanager +showOnlyCurrentActivity=false +showOnlyCurrentDesktop=false +showOnlyCurrentScreen=true + +[Containments][400][Applets][404] +immutability=1 +plugin=org.kde.plasma.marginsseparator + +[Containments][400][Applets][405] +activityId= +formfactor=2 +immutability=1 +lastScreen=1 +location=4 +plugin=org.kde.plasma.systemtray +popupHeight=432 +popupWidth=432 +wallpaperplugin=org.kde.image + +[Containments][400][Applets][405][Applets][407] +immutability=1 +plugin=org.kde.plasma.clipboard + +[Containments][400][Applets][405][Applets][408] +immutability=1 +plugin=org.kde.plasma.devicenotifier + +[Containments][400][Applets][405][Applets][409] +immutability=1 +plugin=org.kde.plasma.manage-inputmethod + +[Containments][400][Applets][405][Applets][410] +immutability=1 +plugin=org.kde.plasma.notifications + +[Containments][400][Applets][405][Applets][411] +immutability=1 +plugin=org.kde.plasma.keyboardindicator + +[Containments][400][Applets][405][Applets][412] +immutability=1 +plugin=org.kde.plasma.weather + +[Containments][400][Applets][405][Applets][413] +immutability=1 +plugin=org.kde.plasma.keyboardlayout + +[Containments][400][Applets][405][Applets][414] +immutability=1 +plugin=org.kde.plasma.volume + +[Containments][400][Applets][405][Applets][414][Configuration][General] +migrated=true + +[Containments][400][Applets][405][Applets][415] +immutability=1 +plugin=org.kde.plasma.vault + +[Containments][400][Applets][405][Applets][416] +immutability=1 +plugin=org.kde.plasma.cameraindicator + +[Containments][400][Applets][405][Applets][417] +immutability=1 +plugin=org.kde.plasma.printmanager + +[Containments][400][Applets][405][Applets][420] +immutability=1 +plugin=org.kde.kdeconnect + +[Containments][400][Applets][405][Applets][421] +immutability=1 +plugin=org.kde.kscreen + +[Containments][400][Applets][405][Applets][422] +immutability=1 +plugin=org.kde.plasma.mediacontroller + +[Containments][400][Applets][405][Applets][423] +immutability=1 +plugin=org.kde.plasma.bluetooth + +[Containments][400][Applets][405][Applets][424] +immutability=1 +plugin=org.kde.plasma.networkmanagement + +[Containments][400][Applets][405][Applets][450] +immutability=1 +plugin=org.kde.plasma.battery + +[Containments][400][Applets][405][Applets][451] +immutability=1 +plugin=org.kde.plasma.brightness + +[Containments][400][Applets][405][General] +extraItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather +knownItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather + +[Containments][400][Applets][418] +immutability=1 +plugin=org.kde.plasma.digitalclock + +[Containments][400][Applets][418][Configuration] +popupHeight=451 +popupWidth=560 + +[Containments][400][Applets][419] +immutability=1 +plugin=org.kde.plasma.showdesktop + +[Containments][400][General] +AppletOrder=401;402;403;404;405;418;419 + +[Containments][425] +activityId= +formfactor=2 +immutability=1 +lastScreen=3 +location=4 +plugin=org.kde.panel +wallpaperplugin=org.kde.image + +[Containments][425][Applets][426] +immutability=1 +plugin=org.kde.plasma.kickoff + +[Containments][425][Applets][426][Configuration] +popupHeight=510 +popupWidth=677 + +[Containments][425][Applets][426][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][425][Applets][426][Configuration][General] +favoritesPortedToKAstats=true +icon=distributor-logo-archlinux +systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown + +[Containments][425][Applets][426][Configuration][Shortcuts] +global=Alt+F1 + +[Containments][425][Applets][427] +immutability=1 +plugin=org.kde.plasma.pager + +[Containments][425][Applets][428] +immutability=1 +plugin=org.kde.plasma.icontasks + +[Containments][425][Applets][428][Configuration][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][425][Applets][428][Configuration][General] +launchers= +showOnlyCurrentActivity=false +showOnlyCurrentDesktop=false +showOnlyCurrentScreen=true + +[Containments][425][Applets][429] +immutability=1 +plugin=org.kde.plasma.marginsseparator + +[Containments][425][Applets][430] +activityId= +formfactor=2 +immutability=1 +lastScreen=3 +location=4 +plugin=org.kde.plasma.systemtray +popupHeight=432 +popupWidth=432 +wallpaperplugin=org.kde.image + +[Containments][425][Applets][430][Applets][432] +immutability=1 +plugin=org.kde.plasma.clipboard + +[Containments][425][Applets][430][Applets][433] +immutability=1 +plugin=org.kde.plasma.devicenotifier + +[Containments][425][Applets][430][Applets][434] +immutability=1 +plugin=org.kde.plasma.manage-inputmethod + +[Containments][425][Applets][430][Applets][435] +immutability=1 +plugin=org.kde.plasma.notifications + +[Containments][425][Applets][430][Applets][436] +immutability=1 +plugin=org.kde.plasma.keyboardindicator + +[Containments][425][Applets][430][Applets][437] +immutability=1 +plugin=org.kde.plasma.weather + +[Containments][425][Applets][430][Applets][438] +immutability=1 +plugin=org.kde.plasma.keyboardlayout + +[Containments][425][Applets][430][Applets][439] +immutability=1 +plugin=org.kde.plasma.volume + +[Containments][425][Applets][430][Applets][439][Configuration][General] +migrated=true + +[Containments][425][Applets][430][Applets][440] +immutability=1 +plugin=org.kde.plasma.vault + +[Containments][425][Applets][430][Applets][441] +immutability=1 +plugin=org.kde.plasma.cameraindicator + +[Containments][425][Applets][430][Applets][442] +immutability=1 +plugin=org.kde.plasma.printmanager + +[Containments][425][Applets][430][Applets][443] +immutability=1 +plugin=org.kde.kdeconnect + +[Containments][425][Applets][430][Applets][444] +immutability=1 +plugin=org.kde.kscreen + +[Containments][425][Applets][430][Applets][445] +immutability=1 +plugin=org.kde.plasma.battery + +[Containments][425][Applets][430][Applets][446] +immutability=1 +plugin=org.kde.plasma.brightness + +[Containments][425][Applets][430][Applets][447] +immutability=1 +plugin=org.kde.plasma.mediacontroller + +[Containments][425][Applets][430][Applets][448] +immutability=1 +plugin=org.kde.plasma.bluetooth + +[Containments][425][Applets][430][Applets][449] +immutability=1 +plugin=org.kde.plasma.networkmanagement + +[Containments][425][Applets][430][General] +extraItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather +knownItems=org.kde.plasma.bluetooth,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.plasma.keyboardindicator,org.kde.kscreen,org.kde.plasma.keyboardlayout,org.kde.plasma.networkmanagement,org.kde.plasma.volume,org.kde.plasma.vault,org.kde.plasma.brightness,org.kde.plasma.cameraindicator,org.kde.plasma.printmanager,org.kde.kdeconnect,org.kde.plasma.weather + +[Containments][425][Applets][443] +immutability=1 +plugin=org.kde.plasma.digitalclock + +[Containments][425][Applets][443][Configuration] +popupHeight=451 +popupWidth=560 + +[Containments][425][Applets][444] +immutability=1 +plugin=org.kde.plasma.showdesktop + +[Containments][425][General] +AppletOrder=426;427;428;429;430;443;444 + +[ScreenMapping] +itemsOnDisabledScreens= +screenMapping=desktop:/The Beginner's Guide.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Steam Linux Runtime 3.0 (sniper).desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Torchlight Infinite.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Vampire Survivors.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Steam Linux Runtime 1.0 (scout).desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/steam.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Proton Hotfix.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Last Epoch.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Dwarven Realms.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Simon the Sorcerer Origins Demo.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Terraria.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Path of Exile.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/chrome-opaefnjafkemdihlmdiocmmmmdkhgjfg-Default.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/ARK Survival Evolved.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Sid Meier's Civilization VI.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Unnamed Space Idle.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Path of Exile 2.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Steam Linux Runtime 2.0 (soldier).desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/xtelsio CTI Client.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Proton 8.0.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/K21_contentAD.gif,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/A Dance of Fire and Ice.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/Proton BattlEye Runtime.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94,desktop:/SteamVR.desktop,0,af3b6c4e-6eaf-4bea-857d-4860feb3cd94 diff --git a/.config/plasmanotifyrc b/.config/plasmanotifyrc new file mode 100644 index 0000000..196cc02 --- /dev/null +++ b/.config/plasmanotifyrc @@ -0,0 +1,44 @@ +[Applications][@other] +ShowInHistory=true +ShowPopupsInDndMode=true + +[Applications][com.nextcloud.desktopclient.nextcloud] +Seen=true + +[Applications][discord] +Seen=true + +[Applications][firefox] +Seen=true +ShowPopupsInDndMode=true + +[Applications][google-chrome] +Seen=true + +[Applications][io.github.seadve.Kooha] +Seen=true + +[Applications][org.mozilla.Thunderbird] +Seen=true + +[Applications][signal] +ShowPopupsInDndMode=true + +[Applications][signal-desktop] +ShowPopupsInDndMode=true + +[Applications][solaar] +Seen=true + +[Applications][teams] +Seen=true + +[DoNotDisturb] +WhenFullscreen=false +WhenScreenSharing=false +WhenScreensMirrored=false + +[Notifications] +LowPriorityHistory=true +PopupPosition=TopRight +PopupTimeout=30000 diff --git a/.config/plasmarc b/.config/plasmarc new file mode 100644 index 0000000..bb8f9b9 --- /dev/null +++ b/.config/plasmarc @@ -0,0 +1,2 @@ +[Wallpapers] +usersWallpapers=/home/templis/.local/share/wallpapers/Abstract 4K No Logo.png,/home/templis/.local/share/wallpapers/Space Plasma 2 4K.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/purplewin_tueit_ipad.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/konachancom94911tagme.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/exmachina.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/soundwaves.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/bluefluid.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/purplefluid.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/smokyneon.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/network.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/purplewin11.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/moon_and_sun.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/snog_full.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/cropped-tüit-Logo-tü-original-Farben-ohne-Rand.svg.png,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/Free-HD-Gif-Wallpapers.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/TDF7f.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/adb892e1036441459a1f8e0b8d165b8a.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/rainpixelart.gif,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/lox.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/fluorescence6.jpg,/mnt/d/cloud.shron.de/Hetzner Storagebox/library/pics/backgrounds/album_pic.php.jpe diff --git a/.config/plasmashellrc b/.config/plasmashellrc new file mode 100644 index 0000000..f5dd382 --- /dev/null +++ b/.config/plasmashellrc @@ -0,0 +1,34 @@ +[KPropertiesDialog] +4 screens: Height=529 +4 screens: Width=465 + +[PlasmaViews][Panel 291] +floating=1 +shell=org.kde.plasma.desktop + +[PlasmaViews][Panel 291][Defaults] +thickness=44 + +[PlasmaViews][Panel 375] +floating=1 +shell=org.kde.plasma.desktop + +[PlasmaViews][Panel 375][Defaults] +thickness=44 + +[PlasmaViews][Panel 400] +floating=1 +shell=org.kde.plasma.desktop + +[PlasmaViews][Panel 400][Defaults] +thickness=44 + +[PlasmaViews][Panel 425] +floating=1 +shell=org.kde.plasma.desktop + +[PlasmaViews][Panel 425][Defaults] +thickness=44 + +[Updates] +performed=/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/containmentactions_middlebutton.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/digitalclock_migrate_font_settings.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/digitalclock_rename_timezonedisplay_key.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/folderview_fix_recursive_screenmapping.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/keyboardlayout_migrateiconsetting.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/keyboardlayout_remove_shortcut.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/klipper_clear_config.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/maintain_existing_desktop_icon_sizes.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/mediaframe_migrate_useBackground_setting.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/move_desktop_layout_config.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/no_middle_click_paste_on_panels.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/systemloadviewer_systemmonitor.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/unlock_widgets.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/digitalclock_migrate_showseconds_setting.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/migrate_font_weights.js,/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/taskmanager_configUpdate_wheelEnabled.js diff --git a/.config/powermanagementprofilesrc b/.config/powermanagementprofilesrc new file mode 100644 index 0000000..99346ab --- /dev/null +++ b/.config/powermanagementprofilesrc @@ -0,0 +1,65 @@ +[AC] +icon=battery-charging + +[AC][DPMSControl] +idleTime=1800 +lockBeforeTurnOff=0 + +[AC][DimDisplay] +idleTime=300000 + +[AC][HandleButtonEvents] +lidAction=1 +powerButtonAction=16 +powerDownAction=16 + +[AC][SuspendSession] +idleTime=3600000 +suspendThenHibernate=false +suspendType=1 + +[Battery] +icon=battery-060 + +[Battery][DPMSControl] +idleTime=300 +lockBeforeTurnOff=0 + +[Battery][DimDisplay] +idleTime=120000 + +[Battery][HandleButtonEvents] +lidAction=1 +powerButtonAction=16 +powerDownAction=16 + +[Battery][SuspendSession] +idleTime=600000 +suspendThenHibernate=false +suspendType=1 + +[LowBattery] +icon=battery-low + +[LowBattery][BrightnessControl] +value=30 + +[LowBattery][DPMSControl] +idleTime=120 +lockBeforeTurnOff=0 + +[LowBattery][DimDisplay] +idleTime=60000 + +[LowBattery][HandleButtonEvents] +lidAction=1 +powerButtonAction=16 +powerDownAction=16 + +[LowBattery][SuspendSession] +idleTime=300000 +suspendThenHibernate=false +suspendType=1 + +[Migration] +MigratedProfilesToPlasma6=powerdevilrc diff --git a/.config/sway/config b/.config/sway/config index 27f717d..2d9a61f 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -1,369 +1,398 @@ -# This file has been auto-generated by i3-config-wizard(1). -# It will not be overwritten, so edit it as you like. -# -# Should you change your keyboard layout somewhen, delete -# this file and re-run i3-config-wizard(1). -# - -# Keyboard configuration - input * xkb_layout "de,us" - -#enable tab-to-click - input "2:7:SynPS/2_Synaptics_TouchPad" { - tap enabled - scroll_method two_finger - } - -# set default font - font -*-cure-medium-*-*-*-11-*-*-*-*-*-*-* - -# set modifier keys for more clarity and readability in config -# mod is on most keyboards the "windows" key - set $mod Mod4 - set $alt Mod1 - -# Font for window titles. Will also be used by the bar unless a different font -# is used in the bar {} block below. ISO 10646 = Unicode - font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 -# The font above is very space-efficient, that is, it looks good, sharp and -# clear in small sizes. However, if you need a lot of unicode glyphs or -# right-to-left text rendering, you should instead use pango for rendering and -# chose a FreeType font, such as: -# font pango:DejaVu Sans Mono 10 - -# Use Mouse+$mod to drag floating windows to their wanted position - floating_modifier $mod - -#set the border of your windows - bindsym $mod+t border normal - bindsym $mod+y border 1pixel - bindsym $mod+u border none - -# start a terminal -# with some examples for other font or other terminal emulators -# bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8:antialias=true" -letsp -1 -sh 20 -# bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:PragmataPro:size=8:antialias=true" -letsp -1 -sh 20 -# bindsym $mod+Return exec terminology -# bindsym $mod+Return exec tilda - bindsym $mod+Return exec termite - -# kill focused window - bindsym $mod+Shift+q kill - bindsym $alt+F4 kill -# if this don't work, you can even start xkill - bindsym $mod+Shift+k exec xkill - -# enables a feature like on other windowmanagers or windows, -# to show running "processes" and switch between them - bindsym $alt+Tab exec rofi -show window - -# start dmenu (a program launcher) -# bindsym $mod+d exec dmenu_run -# instead -# set $menu dmenu_path | dmenu | xargs swaymsg exec -- -# set $menu j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite' - set $menu exec wofi --show drun - bindsym $mod+d exec $menu -# There also is the (new) i3-dmenu-desktop which only displays applications -# shipping a .desktop file. It is a wrapper around dmenu, so you need that -# installed. -# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop - -# change focus - the vi way -# I don't use them, cause i need this keys for other purposes -# e.g. $mod+h for split horizontal -# bindsym $mod+h focus left -# bindsym $mod+j focus down -# bindsym $mod+k focus up -# bindsym $mod+l focus right - -# alternatively, you can use the cursor keys: - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - -# move focused window - the vi way -# I don't use them, cause i need this keys for other purposes -# e.g. $mod+Shift+l for lock my Desktop -# bindsym $mod+Shift+h move left -# bindsym $mod+Shift+j move down -# bindsym $mod+Shift+k move up -# bindsym $mod+Shift+l move right - -# alternatively, you can use the cursor keys: - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right - -# split in horizontal orientation - bindsym $mod+h split h - -# split in vertical orientation - bindsym $mod+v split v - -# enter fullscreen mode for the focused container - bindsym $mod+z fullscreen - -# change container layout (stacked, tabbed, toggle split) - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split - -# toggle tiling / floating - bindsym $mod+Shift+space floating toggle - -# change focus between tiling / floating windows - bindsym $mod+space focus mode_toggle - -# focus the parent container - bindsym $mod+a focus parent - -# focus the child container -# bindsym $mod+d focus child - -# switch to workspace - bindsym $mod+1 workspace 1: 1: Text - bindsym $mod+2 workspace 2: 2: Web - bindsym $mod+3 workspace 3: 3: Office - bindsym $mod+4 workspace 4: 4: KeePass - bindsym $mod+5 workspace 5: 5: Mail - bindsym $mod+6 workspace 6: 6: Chat - bindsym $mod+7 workspace 7 - bindsym $mod+8 workspace 8 - bindsym $mod+9 workspace 9 - bindsym $mod+0 workspace 10 - -# move focused container to workspace - bindsym $mod+Shift+1 move container to workspace 1: 1: Text - bindsym $mod+Shift+2 move container to workspace 2: 2: Web - bindsym $mod+Shift+3 move container to workspace 3: 3: Office - bindsym $mod+Shift+4 move container to workspace 4: 4: KeePass - bindsym $mod+Shift+5 move container to workspace 5: 5: Mail - bindsym $mod+Shift+6 move container to workspace 6: 6: Chat - bindsym $mod+Shift+7 move container to workspace 7 - bindsym $mod+Shift+8 move container to workspace 8 - bindsym $mod+Shift+9 move container to workspace 9 - bindsym $mod+Shift+0 move container to workspace 10 - -# reload the configuration file - bindsym $mod+Shift+r reload -# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) -# bindsym $mod+Shift+r restart - -# exit i3 (logs you out of your X session) -# bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" - bindsym $mod+Shift+e exec swaynagmode -t warning -m "Exit sway? This will end your Wayland session." -b "Exit sway" "swaymsg exit" -b "Reload" "swaymsg reload" - -# put task in background - exec --no-startup-id swayidle -w \ - timeout 300 'light -G > /tmp/brightness && light -S 10' \ - resume 'light -S $(cat /tmp/brightness)' \ - timeout 600 'swaylock -f -c 000000' \ - resume 'light -S $(cat /tmp/brightness)' \ - timeout 900 'swaymsg "output * dpms off"' \ - resume 'swaymsg "output * dpms on" && light -S $(cat /tmp/brightness)' \ - before-sleep 'swaylock -f -c 000000' -#disable when firefox video is in fullscreen - for_window [class="firefox"] inhibit_idle fullscreen - for_window [app_id="firefox"] inhibit_idle fullscreen - - bindsym $mod+Shift+l exec swaylock -f -c 000000 - -# add the ability to reboot shutdown etc. -#......... - bindsym $mod+Shift+Delete exec swaynagmode -t default -m "Sysmenu" -b "Exit" "swaymsg exit" -b "Reload" "swaymsg reload" -b "Halt" "exec sudo shutdown -P now" -b "Reboot" "exec sudo shutdown -r now" -#......... - -# for Presentation and monitor output selection -#......... - bindsym $mod+Shift+x exec swaynagmode -t default -m "Displaymenu" -b "Laptop only" 'swaymsg "output"' -b "DP mirror" 'swaymsg "output"' -b "DP extend" 'swaymsg "output"' -b "VGA mirror" 'swaymsg "output"' -b "VGA extend" 'swaymsg "output"' -#......... - - bindsym $mod+Prior move workspace to output left - bindsym $mod+Next move workspace to output right - -# resize window (you can also use the mouse for that) -#......... - bindsym $mod+r mode "resize" - - mode "resize" { - # These bindings trigger as soon as you enter the resize mode - - # Pressing left will shrink the window’s width. - # Pressing right will grow the window’s width. - # Pressing up will shrink the window’s height. - # Pressing down will grow the window’s height. - bindsym j resize shrink width 10 px or 10 ppt - bindsym k resize grow height 10 px or 10 ppt - bindsym l resize shrink height 10 px or 10 ppt - bindsym odiaeresis resize grow width 10 px or 10 ppt - - # same bindings, but for the arrow keys - bindsym Left resize shrink width 10 px or 10 ppt - bindsym Down resize grow height 10 px or 10 ppt - bindsym Up resize shrink height 10 px or 10 ppt - bindsym Right resize grow width 10 px or 10 ppt - - # back to normal: Enter or Escape - bindsym Return mode "default" - bindsym Escape mode "default" - } -#........ - -# Start i3bar to display a workspace bar (plus the system information i3status -# finds out, if available) - bar { - swaybar_command waybar - } - -# -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - - # Move the currently focused window to the scratchpad - bindsym $mod+Shift+minus move scratchpad - - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show - - -# snipping/screenshot Tool - #bindsym --release Print exec scrot -s -e 'mv $f ~/Bilder/Screenshots/screenshot_%Y-%m-%d_%H%M%S.png' - #bindsym --release Print exec maim -s ~/Bilder/Screenshots/screenshot_$(date +%s).png - bindsym --release Print exec grim -g "$(slurp)" ~/library/Bilder/Screenshots/screenshot_$(date +%s).png - - -## Media keys - bindsym XF86AudioRaiseVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5% - bindsym XF86AudioLowerVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -5% - bindsym XF86AudioMute exec pamixer -t - -## Adjust Brightness -# bindsym XF86MonBrightnessDown exec light -U 10 -# bindsym XF86MonBrightnessUp exec light -A 10 - -# Enable GLX Graphics -# used especially for Laptop and enable/disable discrete graphics -# bindsym $mod+g exec /home/templis/dri.sh - -# control swaynag with keyboard -# needs to be swaynadmode installed - swaynag_command swaynagmode - set $nag exec swaynagmode - mode "nag" { - bindsym { - Ctrl+d mode "default" - - Ctrl+c $nag --exit - q $nag --exit - Escape $nag --exit - - Return $nag --confirm - - Tab $nag --select prev - Shift+Tab $nag --select next - - Left $nag --select next - Right $nag --select prev - - Up $nag --select next - Down $nag --select prev - } -} - -# Set floating Windows for special applications - workspace_layout tabbed - for_window [window_role="pop-up"] floating enable,move absolute center - for_window [class="Pinentry"] floating enable - for_window [class="Eog"] floating enable - for_window [class="Geary"] floating enable - for_window [class="Gcr-prompter"] floating enable - for_window [class="Tipswindow.py"] floating enable - for_window [class="XVroot"] floating enable - for_window [class="XVcontrols"] floating enable - for_window [class="Vlc"] floating enable - for_window [class="Synergy"] floating enable - for_window [class="libreoffice-writer"] floating enable - for_window [class="Shotwell"] floating enable - for_window [class="UpLauncher"] floating enable - for_window [title="^Minecraft .*"] floating enable - for_window [title="Steam - Update News"] kill - for_window [title="Preferences$"] floating enable - for_window [class="^Pidgin$" window_role="^conversation$"] resize grow width 0 px or 30 ppt - -# Assign special applications to defined workspaces - assign [class="Chromium"] 2: 2: Web - assign [class="chrome"] 2: 2: Web - assign [class="Firefox"] 2: 2: Web - assign [class="firefox"] 2: 2: Web - assign [class="libreoffice"] 3: 3: Office - assign [class="Gimp"] 3: 3: Office - assign [class="^Minecraft Launcher .*"] 3: 3: Office - assign [class="Linphone"] 3: 3: Office - assign [class="keepassxc"] 4: 4: KeePass - assign [class="KeePassXC"] 4: 4: KeePass - assign [class="(?i)thunderbird"] 5: 5: Mail - assign [class="Signal"] 6: 6: Chat -# include modules etc. - include ~/.config/sway/conf.d/* - -# Start some needet applications -# Please take care to install/configure it, if you intend to include it! - -#fix graphical gltiches - exec xrdb -load ~/.Xresources - exec xrdb -merge ~/.Xresources - -# start Sound Daemon - exec pulseaudio --kill - exec sleep 3 pulseaudio --start - exec /usr/bin/pasystray - -# BROWSERS!!!11!elf! - exec firefox - #exec chromium - #exec google-chrome-stable - -# networkmanager gui - exec nm-applet --indicator - -# eye saver -# Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night. - exec redshift-gtk -l 48.52160730:9.05050278 - -# nextcloud - exec nextcloud - -# start one terminal on workspace 1 for failure management etc. -# exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8" -letsp -1 -sh 20' - exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec termite' - -# trayicon to listen to some radio stations - exec radiotray-ng - -# start i3 with a random wallpaper -# exec feh --randomize --bg-fill ~/Bilder/Wallpaper/* -# exec feh --randomize --bg-fill ~/library/Bilder/Wallpaper/* - output "*" bg ~/library/Bilder/Wallpaper/Desktopography_2016_Kevin_May_2560x1440px-1-32g2c1w5jiz6gj086a9tkw.jpg fill - -# autodetect and automount USB Sticks and external media - exec udisksvm >/dev/null & - -# needet for my Razer Chomatic Keyboard -# exec razercommander -q -# exec_always –no-startup-id flashfocus - -# Start Signal - exec signal-desktop-beta - -# Start keepassxc - exec keepassxc - exec ~/.scripts/start_keyring.sh - -#start polybar -# exec_always --no-startup-id ~/polybar.sh + # This file has been auto-generated by i3-config-wizard(1). + # It will not be overwritten, so edit it as you like. + # + # Should you change your keyboard layout somewhen, delete + # this file and re-run i3-config-wizard(1). + # + + #set my Monitor configuration + output HDMI-A-1 mode 1920x1080@50.000Hz position 0,0 + output DP-2 mode 2560x1440@59.951Hz position 301,1080 transform 90 + output DP-1 mode 2560x1440@59.951Hz position 1741,1732 + output DP-3 mode 2560x1440@59.951Hz position 4301,1732 + + # Keyboard configuration + #input * xkb_layout "de,us" + input * { + xkb_layout "de,us" + xkb_options "caps:XF86Launch5" + } + + #enable tab-to-click + input "2:7:SynPS/2_Synaptics_TouchPad" { + tap enabled + scroll_method two_finger + } + + # set default font + # font -*-cure-medium-*-*-*-11-*-*-*-*-*-*- + + # set modifier keys for more clarity and readability in config + # mod is on most keyboards the "windows" key + set $mod Mod4 + set $alt Mod1 + + # Font for window titles. Will also be used by the bar unless a different font + # is used in the bar {} block below. ISO 10646 = Unicode + + # clear in small sizes. However, if you need a lot of unicode glyphs or + # right-to-left text rendering, you should instead use pango for rendering and + # chose a FreeType font, such as: + # font pango:DejaVu Sans Mono 10 + + # Use Mouse+$mod to drag floating windows to their wanted position + floating_modifier $mod + + #set the border of your windows + bindsym $mod+t border normal + bindsym $mod+y border 1pixel + bindsym $mod+u border none + + # start a terminal + # with some examples for other font or other terminal emulators + # bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8:antialias=true" -letsp -1 -sh 20 + # bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:PragmataPro:size=8:antialias=true" -letsp -1 -sh 20 + # bindsym $mod+Return exec terminology + # bindsym $mod+Return exec tilda + # bindsym $mod+Return exec termite + # bindsym $mod+Return exec alacritty + # bindsym $mod+Return exec kitty + bindsym $mod+Return exec foot + + + # kill focused window + bindsym $mod+Shift+q kill + bindsym $alt+F4 kill + # if this don't work, you can even start xkill + bindsym $mod+Shift+k exec xkill + + # enables a feature like on other windowmanagers or windows, + # to show running "processes" and switch between them + bindsym $alt+Tab exec rofi -show window + + # start dmenu (a program launcher) + # bindsym $mod+d exec dmenu_run + # instead + # set $menu dmenu_path | dmenu | xargs swaymsg exec -- + # set $menu j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite' + set $menu exec wofi --show drun + bindsym $mod+d exec $menu + # There also is the (new) i3-dmenu-desktop which only displays applications + # shipping a .desktop file. It is a wrapper around dmenu, so you need that + # installed. + # bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + + # Get the focused AppID + bindsym $mod+Shift+a exec swaymsg -t get_tree | jq -r '..|try select(.focused == true)' + + # change focus - the vi way + # I don't use them, cause i need this keys for other purposes + # e.g. $mod+h for split horizontal + # bindsym $mod+h focus left + # bindsym $mod+j focus down + # bindsym $mod+k focus up + # bindsym $mod+l focus right + + # alternatively, you can use the cursor keys: + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # move focused window - the vi way + # I don't use them, cause i need this keys for other purposes + # e.g. $mod+Shift+l for lock my Desktop + # bindsym $mod+Shift+h move left + # bindsym $mod+Shift+j move down + # bindsym $mod+Shift+k move up + # bindsym $mod+Shift+l move right + + # alternatively, you can use the cursor keys: + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right + + # split in horizontal orientation + bindsym $mod+h split h + + # split in vertical orientation + bindsym $mod+v split v + + # enter fullscreen mode for the focused container + bindsym $mod+z fullscreen + + # change container layout (stacked, tabbed, toggle split) + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # toggle tiling / floating + bindsym $mod+Shift+space floating toggle + + # change focus between tiling / floating windows + bindsym $mod+space focus mode_toggle + + # focus the parent container + bindsym $mod+a focus parent + + # focus the child container + # bindsym $mod+d focus child + + # switch to workspace + bindsym $mod+1 workspace 1: 1: Text + bindsym $mod+2 workspace 2: 2: Web + bindsym $mod+3 workspace 3: 3: Office + bindsym $mod+4 workspace 4: 4: KeePass + bindsym $mod+5 workspace 5: 5: Mail + bindsym $mod+6 workspace 6: 6: Chat + bindsym $mod+7 workspace 7 + bindsym $mod+8 workspace 8 + bindsym $mod+9 workspace 9 + bindsym $mod+0 workspace 10 + + # move focused container to workspace + bindsym $mod+Shift+1 move container to workspace 1: 1: Text + bindsym $mod+Shift+2 move container to workspace 2: 2: Web + bindsym $mod+Shift+3 move container to workspace 3: 3: Office + bindsym $mod+Shift+4 move container to workspace 4: 4: KeePass + bindsym $mod+Shift+5 move container to workspace 5: 5: Mail + bindsym $mod+Shift+6 move container to workspace 6: 6: Chat + bindsym $mod+Shift+7 move container to workspace 7 + bindsym $mod+Shift+8 move container to workspace 8 + bindsym $mod+Shift+9 move container to workspace 9 + bindsym $mod+Shift+0 move container to workspace 10 + + # reload the configuration file + bindsym $mod+Shift+r reload + # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) + # bindsym $mod+Shift+r restart + + # exit i3 (logs you out of your X session) + # bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + bindsym $mod+Shift+e exec swaynagmode -t warning -m "Exit sway? This will end your Wayland session." -b "Exit sway" "swaymsg exit" -b "Reload" "swaymsg reload" + + # put task in background + exec --no-startup-id swayidle -w \ + timeout 300 'light -G > /tmp/brightness && light -S 10' \ + resume 'light -S $(cat /tmp/brightness)' \ + timeout 600 'swaylock -f -c 000000' \ + resume 'light -S $(cat /tmp/brightness)' \ + timeout 900 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on" && light -S $(cat /tmp/brightness)' \ + before-sleep 'swaylock -f -c 000000' + #disable when firefox video is in fullscreen + for_window [class="firefox"] inhibit_idle fullscreen + for_window [app_id="firefox"] inhibit_idle fullscreen + + bindsym $mod+Shift+l exec swaylock -f -c 000000 + + # add the ability to reboot shutdown etc. + #......... + bindsym $mod+Shift+Delete exec swaynagmode -t default -m "Sysmenu" -b "Exit" "swaymsg exit" -b "Reload" "swaymsg reload" -b "Halt" "exec sudo shutdown -P now" -b "Reboot" "exec sudo shutdown -r now" + #......... + + # for Presentation and monitor output selection + #......... + bindsym $mod+Shift+x exec swaynagmode -t default -m "Displaymenu" -b "Laptop only" 'swaymsg "output"' -b "DP mirror" 'swaymsg "output"' -b "DP extend" 'swaymsg "output"' -b "VGA mirror" 'swaymsg "output"' -b "VGA extend" 'swaymsg "output"' + #......... + + bindsym $mod+Prior move workspace to output left + bindsym $mod+Next move workspace to output right + + # resize window (you can also use the mouse for that) + #......... + bindsym $mod+r mode "resize" + + mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym odiaeresis resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" + } + #........ + + # Start i3bar to display a workspace bar (plus the system information i3status + # finds out, if available) + bar { + swaybar_command waybar + } + + # + # Scratchpad: + # + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show + + + # snipping/screenshot Tool + #bindsym --release Print exec scrot -s -e 'mv $f ~/Bilder/Screenshots/screenshot_%Y-%m-%d_%H%M%S.png' + #bindsym --release Print exec maim -s ~/Bilder/Screenshots/screenshot_$(date +%s).png + bindsym --release Print exec grim -g "$(slurp)" ~/library/Bilder/Screenshots/screenshot_$(date +%s).png + + + ## Media keys + #bindsym XF86AudioRaiseVolume exec pactl set-sink-volume alsa_output.usb-nubert_nubert_xCore_USB_Audio-00.analog-stereo +5% + #bindsym XF86AudioLowerVolume exec pactl set-sink-volume alsa_output.usb-nubert_nubert_xCore_USB_Audio-00.analog-stereo -5% + bindsym XF86AudioRaiseVolume exec pamixer -i 5 + bindsym XF86AudioLowerVolume exec pamixer -d 5 + bindsym XF86AudioMute exec pamixer -t + + ## Adjust Brightness + # bindsym XF86MonBrightnessDown exec light -U 10 + # bindsym XF86MonBrightnessUp exec light -A 10 + + # Enable GLX Graphics + # used especially for Laptop and enable/disable discrete graphics + # bindsym $mod+g exec /home/templis/dri.sh + + # control swaynag with keyboard + # needs to be swaynadmode installed + swaynag_command swaynagmode + set $nag exec swaynagmode + mode "nag" { + bindsym { + Ctrl+d mode "default" + + Ctrl+c $nag --exit + q $nag --exit + Escape $nag --exit + + Return $nag --confirm + + Tab $nag --select prev + Shift+Tab $nag --select next + + Left $nag --select next + Right $nag --select prev + + Up $nag --select next + Down $nag --select prev + } + } + + # Set floating Windows for special applications + workspace_layout tabbed + for_window [window_role="pop-up"] floating enable,move absolute center + for_window [class="Pinentry"] floating enable + for_window [class="Eog"] floating enable + for_window [class="Geary"] floating enable + for_window [class="Gcr-prompter"] floating enable + for_window [class="Tipswindow.py"] floating enable + for_window [class="XVroot"] floating enable + for_window [class="XVcontrols"] floating enable + for_window [class="Vlc"] floating enable + for_window [class="Synergy"] floating enable + for_window [class="libreoffice-writer"] floating enable + for_window [class="Shotwell"] floating enable + for_window [class="UpLauncher"] floating enable + for_window [title="^Minecraft .*"] floating enable + for_window [title="Steam - Update News"] kill + for_window [title="Preferences$"] floating enable + for_window [class="^Pidgin$" window_role="^conversation$"] resize grow width 0 px or 30 ppt + #for_window [title="^AnyDesk.*"] floating enable + for_window [class="anydesk"] floating enable + for_window [app_id="galculator"] floating enable + for_window [window_type="dialog"] floating enable + for_window [window_role="dialog"] floating enable + + + # Assign special applications to defined workspaces + assign [class="Chromium"] 2: 2: Web + assign [class="chrome"] 2: 2: Web + assign [class="Firefox"] 2: 2: Web + assign [class="firefox"] 2: 2: Web + assign [class="libreoffice"] 3: 3: Office + assign [class="Gimp"] 3: 3: Office + assign [class="^Minecraft Launcher .*"] 3: 3: Office + assign [class="Linphone"] 3: 3: Office + assign [class="keepassxc"] 4: 4: KeePass + assign [class="KeePassXC"] 4: 4: KeePass + assign [class="(?i)thunderbird"] 5: 5: Mail + assign [class="Signal"] 6: 6: Chat + # include modules etc. + include ~/.config/sway/conf.d/* + + # Start some needet applications + # Please take care to install/configure it, if you intend to include it! + + #fix graphical gltiches + exec xrdb -load ~/.Xresources + exec xrdb -merge ~/.Xresources + + # start Sound Daemon + # exec pulseaudio --kill + # exec sleep 3 pulseaudio --start + # exec /usr/bin/pasystray + + # BROWSERS!!!11!elf! + exec firefox + #exec chromium + #exec google-chrome-stable + + # networkmanager gui + exec nm-applet --indicator + + # eye saver + # Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night. + exec redshift-gtk -l 48.52160730:9.05050278 + + # nextcloud + exec nextcloud + + # start one terminal on workspace 1 for failure management etc. + # exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8" -letsp -1 -sh 20' + # exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec termite' + + # trayicon to listen to some radio stations + exec radiotray-ng + + # start i3 with a random wallpaper + # exec feh --randomize --bg-fill ~/Bilder/Wallpaper/* + # exec feh --randomize --bg-fill ~/library/Bilder/Wallpaper/* + # output "*" bg ~/library/Bilder/Wallpaper/Desktopography_2016_Kevin_May_2560x1440px-1-32g2c1w5jiz6gj086a9tkw.jpg fill + + # autodetect and automount USB Sticks and external media + exec udisksvm >/dev/null & + + # needet for my Razer Chomatic Keyboard + # exec razercommander -q + # exec_always –no-startup-id flashfocus + + # Start Signal + exec signal-desktop + + # Start keepassxc + exec keepassxc + exec ~/.scripts/start_keyring.sh + + # Notification Daemon + exec dunst + # Notification-History Picker (Inhalt kopieren) + bindsym $mod+n exec ~/.config/dunst/notification-picker.sh + + #start polybar + # exec_always --no-startup-id ~/polybar.sh diff --git a/.config/swaynag/config b/.config/swaynag/config deleted file mode 100644 index c71c6d1..0000000 Binary files a/.config/swaynag/config and /dev/null differ diff --git a/.config/waybar/config b/.config/waybar/config deleted file mode 100644 index 599f350..0000000 --- a/.config/waybar/config +++ /dev/null @@ -1,149 +0,0 @@ -[{ - "layer": "top", - "position": "top", - "height": 30, - - "modules-left": ["sway/mode", "temperature"], - "modules-center": ["clock", "custom/weather"], - "modules-right": ["network", "cpu"], - - "clock": { - "format": "{:%a %d %b %H:%M}", - "tooltip": false - }, - "sway/mode": { - "format": " {}" - }, - "network": { - "format": "{icon}", - "format-alt": "{ipaddr}/{cidr} {icon}", - "format-alt-click": "click-right", - "format-icons": { - "wifi": ["", "" ,""], - "ethernet": [""], - "disconnected": [""] - }, - "on-click": "termite -e nmtui", - "tooltip": false - }, - "temperature": { - "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon0/temp1_input", - "critical-threshold": 80, - "format-critical": "{temperatureC}°C ", - "format": "{temperatureC}°C " - }, - "cpu": { - "interval": 10, - "format": "{}% ", - "max-length": 10, - "states": { - "warning": 70, - "critical": 80 - } - }, - "custom/weather": { - "format": "{}", - "format-alt": "{alt}: {}", - "format-alt-click": "click-right", - "interval": 1800, - "return-type": "json", - "exec": "~/.config/waybar/modules/weather.sh", - "exec-if": "ping wttr.in -c1" - } -}, - -{ - "layer": "bottom", - "position": "bottom", - "height": 30, - - "modules-left": ["sway/workspaces", "sway/mode"], - "modules-center": ["sway/window"], - "modules-right": ["custom/spotify", "custom/storage", "backlight", "pulseaudio", "idle_inhibitor", "battery", "tray"], - "sway/mode": { - "format": " {}" - }, - "sway/workspaces": { - "format": "{name}", - "disable-scroll": true - }, - "sway/window": { - "max-length": 80, - "tooltip": false - }, - "battery": { - "format": "{capacity}% {icon}", - "format-alt": "{time} {icon}", - "format-icons": ["", "", "", "", ""], - "format-charging": "{capacity}% ", - "interval": 30, - "states": { - "warning": 25, - "critical": 10 - }, - "tooltip": false - }, - "pulseaudio": { - "format": "{icon}", - "format-alt": "{volume} {icon}", - "format-alt-click": "click-right", - "format-muted": "", - "format-icons": { - "phone": [" ", " ", " ", " "], - "default": ["", "", "", ""] - }, - "scroll-step": 10, - "on-click": "pavucontrol", - "tooltip": false - }, - "custom/spotify": { - "interval": 1, - "return-type": "json", - "exec": "~/.config/waybar/modules/spotify.sh", - "exec-if": "pgrep spotify", - "escape": true - }, - "custom/storage": { - "format": "{} ", - "format-alt": "{percentage}% ", - "format-alt-click": "click-right", - "return-type": "json", - "interval": 60, - "exec": "~/.config/waybar/modules/storage.sh" - }, - "backlight": { - "format": "{icon}", - "format-alt": "{percent}% {icon}", - "format-alt-click": "click-right", - "format-icons": ["", ""], - "on-scroll-down": "light -A 1", - "on-scroll-up": "light -U 1" - }, - "custom/weather": { - "format": "{}", - "format-alt": "{alt}: {}", - "format-alt-click": "click-right", - "interval": 1800, - "return-type": "json", - "exec": "~/.config/waybar/modules/weather.sh", - "exec-if": "ping wttr.in -c1" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - }, - "tooltip": false - }, - "custom/test": { - "format": "{}", - "exec": "/tmp/test blub", - "param": "blah", - "interval": 5 - }, - "tray": { - "icon-size": 18 - } -}] diff --git a/.config/waybar/modules/mail.py b/.config/waybar/modules/mail.py deleted file mode 100755 index abc36ec..0000000 --- a/.config/waybar/modules/mail.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/python - -import os -import imaplib - -import mailsecrets - -def getmails(username, password, server): - imap = imaplib.IMAP4_SSL(server, 993) - imap.login(username, password) - imap.select('INBOX') - ustatus, uresponse = imap.uid('search', None, 'UNSEEN') - if ustatus == 'OK': - unread_msg_nums = uresponse[0].split() - else: - unread_msg_nums = [] - - fstatus, fresponse = imap.uid('search', None, 'FLAGGED') - if fstatus == 'OK': - flagged_msg_nums = fresponse[0].split() - else: - flagged_msg_nums = [] - - return [len(unread_msg_nums), len(flagged_msg_nums)] - -ping = os.system("ping " + mailsecrets.server + " -c1 > /dev/null 2>&1") -if ping == 0: - mails = getmails(mailsecrets.username, mailsecrets.password, mailsecrets.server) - text = '' - alt = '' - - if mails[0] > 0: - text = alt = str(mails[0]) - if mails[1] > 0: - alt = str(mails[1]) + "  " + alt - else: - exit(1) - - print('{"text":"' + text + '", "alt": "' + alt + '"}') - -else: - exit(1) diff --git a/.config/waybar/modules/spotify.sh b/.config/waybar/modules/spotify.sh deleted file mode 100755 index c00622b..0000000 --- a/.config/waybar/modules/spotify.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -class=$(playerctl metadata --player=spotify --format '{{lc(status)}}') -icon="" - -if [[ $class == "playing" ]]; then - info=$(playerctl metadata --player=spotify --format '{{artist}} - {{title}}') - if [[ ${#info} > 40 ]]; then - info=$(echo $info | cut -c1-40)"..." - fi - text=$info" "$icon -elif [[ $class == "paused" ]]; then - text=$icon -elif [[ $class == "stopped" ]]; then - text="" -fi - -echo -e "{\"text\":\""$text"\", \"class\":\""$class"\"}" diff --git a/.config/waybar/modules/storage.sh b/.config/waybar/modules/storage.sh deleted file mode 100755 index ae2a5ce..0000000 --- a/.config/waybar/modules/storage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -mount="/" -warning=20 -critical=10 - -df -h -P -l "$mount" | awk -v warning=$warning -v critical=$critical ' -/\/.*/ { - text=$4 - tooltip="Filesystem: "$1"\rSize: "$2"\rUsed: "$3"\rAvail: "$4"\rUse%: "$5"\rMounted on: "$6 - use=$5 - exit 0 -} -END { - class="" - gsub(/%$/,"",use) - if ((100 - use) < critical) { - class="critical" - } else if ((100 - use) < warning) { - class="warning" - } - print "{\"text\":\""text"\", \"percentage\":"use",\"tooltip\":\""tooltip"\", \"class\":\""class"\"}" -} -' diff --git a/.config/waybar/modules/weather.sh b/.config/waybar/modules/weather.sh deleted file mode 100755 index 9c9bd1c..0000000 --- a/.config/waybar/modules/weather.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -cachedir=~/.cache/rbn -cachefile=${0##*/}-$1 - -if [ ! -d $cachedir ]; then - mkdir -p $cachedir -fi - -if [ ! -f $cachedir/$cachefile ]; then - touch $cachedir/$cachefile -fi - -# Save current IFS -SAVEIFS=$IFS -# Change IFS to new line. -IFS=$'\n' - -cacheage=$(($(date +%s) - $(stat -c '%Y' "$cachedir/$cachefile"))) -if [ $cacheage -gt 1740 ] || [ ! -s $cachedir/$cachefile ]; then - data=($(curl -s https://de.wttr.in/tuebingen\?0qnT 2>&1)) - echo ${data[0]} | cut -f1 -d, > $cachedir/$cachefile - echo ${data[1]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile - echo ${data[2]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile -fi - -weather=($(cat $cachedir/$cachefile)) - -# Restore IFSClear -IFS=$SAVEIFS - -temperature=$(echo ${weather[2]} | sed -E 's/([[:digit:]])+\.\./\1 bis /g') - -#echo ${weather[1]##*,} - -# https://fontawesome.com/icons?s=solid&c=weather -case $(echo ${weather[1]##*,} | tr '[:upper:]' '[:lower:]') in -"clear" | "sunny" | "sonnig" | "wolkenlos" | "klar") - condition="" - ;; -"partly cloudy" | "leicht bewölkt") - condition="" - ;; -"cloudy" | "bewölkt") - condition="" - ;; -"overcast" | "bedeckt") - condition="" - ;; -"mist" | "fog" | "freezing fog" | "nebel" | "gefrierender nebel") - condition="" - ;; -"patchy rain possible" | "patchy light drizzle" | "light drizzle" | "patchy light rain" | "light rain" | "light rain shower" | "rain" | "stellenweise regen möglich" | "stellenweise nieselregen" | "leichter nieselregen" | "stellenweise leichter regen" | "leichter regenfall" | "leichter regen" | "regen") - condition="" - ;; -"moderate rain at times" | "moderate rain" | "heavy rain at times" | "heavy rain" | "moderate or heavy rain shower" | "torrential rain shower" | "rain shower" | "stellenweise gemäßigter regen" | "gemäßigter regen" | "stellenweise starker regen" | "starker regen" | "gemäßigter oder starker regen" | "wolkenbruch") - condition="" - ;; -"patchy snow possible" | "patchy sleet possible" | "patchy freezing drizzle possible" | "freezing drizzle" | "heavy freezing drizzle" | "light freezing rain" | "moderate or heavy freezing rain" | "light sleet" | "ice pellets" | "light sleet showers" | "moderate or heavy sleet showers" | "stellenweise schnee möglich" | "stellenweise schneeregen möglich" | "stellenweise gefrierende nässe möglich" | "gefrierender nieselregen" | "starker gefrierender nieselregen" | "leichter gefrierender regen" | "gemäßigter oder starker gefrierender regen" | "leichter schneeregen" | "eiskörner" | "leichter schneeregen" | "gemäßigter oder starker schneeregen") - condition="" - ;; -"blowing snow" | "moderate or heavy sleet" | "patchy light snow" | "light snow" | "light snow showers" | "schneesturm" | "gemäßigter oder starker schneeregen" | "stellenweise leichter schneefall" | "leichter schneefall") - condition="" - ;; -"blizzard" | "patchy moderate snow" | "moderate snow" | "patchy heavy snow" | "heavy snow" | "moderate or heavy snow with thunder" | "moderate or heavy snow showers" | "stellenweise gemäßigter schneefall" | "gemäßigter schneefall" | "stellenweise starker schneefall" | "starker schneefall" | "gemäßigter oder starker schnefall mit gewitter" | "gemäßigter oder starker schneefall") - condition="" - ;; -"thundery outbreaks possible" | "patchy light rain with thunder" | "moderate or heavy rain with thunder" | "patchy light snow with thunder" | "gewitter möglich" | "stellenweise leichter regen mit gewitter" | "gemäßigter oder starker regen mit gewitter" | "stellenweise leichter schnefall mit gewitter") - condition="" - ;; -*) - condition="" - echo -e "{\"text\":\""$condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" - ;; -esac - -#echo $temp $condition - -echo -e "{\"text\":\""$temperature $condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}" diff --git a/.config/waybar/style.css b/.config/waybar/style.css deleted file mode 100644 index 6256134..0000000 --- a/.config/waybar/style.css +++ /dev/null @@ -1,71 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: Sans; - font-size: 15px; - box-shadow: none; - text-shadow: none; - transition-duration: 0s; -} - -window { - color: rgba(217, 216, 216, 1); - background: rgba(35, 31, 32, 0.80); -} - -window#waybar.solo { - color: rgba(217, 216, 216, 1); - background: rgba(35, 31, 32, 0.80); -} - -#workspaces { - margin: 0 5px; -} - -#workspaces button { - padding: 0 5px; - color: rgba(217, 216, 216, 0.4); -} - -#workspaces button.visible { - color: rgba(217, 216, 216, 1); -} - -#workspaces button.focused { - border-top: 3px solid rgba(217, 216, 216, 1); - border-bottom: 3px solid rgba(217, 216, 216, 0); -} - -#workspaces button.urgent { - color: rgba(238, 46, 36, 1); -} - -#mode, #battery, #cpu, #memory, #network, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail { - margin: 0px 6px 0px 10px; - min-width: 25px; -} - -#clock { - margin: 0px 16px 0px 10px; - min-width: 140px; -} - -#battery.warning { - color: rgba(255, 210, 4, 1); -} - -#battery.critical { - color: rgba(238, 46, 36, 1); -} - -#battery.charging { - color: rgba(217, 216, 216, 1); -} - -#custom-storage.warning { - color: rgba(255, 210, 4, 1); -} - -#custom-storage.critical { - color: rgba(238, 46, 36, 1); -} diff --git a/.config/waybar/waybar.sh b/.config/waybar/waybar.sh deleted file mode 100755 index 720620c..0000000 --- a/.config/waybar/waybar.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env sh - -# Terminate already running bar instances -killall -q waybar - -# Wait until the processes have been shut down -while pgrep -x waybar >/dev/null; do sleep 1; done - -# Launch main -waybar diff --git a/.config/wofi/config b/.config/wofi/config deleted file mode 100644 index b9b24f1..0000000 --- a/.config/wofi/config +++ /dev/null @@ -1,5 +0,0 @@ -width=600 -height=400 -mode=drun -colors=colors -filter_rate=100 diff --git a/.config/wofi/style.css b/.config/wofi/style.css deleted file mode 100644 index 456954d..0000000 --- a/.config/wofi/style.css +++ /dev/null @@ -1,45 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: Sans; - font-size: 15px; - box-shadow: none; - text-shadow: none; - transition-duration: 0s; -} - -window { - margin: 5px; - border: none; - color: rgba(217, 216, 216, 1); - background: rgba(35, 31, 32, 0.80); -} - -#input { - margin: 5px; - border: none; - background-color: #DBC7E4; -} - -#inner-box { - margin: 5px; - border: none; - background-color: rgba(35, 31, 32, 0.80); -} - -#outer-box { - margin: 5px; - border: none; - background-color: #1E122; - display: none; -} - -#scroll { - margin: 5px; - background-color: black; -} - -#text { - margin: 5px; - border: 0px solid black; -} diff --git a/.gitignore b/.gitignore index 8d1f485..9cc25fa 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,11 @@ id_* .zshrc.pre-dotconfs .config-backup/ +# KDE Connect keeps the device certificate and its private key here. Pairing +# state, not configuration - and the one place under .config that actually +# holds a secret. +.config/kdeconnect/ + # Runtime state and caches. .zsh_history .zcompdump* diff --git a/.scripts/volume.sh b/.scripts/volume.sh deleted file mode 100644 index 80c0827..0000000 --- a/.scripts/volume.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash -# You can call this script like this: -# $./volume.sh up -# $./volume.sh down -# $./volume.sh mute - -# Original from: https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a - -function get_volume { - pamixer --get-volume -} - -function is_mute { - pamixer --get-volume-human | grep muted > /dev/null -} - -function send_notification { - volume=`get_volume` - icon_quiet="/usr/share/icons/Adwaita/48x48/status/audio-volume-low-symbolic.symbolic.png" - icon_loud="/usr/share/icons/Adwaita/48x48/status/audio-volume-high-symbolic.symbolic.png" - icon_medium="/usr/share/icons/Adwaita/48x48/status/audio-volume-medium-symbolic.symbolic.png" - icon_muted="/usr/share/icons/Adwaita/48x48/status/audio-volume-muted-symbolic.symbolic.png" - # Make the bar with the special character ─ (it's not dash -) - # https://en.wikipedia.org/wiki/Box-drawing_character - bar=$(seq -s "─" $(($volume / 5)) | sed 's/[0-9]//g') - # Send the notification -# if [ "$volume" == "muted" ]; then - icon="/usr/share/icons/Adwaita/48x48/status/audio-volume-muted-symbolic.symbolic.png" - #dunstify -i "$icon" -t 2000 --replace 2593 -u normal " $bar" - dunstify "$volume"" ""$bar" -i "/usr/share/icons/Adwaita/48x48/status/audio-volume-muted-symbolic.symbolic.png" -t 2000 -h int:value:"$volume" -h string:synchronous:"$bar" --replace=555 - #else - # if [ "$volume" -lt "10" ]; then - # icon="/usr/share/icons/Adwaita/48x48/status/audio-volume-low-symbolic.symbolic.png" - # else - # if [ "$volume" -lt "30" ]; then - # icon="/usr/share/icons/Adwaita/48x48/status/audio-volume-medium-symbolic.symbolic.png" - # else - # if [ "$volume" -lt "70" ]; then - # icon="/usr/share/icons/Adwaita/48x48/status/audio-volume-high-symbolic.symbolic.png" - # fi - # fi - # fi - #fi - -} - -case $1 in - up) - # Set the volume on (if it was muted) - #amixer -D pulse set Master on > /dev/null - # Up the volume (+ 5%) - pamixer -i 5 - canberra-gtk-play -i audio-volume-change -d "changeVolume" - send_notification - ;; - down) - #amixer -D pulse set Master on > /dev/null - pamixer -d 5 - canberra-gtk-play -i audio-volume-change -d "changeVolume" - send_notification - ;; - mute) - # Toggle mute - pamixer -t - if is_mute ; then - dunstify -i audio-volume-muted -t 2000 -r 2593 -u normal "Mute" - else - canberra-gtk-play -i audio-volume-change -d "changeVolume" - send_notification - fi - ;; -esac diff --git a/.vimrc b/.vimrc index 7b16604..3883be4 100644 --- a/.vimrc +++ b/.vimrc @@ -1,11 +1 @@ -set runtimepath+=~/.vim_runtime - -source ~/.vim_runtime/vimrcs/basic.vim -source ~/.vim_runtime/vimrcs/filetypes.vim -source ~/.vim_runtime/vimrcs/plugins_config.vim -source ~/.vim_runtime/vimrcs/extended.vim - -try -source ~/.vim_runtime/my_configs.vim -catch -endtry +set mouse=v diff --git a/.zsh-dircolors.config b/.zsh-dircolors.config deleted file mode 100644 index 1e40ce7..0000000 --- a/.zsh-dircolors.config +++ /dev/null @@ -1 +0,0 @@ -dircolors.ansi-universal diff --git a/tmux.conf b/tmux.conf index c1a8fbe..701c08c 100644 --- a/tmux.conf +++ b/tmux.conf @@ -1,3 +1,4 @@ + # ################# # screen-like setup # ################# @@ -143,7 +144,7 @@ bind S split-window -v #set -g status-interval 2 #set -g status-right "#(tmux-mem-cpu-load 2) #H" run-shell "powerline-daemon -q" -source '/usr/lib/python3.9/site-packages/powerline/bindings/tmux/powerline.conf' +source '/usr/lib/python3.11/site-packages/powerline/bindings/tmux/powerline.conf' # disable mouse control by default - change 'off' to 'on' to enable by default. setw -g mouse off @@ -169,3 +170,12 @@ bind - \ # make tmux display things in 256 colors set -g default-terminal "screen-256color" + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' + +set -g @plugin 'egel/tmux-gruvbox' +set -g @tmux-gruvbox 'dark' # or 'light' + +run '~/.tmux/plugins/tpm/tpm' + diff --git a/tmux.sh b/tmux.sh index b905a13..c35c4e7 100755 --- a/tmux.sh +++ b/tmux.sh @@ -13,10 +13,10 @@ fi # create a new session, named $SESSION, and detach from it $tmux new-session -d -s $SESSION -$tmux new-window -t $SESSION:1 -$tmux split-window -h -t $SESSION:1 'sudo bpytop' +$tmux new-window -t $SESSION:1 'sudo lazydocker' +$tmux split-window -h -t $SESSION:1 'sudo htop' $tmux split-window -v -t $SESSION:1 'sudo journalctl -f' -$tmux new-window -t $SESSION:2 +$tmux new-window -t $SESSION:2 'sudo bpytop' $tmux new-window -t $SESSION:3 $tmux select-window -t $SESSION:1 $tmux attach -t $SESSION