diff --git a/README.md b/README.md index c2091f1..829734e 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,17 @@ ``` cfg-design-for-ubuntu/ ├── sddm/ — экран входа (SDDM) -├── kde/ — KDE Plasma (тема, цвета, окна, блокировка) +├── kde/ — KDE Plasma (тема, цвета, окна, блокировка, шорткаты) +├── kwin/ +│ └── tabbox/ +│ └── thumbnail_grid/ — Alt+Tab switcher (сетка превью) +├── apps/ — Flameshot (скриншоты) +│ └── autostart/ ├── terminal/ │ ├── konsole/ — эмулятор терминала Konsole │ ├── zsh/ — ZSH конфиги для пользователя chase │ └── zsh-root/ — ZSH конфиги для root -└── wallpapers/ — обои +└── wallpapers/ — обои (desktop + terminal) ``` --- @@ -247,21 +252,60 @@ sudo chsh -s /usr/bin/zsh root | Файл | Описание | |------|---------| | `evening-sky.png` | Обои рабочего стола — Catppuccin пейзаж. Источник: https://github.com/zhichaoh/catppuccin-wallpapers (`landscapes/evening-sky.png`) | -| `terminal-bg.png` | Фон терминала — кастомный aurora-градиент в цветах Catppuccin Mocha (сгенерирован через Python/PIL) | +| `terminal-bg.png` | Резервный фон терминала — aurora-градиент в цветах Catppuccin Mocha (сгенерирован через Python/PIL) | +| `rainbow-cat.png` | Текущий фон терминала — Catppuccin misc. Источник: https://github.com/catppuccin/wallpapers (`misc/rainbow-cat.png`) | ### Установка обоев рабочего стола ```bash mkdir -p ~/Pictures/Wallpapers/Catppuccin cp evening-sky.png ~/Pictures/Wallpapers/Catppuccin/ -# Затем в System Settings → Wallpaper, или через: -# kwriteconfig5 --file plasma-org.kde.plasma.desktop-appletsrc ... +# Затем в System Settings → Wallpaper ``` ### Установка фона терминала ```bash -cp terminal-bg.png ~/Pictures/Wallpapers/Catppuccin/ -# Уже прописан в Catppuccin.profile: -# BackgroundImageFile=/home/chase/Pictures/Wallpapers/Catppuccin/terminal-bg.png +cp rainbow-cat.png ~/Изображения/catppuccin-wallpapers/misc/ +# Путь прописан в catppuccin-mocha.colorscheme → Wallpaper= +``` + +--- + +## Скриншоты — Flameshot (`apps/`) + +**Программа:** Flameshot 12.x +**Горячая клавиша:** `Ctrl+Shift+S` → выделение области + аннотации + +### Установка +```bash +sudo apt install -y flameshot +``` + +### Конфиги +| Файл | Назначение | Куда класть | +|------|-----------|-------------| +| `flameshot-gui.desktop` | Desktop entry для команды `flameshot gui` | `~/.local/share/applications/` | +| `autostart/flameshot.desktop` | Автозапуск демона при входе | `~/.config/autostart/` | + +### Горячая клавиша в KDE +```bash +cp kde/kglobalshortcutsrc ~/.config/kglobalshortcutsrc +qdbus org.kde.kglobalaccel /kglobalaccel blockGlobalShortcuts false +``` + +--- + +## Alt+Tab — Thumbnail Grid (`kwin/`) + +**Эффект:** сетка превью всех открытых окон +**Источник:** https://github.com/Zren/kwin-tabbox-thumbnail_grid + +### Установка +```bash +mkdir -p ~/.local/share/kwin/tabbox/thumbnail_grid/contents/ui +cp kwin/tabbox/thumbnail_grid/metadata.desktop ~/.local/share/kwin/tabbox/thumbnail_grid/ +cp kwin/tabbox/thumbnail_grid/contents/ui/main.qml ~/.local/share/kwin/tabbox/thumbnail_grid/contents/ui/ +kwriteconfig5 --file kwinrc --group TabBox --key LayoutName thumbnail_grid +qdbus org.kde.KWin /KWin reconfigure ``` --- @@ -269,16 +313,17 @@ cp terminal-bg.png ~/Pictures/Wallpapers/Catppuccin/ ## Быстрая установка (порядок) 1. Установить шрифт `MesloLGS NF` -2. Установить пакеты: `zsh fzf bat eza qt5-style-kvantum papirus-icon-theme` -3. Скопировать `wallpapers/` в `~/Pictures/Wallpapers/Catppuccin/` -4. Установить Oh My Zsh + Powerlevel10k + плагины (для chase и root) -5. Скопировать `terminal/zsh/` → `~/` и `terminal/zsh-root/` → `/root/` -6. Скопировать `terminal/konsole/` → `~/.local/share/konsole/` и `~/.config/` -7. Установить Catppuccin KDE тему и Kvantum -8. Скопировать `kde/` конфиги в `~/.config/` и `~/.local/share/color-schemes/` -9. Установить SDDM тему Sugar Candy -10. Скопировать `sddm/` конфиги в `/etc/sddm.conf.d/` и `/usr/share/sddm/themes/sugar-candy/` -11. Перезагрузиться +2. Установить пакеты: `zsh fzf bat eza qt5-style-kvantum papirus-icon-theme flameshot` +3. Установить Oh My Zsh + Powerlevel10k + плагины (для chase и root) +4. Скопировать `terminal/zsh/` → `~/` и `terminal/zsh-root/` → `/root/` +5. Скопировать `terminal/konsole/` → `~/.local/share/konsole/` и `~/.config/` +6. Установить Catppuccin KDE тему и Kvantum +7. Скопировать `kde/` конфиги в `~/.config/` и `~/.local/share/color-schemes/` +8. Установить Alt+Tab Thumbnail Grid (см. секцию выше) +9. Скопировать `apps/` файлы (Flameshot) +10. Установить SDDM тему Sugar Candy +11. Скопировать `sddm/` конфиги в `/etc/sddm.conf.d/` и `/usr/share/sddm/themes/sugar-candy/` +12. Перезагрузиться --- diff --git a/apps/autostart/flameshot.desktop b/apps/autostart/flameshot.desktop new file mode 100644 index 0000000..cb25341 --- /dev/null +++ b/apps/autostart/flameshot.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Flameshot +Exec=flameshot +Type=Application +X-KDE-autostart-condition=flameshot:General:Autostart:true diff --git a/apps/flameshot-gui.desktop b/apps/flameshot-gui.desktop new file mode 100644 index 0000000..bb104a3 --- /dev/null +++ b/apps/flameshot-gui.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Flameshot Screenshot +Exec=flameshot gui +Type=Application +NoDisplay=true +StartupNotify=false diff --git a/kde/kdeglobals b/kde/kdeglobals index 5e650f4..c9660d2 100644 --- a/kde/kdeglobals +++ b/kde/kdeglobals @@ -138,6 +138,7 @@ Theme=Papirus-Dark [KDE] LookAndFeelPackage=Catppuccin-Mocha-Mauve +SingleClick=false widgetStyle=kvantum-dark [KFileDialog Settings] @@ -160,6 +161,9 @@ Sort reversed=false Speedbar Width=202 View Style=DetailTree +[Shortcuts] +SaveAs= + [WM] activeBackground=30,30,46 activeBlend=205,214,244 diff --git a/kde/kglobalshortcutsrc b/kde/kglobalshortcutsrc new file mode 100644 index 0000000..00953f1 --- /dev/null +++ b/kde/kglobalshortcutsrc @@ -0,0 +1,281 @@ +[ActivityManager] +_k_friendly_name=Диспетчер комнат +switch-to-activity-8587cd35-eb4e-4c15-b41f-f26391b6f16e=none,none,Переключиться на комнату «Начальная комната» + +[KDE Keyboard Layout Switcher] +Switch to Next Keyboard Layout=none,Meta+Alt+K,Выбрать следующую раскладку клавиатуры +_k_friendly_name=Переключение раскладки клавиатуры + +[flameshot-gui.desktop] +_k_friendly_name=flameshot-gui.desktop +_launch=,none,Flameshot Screenshot + +[flameshot.desktop] +_k_friendly_name=flameshot gui +_launch=Ctrl+Shift+S,none,flameshot gui + +[kaccess] +Toggle Screen Reader On and Off=Meta+Alt+S,Meta+Alt+S,Включить/выключить зачитывание с экрана +_k_friendly_name=Специальные возможности + +[kcm_touchpad] +Disable Touchpad=Touchpad Off,Touchpad Off,Выключить сенсорную панель +Enable Touchpad=Touchpad On,Touchpad On,Включить сенсорную панель +Toggle Touchpad=Touchpad Toggle,Touchpad Toggle\tMeta+Ctrl+Zenkaku Hankaku,Включить или выключить сенсорную панель +_k_friendly_name=Сенсорная панель + +[kded5] +Show System Activity=Ctrl+Esc,Ctrl+Esc,Показать активность системы +_k_friendly_name=KDE Daemon +display=Display\tMeta+P,Display\tMeta+P,Сменить экран + +[khotkeys] +_k_friendly_name=Служба пользовательских комбинаций клавиш +{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=none,none,Поиск + +[kmix] +_k_friendly_name=Громкость +decrease_microphone_volume=Microphone Volume Down,Microphone Volume Down,Уменьшить громкость микрофона +decrease_volume=Volume Down,Volume Down,Уменьшить громкость +increase_microphone_volume=Microphone Volume Up,Microphone Volume Up,Увеличить громкость микрофона +increase_volume=Volume Up,Volume Up,Увеличить громкость +mic_mute=Microphone Mute\tMeta+Volume Mute,Microphone Mute\tMeta+Volume Mute,Выключить микрофон +mute=Volume Mute,Volume Mute,Выключить звук + +[ksmserver] +Halt Without Confirmation=none,,Выключить компьютер без подтверждения +Lock Session=Meta+L\tScreensaver,Meta+L\tScreensaver,Заблокировать сеанс +Log Out=Ctrl+Alt+Del,Ctrl+Alt+Del,Завершить сеанс +Log Out Without Confirmation=none,,Завершить сеанс без подтверждения +Reboot Without Confirmation=none,,Перезагрузить компьютер без подтверждения +_k_friendly_name=Управление сеансами + +[kwin] +Activate Window Demanding Attention=Meta+Ctrl+A,Meta+Ctrl+A,Активировать окно\\, требующее внимания +Decrease Opacity=none,,Уменьшить непрозрачность окна на 5% +Edit Tiles=Meta+T,Meta+T,Изменить раскладку мозаики окон +Expose=Ctrl+F9,Ctrl+F9,Показать все окна с текущего рабочего стола +ExposeAll=Ctrl+F10\tLaunch (C),Ctrl+F10\tLaunch (C),Показать все окна со всех рабочих столов +ExposeClass=Ctrl+F7,Ctrl+F7,Показать окна одного класса +ExposeClassCurrentDesktop=none,none,Показать все окна одного класса с текущего рабочего стола +Increase Opacity=none,,Увеличить непрозрачность окна на 5% +Kill Window=Meta+Ctrl+Esc,Meta+Ctrl+Esc,Принудительно закрыть окно +Move Tablet to Next Output=none,none,Переключить планшет к следующему выходу +MoveMouseToCenter=Meta+F6,Meta+F6,Переместить мышь в центр +MoveMouseToFocus=Meta+F5,Meta+F5,Переместить мышь в фокус ввода +MoveZoomDown=none,none,Переместить увеличенную область вниз +MoveZoomLeft=none,none,Переместить увеличенную область влево +MoveZoomRight=none,none,Переместить увеличенную область вправо +MoveZoomUp=none,none,Переместить увеличенную область вверх +Overview=Meta+W,Meta+W,Включить или отключить режим обзора +Setup Window Shortcut=none,,Задать комбинацию клавиш для переключения в это окно +Show Desktop=Meta+D,Meta+D,Взглянуть на рабочий стол +ShowDesktopGrid=Meta+F8,Meta+F8,Показать все рабочие столы +Suspend Compositing=Alt+Shift+F12,Alt+Shift+F12,Приостановить композитное расширение +Switch One Desktop Down=Meta+Ctrl+Down,Meta+Ctrl+Down,Переключиться на один рабочий стол вниз +Switch One Desktop Up=Meta+Ctrl+Up,Meta+Ctrl+Up,Переключиться на один рабочий стол вверх +Switch One Desktop to the Left=Meta+Ctrl+Left,Meta+Ctrl+Left,Переключиться на один рабочий стол влево +Switch One Desktop to the Right=Meta+Ctrl+Right,Meta+Ctrl+Right,Переключиться на один рабочий стол вправо +Switch Window Down=Meta+Alt+Down,Meta+Alt+Down,Переключиться на окно снизу +Switch Window Left=Meta+Alt+Left,Meta+Alt+Left,Переключиться на окно слева +Switch Window Right=Meta+Alt+Right,Meta+Alt+Right,Переключиться на окно справа +Switch Window Up=Meta+Alt+Up,Meta+Alt+Up,Переключиться на окно сверху +Switch to Desktop 1=Ctrl+F1,Ctrl+F1,Переключиться на рабочий стол 1 +Switch to Desktop 10=none,,Переключиться на рабочий стол 10 +Switch to Desktop 11=none,,Переключиться на рабочий стол 11 +Switch to Desktop 12=none,,Переключиться на рабочий стол 12 +Switch to Desktop 13=none,,Переключиться на рабочий стол 13 +Switch to Desktop 14=none,,Переключиться на рабочий стол 14 +Switch to Desktop 15=none,,Переключиться на рабочий стол 15 +Switch to Desktop 16=none,,Переключиться на рабочий стол 16 +Switch to Desktop 17=none,,Переключиться на рабочий стол 17 +Switch to Desktop 18=none,,Переключиться на рабочий стол 18 +Switch to Desktop 19=none,,Переключиться на рабочий стол 19 +Switch to Desktop 2=Ctrl+F2,Ctrl+F2,Переключиться на рабочий стол 2 +Switch to Desktop 20=none,,Переключиться на рабочий стол 20 +Switch to Desktop 3=Ctrl+F3,Ctrl+F3,Переключиться на рабочий стол 3 +Switch to Desktop 4=Ctrl+F4,Ctrl+F4,Переключиться на рабочий стол 4 +Switch to Desktop 5=none,,Переключиться на рабочий стол 5 +Switch to Desktop 6=none,,Переключиться на рабочий стол 6 +Switch to Desktop 7=none,,Переключиться на рабочий стол 7 +Switch to Desktop 8=none,,Переключиться на рабочий стол 8 +Switch to Desktop 9=none,,Переключиться на рабочий стол 9 +Switch to Next Desktop=none,,Переключиться на следующий рабочий стол +Switch to Next Screen=none,,Переключиться на следующий экран +Switch to Previous Desktop=none,,Переключиться на предыдущий рабочий стол +Switch to Previous Screen=none,,Переключиться на предыдущий экран +Switch to Screen 0=none,,Переключиться на экран 0 +Switch to Screen 1=none,,Переключиться на экран 1 +Switch to Screen 2=none,,Переключиться на экран 2 +Switch to Screen 3=none,,Переключиться на экран 3 +Switch to Screen 4=none,,Переключиться на экран 4 +Switch to Screen 5=none,,Переключиться на экран 5 +Switch to Screen 6=none,,Переключиться на экран 6 +Switch to Screen 7=none,,Переключиться на экран 7 +Switch to Screen Above=none,,Переключиться на экран выше +Switch to Screen Below=none,,Переключиться на экран ниже +Switch to Screen to the Left=none,,Переключиться на экран слева +Switch to Screen to the Right=none,,Переключиться на экран справа +Toggle Night Color=none,none,Включить или отключить ночную цветовую схему +Toggle Window Raise/Lower=none,,Переключить передний/задний план +Walk Through Desktop List=none,,По списку рабочих столов вперёд +Walk Through Desktop List (Reverse)=none,,По списку рабочих столов назад +Walk Through Desktops=none,,На один рабочий стол вперёд +Walk Through Desktops (Reverse)=none,,На один рабочий стол назад +Walk Through Windows=Alt+Tab,Alt+Tab,На одно окно вперёд +Walk Through Windows (Reverse)=Alt+Shift+Backtab,Alt+Shift+Backtab,На одно окно назад +Walk Through Windows Alternative=none,,На одно окно вперёд (альтернативный режим) +Walk Through Windows Alternative (Reverse)=none,,На одно окно назад (альтернативный режим) +Walk Through Windows of Current Application=Alt+`,Alt+`,На одно окно вперёд текущего приложения +Walk Through Windows of Current Application (Reverse)=Alt+~,Alt+~,На одно окно назад текущего приложения +Walk Through Windows of Current Application Alternative=none,,На одно окно вперёд текущего приложения (альтернативный режим) +Walk Through Windows of Current Application Alternative (Reverse)=none,,На одно окно назад текущего приложения (альтернативный режим) +Window Above Other Windows=none,,Поместить окно на передний план +Window Below Other Windows=none,,Поместить окно на задний план +Window Close=Alt+F4,Alt+F4,Закрыть окно +Window Fullscreen=none,,Распахнуть окно на весь экран +Window Grow Horizontal=none,,Распахнуть окно по горизонтали +Window Grow Vertical=none,,Распахнуть окно по вертикали +Window Lower=none,,Опустить окно +Window Maximize=Meta+PgUp,Meta+PgUp,Распахнуть окно +Window Maximize Horizontal=none,,Распахнуть окно по горизонтали +Window Maximize Vertical=none,,Распахнуть окно по вертикали +Window Minimize=Meta+PgDown,Meta+PgDown,Свернуть окно +Window Move=none,,Переместить окно +Window Move Center=none,,Переместить окно в центр +Window No Border=none,,Скрыть или показать заголовок и границы окна +Window On All Desktops=none,,Поддерживать окно на всех рабочих столах +Window One Desktop Down=Meta+Ctrl+Shift+Down,Meta+Ctrl+Shift+Down,Окно на один рабочий стол вниз +Window One Desktop Up=Meta+Ctrl+Shift+Up,Meta+Ctrl+Shift+Up,Окно на один рабочий стол вверх +Window One Desktop to the Left=Meta+Ctrl+Shift+Left,Meta+Ctrl+Shift+Left,Окно на один рабочий стол влево +Window One Desktop to the Right=Meta+Ctrl+Shift+Right,Meta+Ctrl+Shift+Right,Окно на один рабочий стол вправо +Window One Screen Down=none,,Окно на один экран вниз +Window One Screen Up=none,,Окно на один экран вверх +Window One Screen to the Left=none,,Окно на один экран влево +Window One Screen to the Right=none,,Окно на один экран вправо +Window Operations Menu=Alt+F3,Alt+F3,Меню действий с окном +Window Pack Down=none,,Переместить окно вниз +Window Pack Left=none,,Переместить окно влево +Window Pack Right=none,,Переместить окно вправо +Window Pack Up=none,,Переместить окно вверх +Window Quick Tile Bottom=Meta+Down,Meta+Down,Распахнуть окно на нижнюю половину экрана +Window Quick Tile Bottom Left=none,,Распахнуть окно на левую нижнюю четверть экрана +Window Quick Tile Bottom Right=none,,Распахнуть окно на правую нижнюю четверть экрана +Window Quick Tile Left=Meta+Left,Meta+Left,Распахнуть окно на левую половину экрана +Window Quick Tile Right=Meta+Right,Meta+Right,Распахнуть окно на правую половину экрана +Window Quick Tile Top=Meta+Up,Meta+Up,Распахнуть окно на верхнюю половину экрана +Window Quick Tile Top Left=none,,Распахнуть окно на левую верхнюю четверть экрана +Window Quick Tile Top Right=none,,Распахнуть окно на правую верхнюю четверть экрана +Window Raise=none,,Поднять окно +Window Resize=none,,Изменить размер окна +Window Shade=none,,Свернуть окно в заголовок +Window Shrink Horizontal=none,,Сжать окно по горизонтали +Window Shrink Vertical=none,,Сжать окно по вертикали +Window to Desktop 1=none,,Переместить окно на рабочий стол 1 +Window to Desktop 10=none,,Переместить окно на рабочий стол 10 +Window to Desktop 11=none,,Переместить окно на рабочий стол 11 +Window to Desktop 12=none,,Переместить окно на рабочий стол 12 +Window to Desktop 13=none,,Переместить окно на рабочий стол 13 +Window to Desktop 14=none,,Переместить окно на рабочий стол 14 +Window to Desktop 15=none,,Переместить окно на рабочий стол 15 +Window to Desktop 16=none,,Переместить окно на рабочий стол 16 +Window to Desktop 17=none,,Переместить окно на рабочий стол 17 +Window to Desktop 18=none,,Переместить окно на рабочий стол 18 +Window to Desktop 19=none,,Переместить окно на рабочий стол 19 +Window to Desktop 2=none,,Переместить окно на рабочий стол 2 +Window to Desktop 20=none,,Переместить окно на рабочий стол 20 +Window to Desktop 3=none,,Переместить окно на рабочий стол 3 +Window to Desktop 4=none,,Переместить окно на рабочий стол 4 +Window to Desktop 5=none,,Переместить окно на рабочий стол 5 +Window to Desktop 6=none,,Переместить окно на рабочий стол 6 +Window to Desktop 7=none,,Переместить окно на рабочий стол 7 +Window to Desktop 8=none,,Переместить окно на рабочий стол 8 +Window to Desktop 9=none,,Переместить окно на рабочий стол 9 +Window to Next Desktop=none,,Переместить окно на следующий рабочий стол +Window to Next Screen=Meta+Shift+Right,Meta+Shift+Right,Переместить окно на следующий экран +Window to Previous Desktop=none,,Переместить окно на предыдущий рабочий стол +Window to Previous Screen=Meta+Shift+Left,Meta+Shift+Left,Переместить окно на предыдущий экран +Window to Screen 0=none,,Переместить окно на экран 0 +Window to Screen 1=none,,Переместить окно на экран 1 +Window to Screen 2=none,,Переместить окно на экран 2 +Window to Screen 3=none,,Переместить окно на экран 3 +Window to Screen 4=none,,Переместить окно на экран 4 +Window to Screen 5=none,,Переместить окно на экран 5 +Window to Screen 6=none,,Переместить окно на экран 6 +Window to Screen 7=none,,Переместить окно на экран 7 +_k_friendly_name=KWin +view_actual_size=none,Meta+0,Фактический размер +view_zoom_in=Meta++\tMeta+=,Meta++\tMeta+=,Увеличить +view_zoom_out=Meta+-,Meta+-,Уменьшить + +[org.kde.dolphin.desktop] +_k_friendly_name=Dolphin +_launch=Meta+E,Meta+E,Dolphin + +[org.kde.konsole.desktop] +NewTab=none,none,Открыть новую вкладку +NewWindow=none,none,Открыть новое окно +_k_friendly_name=Konsole +_launch=Ctrl+Alt+T,Ctrl+Alt+T,Konsole + +[org.kde.krunner.desktop] +RunClipboard=Alt+Shift+F2,Alt+Shift+F2,Запустить команду из буфера обмена +_k_friendly_name=Открыть строку поиска и запуска KRunner +_launch=Alt+Space\tAlt+F2\tSearch,Alt+Space\tAlt+F2\tSearch,Открыть строку поиска и запуска KRunner + +[org.kde.plasma.emojier.desktop] +_k_friendly_name=Панель выбора эмодзи +_launch=Meta+.\tMeta+Ctrl+Alt+Shift+Space,Meta+.\tMeta+Ctrl+Alt+Shift+Space,Панель выбора эмодзи + +[org_kde_powerdevil] +Decrease Keyboard Brightness=Keyboard Brightness Down,Keyboard Brightness Down,Уменьшить яркость подсветки клавиатуры +Decrease Screen Brightness=Monitor Brightness Down,Monitor Brightness Down,Уменьшить яркость экрана +Hibernate=Hibernate,Hibernate,Перейти в спящий режим +Increase Keyboard Brightness=Keyboard Brightness Up,Keyboard Brightness Up,Увеличить яркость подсветки клавиатуры +Increase Screen Brightness=Monitor Brightness Up,Monitor Brightness Up,Увеличить яркость экрана +PowerDown=Power Down,Power Down,Отключить питание +PowerOff=Power Off,Power Off,Выключить +Sleep=Sleep,Sleep,Перейти в ждущий режим +Toggle Keyboard Backlight=Keyboard Light On/Off,Keyboard Light On/Off,Сменить состояние подсветки клавиатуры +Turn Off Screen=none,none,Выключить монитор +_k_friendly_name=Управление питанием + +[plasmashell] +_k_friendly_name=Plasma +activate task manager entry 1=Meta+1,Meta+1,Открыть 1-ю кнопку на панели задач +activate task manager entry 10=Meta+0,Meta+0,Открыть 10-ю кнопку на панели задач +activate task manager entry 2=Meta+2,Meta+2,Открыть 2-ю кнопку на панели задач +activate task manager entry 3=Meta+3,Meta+3,Открыть 3-ю кнопку на панели задач +activate task manager entry 4=Meta+4,Meta+4,Открыть 4-ю кнопку на панели задач +activate task manager entry 5=Meta+5,Meta+5,Открыть 5-ю кнопку на панели задач +activate task manager entry 6=Meta+6,Meta+6,Открыть 6-ю кнопку на панели задач +activate task manager entry 7=Meta+7,Meta+7,Открыть 7-ю кнопку на панели задач +activate task manager entry 8=Meta+8,Meta+8,Открыть 8-ю кнопку на панели задач +activate task manager entry 9=Meta+9,Meta+9,Открыть 9-ю кнопку на панели задач +activate widget 4=Alt+F1,none,Сделать виджет «Меню запуска приложений» активным +clear-history=none,,Очистить журнал буфера обмена +clipboard_action=Meta+Ctrl+X,Meta+Ctrl+X,Всплывающее меню автоматических действий +cycle-panels=Meta+Alt+P,Meta+Alt+P,Перемещение фокуса ввода с клавиатуры между панелями +cycleNextAction=none,,Следующая запись журнала +cyclePrevAction=none,,Предыдущая запись журнала +edit_clipboard=none,,Редактирование буфера обмена… +manage activities=Meta+Q,Meta+Q,Показать переключатель комнат +next activity=Meta+Tab,none,На одну комнату вперёд +previous activity=Meta+Shift+Tab,none,На одну комнату назад +repeat_action=Meta+Ctrl+R,Meta+Ctrl+R,Ручной выбор действия с буфером обмена +show dashboard=Ctrl+F12,Ctrl+F12,Показать рабочий стол +show-barcode=none,,Показать штрихкод… +show-on-mouse-pos=Meta+V,Meta+V,Показать записи на позиции указателя мыши +stop current activity=Meta+S,Meta+S,Прекратить выполнение текущей комнаты +switch to next activity=none,,Переключиться в следующую комнату +switch to previous activity=none,,Переключиться в предыдущую комнату +toggle do not disturb=none,,Включение и отключение режима «Не беспокоить» + +[systemsettings.desktop] +_k_friendly_name=Параметры системы +_launch=Tools,Tools,Параметры системы +kcm-kscreen=none,none,Настройка экранов +kcm-lookandfeel=none,none,Оформление рабочей среды +kcm-users=none,none,Пользователи +powerdevilprofilesconfig=none,none,Энергосбережение +screenlocker=none,none,Блокировка экрана diff --git a/kde/kwinrc b/kde/kwinrc index 684c352..0388a7b 100644 --- a/kde/kwinrc +++ b/kde/kwinrc @@ -10,6 +10,9 @@ Rows=1 blurEnabled=true contrastEnabled=true +[TabBox] +LayoutName=thumbnail_grid + [Tiling] padding=4 @@ -20,7 +23,7 @@ tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"wi tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} [Tiling][6d535bc9-f7b1-58e1-9e7f-fb845e923dab] -tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} +tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.3041666666666667},{"width":0.4458333333333333}]} [Tiling][8f2ce793-be6f-5cc4-80dd-076d7c8fedaf] tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} diff --git a/kwin/tabbox/thumbnail_grid/contents/ui/main.qml b/kwin/tabbox/thumbnail_grid/contents/ui/main.qml new file mode 100644 index 0000000..fe51f8f --- /dev/null +++ b/kwin/tabbox/thumbnail_grid/contents/ui/main.qml @@ -0,0 +1,252 @@ +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.kquickcontrolsaddons 2.0 +import org.kde.kwin 2.0 as KWin + +// https://techbase.kde.org/Development/Tutorials/KWin/WindowSwitcher +// https://github.com/KDE/kwin/blob/master/tabbox/switcheritem.h +// https://github.com/KDE/kwin/blob/5baf75d11eda7ac4a3910a02544fd9cd64d9a2b2/tabbox/tabboxhandler.cpp#L230 +// https://github.com/KDE/kwin/blob/5baf75d11eda7ac4a3910a02544fd9cd64d9a2b2/tabbox/tabboxhandler.cpp#L325 +KWin.Switcher { + id: tabBox + currentIndex: thumbnailGridView.currentIndex + + PlasmaCore.Dialog { + id: dialog + location: PlasmaCore.Types.Floating + visible: tabBox.visible + flags: Qt.X11BypassWindowManagerHint + x: tabBox.screenGeometry.x + tabBox.screenGeometry.width * 0.5 - dialogMainItem.width * 0.5 + y: tabBox.screenGeometry.y + tabBox.screenGeometry.height * 0.5 - dialogMainItem.height * 0.5 + + onVisibleChanged: { + if (visible) { + dialogMainItem.calculateColumnCount(); + } else { + thumbnailGridView.highCount = 0; + } + } + + mainItem: Item { + id: dialogMainItem + + focus: true + + property int maxWidth: tabBox.screenGeometry.width * 0.9 + property int maxHeight: tabBox.screenGeometry.height * 0.7 + property real screenFactor: tabBox.screenGeometry.width / tabBox.screenGeometry.height + property int maxGridColumnsByWidth: Math.floor(maxWidth / thumbnailGridView.cellWidth) + + property int gridColumns: maxGridColumnsByWidth + property int gridRows: Math.ceil(thumbnailGridView.count / gridColumns) + property int optimalWidth: thumbnailGridView.cellWidth * gridColumns + property int optimalHeight: thumbnailGridView.cellHeight * gridRows + property bool canStretchX: false + property bool canStretchY: false + width: Math.min(Math.max(thumbnailGridView.cellWidth, optimalWidth), maxWidth) + height: Math.min(Math.max(thumbnailGridView.cellHeight, optimalHeight), maxHeight) + + clip: true + + // simple greedy algorithm + function calculateColumnCount() { + // respect screenGeometry + var c = Math.min(thumbnailGridView.count, maxGridColumnsByWidth); + + var residue = thumbnailGridView.count % c; + if (residue == 0) { + gridColumns = c; + return; + } + + // start greedy recursion + gridColumns = columnCountRecursion(c, c, c - residue); + } + + // step for greedy algorithm + function columnCountRecursion(prevC, prevBestC, prevDiff) { + var c = prevC - 1; + + // don't increase vertical extent more than horizontal + // and don't exceed maxHeight + if (prevC * prevC <= thumbnailGridView.count + prevDiff || + maxHeight < Math.ceil(thumbnailGridView.count / c) * thumbnailGridView.cellHeight) { + return prevBestC; + } + var residue = thumbnailGridView.count % c; + // halts algorithm at some point + if (residue == 0) { + return c; + } + // empty slots + var diff = c - residue; + + // compare it to previous count of empty slots + if (diff < prevDiff) { + return columnCountRecursion(c, c, diff); + } else if (diff == prevDiff) { + // when it's the same try again, we'll stop early enough thanks to the landscape mode condition + return columnCountRecursion(c, prevBestC, diff); + } + // when we've found a local minimum choose this one (greedy) + return columnCountRecursion(c, prevBestC, diff); + } + + property bool mouseEnabled: false + MouseArea { + id: mouseDetector + anchors.fill: parent + hoverEnabled: true + onPositionChanged: dialogMainItem.mouseEnabled = true + } + + // just to get the margin sizes + PlasmaCore.FrameSvgItem { + id: hoverItem + imagePath: "widgets/viewitem" + prefix: "hover" + visible: false + } + + GridView { + id: thumbnailGridView + model: tabBox.model + // interactive: false // Disable drag to scroll + + anchors.fill: parent + + property int captionRowHeight: 22 + property int thumbnailWidth: 300 + property int thumbnailHeight: thumbnailWidth * (1.0/dialogMainItem.screenFactor) + cellWidth: hoverItem.margins.left + thumbnailWidth + hoverItem.margins.right + cellHeight: hoverItem.margins.top + captionRowHeight + thumbnailHeight + hoverItem.margins.bottom + height: cellHeight + + keyNavigationWraps: true + highlightMoveDuration: 0 + + // allow expansion on increasing count + property int highCount: 0 + onCountChanged: { + if (highCount < count) { + dialogMainItem.calculateColumnCount(); + highCount = count; + } + } + + delegate: Item { + width: thumbnailGridView.cellWidth + height: thumbnailGridView.cellHeight + + MouseArea { + anchors.fill: parent + // hoverEnabled: dialogMainItem.mouseEnabled + // onEntered: parent.hover() + onClicked: { + parent.select() + // dialog.close() // Doesn't end the effects until you release Alt. + } + } + function select() { + thumbnailGridView.currentIndex = index; + thumbnailGridView.currentIndexChanged(thumbnailGridView.currentIndex); + } + + Item { + z: 0 + anchors.fill: parent + anchors.leftMargin: hoverItem.margins.left + anchors.topMargin: hoverItem.margins.top + anchors.rightMargin: hoverItem.margins.right + anchors.bottomMargin: hoverItem.margins.bottom + + RowLayout { + id: captionRow + anchors.left: parent.left + anchors.top: parent.top + anchors.right: parent.right + height: thumbnailGridView.captionRowHeight + spacing: 4 + + QIconItem { + id: iconItem + // source: model.icon + icon: model.icon + width: parent.height + height: parent.height + state: index == thumbnailGridView.currentIndex ? QIconItem.ActiveState : QIconItem.DefaultState + } + + PlasmaComponents.Label { + text: model.caption + height: parent.height + // width: parent.width - captionRow.spacing - iconItem.width + Layout.fillWidth: true + elide: Text.ElideRight + } + + PlasmaComponents.ToolButton { + visible: model.closeable && typeof tabBox.model.close !== 'undefined' || false + iconSource: 'window-close-symbolic' + onClicked: { + tabBox.model.close(index) + } + } + } + + // Cannot draw icon on top of thumbnail. + KWin.ThumbnailItem { + wId: windowId + // clip: true + // clipTo: thumbnailGridView + clip: true + clipTo: parent + anchors.fill: parent + anchors.topMargin: captionRow.height + } + } + } // GridView.delegate + + highlight: PlasmaCore.FrameSvgItem { + id: highlightItem + imagePath: "widgets/viewitem" + prefix: "hover" + } + + // property int selectedIndex: -1 + Connections { + target: tabBox + onCurrentIndexChanged: { + thumbnailGridView.currentIndex = tabBox.currentIndex + } + } + + // keyNavigationEnabled: true // Requires: Qt 5.7 and QtQuick 2.? (2.7 didn't work). + // keyNavigationWraps: true // Requires: Qt 5.7 and QtQuick 2.? (2.7 didn't work). + + } // GridView + + + // This doesn't work, nor does keyboard input work on any other tabbox skin (KDE 5.7.4) + // It does work in the preview however. + Keys.onPressed: { + // console.log('keyPressed', event.key) + if (event.key == Qt.Key_Left) { + thumbnailGridView.moveCurrentIndexLeft(); + } else if (event.key == Qt.Key_Right) { + thumbnailGridView.moveCurrentIndexRight(); + } else if (event.key == Qt.Key_Up) { + thumbnailGridView.moveCurrentIndexUp(); + } else if (event.key == Qt.Key_Down) { + thumbnailGridView.moveCurrentIndexDown(); + } else { + return; + } + + thumbnailGridView.currentIndexChanged(thumbnailGridView.currentIndex); + } + } // Dialog.mainItem + } // Dialog +} diff --git a/kwin/tabbox/thumbnail_grid/metadata.desktop b/kwin/tabbox/thumbnail_grid/metadata.desktop new file mode 100644 index 0000000..d93f2b7 --- /dev/null +++ b/kwin/tabbox/thumbnail_grid/metadata.desktop @@ -0,0 +1,17 @@ +[Desktop Entry] +Name=Thumbnail Grid +Comment= + +Type=Service +X-KDE-ServiceTypes=KWin/WindowSwitcher + +X-Plasma-API=declarativeappletscript +X-Plasma-MainScript=ui/main.qml + +Icon=preferences-system-windows-switcher-big-icons +X-KDE-PluginInfo-Author=Chris Holland +X-KDE-PluginInfo-Email=zrenfire@gmail.com +X-KDE-PluginInfo-Name=thumbnail_grid +X-KDE-PluginInfo-Version=5 +X-KDE-PluginInfo-Website=https://github.com/Zren/kwin-tabbox-thumbnail_grid +X-KDE-PluginInfo-Depends= diff --git a/terminal/konsole/Catppuccin.profile b/terminal/konsole/Catppuccin.profile index 65b6235..75efaee 100644 --- a/terminal/konsole/Catppuccin.profile +++ b/terminal/konsole/Catppuccin.profile @@ -3,9 +3,6 @@ ColorScheme=catppuccin-mocha Font=MesloLGS NF,11,-1,5,50,0,0,0,1,0 LineSpacing=2 UseFontLineChararacters=false -BackgroundImageFile=/home/chase/Pictures/Wallpapers/Catppuccin/terminal-bg.png -BackgroundImageLocation=0 -BackgroundImageOpacity=0.5 [Cursor Options] CursorShape=1 diff --git a/terminal/konsole/catppuccin-mocha.colorscheme b/terminal/konsole/catppuccin-mocha.colorscheme index 86801d1..23bc611 100644 --- a/terminal/konsole/catppuccin-mocha.colorscheme +++ b/terminal/konsole/catppuccin-mocha.colorscheme @@ -93,4 +93,8 @@ Blur=false ColorRandomization=false Description=Catppuccin Mocha Opacity=1 -Wallpaper= +Wallpaper=/home/chase/Изображения/catppuccin-wallpapers/misc/rainbow-cat.png +WallpaperOpacity=0.45 +WallpaperFlipType=NoFlip +FillStyle=Crop +Anchor=0.5,0.5 diff --git a/wallpapers/rainbow-cat.png b/wallpapers/rainbow-cat.png new file mode 100644 index 0000000..b87b2b9 Binary files /dev/null and b/wallpapers/rainbow-cat.png differ