diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1e071e --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ +# Dotfiles + +Personal dotfiles for development environment configuration. + +## Structure + +``` +nvim/ # Neovim config (symlink to ~/.config/nvim) +├── init.lua +└── lua/ + ├── config/ + │ ├── autocmds.lua + │ ├── keymaps.lua + │ └── options.lua + └── plugins/ + ├── bufferline.lua + ├── cmp.lua + ├── colorscheme.lua + ├── editor.lua + ├── git.lua + ├── lsp.lua + ├── lualine.lua + ├── session.lua + ├── telescope.lua + └── treesitter.lua + +bazzite/ # Bazzite (Fedora) + Niri compositor configs +├── niri/config.kdl +├── btop/btop.conf +├── glow/glow.yml +├── gtk-3.0/ +│ ├── colors.css +│ ├── gtk.css +│ └── settings.ini +├── gtk-4.0/ +│ ├── colors.css +│ ├── gtk.css +│ └── settings.ini +├── xsettingsd/xsettingsd.conf +├── environment.d/intel-gtk-fix.conf +└── autostart/steam.desktop +``` + +## Neovim + +Requires Neovim 0.11+ — uses native APIs (`vim.lsp.config`, `vim.lsp.enable`, built-in treesitter). + +**Plugin manager:** lazy.nvim (auto-bootstraps on first launch). + +**Leader key:** Space. + +### Languages + +Rust, Zig, TypeScript/JavaScript, C/C++. + +### LSP servers + +| Server | Language | Install | +|---|---|---| +| rust-analyzer | Rust | `rustup component add rust-analyzer` (via rustaceanvim) | +| clangd | C/C++ | auto-installed via mason | +| ts_ls | TypeScript/JS | auto-installed via mason | +| zls | Zig | `brew install zls` | + +### Key plugins + +telescope, treesitter, nvim-cmp, bufferline, neo-tree, gitsigns, lazygit, lualine, which-key, persistence, alabaster theme. + +## Bazzite + +Configs for Bazzite (Fedora Atomic) with Niri Wayland compositor. + +| Config | Description | +|---|---| +| `niri/config.kdl` | Niri compositor | +| `btop/btop.conf` | System monitor | +| `glow/glow.yml` | Terminal markdown viewer | +| `gtk-3.0/`, `gtk-4.0/` | GTK theme and colors | +| `xsettingsd/xsettingsd.conf` | X11/XWayland settings (fonts, theme) | +| `environment.d/intel-gtk-fix.conf` | Intel GPU environment fix | +| `autostart/steam.desktop` | Steam autostart | + +## Setup + +### macOS (Neovim) + +```bash +ln -s ~/Docs/Projects/dotfiles/nvim ~/.config/nvim +brew install lazygit + +# First nvim launch will auto-install plugins, then run: +# :TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash +``` + +### Bazzite + +```bash +# Symlink configs to ~/.config/ +for dir in niri btop glow gtk-3.0 gtk-4.0 xsettingsd environment.d autostart; do + ln -sf ~/Docs/Projects/dotfiles/bazzite/$dir ~/.config/$dir +done +``` diff --git a/bazzite/autostart/steam.desktop b/bazzite/autostart/steam.desktop new file mode 100644 index 0000000..178d937 --- /dev/null +++ b/bazzite/autostart/steam.desktop @@ -0,0 +1,281 @@ +[Desktop Entry] +Name=Steam +Comment=Application for managing and playing games on Steam +Comment[pt_BR]=Aplicativo para jogar e gerenciar jogos no Steam +Comment[bg]=Приложение за ръководене и пускане на игри в Steam +Comment[cs]=Aplikace pro spravování a hraní her ve službě Steam +Comment[da]=Applikation til at håndtere og spille spil på Steam +Comment[nl]=Applicatie voor het beheer en het spelen van games op Steam +Comment[fi]=Steamin pelien hallintaan ja pelaamiseen tarkoitettu sovellus +Comment[fr]=Application de gestion et d'utilisation des jeux sur Steam +Comment[de]=Anwendung zum Verwalten und Spielen von Spielen auf Steam +Comment[el]=Εφαρμογή διαχείρισης παιχνιδιών στο Steam +Comment[hu]=Alkalmazás a Steames játékok futtatásához és kezeléséhez +Comment[it]=Applicazione per la gestione e l'esecuzione di giochi su Steam +Comment[ja]=Steam 上でゲームを管理&プレイするためのアプリケーション +Comment[ko]=Steam에 있는 게임을 관리하고 플레이할 수 있는 응용 프로그램 +Comment[no]=Program for å administrere og spille spill på Steam +Comment[pt_PT]=Aplicação para organizar e executar jogos no Steam +Comment[pl]=Aplikacja do zarządzania i uruchamiania gier na platformie Steam +Comment[ro]=Aplicație pentru administrarea și jucatul jocurilor pe Steam +Comment[ru]=Приложение для игр и управления играми в Steam +Comment[es]=Aplicación para administrar y ejecutar juegos en Steam +Comment[sv]=Ett program för att hantera samt spela spel på Steam +Comment[zh_CN]=管理和进行 Steam 游戏的应用程序 +Comment[zh_TW]=管理並執行 Steam 遊戲的應用程式 +Comment[th]=โปรแกรมสำหรับจัดการและเล่นเกมบน Steam +Comment[tr]=Steam üzerinden oyun oynama ve düzenleme uygulaması +Comment[uk]=Програма для керування іграми та запуску ігор у Steam +Comment[vi]=Ứng dụng để quản lý và chơi trò chơi trên Steam +Exec=/usr/bin/bazzite-steam -silent %U +Icon=steam +Terminal=false +Type=Application +Categories=Network;FileTransfer;Game; +MimeType=x-scheme-handler/steam;x-scheme-handler/steamlink; +Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends; +X-Desktop-File-Install-Version=0.28 + +[Desktop Action Store] +Name=Store +Name[pt_BR]=Loja +Name[bg]=Магазин +Name[cs]=Obchod +Name[da]=Butik +Name[nl]=Winkel +Name[fi]=Kauppa +Name[fr]=Magasin +Name[de]=Shop +Name[el]=ΚΑΤΑΣΤΗΜΑ +Name[hu]=Áruház +Name[it]=Negozio +Name[ja]=ストア +Name[ko]=상점 +Name[no]=Butikk +Name[pt_PT]=Loja +Name[pl]=Sklep +Name[ro]=Magazin +Name[ru]=Магазин +Name[es]=Tienda +Name[sv]=Butik +Name[zh_CN]=商店 +Name[zh_TW]=商店 +Name[th]=ร้านค้า +Name[tr]=Mağaza +Name[uk]=Крамниця +Name[vi]=Cửa hàng +Exec=/usr/bin/bazzite-steam steam://store + +[Desktop Action Community] +Name=Community +Name[pt_BR]=Comunidade +Name[bg]=Общност +Name[cs]=Komunita +Name[da]=Fællesskab +Name[nl]=Community +Name[fi]=Yhteisö +Name[fr]=Communauté +Name[de]=Community +Name[el]=Κοινότητα +Name[hu]=Közösség +Name[it]=Comunità +Name[ja]=コミュニティ +Name[ko]=커뮤니티 +Name[no]=Samfunn +Name[pt_PT]=Comunidade +Name[pl]=Społeczność +Name[ro]=Comunitate +Name[ru]=Сообщество +Name[es]=Comunidad +Name[sv]=Gemenskap +Name[zh_CN]=社区 +Name[zh_TW]=社群 +Name[th]=ชุมชน +Name[tr]=Topluluk +Name[uk]=Спільнота +Name[vi]=Cộng đồng +Exec=/usr/bin/bazzite-steam steam://url/CommunityHome/ + +[Desktop Action Library] +Name=Library +Name[pt_BR]=Biblioteca +Name[bg]=Библиотека +Name[cs]=Knihovna +Name[da]=Bibliotek +Name[nl]=Bibliotheek +Name[fi]=Kokoelma +Name[fr]=Bibliothèque +Name[de]=Bibliothek +Name[el]=Συλλογή +Name[hu]=Könyvtár +Name[it]=Libreria +Name[ja]=ライブラリ +Name[ko]=라이브러리 +Name[no]=Bibliotek +Name[pt_PT]=Biblioteca +Name[pl]=Biblioteka +Name[ro]=Colecţie +Name[ru]=Библиотека +Name[es]=Biblioteca +Name[sv]=Bibliotek +Name[zh_CN]=库 +Name[zh_TW]=收藏庫 +Name[th]=คลัง +Name[tr]=Kütüphane +Name[uk]=Бібліотека +Name[vi]=Thư viện +Exec=/usr/bin/bazzite-steam steam://open/games + +[Desktop Action Servers] +Name=Servers +Name[pt_BR]=Servidores +Name[bg]=Сървъри +Name[cs]=Servery +Name[da]=Servere +Name[nl]=Servers +Name[fi]=Palvelimet +Name[fr]=Serveurs +Name[de]=Server +Name[el]=Διακομιστές +Name[hu]=Szerverek +Name[it]=Server +Name[ja]=サーバー +Name[ko]=서버 +Name[no]=Tjenere +Name[pt_PT]=Servidores +Name[pl]=Serwery +Name[ro]=Servere +Name[ru]=Серверы +Name[es]=Servidores +Name[sv]=Servrar +Name[zh_CN]=服务器 +Name[zh_TW]=伺服器 +Name[th]=เซิร์ฟเวอร์ +Name[tr]=Sunucular +Name[uk]=Сервери +Name[vi]=Máy chủ +Exec=/usr/bin/bazzite-steam steam://open/servers + +[Desktop Action Screenshots] +Name=Screenshots +Name[pt_BR]=Capturas de tela +Name[bg]=Снимки +Name[cs]=Snímky obrazovky +Name[da]=Skærmbilleder +Name[nl]=Screenshots +Name[fi]=Kuvankaappaukset +Name[fr]=Captures d'écran +Name[de]=Screenshots +Name[el]=Φωτογραφίες +Name[hu]=Képernyőmentések +Name[it]=Screenshot +Name[ja]=スクリーンショット +Name[ko]=스크린샷 +Name[no]=Skjermbilder +Name[pt_PT]=Capturas de ecrã +Name[pl]=Zrzuty ekranu +Name[ro]=Capturi de ecran +Name[ru]=Скриншоты +Name[es]=Capturas +Name[sv]=Skärmdumpar +Name[zh_CN]=截图 +Name[zh_TW]=螢幕擷圖 +Name[th]=ภาพหน้าจอ +Name[tr]=Ekran Görüntüleri +Name[uk]=Скріншоти +Name[vi]=Ảnh chụp +Exec=/usr/bin/bazzite-steam steam://open/screenshots + +[Desktop Action News] +Name=News +Name[pt_BR]=Notícias +Name[bg]=Новини +Name[cs]=Zprávy +Name[da]=Nyheder +Name[nl]=Nieuws +Name[fi]=Uutiset +Name[fr]=Actualités +Name[de]=Neuigkeiten +Name[el]=Νέα +Name[hu]=Hírek +Name[it]=Notizie +Name[ja]=ニュース +Name[ko]=뉴스 +Name[no]=Nyheter +Name[pt_PT]=Novidades +Name[pl]=Aktualności +Name[ro]=Știri +Name[ru]=Новости +Name[es]=Noticias +Name[sv]=Nyheter +Name[zh_CN]=新闻 +Name[zh_TW]=新聞 +Name[th]=ข่าวสาร +Name[tr]=Haberler +Name[uk]=Новини +Name[vi]=Tin tức +Exec=/usr/bin/bazzite-steam steam://openurl/https://store.steampowered.com/news + +[Desktop Action Settings] +Name=Settings +Name[pt_BR]=Configurações +Name[bg]=Настройки +Name[cs]=Nastavení +Name[da]=Indstillinger +Name[nl]=Instellingen +Name[fi]=Asetukset +Name[fr]=Paramètres +Name[de]=Einstellungen +Name[el]=Ρυθμίσεις +Name[hu]=Beállítások +Name[it]=Impostazioni +Name[ja]=設定 +Name[ko]=설정 +Name[no]=Innstillinger +Name[pt_PT]=Definições +Name[pl]=Ustawienia +Name[ro]=Setări +Name[ru]=Настройки +Name[es]=Parámetros +Name[sv]=Inställningar +Name[zh_CN]=设置 +Name[zh_TW]=設定 +Name[th]=การตั้งค่า +Name[tr]=Ayarlar +Name[uk]=Налаштування +Name[vi]=Thiết lập +Exec=/usr/bin/bazzite-steam steam://open/settings + +[Desktop Action BigPicture] +Name=Big Picture +Exec=/usr/bin/bazzite-steam steam://open/bigpicture + +[Desktop Action Friends] +Name=Friends +Name[pt_BR]=Amigos +Name[bg]=Приятели +Name[cs]=Přátelé +Name[da]=Venner +Name[nl]=Vrienden +Name[fi]=Kaverit +Name[fr]=Amis +Name[de]=Freunde +Name[el]=Φίλοι +Name[hu]=Barátok +Name[it]=Amici +Name[ja]=フレンド +Name[ko]=친구 +Name[no]=Venner +Name[pt_PT]=Amigos +Name[pl]=Znajomi +Name[ro]=Prieteni +Name[ru]=Друзья +Name[es]=Amigos +Name[sv]=Vänner +Name[zh_CN]=好友 +Name[zh_TW]=好友 +Name[th]=เพื่อน +Name[tr]=Arkadaşlar +Name[uk]=Друзі +Name[vi]=Bạn bè +Exec=/usr/bin/bazzite-steam steam://open/friends diff --git a/bazzite/btop/btop.conf b/bazzite/btop/btop.conf new file mode 100644 index 0000000..b1f33d0 --- /dev/null +++ b/bazzite/btop/btop.conf @@ -0,0 +1,257 @@ +#? Config file for btop v. 1.4.5 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "Default" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "proc cpu mem net" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 1000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/bazzite/environment.d/intel-gtk-fix.conf b/bazzite/environment.d/intel-gtk-fix.conf new file mode 100644 index 0000000..75fe23c --- /dev/null +++ b/bazzite/environment.d/intel-gtk-fix.conf @@ -0,0 +1 @@ +GSK_RENDERER=gl diff --git a/bazzite/glow/glow.yml b/bazzite/glow/glow.yml new file mode 100644 index 0000000..749e1ec --- /dev/null +++ b/bazzite/glow/glow.yml @@ -0,0 +1,10 @@ +# style name or JSON path (default "auto") +style: "auto" +# mouse support (TUI-mode only) +mouse: false +# use pager to display markdown +pager: false +# word-wrap at width +width: 80 +# show all files, including hidden and ignored. +all: false diff --git a/bazzite/gtk-3.0/colors.css b/bazzite/gtk-3.0/colors.css new file mode 100644 index 0000000..0c919b2 --- /dev/null +++ b/bazzite/gtk-3.0/colors.css @@ -0,0 +1,84 @@ +@define-color borders_breeze #bcbebf; +@define-color content_view_bg_breeze #ffffff; +@define-color error_color_backdrop_breeze #da4453; +@define-color error_color_breeze #da4453; +@define-color error_color_insensitive_backdrop_breeze #f0b1b8; +@define-color error_color_insensitive_breeze #f0b1b8; +@define-color insensitive_base_color_breeze #f3f3f3; +@define-color insensitive_base_fg_color_breeze #aaabac; +@define-color insensitive_bg_color_breeze #e3e5e7; +@define-color insensitive_borders_breeze #d2d4d6; +@define-color insensitive_fg_color_breeze #a0a1a3; +@define-color insensitive_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_selected_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_selected_fg_color_breeze #a0a1a3; +@define-color link_color_breeze #2980b9; +@define-color link_visited_color_breeze #9b59b6; +@define-color success_color_backdrop_breeze #27ae60; +@define-color success_color_breeze #27ae60; +@define-color success_color_insensitive_backdrop_breeze #abd8be; +@define-color success_color_insensitive_breeze #abd8be; +@define-color theme_base_color_breeze #ffffff; +@define-color theme_bg_color_breeze #eff0f1; +@define-color theme_button_background_backdrop_breeze #fcfcfc; +@define-color theme_button_background_backdrop_insensitive_breeze #f0f0f0; +@define-color theme_button_background_insensitive_breeze #f0f0f0; +@define-color theme_button_background_normal_breeze #fcfcfc; +@define-color theme_button_decoration_focus_backdrop_breeze #3daee9; +@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_focus_breeze #3daee9; +@define-color theme_button_decoration_focus_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_backdrop_breeze #3daee9; +@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_breeze #3daee9; +@define-color theme_button_decoration_hover_insensitive_breeze #a2d8f3; +@define-color theme_button_foreground_active_backdrop_breeze #232629; +@define-color theme_button_foreground_active_backdrop_insensitive_breeze #a0a1a3; +@define-color theme_button_foreground_active_breeze #ffffff; +@define-color theme_button_foreground_active_insensitive_breeze #a0a1a3; +@define-color theme_button_foreground_backdrop_breeze #232629; +@define-color theme_button_foreground_backdrop_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_normal_breeze #232629; +@define-color theme_fg_color_breeze #232629; +@define-color theme_header_background_backdrop_breeze #eff0f1; +@define-color theme_header_background_breeze #dee0e2; +@define-color theme_header_background_light_breeze #eff0f1; +@define-color theme_header_foreground_backdrop_breeze #232629; +@define-color theme_header_foreground_breeze #232629; +@define-color theme_header_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_header_foreground_insensitive_breeze #232629; +@define-color theme_hovering_selected_bg_color_breeze #3daee9; +@define-color theme_selected_bg_color_breeze #3daee9; +@define-color theme_selected_fg_color_breeze #ffffff; +@define-color theme_text_color_breeze #232629; +@define-color theme_titlebar_background_backdrop_breeze #eff0f1; +@define-color theme_titlebar_background_breeze #dee0e2; +@define-color theme_titlebar_background_light_breeze #eff0f1; +@define-color theme_titlebar_foreground_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_breeze #232629; +@define-color theme_unfocused_base_color_breeze #ffffff; +@define-color theme_unfocused_bg_color_breeze #eff0f1; +@define-color theme_unfocused_fg_color_breeze #232629; +@define-color theme_unfocused_selected_bg_color_alt_breeze #c2e0f5; +@define-color theme_unfocused_selected_bg_color_breeze #c2e0f5; +@define-color theme_unfocused_selected_fg_color_breeze #232629; +@define-color theme_unfocused_text_color_breeze #232629; +@define-color theme_unfocused_view_bg_color_breeze #f3f3f3; +@define-color theme_unfocused_view_text_color_breeze #aaabac; +@define-color theme_view_active_decoration_color_breeze #3daee9; +@define-color theme_view_hover_decoration_color_breeze #3daee9; +@define-color tooltip_background_breeze #f7f7f7; +@define-color tooltip_border_breeze #c2c3c4; +@define-color tooltip_text_breeze #232629; +@define-color unfocused_borders_breeze #bcbebf; +@define-color unfocused_insensitive_borders_breeze #d2d4d6; +@define-color warning_color_backdrop_breeze #f67400; +@define-color warning_color_breeze #f67400; +@define-color warning_color_insensitive_backdrop_breeze #fbc289; +@define-color warning_color_insensitive_breeze #fbc289; diff --git a/bazzite/gtk-3.0/gtk.css b/bazzite/gtk-3.0/gtk.css new file mode 100644 index 0000000..c9763f7 --- /dev/null +++ b/bazzite/gtk-3.0/gtk.css @@ -0,0 +1 @@ +@import 'colors.css'; \ No newline at end of file diff --git a/bazzite/gtk-3.0/settings.ini b/bazzite/gtk-3.0/settings.ini new file mode 100644 index 0000000..104481d --- /dev/null +++ b/bazzite/gtk-3.0/settings.ini @@ -0,0 +1,17 @@ +[Settings] +gtk-application-prefer-dark-theme=false +gtk-button-images=true +gtk-cursor-blink=true +gtk-cursor-blink-time=1000 +gtk-cursor-theme-name=breeze_cursors +gtk-cursor-theme-size=24 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=breeze +gtk-menu-images=true +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-toolbar-style=3 +gtk-xft-dpi=98304 diff --git a/bazzite/gtk-4.0/colors.css b/bazzite/gtk-4.0/colors.css new file mode 100644 index 0000000..0c919b2 --- /dev/null +++ b/bazzite/gtk-4.0/colors.css @@ -0,0 +1,84 @@ +@define-color borders_breeze #bcbebf; +@define-color content_view_bg_breeze #ffffff; +@define-color error_color_backdrop_breeze #da4453; +@define-color error_color_breeze #da4453; +@define-color error_color_insensitive_backdrop_breeze #f0b1b8; +@define-color error_color_insensitive_breeze #f0b1b8; +@define-color insensitive_base_color_breeze #f3f3f3; +@define-color insensitive_base_fg_color_breeze #aaabac; +@define-color insensitive_bg_color_breeze #e3e5e7; +@define-color insensitive_borders_breeze #d2d4d6; +@define-color insensitive_fg_color_breeze #a0a1a3; +@define-color insensitive_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_selected_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_selected_fg_color_breeze #a0a1a3; +@define-color link_color_breeze #2980b9; +@define-color link_visited_color_breeze #9b59b6; +@define-color success_color_backdrop_breeze #27ae60; +@define-color success_color_breeze #27ae60; +@define-color success_color_insensitive_backdrop_breeze #abd8be; +@define-color success_color_insensitive_breeze #abd8be; +@define-color theme_base_color_breeze #ffffff; +@define-color theme_bg_color_breeze #eff0f1; +@define-color theme_button_background_backdrop_breeze #fcfcfc; +@define-color theme_button_background_backdrop_insensitive_breeze #f0f0f0; +@define-color theme_button_background_insensitive_breeze #f0f0f0; +@define-color theme_button_background_normal_breeze #fcfcfc; +@define-color theme_button_decoration_focus_backdrop_breeze #3daee9; +@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_focus_breeze #3daee9; +@define-color theme_button_decoration_focus_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_backdrop_breeze #3daee9; +@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_breeze #3daee9; +@define-color theme_button_decoration_hover_insensitive_breeze #a2d8f3; +@define-color theme_button_foreground_active_backdrop_breeze #232629; +@define-color theme_button_foreground_active_backdrop_insensitive_breeze #a0a1a3; +@define-color theme_button_foreground_active_breeze #ffffff; +@define-color theme_button_foreground_active_insensitive_breeze #a0a1a3; +@define-color theme_button_foreground_backdrop_breeze #232629; +@define-color theme_button_foreground_backdrop_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_normal_breeze #232629; +@define-color theme_fg_color_breeze #232629; +@define-color theme_header_background_backdrop_breeze #eff0f1; +@define-color theme_header_background_breeze #dee0e2; +@define-color theme_header_background_light_breeze #eff0f1; +@define-color theme_header_foreground_backdrop_breeze #232629; +@define-color theme_header_foreground_breeze #232629; +@define-color theme_header_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_header_foreground_insensitive_breeze #232629; +@define-color theme_hovering_selected_bg_color_breeze #3daee9; +@define-color theme_selected_bg_color_breeze #3daee9; +@define-color theme_selected_fg_color_breeze #ffffff; +@define-color theme_text_color_breeze #232629; +@define-color theme_titlebar_background_backdrop_breeze #eff0f1; +@define-color theme_titlebar_background_breeze #dee0e2; +@define-color theme_titlebar_background_light_breeze #eff0f1; +@define-color theme_titlebar_foreground_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_breeze #232629; +@define-color theme_unfocused_base_color_breeze #ffffff; +@define-color theme_unfocused_bg_color_breeze #eff0f1; +@define-color theme_unfocused_fg_color_breeze #232629; +@define-color theme_unfocused_selected_bg_color_alt_breeze #c2e0f5; +@define-color theme_unfocused_selected_bg_color_breeze #c2e0f5; +@define-color theme_unfocused_selected_fg_color_breeze #232629; +@define-color theme_unfocused_text_color_breeze #232629; +@define-color theme_unfocused_view_bg_color_breeze #f3f3f3; +@define-color theme_unfocused_view_text_color_breeze #aaabac; +@define-color theme_view_active_decoration_color_breeze #3daee9; +@define-color theme_view_hover_decoration_color_breeze #3daee9; +@define-color tooltip_background_breeze #f7f7f7; +@define-color tooltip_border_breeze #c2c3c4; +@define-color tooltip_text_breeze #232629; +@define-color unfocused_borders_breeze #bcbebf; +@define-color unfocused_insensitive_borders_breeze #d2d4d6; +@define-color warning_color_backdrop_breeze #f67400; +@define-color warning_color_breeze #f67400; +@define-color warning_color_insensitive_backdrop_breeze #fbc289; +@define-color warning_color_insensitive_breeze #fbc289; diff --git a/bazzite/gtk-4.0/gtk.css b/bazzite/gtk-4.0/gtk.css new file mode 100644 index 0000000..15fda59 --- /dev/null +++ b/bazzite/gtk-4.0/gtk.css @@ -0,0 +1,2 @@ +@import 'colors.css'; +@import 'kde_window_geometry.css'; \ No newline at end of file diff --git a/bazzite/gtk-4.0/settings.ini b/bazzite/gtk-4.0/settings.ini new file mode 100644 index 0000000..f8754a6 --- /dev/null +++ b/bazzite/gtk-4.0/settings.ini @@ -0,0 +1,14 @@ +[Settings] +gtk-application-prefer-dark-theme=false +gtk-cursor-blink=true +gtk-cursor-blink-time=1000 +gtk-cursor-theme-name=breeze_cursors +gtk-cursor-theme-size=24 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=breeze +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-xft-dpi=98304 diff --git a/bazzite/niri/config.kdl b/bazzite/niri/config.kdl new file mode 100644 index 0000000..6968f61 --- /dev/null +++ b/bazzite/niri/config.kdl @@ -0,0 +1,616 @@ +debug { + // preview-render "screencast" + // preview-render "screen-capture" + // dbus-interfaces-in-non-session-instances + // wait-for-frame-completion-before-queueing + // enable-overlay-planes + disable-cursor-plane + // disable-direct-scanout + // render-drm-device "/dev/dri/renderD129" + // render-drm-device "/dev/dri/card1" + // enable-color-transformations-capability + // emulate-zero-presentation-time +} + +input { + keyboard { + xkb { + + } + + repeat-delay 500 + repeat-rate 30 + + // track-layout "window" + } + + touchpad { + tap + // dwt + // dwtp + natural-scroll + accel-speed 0.4 + // click-method "clickfinger" + // accel-profile "flat" + // tap-button-map "left-middle-right" + } + + mouse { + // natural-scroll + // accel-speed -1.0 + // accel-profile "flat" + } + + tablet { + // map-to-output "eDP-1" + // map-to-output "HDMI-A-1" + } + + // disable-power-key-handling + // warp-mouse-to-focus + // focus-follows-mouse + // workspace-auto-back-and-forth +} + +output "winit" { + // scale 2.0 + // scale 3.0 + // transform "flipped-90" + position x=100 y=200 +} + +output "DP-1" { + // off + + scale 1.0 + // transform "90" + position x=0 y=0 + // mode "1920x1200" + mode "2560x1440@170.001" + // mode "1280x1024" + // mode "1280x720" + // mode "640x480" + + // variable-refresh-rate +} + +layout { + focus-ring { + off + width 2 + // catppuccin-mocha Sapphire + active-color "#74c7ec" + // catppuccin-mocha Surface2 + inactive-color "#585b70" + + // active-gradient from="#80c8ff" to="#bbddff" angle=45 + } + + border { + // off + width 2 + // width 128 + + // active-color "#f38ba8" + // inactive-color "#585b70" + + active-gradient from="#f38ba8" to="#f9e2af" angle=45 relative-to="workspace-view" + inactive-gradient from="#585b70" to="#7f849c" angle=45 relative-to="workspace-view" + + // inactive-gradient from="green" to="lightblue" angle=45 relative-to="workspace-view" + // active-gradient from="#f00" to="#0f0" angle=90 + + // active-gradient from="yellow" to="red" angle=45 relative-to="workspace-view" + // inactive-gradient from="yellow" to="red" angle=45 + } + + preset-column-widths { + proportion 0.3333333333333333 + proportion 0.5 + proportion 0.66667 + // proportion 0.25 + // fixed 1000 + } + + default-column-width { proportion 0.3333333333333333; } + // default-column-width { } + + gaps 4 + + struts { + // left 64 + // right 64 + // top 44 + // bottom 64 + // top 64 + } + + // center-focused-column "on-overflow" + // center-focused-column "always" +} + +cursor { + // xcursor-theme "breeze_cursors" + // xcursor-theme "arstieonart" + // xcursor-size 48 +} + +prefer-no-csd + +// spawn-at-startup "alacritty" "-e" "fish" + +environment { + // GSK_RENDERER "cairo" + // WAYLAND_DISPLAY null +} + +// screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" +spawn-at-startup "waybar" +hotkey-overlay { + // skip-at-startup +} + +animations { + // off + // slowdown 10.0 + // slowdown 4.0 + // slowdown 2.0 + // slowdown 1.5 + + workspace-switch { + // off + // duration-ms 2500 + // curve "ease-out-cubic" + // spring damping-ratio=1.0 stiffness=1000 epsilon=0.0001 + } + + window-open { + // off + // duration-ms 2500 + // curve "ease-out-expo" + // spring damping-ratio=0.8 stiffness=1000 epsilon=0.0001 + } + + window-close { + // off + // duration-ms 2500 + // curve "ease-out-cubic" + // spring damping-ratio=0.8 stiffness=1000 epsilon=0.0001 + } + + horizontal-view-movement { + // off + // duration-ms 500 + // curve "ease-out-cubic" + // spring damping-ratio=1.0 stiffness=20 epsilon=0.00001 + // spring damping-ratio=10.0 stiffness=800 epsilon=0.0001 + } + + window-movement { + // off + // duration-ms 750 + // curve "ease-out-cubic" + // spring damping-ratio=1.0 stiffness=20 epsilon=0.00001 + // spring damping-ratio=0.2 stiffness=800 epsilon=0.0001 + } + + window-resize { + // off + // duration-ms 500 + // duration-ms 2500 + // curve "ease-out-cubic" + // spring damping-ratio=0.2 stiffness=800 epsilon=0.0001 + + custom-shader r" + vec4 resize_color(vec3 coords_curr_geo, vec3 size_curr_geo) { + vec3 coords_next_geo = niri_curr_geo_to_next_geo * coords_curr_geo; + vec3 coords_prev_geo = niri_curr_geo_to_prev_geo * coords_curr_geo; + + vec3 coords_crop = niri_geo_to_tex_next * coords_next_geo; + vec3 coords_stretch = niri_geo_to_tex_next * coords_curr_geo; + vec3 coords_stretch_prev = niri_geo_to_tex_prev * coords_curr_geo; + + // We can crop if the current window size is smaller than the next window + // size. One way to tell is by comparing to 1.0 the X and Y scaling + // coefficients in the current-to-next transformation matrix. + bool can_crop_by_x = niri_curr_geo_to_next_geo[0][0] <= 1.0; + bool can_crop_by_y = niri_curr_geo_to_next_geo[1][1] <= 1.0; + bool crop = can_crop_by_x && can_crop_by_y; + + vec4 color; + + if (crop) { + // However, when we crop, we also want to crop out anything outside the + // current geometry. This is because the area of the shader is unspecified + // and usually bigger than the current geometry, so if we don't fill pixels + // outside with transparency, the texture will leak out. + // + // When stretching, this is not an issue because the area outside will + // correspond to client-side decoration shadows, which are already supposed + // to be outside. + if (coords_curr_geo.x < 0.0 || 1.0 < coords_curr_geo.x || + coords_curr_geo.y < 0.0 || 1.0 < coords_curr_geo.y) { + color = vec4(0.0); + } else { + color = texture2D(niri_tex_next, coords_crop.st); + } + } else { + // If we can't crop, then crossfade. + color = texture2D(niri_tex_next, coords_stretch.st); + vec4 color_prev = texture2D(niri_tex_prev, coords_stretch_prev.st); + color = mix(color_prev, color, niri_clamped_progress); + } + + return color; + } + " + } + + config-notification-open-close { + // off + // duration-ms 250 + // curve "ease-out-cubic" + // spring damping-ratio=0.1 stiffness=1000 epsilon=0.001 + } +} + +window-rule { + // match app-id="Alacritty" + // match app-id="Adwaita" + // opacity 0.9 + // opacity 0.5 + // opacity 0.98 + + // open-on-output "eDP-1" + // default-column-width { proportion 0.5; } + // default-column-width { fixed 400; } + // default-column-width {} + // open-maximized true + // open-fullscreen true + // block-out-from "screencast" + + // min-width 400 + // max-width 400 + // min-height 400 + // max-height 400 + + focus-ring { + // on + // active-gradient from="red" to="green" + // active-color "lightgreen" + // width 1 + } + + border { + // off + // on + // width 12 + // width 0 + // active-color "#ff808080" + // active-color "red" + } + + // draw-border-with-background true + // draw-border-with-background false + + // geometry-corner-radius 12 24 32 64 + // geometry-corner-radius 999 + // geometry-corner-radius 1 + geometry-corner-radius 6 + clip-to-geometry true +} + +/-window-rule { + match app-id="Adwaita" + // opacity 0.5 + block-out-from "screencast" + geometry-corner-radius 12 + clip-to-geometry false + border { + // off + width 12 + } +} + +/-window-rule { + match app-id="terminal" + clip-to-geometry false + geometry-corner-radius 8 8 0 0 + border { + // width 4 + } +} + +/-window-rule { + match app-id="code" + // opacity 0.98 + border { + // off + } +} + +/-window-rule { + match app-id="weston." + // block-out-from "screencast" + geometry-corner-radius 12 24 32 64 + // geometry-corner-radius 999 + clip-to-geometry true +} + +// window-rule { +// match app-id="Alacritty" +// geometry-corner-radius 12 12 0 0 +// border { +// width 2 +// } +// } + +window-rule { + match title="simple-egl" + // min-width 128 + // max-width 128 + // min-height 128 + // max-height 128 + // match is-focused=true + // match is-active=false + // opacity 0.9 + // block-out-from "screencast" + // block-out-from "screen-capture" + // min-width 1000 + draw-border-with-background false + // match app-id="mpv" + // open-on-output "HDMI-A-1" + // open-maximized true + // default-column-width { proportion 0.5; } + // open-fullscreen false +} + +window-rule { + match is-active=false + // opacity 0.95 +} + +window-rule { + match app-id=r#"^org\.telegram\.desktop$"# title="^Media viewer$" + open-fullscreen false + default-column-width { proportion 0.5; } +} + +window-rule { + match app-id=r#"^org\.wezfurlong\.wezterm$"# + match app-id="^mpv$" + default-column-width {} +} + +// Qt used by OBS doesn't signal min size yet, so do it manually. +window-rule { + match app-id=r#"^com\.obsproject\.Studio$"# + min-width 876 +} + +window-rule { + match app-id="^blender$" + match app-id="^gimp" + default-column-width { fixed 1200; } +} + +window-rule { + match app-id="^obsidian$" + default-column-width { fixed 1000; } +} + +window-rule { + match app-id=r#"^org\.mozilla\.firefox$"# + match app-id=r#"^org\.telegram\.desktop$"# + exclude app-id=r#"^org\.telegram\.desktop$"# title="^Media viewer$" + + open-on-output "DP-2" +} + +window-rule { + match app-id=r#"^org\.mozilla\.firefox$"# + + default-column-width { proportion 0.66667; } +} + +window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + match app-id=r#"^org\.telegram\.desktop$"# + + // Doesn't quite work: Firefox changes the title one frame early. + match app-id=r#"^org\.mozilla\.firefox$"# title="- Gmail " + match app-id=r#"^org\.mozilla\.firefox$"# title="^Google Calendar " + match app-id=r#"^org\.mozilla\.firefox$"# title="Todoist " + match app-id=r#"^org\.mozilla\.firefox$"# title=r#"^GNOME( \*)? \| "# + match app-id=r#"^org\.mozilla\.firefox$"# title=r#"^Element "# + match app-id=r#"^org\.mozilla\.firefox$"# title=r#"Discord \| "# + + block-out-from "screencast" + // block-out-from "screen-capture" + + border { + // active-color "red" + } +} + +binds { + Mod+Shift+Slash { show-hotkey-overlay; } + + Mod+Shift+C { spawn "sh" "-c" "t env DISPLAY=:0 xsel -ob | wl-copy"; } + Mod+Shift+V { spawn "sh" "-c" "wl-paste -n | t env DISPLAY=:0 xsel -ib"; } + + // Mod+T { spawn "sh" "-c" "alacritty msg create-window -e fish -C t || alacritty -e fish -C t"; } + Mod+T { spawn "sh" "-c" "alacritty msg create-window || alacritty"; } + Mod+Shift+T { spawn "alacritty"; } + // Mod+Shift+T { spawn "sh" "-c" "alacritty msg create-window || alacritty"; } + // Mod+Return { spawn "~/arst"; } + // Mod+T { spawn "flatpak" "run" "org.gnome.Ptyxis.Devel" "-s"; } + // Mod+T { spawn "~/.local/bin/spawn-ptyxis.sh"; } + // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } + // Mod+T { spawn "kgx" "-e" "fish -C t"; } + Mod+D { spawn "fuzzel"; } + Mod+H { spawn "nautilus"; } + Super+Alt+L allow-when-locked=true { spawn "swaylock"; } + + Mod+W { spawn "sh" "-c" "t mpv --pause $(wl-paste)"; } + Super+Alt+H { spawn "refresh.sh" "144"; } + Super+Alt+Comma { spawn "refresh.sh" "120"; } + + XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } + XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + + Mod+Q { close-window; } + Mod+BackSpace { close-window; } + + Mod+M { focus-column-left; } + Mod+N { focus-window-down; } + Mod+E { focus-window-up; } + Mod+I { focus-column-right; } + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + + Mod+Ctrl+M { move-column-left; } + Mod+Ctrl+N { move-window-down; } + Mod+Ctrl+E { move-window-up; } + Mod+Ctrl+I { move-column-right; } + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+M { focus-monitor-left; } + Mod+Shift+N { focus-monitor-down; } + Mod+Shift+E { focus-monitor-up; } + Mod+Shift+I { focus-monitor-right; } + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + + Mod+Shift+Ctrl+M { move-column-to-monitor-left; } + Mod+Shift+Ctrl+N { move-column-to-monitor-down; } + Mod+Shift+Ctrl+E { move-column-to-monitor-up; } + Mod+Shift+Ctrl+I { move-column-to-monitor-right; } + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + + Mod+Shift+Alt+M { move-workspace-to-monitor-left; } + Mod+Shift+Alt+N { move-workspace-to-monitor-down; } + Mod+Shift+Alt+E { move-workspace-to-monitor-up; } + Mod+Shift+Alt+I { move-workspace-to-monitor-right; } + Mod+Shift+Alt+Left { move-workspace-to-monitor-left; } + Mod+Shift+Alt+Down { move-workspace-to-monitor-down; } + Mod+Shift+Alt+Up { move-workspace-to-monitor-up; } + Mod+Shift+Alt+Right { move-workspace-to-monitor-right; } + + Mod+L { focus-workspace-down; } + Mod+U { focus-workspace-up; } + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+Ctrl+L { move-column-to-workspace-down; } + Mod+Ctrl+U { move-column-to-workspace-up; } + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + Mod+TouchpadScrollUp allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } + Mod+TouchpadScrollDown allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } + // Mod+TouchpadScrollLeft { focus-column-left; } + // Mod+TouchpadScrollRight { focus-column-right; } + + Mod+Shift+L { move-workspace-down; } + Mod+Shift+U { move-workspace-up; } + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Ctrl+1 { move-column-to-workspace 1; } + Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + Mod+Ctrl+4 { move-column-to-workspace 4; } + Mod+Ctrl+5 { move-column-to-workspace 5; } + Mod+Ctrl+6 { move-column-to-workspace 6; } + Mod+Ctrl+7 { move-column-to-workspace 7; } + Mod+Ctrl+8 { move-column-to-workspace 8; } + Mod+Ctrl+9 { move-column-to-workspace 9; } + + // Mod+Tab { focus-workspace-previous; } + + Mod+Comma { consume-window-into-column; } + Mod+Period { expel-window-from-column; } + + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + Mod+R { switch-preset-column-width; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + Mod+C { center-column; } + + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + Mod+Ctrl+Minus { set-column-width "-1"; } + Mod+Ctrl+Equal { set-column-width "+1"; } + + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + Mod+Shift+Ctrl+Minus { set-window-height "-1"; } + Mod+Shift+Ctrl+Equal { set-window-height "+1"; } + + Mod+0 { set-column-width "960"; } + Mod+Shift+0 { set-window-height "540"; } + Mod+Alt+0 { set-column-width "1280"; } + Mod+Shift+Alt+0 { set-window-height "720"; } + Mod+Ctrl+0 { set-column-width "1920"; } + Mod+Shift+Ctrl+0 { set-window-height "1080"; } + + Mod+Space { switch-layout "next"; } + Mod+Shift+Space { switch-layout "prev"; } + + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + Mod+P { screenshot; } + + Mod+Shift+Y { quit; } + Mod+Shift+P { power-off-monitors; } + + Mod+Shift+Ctrl+T { toggle-debug-tint; } + Mod+Shift+Ctrl+O { debug-toggle-opaque-regions; } + Mod+Shift+Ctrl+D { debug-toggle-damage; } +} diff --git a/bazzite/xsettingsd/xsettingsd.conf b/bazzite/xsettingsd/xsettingsd.conf new file mode 100644 index 0000000..327b162 --- /dev/null +++ b/bazzite/xsettingsd/xsettingsd.conf @@ -0,0 +1,17 @@ +Gdk/UnscaledDPI 98304 +Gdk/WindowScalingFactor 1 +Gtk/EnableAnimations 1 +Gtk/DecorationLayout "icon:minimize,maximize,close" +Net/ThemeName "" +Gtk/PrimaryButtonWarpsSlider 1 +Gtk/ToolbarStyle 3 +Gtk/MenuImages 1 +Gtk/ButtonImages 1 +Net/CursorBlinkTime 1000 +Net/CursorBlink 1 +Gtk/CursorThemeSize 24 +Gtk/CursorThemeName "breeze_cursors" +Net/SoundThemeName "ocean" +Net/IconThemeName "breeze" +Gtk/FontName "Noto Sans, 10" +