diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1b218a7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +dotfiles/** linguist-vendored diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bfd0425 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.direnv +result +result/ diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..fb304ff --- /dev/null +++ b/Justfile @@ -0,0 +1,97 @@ +# Set current hostname +hostname := `hostname` + +# Set current username +username := `whoami` + + +anywhere input: + # Perform nixos-anywhere install + nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}} + + +anywhere-lb input: + # Perform nixos-anywhere install (local builder) + nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}} --build-on local + + +anywhere-vm input: + # Test nixos-anywhere install in vm + nix run github:nix-community/nixos-anywhere -- --flake .#{{input}} --vm-test + + +build input: + # Build + sudo nixos-rebuild build --flake .#{{input}} --show-trace -L -v + + +build-vm input: + # Build a vm + sudo nixos-rebuild build-vm --flake .#{{input}} --show-trace -L -v + + +clean: + # Remove useless nix-channel files + sudo rm -rf /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels + + +format: + # Use alejandra and deadnix to format code + deadnix -e + alejandra . + + +gc: + # Do garbage-clean (remove unused packages, etc) + sudo nix profile wipe-history --older-than 7d --profile /nix/var/nix/profiles/system + sudo nix-collect-garbage --delete-old + + +ghc: + # Generate hardware.nix + nixos-generate-config --show-hardware-config > ./hosts/{{hostname}}/hardware.nix + + +install: + # Install this flake + bash install.sh + + +list: + # List system packages + nix-store -qR /run/current-system | cat + + +profile: + # Show system profile + sudo nix profile history --profile /nix/var/nix/profiles/system + + +switch input: + # Let system rebuild and switch + sudo nixos-rebuild switch --flake .#{{input}} --show-trace -L -v + + +update: + # Update flake.lock + nix flake update --extra-experimental-features flakes --extra-experimental-features nix-command --show-trace + + +upgrade: + # Let system totally upgrade + ## Set hostname and username in flake.nix + sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix + sed -i "/^\s*username[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{username}}\"/" ./flake.nix + git add . + ## Rebuild the system + sudo nixos-rebuild switch --flake .#{{hostname}} --show-trace + + +upgrade-debug: + # Let system totally upgrade (deBug Mode) + ## Set hostname and username in flake.nix + sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix + sed -i "/^\s*username[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{username}}\"/" ./flake.nix + git add . + ## Rebuild the system + sudo unbuffer nixos-rebuild switch --flake .#{{hostname}} --sudo --log-format internal-json --show-trace -L -v |& nom --json diff --git a/README.md b/README.md index 81e0acc..67fb767 100644 --- a/README.md +++ b/README.md @@ -1 +1,22 @@ -# DCGOS \ No newline at end of file +
+
+ +# DCGOS + +
+ +## Install + +``` +nix-shell -p git + +git clone https://github.com/Dichgrem/DCGOS.git && cd DCGOS && bash install.sh +``` +## Acknowledgements +- +- +- +- +- +- +- diff --git a/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.kvconfig b/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.kvconfig new file mode 100644 index 0000000..ee9cc6e --- /dev/null +++ b/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.kvconfig @@ -0,0 +1,467 @@ +[%General] +author=elkrien based on Arc Dark style +comment=Catppuccin-Mocha-Lavender +combo_focus_rect=true +spread_menuitems=true +left_tabs=true +mirror_doc_tabs=true +scroll_width=8 +attach_active_tab=true +composite=false +menu_shadow_depth=7 +tooltip_shadow_depth=0 +splitter_width=7 +check_size=16 +slider_width=4 +slider_handle_width=18 +slider_handle_length=18 +textless_progressbar=false +menubar_mouse_tracking=true +slim_toolbars=false +toolbutton_style=1 +x11drag=menubar_and_primary_toolbar +double_click=false +translucent_windows=false +blurring=false +popup_blurring=false +opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam,qmplay2 +group_toolbar_buttons=false +vertical_spin_indicators=false +fill_rubberband=false +spread_progressbar=true +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +scroll_arrows=false +iconless_pushbutton=true +toolbar_icon_size=16 +combo_as_lineedit=true +button_contents_shift=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=2 +submenu_overlap=0 +tooltip_delay=-1 +animate_states=false +transient_scrollbar=false +alt_mnemonic=true +combo_menu=true +layout_margin=4 +no_window_pattern=false +respect_DE=true +scroll_min_extent=36 +scrollable_menu=false +scrollbar_in_view=false +spin_button_width=16 +submenu_delay=250 +tree_branch_line=true +progressbar_thickness=8 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +drag_from_buttons=false +hide_combo_checkboxes=false +intensity=1.00 +no_inactiveness=false +reduce_menu_opacity=0 +reduce_window_opacity=10 +saturation=1.00 +shadowless_popup=false +transient_groove=false +menu_blur_radius=0 +tooltip_blur_radius=0 + +[GeneralColors] +window.color=#1E1E2E +base.color=#181825 +alt.base.color=#181825 +button.color=#313244 +light.color=#45475A +mid.light.color=#45475A +dark.color=#181825 +mid.color=#181825 +highlight.color=#B4BEFE +inactive.highlight.color=#B4BEFE +text.color=#CDD6F4 +window.text.color=#CDD6F4 +button.text.color=#CDD6F4 +disabled.text.color=#585B70 +tooltip.text.color=#CDD6F4 +highlight.text.color=#181825 +link.color=#F5E0DC +link.visited.color=#89B4FA + +[ItemView] +inherits=PanelButtonCommand +frame.element=itemview +interior.element=itemview +frame=true +interior=true +text.iconspacing=3 +text.toggle.color=#181825 + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox + +[TreeExpander] +indicator.element=tree +indicator.size=8 + +[ToolTip] +frame.top=4 +frame.right=4 +frame.bottom=4 +frame.left=4 +frame=true + +[PanelButtonCommand] +inherits=PanelButtonCommand +interior.element=button +frame.element=button +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 + +[PanelButtonTool] +inherits=PanelButtonCommand + +[DockTitle] +inherits=PanelButtonCommand +interior=false +frame=false +text.margin.top=5 +text.margin.bottom=5 +text.margin.left=5 +text.margin.right=5 +indicator.size=0 + +[Dock] +interior.element=toolbar +frame.element=toolbar +frame=true +interior=true + +[GroupBox] +inherits=PanelButtonCommand +interior.element=tabframe +interior=true +frame=false + +[Focus] +inherits=PanelButtonCommand +frame=true +frame.element=focus +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.patternsize=20 + +[GenericFrame] +inherits=PanelButtonCommand +frame.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Slider] +inherits=PanelButtonCommand +interior=true +frame.element=slider +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +focusFrame=true + +[SliderCursor] +inherits=PanelButtonCommand +interior=true +interior.element=slidercursor +frame=false + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit + +[IndicatorSpinBox] +inherits=LineEdit +frame.element=lineedit +interior.element=lineedit +frame.top=0 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.size=8 + +[DropDownButton] +inherits=PanelButtonCommand +frame.top=2 +frame.bottom=2 +frame.left=0 +frame.right=1 +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +frame.element=tabframe +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +frame.element=tab +frame.top=2 +frame.bottom=3 +frame.left=3 +frame.right=3 +indicator.size=10 +text.normal.color=#585B70 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +focusFrame=true + +[TabBarFrame] +inherits=GenericFrame +frame=true +frame.element=tabBarFrame +interior=false +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe + +[Dialog] +inherits=TabBarFrame +frame.element=tabframe +interior=false +frame=false +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.expansion=0 +text.normal.color=#CDD6F4 +text.focus.color=#B4BEFE +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +indicator.element=harrow + +[SizeGrip] +inherits=PanelButtonCommand +frame=false +interior=false +indicator.element=resize-grip +indicator.size=0 + +[Toolbar] +inherits=PanelButtonCommand +interior.element=menubar +frame.element=menubar +frame=true +frame.bottom=4 +frame.left=4 +frame.right=4 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#B4BEFE +text.toggle.color=#B4BEFE +text.bold=false + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=#CDD6F4 +frame.expansion=0 +text.bold=false + +[ToolbarButton] +frame.element=tbutton +interior.element=tbutton +indicator.element=arrow +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false + +[Scrollbar] +inherits=PanelButtonCommand +indicator.size=0 +interior=false +frame=false + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[ScrollbarSlider] +inherits=PanelButtonCommand +interior=false +frame.element=scrollbarslider +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin=0 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.expansion=18 + +[RadioButton] +inherits=PanelButtonCommand + +[Menu] +frame.element=menu +interior.element=menu +inherits=PanelButtonCommand +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[MenuItem] +inherits=PanelButtonCommand +interior.element=menuitem +indicator.size=8 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 + +[MenuBarItem] +inherits=PanelButtonCommand +interior.element=menubaritem +frame=false +text.margin.top=3 +text.margin.bottom=3 +text.margin.left=5 +text.margin.right=5 + +[StatusBar] +inherits=Toolbar +frame.element=toolbar +font.bold=true +text.normal.color=#CDD6F4 +frame=true +frame.top=0 +frame.bottom=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +interior=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=3 +text.margin.right=3 + +[ComboBox] +inherits=PanelButtonCommand +indicator.size=8 +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +text.margin.top=1 +text.margin.bottom=1 +text.margin.left=3 +text.margin.right=3 +text.toggle.color=#CDD6F4 + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=#CDD6F4 +text.press.color=#CDD6F4 +text.focus.color=#CDD6F4 + +[Hacks] +transparent_dolphin_view=false +blur_konsole=true +transparent_ktitle_label=false +transparent_menutitle=false +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=false +iconless_pushbutton=true +iconless_menu=false +disabled_icon_opacity=100 +lxqtmainmenu_iconsize=0 +normal_default_pushbutton=true +single_top_toolbar=false +tint_on_mouseover=0 +transparent_pcmanfm_sidepane=false +transparent_pcmanfm_view=false +blur_translucent=false +centered_forms=false +kinetic_scrolling=false +middle_click_scroll=false +no_selection_tint=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=false + +[Window] +interior=true +interior.element=window +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 diff --git a/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.svg b/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.svg new file mode 100644 index 0000000..311513c --- /dev/null +++ b/dotfiles/.config/Kvantum/catppuccin-mocha-lavender/catppuccin-mocha-lavender.svg @@ -0,0 +1,1958 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dotfiles/.config/Kvantum/kvantum.kvconfig b/dotfiles/.config/Kvantum/kvantum.kvconfig new file mode 100644 index 0000000..bfb2462 --- /dev/null +++ b/dotfiles/.config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=catppuccin-mocha-lavender diff --git a/dotfiles/.config/alacritty/alacritty.toml b/dotfiles/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..844e8d6 --- /dev/null +++ b/dotfiles/.config/alacritty/alacritty.toml @@ -0,0 +1,133 @@ +[general] +live_config_reload = false +import = ["~/.config/alacritty/catppuccin-mocha.toml"] + +[env] +TERM = "xterm-256color" + +[window] +dynamic_padding = true +decorations = "None" + +[window.dimensions] +columns = 100 +lines = 30 + +[window.class] +instance = "Alacritty" +general = "Alacritty" + +[scrolling] +history = 10000 +multiplier = 3 + +[font] +size = 12 + +[font.normal] +family = "JetBrainsMono Nerd Font" +style = "Regular" + +[font.bold] +family = "JetBrainsMono Nerd Font" +style = "Bold" + +[font.italic] +family = "JetBrainsMono Nerd Font" +style = "Italic" + +[font.bold_italic] +family = "JetBrainsMono Nerd Font" +style = "Bold Italic" + +[selection] +semantic_escape_chars = ",│`|:\"' ()[]{}<>\t" +save_to_clipboard = true + +[cursor] +style = "Underline" +vi_mode_style = "None" +unfocused_hollow = true +thickness = 0.15 + +[mouse] +hide_when_typing = true + +[[mouse.bindings]] +mouse = "Middle" +action = "PasteSelection" + +[keyboard] +[[keyboard.bindings]] +key = "Paste" +action = "Paste" + +[[keyboard.bindings]] +key = "Copy" +action = "Copy" + +[[keyboard.bindings]] +key = "L" +mods = "Control" +action = "ClearLogNotice" + +[[keyboard.bindings]] +key = "L" +mods = "Control" +mode = "~Vi" +chars = "\f" + +[[keyboard.bindings]] +key = "PageUp" +mods = "Shift" +mode = "~Alt" +action = "ScrollPageUp" + +[[keyboard.bindings]] +key = "PageDown" +mods = "Shift" +mode = "~Alt" +action = "ScrollPageDown" + +[[keyboard.bindings]] +key = "Home" +mods = "Shift" +mode = "~Alt" +action = "ScrollToTop" + +[[keyboard.bindings]] +key = "End" +mods = "Shift" +mode = "~Alt" +action = "ScrollToBottom" + +[[keyboard.bindings]] +key = "V" +mods = "Control|Shift" +action = "Paste" + +[[keyboard.bindings]] +key = "C" +mods = "Control|Shift" +action = "Copy" + +[[keyboard.bindings]] +key = "F" +mods = "Control|Shift" +action = "SearchForward" + +[[keyboard.bindings]] +key = "B" +mods = "Control|Shift" +action = "SearchBackward" + +[[keyboard.bindings]] +key = "C" +mods = "Control|Shift" +mode = "Vi" +action = "ClearSelection" + +[[keyboard.bindings]] +key = "Key0" +mods = "Control" +action = "ResetFontSize" diff --git a/dotfiles/.config/alacritty/catppuccin-mocha.toml b/dotfiles/.config/alacritty/catppuccin-mocha.toml new file mode 100644 index 0000000..7762dcd --- /dev/null +++ b/dotfiles/.config/alacritty/catppuccin-mocha.toml @@ -0,0 +1,65 @@ +[colors.primary] +background = "#1e1e2e" +foreground = "#cdd6f4" +dim_foreground = "#7f849c" +bright_foreground = "#cdd6f4" + +[colors.cursor] +text = "#1e1e2e" +cursor = "#f5e0dc" + +[colors.vi_mode_cursor] +text = "#1e1e2e" +cursor = "#b4befe" + +[colors.search.matches] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.search.focused_match] +foreground = "#1e1e2e" +background = "#a6e3a1" + +[colors.footer_bar] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.hints.start] +foreground = "#1e1e2e" +background = "#f9e2af" + +[colors.hints.end] +foreground = "#1e1e2e" +background = "#a6adc8" + +[colors.selection] +text = "#1e1e2e" +background = "#f5e0dc" + +[colors.normal] +black = "#45475a" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#bac2de" + +[colors.bright] +black = "#585b70" +red = "#f38ba8" +green = "#a6e3a1" +yellow = "#f9e2af" +blue = "#89b4fa" +magenta = "#f5c2e7" +cyan = "#94e2d5" +white = "#a6adc8" + +[[colors.indexed_colors]] +index = 16 +color = "#fab387" + +[[colors.indexed_colors]] +index = 17 +color = "#f5e0dc" diff --git a/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/LICENSE b/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/LICENSE new file mode 100644 index 0000000..732ce99 --- /dev/null +++ b/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016-2025 MaysWind (i@mayswind.net) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/index b/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/index new file mode 100644 index 0000000..56d5ff2 --- /dev/null +++ b/dotfiles/.config/aria2/AriaNg-1.3.10-AllInOne/index @@ -0,0 +1,559 @@ +AriaNg \ No newline at end of file diff --git a/dotfiles/.config/aria2/aria2.conf b/dotfiles/.config/aria2/aria2.conf new file mode 100644 index 0000000..10f2df0 --- /dev/null +++ b/dotfiles/.config/aria2/aria2.conf @@ -0,0 +1,9 @@ +enable-rpc=true +rpc-listen-all=true +rpc-allow-origin-all=true +rpc-listen-port=6800 +continue=true +dir=/home/dich/Downloads +input-file=/home/dich/.config/aria2/aria2.session +save-session=/home/dich/.config/aria2/aria2.session +save-session-interval=60 diff --git a/dotfiles/.config/atuin/config.toml b/dotfiles/.config/atuin/config.toml new file mode 100644 index 0000000..eedc858 --- /dev/null +++ b/dotfiles/.config/atuin/config.toml @@ -0,0 +1,10 @@ +enter_accept = true + +[sync] +records = true + +[preview] +strategy = "auto" + +[daemon] +enabled = false diff --git a/dotfiles/.config/bat/config b/dotfiles/.config/bat/config new file mode 100644 index 0000000..b7de378 --- /dev/null +++ b/dotfiles/.config/bat/config @@ -0,0 +1 @@ +--theme="Catppuccin Mocha" diff --git a/dotfiles/.config/bat/themes/Catppuccin Mocha.tmTheme b/dotfiles/.config/bat/themes/Catppuccin Mocha.tmTheme new file mode 100644 index 0000000..cd3a27b --- /dev/null +++ b/dotfiles/.config/bat/themes/Catppuccin Mocha.tmTheme @@ -0,0 +1,2059 @@ + + + + + name + Catppuccin Mocha + semanticClass + theme.dark.catppuccin-mocha + uuid + 627ce890-fabb-4d39-9819-7be71f4bdca7 + author + Catppuccin Org + colorSpaceName + sRGB + settings + + + settings + + background + #1e1e2e + foreground + #cdd6f4 + caret + #f5e0dc + lineHighlight + #313244 + misspelling + #f38ba8 + accent + #cba6f7 + selection + #9399b240 + activeGuide + #45475a + findHighlight + #3e5767 + gutterForeground + #7f849c + + + + name + Basic text & variable names (incl. leading punctuation) + scope + text, source, variable.other.readwrite, punctuation.definition.variable + settings + + foreground + #cdd6f4 + + + + name + Parentheses, Brackets, Braces + scope + punctuation + settings + + foreground + #9399b2 + fontStyle + + + + + name + Comments + scope + comment, punctuation.definition.comment + settings + + foreground + #6c7086 + fontStyle + italic + + + + scope + string, punctuation.definition.string + settings + + foreground + #a6e3a1 + + + + scope + constant.character.escape + settings + + foreground + #f5c2e7 + + + + name + Booleans, constants, numbers + scope + constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point + settings + + foreground + #fab387 + + + + scope + keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword + settings + + foreground + #cba6f7 + fontStyle + + + + + scope + entity.name.tag.documentation + settings + + foreground + #cba6f7 + + + + name + Punctuation + scope + keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value + settings + + foreground + #94e2d5 + + + + scope + entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Classes + scope + entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Enum + scope + entity.name.enum + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Enum member + scope + meta.enum variable.other.readwrite, variable.other.enummember + settings + + foreground + #94e2d5 + + + + name + Object properties + scope + meta.property.object + settings + + foreground + #94e2d5 + + + + name + Types + scope + meta.type, meta.type-alias, support.type, entity.name.type + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Decorators + scope + meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator + settings + + foreground + #fab387 + + + + scope + variable.parameter, meta.function.parameters + settings + + foreground + #eba0ac + fontStyle + italic + + + + name + Built-ins + scope + constant.language, support.function.builtin + settings + + foreground + #f38ba8 + + + + scope + entity.other.attribute-name.documentation + settings + + foreground + #f38ba8 + + + + name + Preprocessor directives + scope + keyword.control.directive, punctuation.definition.directive + settings + + foreground + #f9e2af + + + + name + Type parameters + scope + punctuation.definition.typeparameters + settings + + foreground + #89dceb + + + + name + Namespaces + scope + entity.name.namespace + settings + + foreground + #f9e2af + + + + name + Property names (left hand assignments in json/yaml/css) + scope + support.type.property-name.css + settings + + foreground + #89b4fa + fontStyle + + + + + name + This/Self keyword + scope + variable.language.this, variable.language.this punctuation.definition.variable + settings + + foreground + #f38ba8 + + + + name + Object properties + scope + variable.object.property + settings + + foreground + #cdd6f4 + + + + name + String template interpolation + scope + string.template variable, string variable + settings + + foreground + #cdd6f4 + + + + name + `new` as bold + scope + keyword.operator.new + settings + + fontStyle + bold + + + + name + C++ extern keyword + scope + storage.modifier.specifier.extern.cpp + settings + + foreground + #cba6f7 + + + + name + C++ scope resolution + scope + entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp + settings + + foreground + #f9e2af + + + + name + C++ doc keywords + scope + storage.type.class.doxygen + settings + + fontStyle + + + + + name + C++ operators + scope + storage.modifier.reference.cpp + settings + + foreground + #94e2d5 + + + + name + C# Interpolated Strings + scope + meta.interpolation.cs + settings + + foreground + #cdd6f4 + + + + name + C# xml-style docs + scope + comment.block.documentation.cs + settings + + foreground + #cdd6f4 + + + + name + Classes, reflecting the className color in JSX + scope + source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css + settings + + foreground + #f9e2af + + + + name + Operators + scope + punctuation.separator.operator.css + settings + + foreground + #94e2d5 + + + + name + Pseudo classes + scope + source.css entity.other.attribute-name.pseudo-class + settings + + foreground + #94e2d5 + + + + scope + source.css constant.other.unicode-range + settings + + foreground + #fab387 + + + + scope + source.css variable.parameter.url + settings + + foreground + #a6e3a1 + fontStyle + + + + + name + CSS vendored property names + scope + support.type.vendored.property-name + settings + + foreground + #89dceb + + + + name + Less/SCSS right-hand variables (@/$-prefixed) + scope + source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss + settings + + foreground + #eba0ac + + + + name + CSS variables (--prefixed) + scope + source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less + settings + + foreground + #89b4fa + + + + name + CSS Percentage values, styled the same as numbers + scope + keyword.other.unit.percentage.css + settings + + foreground + #fab387 + + + + name + CSS Attribute selectors, styled the same as strings + scope + source.css meta.attribute-selector + settings + + foreground + #a6e3a1 + + + + name + JSON/YAML keys, other left-hand assignments + scope + keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml + settings + + foreground + #89b4fa + fontStyle + + + + + name + JSON/YAML constants + scope + constant.language.json, constant.language.yaml + settings + + foreground + #fab387 + + + + name + YAML anchors + scope + entity.name.type.anchor.yaml, variable.other.alias.yaml + settings + + foreground + #f9e2af + fontStyle + + + + + name + TOML tables / ini groups + scope + support.type.property-name.table, entity.name.section.group-title.ini + settings + + foreground + #f9e2af + + + + name + TOML dates + scope + constant.other.time.datetime.offset.toml + settings + + foreground + #f5c2e7 + + + + name + YAML anchor puctuation + scope + punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml + settings + + foreground + #f5c2e7 + + + + name + YAML triple dashes + scope + entity.other.document.begin.yaml + settings + + foreground + #f5c2e7 + + + + name + Markup Diff + scope + markup.changed.diff + settings + + foreground + #fab387 + + + + name + Diff + scope + meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff + settings + + foreground + #89b4fa + + + + name + Diff Inserted + scope + markup.inserted.diff + settings + + foreground + #a6e3a1 + + + + name + Diff Deleted + scope + markup.deleted.diff + settings + + foreground + #f38ba8 + + + + name + dotenv left-hand side assignments + scope + variable.other.env + settings + + foreground + #89b4fa + + + + name + dotenv reference to existing env variable + scope + string.quoted variable.other.env + settings + + foreground + #cdd6f4 + + + + name + GDScript functions + scope + support.function.builtin.gdscript + settings + + foreground + #89b4fa + + + + name + GDScript constants + scope + constant.language.gdscript + settings + + foreground + #fab387 + + + + name + Comment keywords + scope + comment meta.annotation.go + settings + + foreground + #eba0ac + + + + name + go:embed, go:build, etc. + scope + comment meta.annotation.parameters.go + settings + + foreground + #fab387 + + + + name + Go constants (nil, true, false) + scope + constant.language.go + settings + + foreground + #fab387 + + + + name + GraphQL variables + scope + variable.graphql + settings + + foreground + #cdd6f4 + + + + name + GraphQL aliases + scope + string.unquoted.alias.graphql + settings + + foreground + #f2cdcd + + + + name + GraphQL enum members + scope + constant.character.enum.graphql + settings + + foreground + #94e2d5 + + + + name + GraphQL field in types + scope + meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql + settings + + foreground + #f2cdcd + + + + name + HTML/XML DOCTYPE as keyword + scope + keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag + settings + + foreground + #cba6f7 + + + + name + HTML/XML-like <tags/> + scope + entity.name.tag + settings + + foreground + #89b4fa + fontStyle + + + + + name + Special characters like &amp; + scope + text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation + settings + + foreground + #f38ba8 + + + + name + HTML/XML tag attribute values + scope + entity.other.attribute-name + settings + + foreground + #f9e2af + + + + name + Components + scope + support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue + settings + + foreground + #f5c2e7 + fontStyle + + + + + name + Annotations + scope + punctuation.definition.annotation, storage.type.annotation + settings + + foreground + #fab387 + + + + name + Java enums + scope + constant.other.enum.java + settings + + foreground + #94e2d5 + + + + name + Java imports + scope + storage.modifier.import.java + settings + + foreground + #cdd6f4 + + + + name + Javadoc + scope + comment.block.javadoc.java keyword.other.documentation.javadoc.java + settings + + fontStyle + + + + + name + Exported Variable + scope + meta.export variable.other.readwrite.js + settings + + foreground + #eba0ac + + + + name + JS/TS constants & properties + scope + variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts + settings + + foreground + #cdd6f4 + + + + name + JSDoc; these are mainly params, so styled as such + scope + variable.other.jsdoc, comment.block.documentation variable.other + settings + + foreground + #eba0ac + fontStyle + + + + + name + JSDoc keywords + scope + storage.type.class.jsdoc + settings + + fontStyle + + + + + scope + support.type.object.console.js + settings + + foreground + #cdd6f4 + + + + name + Node constants as keywords (module, etc.) + scope + support.constant.node, support.type.object.module.js + settings + + foreground + #cba6f7 + + + + name + implements as keyword + scope + storage.modifier.implements + settings + + foreground + #cba6f7 + + + + name + Builtin types + scope + constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts + settings + + foreground + #cba6f7 + + + + scope + variable.parameter.generic + settings + + foreground + #f9e2af + + + + name + Arrow functions + scope + keyword.declaration.function.arrow.js, storage.type.function.arrow.ts + settings + + foreground + #94e2d5 + + + + name + Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach) + scope + punctuation.decorator.ts + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Extra JS/TS keywords + scope + keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts + settings + + foreground + #cba6f7 + + + + name + Julia macros + scope + support.function.macro.julia + settings + + foreground + #94e2d5 + fontStyle + italic + + + + name + Julia language constants (true, false) + scope + constant.language.julia + settings + + foreground + #fab387 + + + + name + Julia other constants (these seem to be arguments inside arrays) + scope + constant.other.symbol.julia + settings + + foreground + #eba0ac + + + + name + LaTeX preamble + scope + text.tex keyword.control.preamble + settings + + foreground + #94e2d5 + + + + name + LaTeX be functions + scope + text.tex support.function.be + settings + + foreground + #89dceb + + + + name + LaTeX math + scope + constant.other.general.math.tex + settings + + foreground + #f2cdcd + + + + name + Lua docstring keywords + scope + comment.line.double-dash.documentation.lua storage.type.annotation.lua + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Lua docstring variables + scope + comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua + settings + + foreground + #cdd6f4 + + + + scope + heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc + settings + + foreground + #f38ba8 + + + + scope + heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc + settings + + foreground + #fab387 + + + + scope + heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc + settings + + foreground + #f9e2af + + + + scope + heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc + settings + + foreground + #a6e3a1 + + + + scope + heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc + settings + + foreground + #89b4fa + + + + scope + heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc + settings + + foreground + #cba6f7 + + + + scope + markup.bold + settings + + foreground + #f38ba8 + fontStyle + bold + + + + scope + markup.italic + settings + + foreground + #f38ba8 + fontStyle + italic + + + + scope + markup.strikethrough + settings + + foreground + #a6adc8 + fontStyle + strikethrough + + + + name + Markdown auto links + scope + punctuation.definition.link, markup.underline.link + settings + + foreground + #89b4fa + + + + name + Markdown links + scope + text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference + settings + + foreground + #b4befe + + + + name + Markdown code spans + scope + punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown + settings + + foreground + #a6e3a1 + + + + name + Markdown triple backtick language identifier + scope + fenced_code.block.language + settings + + foreground + #89dceb + + + + name + Markdown triple backticks + scope + markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc + settings + + foreground + #9399b2 + + + + name + Markdown quotes + scope + markup.quote, punctuation.definition.quote.begin + settings + + foreground + #f5c2e7 + + + + name + Markdown separators + scope + meta.separator.markdown + settings + + foreground + #94e2d5 + + + + name + Markdown list bullets + scope + punctuation.definition.list.begin.markdown, markup.list.bullet + settings + + foreground + #94e2d5 + + + + name + Nix attribute names + scope + entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix + settings + + foreground + #89b4fa + + + + name + Nix parameter names + scope + variable.parameter.name.nix + settings + + foreground + #cdd6f4 + fontStyle + + + + + name + Nix interpolated parameter names + scope + meta.embedded variable.parameter.name.nix + settings + + foreground + #b4befe + fontStyle + + + + + name + Nix paths + scope + string.unquoted.path.nix + settings + + foreground + #f5c2e7 + fontStyle + + + + + name + PHP Attributes + scope + support.attribute.builtin, meta.attribute.php + settings + + foreground + #f9e2af + + + + name + PHP Parameters (needed for the leading dollar sign) + scope + meta.function.parameters.php punctuation.definition.variable.php + settings + + foreground + #eba0ac + + + + name + PHP Constants (null, __FILE__, etc.) + scope + constant.language.php + settings + + foreground + #cba6f7 + + + + name + PHP functions + scope + text.html.php support.function + settings + + foreground + #89dceb + + + + name + PHPdoc keywords + scope + keyword.other.phpdoc.php + settings + + fontStyle + + + + + name + Python argument functions reset to text, otherwise they inherit blue from function-call + scope + support.variable.magic.python, meta.function-call.arguments.python + settings + + foreground + #cdd6f4 + + + + name + Python double underscore functions + scope + support.function.magic.python + settings + + foreground + #89dceb + fontStyle + italic + + + + name + Python `self` keyword + scope + variable.parameter.function.language.special.self.python, variable.language.special.self.python + settings + + foreground + #f38ba8 + fontStyle + italic + + + + name + python keyword flow/logical (for ... in) + scope + keyword.control.flow.python, keyword.operator.logical.python + settings + + foreground + #cba6f7 + + + + name + python storage type + scope + storage.type.function.python + settings + + foreground + #cba6f7 + + + + name + python function support + scope + support.token.decorator.python, meta.function.decorator.identifier.python + settings + + foreground + #89dceb + + + + name + python function calls + scope + meta.function-call.python + settings + + foreground + #89b4fa + + + + name + python function decorators + scope + entity.name.function.decorator.python, punctuation.definition.decorator.python + settings + + foreground + #fab387 + fontStyle + italic + + + + name + python placeholder reset to normal string + scope + constant.character.format.placeholder.other.python + settings + + foreground + #f5c2e7 + + + + name + Python exception & builtins such as exit() + scope + support.type.exception.python, support.function.builtin.python + settings + + foreground + #fab387 + + + + name + entity.name.type + scope + support.type.python + settings + + foreground + #fab387 + + + + name + python constants (True/False) + scope + constant.language.python + settings + + foreground + #cba6f7 + + + + name + Arguments accessed later in the function body + scope + meta.indexed-name.python, meta.item-access.python + settings + + foreground + #eba0ac + fontStyle + italic + + + + name + Python f-strings/binary/unicode storage types + scope + storage.type.string.python + settings + + foreground + #a6e3a1 + fontStyle + italic + + + + name + Python type hints + scope + meta.function.parameters.python + settings + + fontStyle + + + + + name + Regex string begin/end in JS/TS + scope + string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end + settings + + foreground + #f5c2e7 + + + + name + Regex anchors (^, $) + scope + keyword.control.anchor.regexp + settings + + foreground + #cba6f7 + + + + name + Regex regular string match + scope + string.regexp.ts + settings + + foreground + #cdd6f4 + + + + name + Regex group parenthesis & backreference (\1, \2, \3, ...) + scope + punctuation.definition.group.regexp, keyword.other.back-reference.regexp + settings + + foreground + #a6e3a1 + + + + name + Regex character class [] + scope + punctuation.definition.character-class.regexp + settings + + foreground + #f9e2af + + + + name + Regex character classes (\d, \w, \s) + scope + constant.other.character-class.regexp + settings + + foreground + #f5c2e7 + + + + name + Regex range + scope + constant.other.character-class.range.regexp + settings + + foreground + #f5e0dc + + + + name + Regex quantifier + scope + keyword.operator.quantifier.regexp + settings + + foreground + #94e2d5 + + + + name + Regex constant/numeric + scope + constant.character.numeric.regexp + settings + + foreground + #fab387 + + + + name + Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds + scope + punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp + settings + + foreground + #89b4fa + + + + name + Rust attribute + scope + meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust attribute strings + scope + meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust + settings + + fontStyle + + + + + name + Rust keyword + scope + entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Rust u/i32, u/i64, etc. + scope + entity.name.type.numeric.rust + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Rust generic + scope + meta.generic.rust + settings + + foreground + #fab387 + + + + name + Rust impl + scope + entity.name.impl.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust module + scope + entity.name.module.rust + settings + + foreground + #fab387 + + + + name + Rust trait + scope + entity.name.trait.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust struct + scope + storage.type.source.rust + settings + + foreground + #f9e2af + + + + name + Rust union + scope + entity.name.union.rust + settings + + foreground + #f9e2af + + + + name + Rust enum member + scope + meta.enum.rust storage.type.source.rust + settings + + foreground + #94e2d5 + + + + name + Rust macro + scope + support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Rust lifetime + scope + storage.modifier.lifetime.rust, entity.name.type.lifetime + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Rust string formatting + scope + string.quoted.double.rust constant.other.placeholder.rust + settings + + foreground + #f5c2e7 + + + + name + Rust return type generic + scope + meta.function.return-type.rust meta.generic.rust storage.type.rust + settings + + foreground + #cdd6f4 + + + + name + Rust functions + scope + meta.function.call.rust + settings + + foreground + #89b4fa + + + + name + Rust angle brackets + scope + punctuation.brackets.angle.rust + settings + + foreground + #89dceb + + + + name + Rust constants + scope + constant.other.caps.rust + settings + + foreground + #fab387 + + + + name + Rust function parameters + scope + meta.function.definition.rust variable.other.rust + settings + + foreground + #eba0ac + + + + name + Rust closure variables + scope + meta.function.call.rust variable.other.rust + settings + + foreground + #cdd6f4 + + + + name + Rust self + scope + variable.language.self.rust + settings + + foreground + #f38ba8 + + + + name + Rust metavariable names + scope + variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust + settings + + foreground + #f5c2e7 + + + + name + Shell shebang + scope + comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell + settings + + foreground + #f5c2e7 + fontStyle + italic + + + + name + Shell shebang command + scope + comment.line.shebang constant.language + settings + + foreground + #94e2d5 + fontStyle + italic + + + + name + Shell interpolated command + scope + meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation + settings + + foreground + #f38ba8 + + + + name + Shell interpolated command variable + scope + meta.string meta.interpolation.parameter.shell variable.other.readwrite + settings + + foreground + #fab387 + fontStyle + italic + + + + scope + source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell + settings + + foreground + #94e2d5 + + + + name + Shell EOF + scope + entity.name.tag.heredoc.shell + settings + + foreground + #cba6f7 + + + + name + Shell quoted variable + scope + string.quoted.double.shell variable.other.normal.shell + settings + + foreground + #cdd6f4 + + + + scope + markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man + settings + + foreground + #cba6f7 + + + + scope + markup.heading.commands.man + settings + + foreground + #89b4fa + + + + scope + markup.heading.env.man + settings + + foreground + #f5c2e7 + + + + name + Man page options + scope + entity.name + settings + + foreground + #94e2d5 + + + + scope + markup.heading.1.markdown + settings + + foreground + #f38ba8 + + + + scope + markup.heading.2.markdown + settings + + foreground + #fab387 + + + + scope + markup.heading.markdown + settings + + foreground + #f9e2af + + + + + \ No newline at end of file diff --git a/dotfiles/.config/btop/btop.conf b/dotfiles/.config/btop/btop.conf new file mode 100644 index 0000000..3b4551c --- /dev/null +++ b/dotfiles/.config/btop/btop.conf @@ -0,0 +1,254 @@ +#? Config file for btop v. 1.4.3 + +#* 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 = "/home/dich/.config/btop/themes/catppuccin_frappe.theme" + +#* 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 mem cpu" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* 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 = "cpu lazy" + +#* 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 + +#* 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 " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: 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/dotfiles/.config/btop/themes/catppuccin_frappe.theme b/dotfiles/.config/btop/themes/catppuccin_frappe.theme new file mode 100644 index 0000000..20a91ca --- /dev/null +++ b/dotfiles/.config/btop/themes/catppuccin_frappe.theme @@ -0,0 +1,83 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#303446" + +# Main text color +theme[main_fg]="#C6D0F5" + +# Title color for boxes +theme[title]="#C6D0F5" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#8CAAEE" + +# Background color of selected item in processes box +theme[selected_bg]="#51576D" + +# Foreground color of selected item in processes box +theme[selected_fg]="#8CAAEE" + +# Color of inactive/disabled text +theme[inactive_fg]="#838BA7" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#F2D5CF" + +# Background color of the percentage meters +theme[meter_bg]="#51576D" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#F2D5CF" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="#ca9ee6" #Mauve +theme[mem_box]="#a6d189" #Green +theme[net_box]="#ea999c" #Maroon +theme[proc_box]="#8caaee" #Blue + +# Box divider line and small boxes line color +theme[div_line]="#737994" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="#a6d189" +theme[temp_mid]="#e5c890" +theme[temp_end]="#e78284" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="#81c8be" +theme[cpu_mid]="#85c1dc" +theme[cpu_end]="#babbf1" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="#ca9ee6" +theme[free_mid]="#babbf1" +theme[free_end]="#8caaee" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="#85c1dc" +theme[cached_mid]="#8caaee" +theme[cached_end]="#babbf1" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="#ef9f76" +theme[available_mid]="#ea999c" +theme[available_end]="#e78284" + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="#a6d189" +theme[used_mid]="#81c8be" +theme[used_end]="#99d1db" + +# Download graph colors (Peach -> Red) +theme[download_start]="#ef9f76" +theme[download_mid]="#ea999c" +theme[download_end]="#e78284" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="#a6d189" +theme[upload_mid]="#81c8be" +theme[upload_end]="#99d1db" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) +theme[process_start]="#85c1dc" +theme[process_mid]="#babbf1" +theme[process_end]="#ca9ee6" diff --git a/dotfiles/.config/btop/themes/catppuccin_latte.theme b/dotfiles/.config/btop/themes/catppuccin_latte.theme new file mode 100644 index 0000000..792679c --- /dev/null +++ b/dotfiles/.config/btop/themes/catppuccin_latte.theme @@ -0,0 +1,84 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#EFF1F5" + +# Main text color +theme[main_fg]="#4C4F69" + +# Title color for boxes +theme[title]="#4C4F69" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#1E66F5" + +# Background color of selected item in processes box +theme[selected_bg]="#BCC0CC" + +# Foreground color of selected item in processes box +theme[selected_fg]="#1E66F5" + +# Color of inactive/disabled text +theme[inactive_fg]="#8C8FA1" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#DC8A78" + +# Background color of the percentage meters +theme[meter_bg]="#BCC0CC" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#DC8A78" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="#8839ef" #Mauve +theme[mem_box]="#40a02b" #Green +theme[net_box]="#e64553" #Maroon +theme[proc_box]="#1e66f5" #Blue + +# Box divider line and small boxes line color +theme[div_line]="#9CA0B0" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="#40a02b" +theme[temp_mid]="#df8e1d" +theme[temp_end]="#d20f39" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="#179299" +theme[cpu_mid]="#209fb5" +theme[cpu_end]="#7287fd" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="#8839ef" +theme[free_mid]="#7287fd" +theme[free_end]="#1e66f5" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="#209fb5" +theme[cached_mid]="#1e66f5" +theme[cached_end]="#7287fd" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="#fe640b" +theme[available_mid]="#e64553" +theme[available_end]="#d20f39" + + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="#40a02b" +theme[used_mid]="#179299" +theme[used_end]="#04a5e5" + +# Download graph colors (Peach -> Red) +theme[download_start]="#fe640b" +theme[download_mid]="#e64553" +theme[download_end]="#d20f39" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="#40a02b" +theme[upload_mid]="#179299" +theme[upload_end]="#04a5e5" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Lavender-> Mauve) +theme[process_start]="#209fb5" +theme[process_mid]="#7287fd" +theme[process_end]="#8839ef" diff --git a/dotfiles/.config/btop/themes/catppuccin_macchiato.theme b/dotfiles/.config/btop/themes/catppuccin_macchiato.theme new file mode 100644 index 0000000..86819d2 --- /dev/null +++ b/dotfiles/.config/btop/themes/catppuccin_macchiato.theme @@ -0,0 +1,83 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#24273A" + +# Main text color +theme[main_fg]="#CAD3F5" + +# Title color for boxes +theme[title]="#CAD3F5" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#8AADF4" + +# Background color of selected item in processes box +theme[selected_bg]="#494D64" + +# Foreground color of selected item in processes box +theme[selected_fg]="#8AADF4" + +# Color of inactive/disabled text +theme[inactive_fg]="#8087A2" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#F4DBD6" + +# Background color of the percentage meters +theme[meter_bg]="#494D64" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#F4DBD6" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="#c6a0f6" #Mauve +theme[mem_box]="#a6da95" #Green +theme[net_box]="#ee99a0" #Maroon +theme[proc_box]="#8aadf4" #Blue + +# Box divider line and small boxes line color +theme[div_line]="#6E738D" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="#a6da95" +theme[temp_mid]="#eed49f" +theme[temp_end]="#ed8796" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="#8bd5ca" +theme[cpu_mid]="#7dc4e4" +theme[cpu_end]="#b7bdf8" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="#c6a0f6" +theme[free_mid]="#b7bdf8" +theme[free_end]="#8aadf4" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="#7dc4e4" +theme[cached_mid]="#8aadf4" +theme[cached_end]="#b7bdf8" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="#f5a97f" +theme[available_mid]="#ee99a0" +theme[available_end]="#ed8796" + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="#a6da95" +theme[used_mid]="#8bd5ca" +theme[used_end]="#91d7e3" + +# Download graph colors (Peach -> Red) +theme[download_start]="#f5a97f" +theme[download_mid]="#ee99a0" +theme[download_end]="#ed8796" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="#a6da95" +theme[upload_mid]="#8bd5ca" +theme[upload_end]="#91d7e3" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) +theme[process_start]="#7dc4e4" +theme[process_mid]="#b7bdf8" +theme[process_end]="#c6a0f6" diff --git a/dotfiles/.config/btop/themes/catppuccin_mocha.theme b/dotfiles/.config/btop/themes/catppuccin_mocha.theme new file mode 100644 index 0000000..6915504 --- /dev/null +++ b/dotfiles/.config/btop/themes/catppuccin_mocha.theme @@ -0,0 +1,83 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#1E1E2E" + +# Main text color +theme[main_fg]="#CDD6F4" + +# Title color for boxes +theme[title]="#CDD6F4" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#89B4FA" + +# Background color of selected item in processes box +theme[selected_bg]="#45475A" + +# Foreground color of selected item in processes box +theme[selected_fg]="#89B4FA" + +# Color of inactive/disabled text +theme[inactive_fg]="#7F849C" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#F5E0DC" + +# Background color of the percentage meters +theme[meter_bg]="#45475A" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#F5E0DC" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="#cba6f7" #Mauve +theme[mem_box]="#a6e3a1" #Green +theme[net_box]="#eba0ac" #Maroon +theme[proc_box]="#89b4fa" #Blue + +# Box divider line and small boxes line color +theme[div_line]="#6C7086" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="#a6e3a1" +theme[temp_mid]="#f9e2af" +theme[temp_end]="#f38ba8" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="#94e2d5" +theme[cpu_mid]="#74c7ec" +theme[cpu_end]="#b4befe" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="#cba6f7" +theme[free_mid]="#b4befe" +theme[free_end]="#89b4fa" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="#74c7ec" +theme[cached_mid]="#89b4fa" +theme[cached_end]="#b4befe" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="#fab387" +theme[available_mid]="#eba0ac" +theme[available_end]="#f38ba8" + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="#a6e3a1" +theme[used_mid]="#94e2d5" +theme[used_end]="#89dceb" + +# Download graph colors (Peach -> Red) +theme[download_start]="#fab387" +theme[download_mid]="#eba0ac" +theme[download_end]="#f38ba8" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="#a6e3a1" +theme[upload_mid]="#94e2d5" +theme[upload_end]="#89dceb" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) +theme[process_start]="#74C7EC" +theme[process_mid]="#89DCEB" +theme[process_end]="#cba6f7" diff --git a/dotfiles/.config/easyeffects/output/Prime.json b/dotfiles/.config/easyeffects/output/Prime.json new file mode 100644 index 0000000..e7b30b1 --- /dev/null +++ b/dotfiles/.config/easyeffects/output/Prime.json @@ -0,0 +1,172 @@ +{ + "output": { + "bass_loudness#0": { + "bypass": false, + "input-gain": 0.0, + "link": -9.0, + "loudness": -3.0, + "output": -5.0000000000000036, + "output-gain": 0.0 + }, + "blocklist": [], + "compressor#0": { + "attack": 20.0, + "boost-amount": 6.0, + "boost-threshold": -72.0, + "bypass": false, + "dry": -100.0, + "hpf-frequency": 10.0, + "hpf-mode": "off", + "input-gain": 0.0, + "knee": -6.0, + "lpf-frequency": 20000.0, + "lpf-mode": "off", + "makeup": 0.0, + "mode": "Downward", + "output-gain": 0.0, + "ratio": 4.0, + "release": 100.0, + "release-threshold": -100.0, + "sidechain": { + "lookahead": 0.0, + "mode": "RMS", + "preamp": 0.0, + "reactivity": 10.0, + "source": "Middle", + "stereo-split-source": "Left/Right", + "type": "Feed-forward" + }, + "stereo-split": false, + "threshold": -12.0, + "wet": 2.7755575615628914e-17 + }, + "crossfeed#0": { + "bypass": false, + "fcut": 700, + "feed": 6.0, + "input-gain": 0.0, + "output-gain": 0.0 + }, + "crystalizer#0": { + "band0": { + "bypass": false, + "intensity": 0.0, + "mute": false + }, + "band1": { + "bypass": false, + "intensity": -1.0, + "mute": false + }, + "band10": { + "bypass": false, + "intensity": -10.0, + "mute": false + }, + "band11": { + "bypass": false, + "intensity": -11.0, + "mute": false + }, + "band12": { + "bypass": false, + "intensity": -12.0, + "mute": false + }, + "band2": { + "bypass": false, + "intensity": -2.0, + "mute": false + }, + "band3": { + "bypass": false, + "intensity": -3.0, + "mute": false + }, + "band4": { + "bypass": false, + "intensity": -4.0, + "mute": false + }, + "band5": { + "bypass": false, + "intensity": -5.0, + "mute": false + }, + "band6": { + "bypass": false, + "intensity": -6.0, + "mute": false + }, + "band7": { + "bypass": false, + "intensity": -7.0, + "mute": false + }, + "band8": { + "bypass": false, + "intensity": -8.0, + "mute": false + }, + "band9": { + "bypass": false, + "intensity": -9.0, + "mute": false + }, + "bypass": false, + "input-gain": 0.0, + "output-gain": 0.0 + }, + "deesser#0": { + "bypass": false, + "detection": "RMS", + "f1-freq": 6000.0, + "f1-level": 0.0, + "f2-freq": 4500.0, + "f2-level": 12.0, + "f2-q": 1.0, + "input-gain": 0.0, + "laxity": 15, + "makeup": 0.0, + "mode": "Wide", + "output-gain": 0.0, + "ratio": 3.0, + "sc-listen": false, + "threshold": -18.0 + }, + "exciter#0": { + "amount": 0.9999999999999992, + "blend": 0.0, + "bypass": false, + "ceil": 16000.0, + "ceil-active": false, + "harmonics": 0.5000000000000001, + "input-gain": 0.0, + "output-gain": 0.0, + "scope": 2000.0 + }, + "plugins_order": [ + "deesser#0", + "crystalizer#0", + "crossfeed#0", + "compressor#0", + "exciter#0", + "reverb#0", + "bass_loudness#0" + ], + "reverb#0": { + "amount": 0.499999999999974, + "bass-cut": 300.0, + "bypass": false, + "decay-time": 0.4999999999999991, + "diffusion": 0.49999999999999956, + "dry": 0.49999999999999933, + "hf-damp": 5000.0, + "input-gain": 0.0, + "output-gain": 0.0, + "predelay": 0.0, + "room-size": "Large", + "treble-cut": 5000.0 + } + } +} diff --git a/dotfiles/.config/easyeffects/output/Speaker.json b/dotfiles/.config/easyeffects/output/Speaker.json new file mode 100644 index 0000000..8d9a0ee --- /dev/null +++ b/dotfiles/.config/easyeffects/output/Speaker.json @@ -0,0 +1,18 @@ +{ + "output": { + "blocklist": [], + "loudness#1": { + "bypass": false, + "clipping": false, + "clipping-range": 6.0, + "fft": "4096", + "input-gain": 0.0, + "output-gain": 10.0, + "std": "ISO226-2003", + "volume": 6.999999999999991 + }, + "plugins_order": [ + "loudness#1" + ] + } +} diff --git a/dotfiles/.config/fastfetch/config.jsonc b/dotfiles/.config/fastfetch/config.jsonc new file mode 100644 index 0000000..d150bcc --- /dev/null +++ b/dotfiles/.config/fastfetch/config.jsonc @@ -0,0 +1,181 @@ +{ + "display": { + "separator": " ", + }, + "logo": { + "padding": { + "top": 0, + }, + }, + "modules": [ + { + "type": "custom", + "format": "\u001b[36m╭────────────┬──────────────────Hardware───────────────────────╮", + }, + { + "type": "host", + "key": " PC │", + "keyColor": "cyan", + "format": "{2}", + "outputColor": "cyan", + }, + { + "type": "board", + "key": "│ ╠ Board │", + "keyColor": "cyan", + "format": "{1}", + "outputColor": "cyan", + }, + { + "type": "cpu", + "key": "│ ╠ CPU │", + "keyColor": "cyan", + "format": "{1}", + "outputColor": "cyan", + }, + { + "type": "gpu", + "key": "│ ╠ GPU │", + "keyColor": "cyan", + "format": "{1} {2}", + "outputColor": "cyan", + }, + { + "type": "memory", + "key": "│ ╠ RAM │", + "keyColor": "cyan", + "outputColor": "cyan", + }, + { + "type": "disk", + "key": "│ ╠ Disk │", + "keyColor": "cyan", + "outputColor": "cyan", + "format": "{1} / {2} ({3}) {9}", + }, + { + "type": "display", + "key": "│ ╠󰍺 Display │", + "keyColor": "cyan", + "outputColor": "cyan", + "format": "{1}x{2}@{3}Hz in {12}-inch", + }, + { + "type": "battery", + "key": "│ ╠ Battery │", + "keyColor": "cyan", + "outputColor": "cyan", + }, + { + "type": "uptime", + "key": "│ ╚ Uptime │", + "keyColor": "cyan", + "format": "{1} days {2} hours {3} minutes", + "outputColor": "cyan", + }, + { + "type": "custom", + "format": "\u001b[36m╰────────────┴─────────────────────────────────────────────────╯", + }, + { + "type": "custom", + "format": "\u001b[34m╭────────────┬──────────────────Software───────────────────────╮", + }, + { + "type": "os", + "key": " OS │", + "keyColor": "blue", + "format": "{2} {8} {12}", + "outputColor": "blue", + }, + { + "type": "kernel", + "key": "│ ╠ Kernel │", + "keyColor": "blue", + "format": "{1} {2}", + "outputColor": "blue", + }, + { + "type": "packages", + "key": "│ ╠󰏖 Packages│", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "shell", + "key": "│ ╠ Shell │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{6} {4}", + }, + { + "type": "terminal", + "key": "│ ╠ Terminal│", + "keyColor": "blue", + "outputColor": "blue", + "format": "{5} {6}", + }, + { + "type": "lm", + "key": "│ ╠󰍂 LM │", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "de", + "key": "│ ╠ DE │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{2}", + }, + { + "type": "wm", + "key": "│ ╠󱂬 WM │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{2} {5}", + }, + { + "type": "cursor", + "key": "│ ╠󱄨 Cursor │", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "font", + "key": "│ ╠ Font │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{1}", + }, + { + "type": "terminalfont", + "key": "│ ╠󰬴 TermFont│", + "keyColor": "blue", + "outputColor": "blue", + }, + { + "type": "icons", + "key": "│ ╠ Icons │", + "keyColor": "blue", + "outputColor": "blue", + "format": "{1} {2}", + }, + { + "type": "title", + "key": "│ ╚ Hostname│", + "keyColor": "blue", + "outputColor": "blue", + "format": "{8}", + }, + { + "type": "custom", + "format": "\u001b[34m╰────────────┴─────────────────────────────────────────────────╯", + }, + { + "type": "custom", + "format": "\u001b[90m \u001b[91m \u001b[92m \u001b[93m \u001b[94m \u001b[95m \u001b[96m \u001b[97m \u001b[97m \u001b[96m \u001b[95m \u001b[94m \u001b[93m \u001b[92m \u001b[91m \u001b[90m", + }, + ], +} + diff --git a/dotfiles/.config/fcitx5/conf/cached_layouts b/dotfiles/.config/fcitx5/conf/cached_layouts new file mode 100644 index 0000000..72334da --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/cached_layouts @@ -0,0 +1,3705 @@ +[keyboard-bqn] +Description="Keyboard - BQN" +Language=en +Label=bqn + +[keyboard-apl] +Description="Keyboard - APL" +Language=en +Label=apl + +[keyboard-apl-dyalog] +Description="Keyboard - APL - APL symbols (Dyalog APL)" +Language=en +Label="dlg (dyalog)" + +[keyboard-apl-sax] +Description="Keyboard - APL - APL symbols (SAX, Sharp APL for Unix)" +Language=en +Label=sax + +[keyboard-apl-unified] +Description="Keyboard - APL - APL symbols (unified)" +Language=en +Label="ufd (unified)" + +[keyboard-apl-apl2] +Description="Keyboard - APL - APL symbols (IBM APL2)" +Language=en +Label=apl2 + +[keyboard-apl-aplplusII] +Description="Keyboard - APL - APL symbols (Manugistics APL*PLUS II)" +Language=en +Label="aplII (aplplusII)" + +[keyboard-apl-aplx] +Description="Keyboard - APL - APL symbols (APLX unified)" +Language=en +Label=aplx + +[keyboard-ua] +Description="Keyboard - Ukrainian" +Language=uk +Label=uk + +[keyboard-ua-phonetic] +Description="Keyboard - Ukrainian - Ukrainian (phonetic)" +Language=uk +Label="ua (phonetic)" + +[keyboard-ua-typewriter] +Description="Keyboard - Ukrainian - Ukrainian (typewriter)" +Language=uk +Label="ua (typewriter)" + +[keyboard-ua-winkeys] +Description="Keyboard - Ukrainian - Ukrainian (Windows)" +Language=uk +Label="ua (winkeys)" + +[keyboard-ua-macOS] +Description="Keyboard - Ukrainian - Ukrainian (macOS)" +Language=uk +Label="ua (macOS)" + +[keyboard-ua-legacy] +Description="Keyboard - Ukrainian - Ukrainian (legacy)" +Language=uk +Label="ua (legacy)" + +[keyboard-ua-homophonic] +Description="Keyboard - Ukrainian - Ukrainian (homophonic)" +Language=uk +Label="ua (homophonic)" + +[keyboard-ua-crh] +Description="Keyboard - Ukrainian - Crimean Tatar (Turkish Q)" +Language=crh +Label=crh + +[keyboard-ua-crh_f] +Description="Keyboard - Ukrainian - Crimean Tatar (Turkish F)" +Language=crh +Label="crh (crh_f)" + +[keyboard-ua-crh_alt] +Description="Keyboard - Ukrainian - Crimean Tatar (Turkish Alt-Q)" +Language=crh +Label="crh (crh_alt)" + +[keyboard-ua-sun_type6] +Description="Keyboard - Ukrainian - Ukrainian (Sun Type 6/7)" +Language=uk +Label="ua (sun_type6)" + +[keyboard-th] +Description="Keyboard - Thai" +Language=th +Label=th + +[keyboard-th-tis] +Description="Keyboard - Thai - Thai (TIS-820.2538)" +Language=th +Label="th (tis)" + +[keyboard-th-pat] +Description="Keyboard - Thai - Thai (Pattachote)" +Language=th +Label="th (pat)" + +[keyboard-tz] +Description="Keyboard - Swahili (Tanzania)" +Language=sw +Label=sw + +[keyboard-latam] +Description="Keyboard - Spanish (Latin American)" +Language=es +Label=es + +[keyboard-latam-nodeadkeys] +Description="Keyboard - Spanish (Latin American) - Spanish (Latin American, no dead keys)" +Language=es +Label="latam (nodeadkeys)" + +[keyboard-latam-deadtilde] +Description="Keyboard - Spanish (Latin American) - Spanish (Latin American, dead tilde)" +Language=es +Label="latam (deadtilde)" + +[keyboard-latam-dvorak] +Description="Keyboard - Spanish (Latin American) - Spanish (Latin American, Dvorak)" +Language=es +Label="latam (dvorak)" + +[keyboard-latam-colemak] +Description="Keyboard - Spanish (Latin American) - Spanish (Latin American, Colemak)" +Language=es +Label="latam (colemak)" + +[keyboard-sk] +Description="Keyboard - Slovak" +Language=sk +Label=sk + +[keyboard-sk-bksl] +Description="Keyboard - Slovak - Slovak (extra backslash)" +Language=sk +Label="sk (bksl)" + +[keyboard-sk-qwerty] +Description="Keyboard - Slovak - Slovak (QWERTY)" +Language=sk +Label="sk (qwerty)" + +[keyboard-sk-qwerty_bksl] +Description="Keyboard - Slovak - Slovak (QWERTY, extra backslash)" +Language=sk +Label="sk (qwerty_bksl)" + +[keyboard-sk-acc] +Description="Keyboard - Slovak - Slovak (ACC layout, only accented letters)" +Language=sk +Label="sk (acc)" + +[keyboard-sk-sun_type6] +Description="Keyboard - Slovak - Slovak (Sun Type 6/7)" +Language=sk +Label="sk (sun_type6)" + +[keyboard-ru] +Description="Keyboard - Russian" +Language=ru +Label=ru + +[keyboard-ru-phonetic] +Description="Keyboard - Russian - Russian (phonetic)" +Language=ru +Label="ru (phonetic)" + +[keyboard-ru-phonetic_winkeys] +Description="Keyboard - Russian - Russian (phonetic, Windows)" +Language=ru +Label="ru (phonetic_winkeys)" + +[keyboard-ru-phonetic_YAZHERTY] +Description="Keyboard - Russian - Russian (phonetic, YAZHERTY)" +Language=ru +Label="ru (phonetic_YAZHERTY)" + +[keyboard-ru-phonetic_azerty] +Description="Keyboard - Russian - Russian (phonetic, AZERTY)" +Language=ru +Label="ru (phonetic_azerty)" + +[keyboard-ru-phonetic_dvorak] +Description="Keyboard - Russian - Russian (phonetic, Dvorak)" +Language=ru +Label="ru (phonetic_dvorak)" + +[keyboard-ru-typewriter] +Description="Keyboard - Russian - Russian (typewriter)" +Language=ru +Label="ru (typewriter)" + +[keyboard-ru-ruchey_ru] +Description="Keyboard - Russian - Russian (engineering, RU)" +Language=ru +Label="ru (ruchey_ru)" + +[keyboard-ru-ruchey_en] +Description="Keyboard - Russian - Russian (engineering, EN)" +Language=ru +Label="en (ruchey_en)" + +[keyboard-ru-legacy] +Description="Keyboard - Russian - Russian (legacy)" +Language=ru +Label="ru (legacy)" + +[keyboard-ru-typewriter-legacy] +Description="Keyboard - Russian - Russian (typewriter, legacy)" +Language=ru +Label="ru (typewriter-legacy)" + +[keyboard-ru-dos] +Description="Keyboard - Russian - Russian (DOS)" +Language=ru +Label="ru (dos)" + +[keyboard-ru-mac] +Description="Keyboard - Russian - Russian (Macintosh)" +Language=ru +Label="ru (mac)" + +[keyboard-ru-ab] +Description="Keyboard - Russian - Abkhazian (Russia)" +Language=ab +Label="ru (ab)" + +[keyboard-ru-bak] +Description="Keyboard - Russian - Bashkirian" +Language=ba +Label="ru (bak)" + +[keyboard-ru-cv] +Description="Keyboard - Russian - Chuvash" +Language=cv +Label="ru (cv)" + +[keyboard-ru-cv_latin] +Description="Keyboard - Russian - Chuvash (Latin)" +Language=cv +Label="ru (cv_latin)" + +[keyboard-ru-xal] +Description="Keyboard - Russian - Kalmyk" +Language=xal +Label="ru (xal)" + +[keyboard-ru-kom] +Description="Keyboard - Russian - Komi" +Language=kv +Label="ru (kom)" + +[keyboard-ru-chm] +Description="Keyboard - Russian - Mari" +Language=chm +Label="ru (chm)" + +[keyboard-ru-os_legacy] +Description="Keyboard - Russian - Ossetian (legacy)" +Language=os +Label="ru (os_legacy)" + +[keyboard-ru-os_winkeys] +Description="Keyboard - Russian - Ossetian (Windows)" +Language=os +Label="ru (os_winkeys)" + +[keyboard-ru-srp] +Description="Keyboard - Russian - Serbian (Russia)" +Language=ru +Label="ru (srp)" + +[keyboard-ru-tt] +Description="Keyboard - Russian - Tatar" +Language=tt +Label="ru (tt)" + +[keyboard-ru-udm] +Description="Keyboard - Russian - Udmurt" +Language=udm +Label="ru (udm)" + +[keyboard-ru-sah] +Description="Keyboard - Russian - Yakut" +Language=sah +Label="ru (sah)" + +[keyboard-ru-chu] +Description="Keyboard - Russian - Church Slavonic" +Language=cu +Label="ru (chu)" + +[keyboard-ru-ruu] +Description="Keyboard - Russian - Russian (plus Ukrainian and Belarusian letters)" +Language=ru +Label="ru (ruu)" + +[keyboard-ru-rulemak] +Description="Keyboard - Russian - Russian (Rulemak, phonetic Colemak)" +Language=ru +Label="ru (rulemak)" + +[keyboard-ru-phonetic_mac] +Description="Keyboard - Russian - Russian (phonetic, Macintosh)" +Language=ru +Label="ru (phonetic_mac)" + +[keyboard-ru-sun_type6] +Description="Keyboard - Russian - Russian (Sun Type 6/7)" +Language=ru +Label="ru (sun_type6)" + +[keyboard-ru-unipunct] +Description="Keyboard - Russian - Russian (with US punctuation)" +Language=ru +Label="ru (unipunct)" + +[keyboard-ru-gost-6431-75-48] +Description="Keyboard - Russian - Russian (GOST 6431-75)" +Language=ru +Label="ru (gost-6431-75-48)" + +[keyboard-ru-gost-14289-88] +Description="Keyboard - Russian - Russian (GOST 14289-88)" +Language=ru +Label="ru (gost-14289-88)" + +[keyboard-ru-prxn] +Description="Keyboard - Russian - Russian (Polyglot and Reactionary)" +Language=ru +Label="ru (prxn)" + +[keyboard-ru-winkeys-p] +Description="Keyboard - Russian - Russian (Programmer)" +Language=ru +Label=winkeys-p + +[keyboard-ru-typo] +Description="Keyboard - Russian - Russian (plus typographic symbols)" +Language=ru +Label="ru (typo)" + +[keyboard-ru-rtu] +Description="Keyboard - Russian - Russian (plus Tatar letters)" +Language=ru +Label="ru (rtu)" + +[keyboard-ru-diktor] +Description="Keyboard - Russian - Russian (Diktor)" +Language=ru +Label=diktor + +[keyboard-ru-ruintl_ru] +Description="Keyboard - Russian - Russian (international, RU)" +Language=ru +Label="ru (ruintl_ru)" + +[keyboard-ru-ruintl_en] +Description="Keyboard - Russian - Russian (international, EN)" +Language=en +Label="en (ruintl_en)" + +[keyboard-br] +Description="Keyboard - Portuguese (Brazil)" +Language=pt +Label=pt + +[keyboard-br-nodeadkeys] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, no dead keys)" +Language=pt +Label="br (nodeadkeys)" + +[keyboard-br-dvorak] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, Dvorak)" +Language=pt +Label="br (dvorak)" + +[keyboard-br-nativo] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, Nativo)" +Language=pt +Label="br (nativo)" + +[keyboard-br-nativo-us] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, Nativo for US keyboards)" +Language=pt +Label="br (nativo-us)" + +[keyboard-br-thinkpad] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, IBM/Lenovo ThinkPad)" +Language=pt +Label="br (thinkpad)" + +[keyboard-br-nativo-epo] +Description="Keyboard - Portuguese (Brazil) - Esperanto (Brazil, Nativo)" +Language=eo +Label="br (nativo-epo)" + +[keyboard-br-rus] +Description="Keyboard - Portuguese (Brazil) - Russian (Brazil, phonetic)" +Language=ru +Label="ru (rus)" + +[keyboard-br-sun_type6] +Description="Keyboard - Portuguese (Brazil) - Portuguese (Brazil, Sun Type 6/7)" +Language=pt +Label="br (sun_type6)" + +[keyboard-ro] +Description="Keyboard - Romanian" +Language=ro +Label=ro + +[keyboard-ro-std] +Description="Keyboard - Romanian - Romanian (standard)" +Language=ro +Label="ro (std)" + +[keyboard-ro-winkeys] +Description="Keyboard - Romanian - Romanian (Windows)" +Language=ro +Label="ro (winkeys)" + +[keyboard-ro-crh_dobruja] +Description="Keyboard - Romanian - Crimean Tatar (Dobruja Q)" +Language=crh +Label="crh (crh_dobruja)" + +[keyboard-ro-ergonomic] +Description="Keyboard - Romanian - Romanian (ergonomic Touchtype)" +Language=ro +Label="ro (ergonomic)" + +[keyboard-ro-sun_type6] +Description="Keyboard - Romanian - Romanian (Sun Type 6/7)" +Language=ro +Label="ro (sun_type6)" + +[keyboard-pl] +Description="Keyboard - Polish" +Language=pl +Label=pl + +[keyboard-pl-legacy] +Description="Keyboard - Polish - Polish (legacy)" +Language=pl +Label="pl (legacy)" + +[keyboard-pl-qwertz] +Description="Keyboard - Polish - Polish (QWERTZ)" +Language=pl +Label="pl (qwertz)" + +[keyboard-pl-dvorak] +Description="Keyboard - Polish - Polish (Dvorak)" +Language=pl +Label="pl (dvorak)" + +[keyboard-pl-dvorak_quotes] +Description="Keyboard - Polish - Polish (Dvorak, with Polish quotes on quotemark key)" +Language=pl +Label="pl (dvorak_quotes)" + +[keyboard-pl-dvorak_altquotes] +Description="Keyboard - Polish - Polish (Dvorak, with Polish quotes on key 1)" +Language=pl +Label="pl (dvorak_altquotes)" + +[keyboard-pl-dvp] +Description="Keyboard - Polish - Polish (programmer Dvorak)" +Language=pl +Label="pl (dvp)" + +[keyboard-pl-csb] +Description="Keyboard - Polish - Kashubian" +Language=csb +Label="pl (csb)" + +[keyboard-pl-szl] +Description="Keyboard - Polish - Silesian" +Language=szl +Label="pl (szl)" + +[keyboard-pl-ru_phonetic_dvorak] +Description="Keyboard - Polish - Russian (Poland, phonetic Dvorak)" +Language=ru +Label="ru (ru_phonetic_dvorak)" + +[keyboard-pl-intl] +Description="Keyboard - Polish - Polish (intl., with dead keys)" +Language=pl +Label="pl (intl)" + +[keyboard-pl-colemak] +Description="Keyboard - Polish - Polish (Colemak)" +Language=pl +Label="pl (colemak)" + +[keyboard-pl-colemak_dh_ansi] +Description="Keyboard - Polish - Polish (Colemak-DH)" +Language=pl +Label="pl (colemak_dh_ansi)" + +[keyboard-pl-colemak_dh] +Description="Keyboard - Polish - Polish (Colemak-DH ISO)" +Language=pl +Label="pl (colemak_dh)" + +[keyboard-pl-sun_type6] +Description="Keyboard - Polish - Polish (Sun Type 6/7)" +Language=pl +Label="pl (sun_type6)" + +[keyboard-pl-glagolica] +Description="Keyboard - Polish - Polish (Glagolica)" +Language=pl +Label="pl (glagolica)" + +[keyboard-pl-lefty] +Description="Keyboard - Polish - Polish (lefty)" +Language=pl +Label="pl (lefty)" + +[keyboard-trans] +Description="Keyboard - International Phonetic Alphabet" +Language= +Label=ipa + +[keyboard-trans-qwerty] +Description="Keyboard - International Phonetic Alphabet - International Phonetic Alphabet (QWERTY)" +Language= +Label="trans (qwerty)" + +[keyboard-ir] +Description="Keyboard - Persian" +Language=fa +Label=fa + +[keyboard-ir-pes_keypad] +Description="Keyboard - Persian - Persian (with Persian keypad)" +Language=fa +Label="ir (pes_keypad)" + +[keyboard-ir-winkeys] +Description="Keyboard - Persian - Persian (Windows)" +Language=fa +Label="ir (winkeys)" + +[keyboard-ir-azb] +Description="Keyboard - Persian - Azerbaijani (Iran)" +Language=azb +Label=azb + +[keyboard-ir-ku] +Description="Keyboard - Persian - Kurdish (Iran, Latin Q)" +Language=ku +Label=ku + +[keyboard-ir-ku_alt] +Description="Keyboard - Persian - Kurdish (Iran, Latin Alt-Q)" +Language=ku +Label="ku (ku_alt)" + +[keyboard-ir-ku_f] +Description="Keyboard - Persian - Kurdish (Iran, F)" +Language=ku +Label="ku (ku_f)" + +[keyboard-ir-ku_ara] +Description="Keyboard - Persian - Kurdish (Iran, Arabic-Latin)" +Language=ku +Label="ku (ku_ara)" + +[keyboard-custom] +Description="Keyboard - A user-defined custom Layout" +Language=und +Label=custom + +[keyboard-no] +Description="Keyboard - Norwegian" +Language=no +Label=no + +[keyboard-no-nodeadkeys] +Description="Keyboard - Norwegian - Norwegian (no dead keys)" +Language=no +Label="no (nodeadkeys)" + +[keyboard-no-winkeys] +Description="Keyboard - Norwegian - Norwegian (Windows)" +Language=no +Label="no (winkeys)" + +[keyboard-no-mac] +Description="Keyboard - Norwegian - Norwegian (Macintosh)" +Language=no +Label="no (mac)" + +[keyboard-no-mac_nodeadkeys] +Description="Keyboard - Norwegian - Norwegian (Macintosh, no dead keys)" +Language=no +Label="no (mac_nodeadkeys)" + +[keyboard-no-colemak] +Description="Keyboard - Norwegian - Norwegian (Colemak)" +Language=no +Label="no (colemak)" + +[keyboard-no-colemak_dh] +Description="Keyboard - Norwegian - Norwegian (Colemak-DH)" +Language=no +Label="no (colemak_dh)" + +[keyboard-no-colemak_dh_wide] +Description="Keyboard - Norwegian - Norwegian (Colemak-DH Wide)" +Language=no +Label="no (colemak_dh_wide)" + +[keyboard-no-dvorak] +Description="Keyboard - Norwegian - Norwegian (Dvorak)" +Language=no +Label="no (dvorak)" + +[keyboard-no-smi] +Description="Keyboard - Norwegian - Northern Saami (Norway)" +Language=se +Label="no (smi)" + +[keyboard-no-smi_nodeadkeys] +Description="Keyboard - Norwegian - Northern Saami (Norway, no dead keys)" +Language=se +Label="no (smi_nodeadkeys)" + +[keyboard-no-sun_type6] +Description="Keyboard - Norwegian - Norwegian (Sun Type 6/7)" +Language=no +Label="no (sun_type6)" + +[keyboard-gn] +Description="Keyboard - N'Ko (AZERTY)" +Language=nqo +Label=nqo + +[keyboard-tm] +Description="Keyboard - Turkmen" +Language=tk +Label=tk + +[keyboard-tm-alt] +Description="Keyboard - Turkmen - Turkmen (Alt-Q)" +Language=tk +Label="tm (alt)" + +[keyboard-np] +Description="Keyboard - Nepali" +Language=ne +Label=ne + +[keyboard-ancient] +Description="Keyboard - Ancient" +Language=got +Label=xx + +[keyboard-ancient-got] +Description="Keyboard - Ancient - Gothic" +Language=got +Label="ancient (got)" + +[keyboard-ancient-uga] +Description="Keyboard - Ancient - Ugaritic" +Language=uga +Label="ancient (uga)" + +[keyboard-ancient-ave] +Description="Keyboard - Ancient - Avestan" +Language=ae +Label="ancient (ave)" + +[keyboard-mt] +Description="Keyboard - Maltese" +Language=mt +Label=mt + +[keyboard-mt-us] +Description="Keyboard - Maltese - Maltese (US)" +Language=mt +Label="mt (us)" + +[keyboard-mt-alt-us] +Description="Keyboard - Maltese - Maltese (US, with AltGr overrides)" +Language=mt +Label="mt (alt-us)" + +[keyboard-mt-alt-gb] +Description="Keyboard - Maltese - Maltese (UK, with AltGr overrides)" +Language=mt +Label="mt (alt-gb)" + +[keyboard-pt] +Description="Keyboard - Portuguese" +Language=pt +Label=pt + +[keyboard-pt-nodeadkeys] +Description="Keyboard - Portuguese - Portuguese (no dead keys)" +Language=pt +Label="pt (nodeadkeys)" + +[keyboard-pt-mac] +Description="Keyboard - Portuguese - Portuguese (Macintosh)" +Language=pt +Label="pt (mac)" + +[keyboard-pt-mac_nodeadkeys] +Description="Keyboard - Portuguese - Portuguese (Macintosh, no dead keys)" +Language=pt +Label="pt (mac_nodeadkeys)" + +[keyboard-pt-nativo] +Description="Keyboard - Portuguese - Portuguese (Nativo)" +Language=pt +Label="pt (nativo)" + +[keyboard-pt-nativo-us] +Description="Keyboard - Portuguese - Portuguese (Nativo for US keyboards)" +Language=pt +Label="pt (nativo-us)" + +[keyboard-pt-nativo-epo] +Description="Keyboard - Portuguese - Esperanto (Portugal, Nativo)" +Language=eo +Label="pt (nativo-epo)" + +[keyboard-pt-sun_type6] +Description="Keyboard - Portuguese - Portuguese (Sun Type 6/7)" +Language=pt +Label="pt (sun_type6)" + +[keyboard-pt-colemak] +Description="Keyboard - Portuguese - Portuguese (Colemak)" +Language=pt +Label="pt (colemak)" + +[keyboard-my] +Description="Keyboard - Malay (Jawi, Arabic Keyboard)" +Language=id +Label=ms + +[keyboard-my-phonetic] +Description="Keyboard - Malay (Jawi, Arabic Keyboard) - Malay (Jawi, phonetic)" +Language=id +Label="my (phonetic)" + +[keyboard-mk] +Description="Keyboard - Macedonian" +Language=mk +Label=mk + +[keyboard-mk-nodeadkeys] +Description="Keyboard - Macedonian - Macedonian (no dead keys)" +Language=mk +Label="mk (nodeadkeys)" + +[keyboard-kg] +Description="Keyboard - Kyrgyz" +Language=ky +Label=ki + +[keyboard-kg-phonetic] +Description="Keyboard - Kyrgyz - Kyrgyz (phonetic)" +Language=ky +Label="kg (phonetic)" + +[keyboard-tj] +Description="Keyboard - Tajik" +Language=tg +Label=tg + +[keyboard-tj-legacy] +Description="Keyboard - Tajik - Tajik (legacy)" +Language=tg +Label="tj (legacy)" + +[keyboard-mv] +Description="Keyboard - Dhivehi" +Language=dv +Label=dv + +[keyboard-lk] +Description="Keyboard - Sinhala (phonetic)" +Language=si +Label=si + +[keyboard-lk-us] +Description="Keyboard - Sinhala (phonetic) - Sinhala (US)" +Language=si +Label="si (us)" + +[keyboard-lk-tam_unicode] +Description="Keyboard - Sinhala (phonetic) - Tamil (Sri Lanka, TamilNet '99)" +Language=ta +Label="ta (tam_unicode)" + +[keyboard-lk-tam_TAB] +Description="Keyboard - Sinhala (phonetic) - Tamil (Sri Lanka, TamilNet '99, TAB encoding)" +Language=ta +Label="lk (tam_TAB)" + +[keyboard-al] +Description="Keyboard - Albanian" +Language=sq +Label=sq + +[keyboard-al-plisi] +Description="Keyboard - Albanian - Albanian (Plisi)" +Language=sq +Label="al (plisi)" + +[keyboard-al-veqilharxhi] +Description="Keyboard - Albanian - Albanian (Veqilharxhi)" +Language=sq +Label="al (veqilharxhi)" + +[keyboard-cz] +Description="Keyboard - Czech" +Language=cs +Label=cs + +[keyboard-cz-bksl] +Description="Keyboard - Czech - Czech (extra backslash)" +Language=cs +Label="cz (bksl)" + +[keyboard-cz-qwerty] +Description="Keyboard - Czech - Czech (QWERTY)" +Language=cs +Label="cz (qwerty)" + +[keyboard-cz-qwerty_bksl] +Description="Keyboard - Czech - Czech (QWERTY, extra backslash)" +Language=cs +Label="cz (qwerty_bksl)" + +[keyboard-cz-winkeys] +Description="Keyboard - Czech - Czech (QWERTZ, Windows)" +Language=cs +Label="cz (winkeys)" + +[keyboard-cz-winkeys-qwerty] +Description="Keyboard - Czech - Czech (QWERTY, Windows)" +Language=cs +Label="cz (winkeys-qwerty)" + +[keyboard-cz-qwerty-mac] +Description="Keyboard - Czech - Czech (QWERTY, Macintosh)" +Language=cs +Label="cz (qwerty-mac)" + +[keyboard-cz-ucw] +Description="Keyboard - Czech - Czech (UCW, only accented letters)" +Language=cs +Label="cz (ucw)" + +[keyboard-cz-dvorak-ucw] +Description="Keyboard - Czech - Czech (US, Dvorak, UCW support)" +Language=cs +Label="cz (dvorak-ucw)" + +[keyboard-cz-rus] +Description="Keyboard - Czech - Russian (Czechia, phonetic)" +Language=ru +Label="ru (rus)" + +[keyboard-cz-sun_type6] +Description="Keyboard - Czech - Czech (Sun Type 6/7)" +Language=cs +Label="cz (sun_type6)" + +[keyboard-cz-prog] +Description="Keyboard - Czech - Czech (programming)" +Language=cs +Label="cz (prog)" + +[keyboard-cz-prog_typo] +Description="Keyboard - Czech - Czech (programming, typographic)" +Language=cs +Label="cz (prog_typo)" + +[keyboard-cz-coder] +Description="Keyboard - Czech - Czech (coder)" +Language=cs +Label="cz (coder)" + +[keyboard-cz-colemak-ucw] +Description="Keyboard - Czech - Czech (US, Colemak, UCW support)" +Language=cs +Label="cz (colemak-ucw)" + +[keyboard-brai] +Description="Keyboard - Braille" +Language= +Label=brl + +[keyboard-brai-left_hand] +Description="Keyboard - Braille - Braille (left-handed)" +Language= +Label="brai (left_hand)" + +[keyboard-brai-left_hand_invert] +Description="Keyboard - Braille - Braille (left-handed inverted thumb)" +Language= +Label="brai (left_hand_invert)" + +[keyboard-brai-right_hand] +Description="Keyboard - Braille - Braille (right-handed)" +Language= +Label="brai (right_hand)" + +[keyboard-brai-right_hand_invert] +Description="Keyboard - Braille - Braille (right-handed inverted thumb)" +Language= +Label="brai (right_hand_invert)" + +[keyboard-se] +Description="Keyboard - Swedish" +Language=sv +Label=sv + +[keyboard-se-nodeadkeys] +Description="Keyboard - Swedish - Swedish (no dead keys)" +Language=sv +Label="se (nodeadkeys)" + +[keyboard-se-dvorak] +Description="Keyboard - Swedish - Swedish (Dvorak)" +Language=sv +Label="se (dvorak)" + +[keyboard-se-us_dvorak] +Description="Keyboard - Swedish - Swedish (Dvorak, intl.)" +Language=sv +Label="se (us_dvorak)" + +[keyboard-se-svdvorak] +Description="Keyboard - Swedish - Swedish (Svdvorak)" +Language=sv +Label="se (svdvorak)" + +[keyboard-se-mac] +Description="Keyboard - Swedish - Swedish (Macintosh)" +Language=sv +Label="se (mac)" + +[keyboard-se-us] +Description="Keyboard - Swedish - Swedish (US)" +Language=sv +Label="se (us)" + +[keyboard-se-swl] +Description="Keyboard - Swedish - Swedish Sign Language" +Language=swl +Label="se (swl)" + +[keyboard-se-smi] +Description="Keyboard - Swedish - Northern Saami (Sweden)" +Language=se +Label="se (smi)" + +[keyboard-se-rus] +Description="Keyboard - Swedish - Russian (Sweden, phonetic)" +Language=ru +Label="ru (rus)" + +[keyboard-se-dvorak_a5] +Description="Keyboard - Swedish - Swedish (Dvorak A5)" +Language=sv +Label="se (dvorak_a5)" + +[keyboard-se-sun_type6] +Description="Keyboard - Swedish - Swedish (Sun Type 6/7)" +Language=sv +Label="se (sun_type6)" + +[keyboard-se-ovd] +Description="Keyboard - Swedish - Elfdalian (Sweden, with combining ogonek)" +Language=ovd +Label="se (ovd)" + +[keyboard-bg] +Description="Keyboard - Bulgarian" +Language=bg +Label=bg + +[keyboard-bg-phonetic] +Description="Keyboard - Bulgarian - Bulgarian (traditional phonetic)" +Language=bg +Label="bg (phonetic)" + +[keyboard-bg-bas_phonetic] +Description="Keyboard - Bulgarian - Bulgarian (new phonetic)" +Language=bg +Label="bg (bas_phonetic)" + +[keyboard-bg-bekl] +Description="Keyboard - Bulgarian - Bulgarian (enhanced)" +Language=bg +Label="bg (bekl)" + +[keyboard-pk] +Description="Keyboard - Urdu (Pakistan)" +Language=ur +Label=ur + +[keyboard-pk-urd-crulp] +Description="Keyboard - Urdu (Pakistan) - Urdu (Pakistan, CRULP)" +Language=ur +Label="pk (urd-crulp)" + +[keyboard-pk-urd-nla] +Description="Keyboard - Urdu (Pakistan) - Urdu (Pakistan, NLA)" +Language=ur +Label="pk (urd-nla)" + +[keyboard-pk-ara] +Description="Keyboard - Urdu (Pakistan) - Arabic (Pakistan)" +Language=ar +Label="ar (ara)" + +[keyboard-pk-snd] +Description="Keyboard - Urdu (Pakistan) - Sindhi" +Language=sd +Label="sd (snd)" + +[keyboard-pk-urd-navees] +Description="Keyboard - Urdu (Pakistan) - Urdu (Pakistan, Navees)" +Language=ur +Label="pk (urd-navees)" + +[keyboard-au] +Description="Keyboard - English (Australia)" +Language=en +Label=en + +[keyboard-mn] +Description="Keyboard - Mongolian" +Language=mn +Label=mn + +[keyboard-dz] +Description="Keyboard - Berber (Algeria, Latin)" +Language=tzm +Label=kab + +[keyboard-dz-ber] +Description="Keyboard - Berber (Algeria, Latin) - Berber (Algeria, Tifinagh)" +Language=kab +Label="kab (ber)" + +[keyboard-dz-azerty-deadkeys] +Description="Keyboard - Berber (Algeria, Latin) - Kabyle (AZERTY, with dead keys)" +Language=kab +Label="kab (azerty-deadkeys)" + +[keyboard-dz-qwerty-gb-deadkeys] +Description="Keyboard - Berber (Algeria, Latin) - Kabyle (QWERTY, UK, with dead keys)" +Language=kab +Label="kab (qwerty-gb-deadkeys)" + +[keyboard-dz-qwerty-us-deadkeys] +Description="Keyboard - Berber (Algeria, Latin) - Kabyle (QWERTY, US, with dead keys)" +Language=kab +Label="kab (qwerty-us-deadkeys)" + +[keyboard-dz-ar] +Description="Keyboard - Berber (Algeria, Latin) - Arabic (Algeria)" +Language=ar +Label=ar + +[keyboard-me] +Description="Keyboard - Montenegrin" +Language=sr +Label=sr + +[keyboard-me-cyrillic] +Description="Keyboard - Montenegrin - Montenegrin (Cyrillic)" +Language=sr +Label="me (cyrillic)" + +[keyboard-me-cyrillicyz] +Description="Keyboard - Montenegrin - Montenegrin (Cyrillic, ZE and ZHE swapped)" +Language=sr +Label="me (cyrillicyz)" + +[keyboard-me-cyrillicalternatequotes] +Description="Keyboard - Montenegrin - Montenegrin (Cyrillic, with guillemets)" +Language=sr +Label="me (cyrillicalternatequotes)" + +[keyboard-me-latinunicode] +Description="Keyboard - Montenegrin - Montenegrin (Latin, Unicode)" +Language=sr +Label="me (latinunicode)" + +[keyboard-me-latinyz] +Description="Keyboard - Montenegrin - Montenegrin (Latin, QWERTY)" +Language=sr +Label="me (latinyz)" + +[keyboard-me-latinunicodeyz] +Description="Keyboard - Montenegrin - Montenegrin (Latin, Unicode, QWERTY)" +Language=sr +Label="me (latinunicodeyz)" + +[keyboard-me-latinalternatequotes] +Description="Keyboard - Montenegrin - Montenegrin (Latin, with guillemets)" +Language=sr +Label="me (latinalternatequotes)" + +[keyboard-lv] +Description="Keyboard - Latvian" +Language=lv +Label=lv + +[keyboard-lv-apostrophe] +Description="Keyboard - Latvian - Latvian (apostrophe)" +Language=lv +Label="lv (apostrophe)" + +[keyboard-lv-tilde] +Description="Keyboard - Latvian - Latvian (tilde)" +Language=lv +Label="lv (tilde)" + +[keyboard-lv-fkey] +Description="Keyboard - Latvian - Latvian (F)" +Language=lv +Label="lv (fkey)" + +[keyboard-lv-modern] +Description="Keyboard - Latvian - Latvian (Modern Latin)" +Language=lv +Label="lv (modern)" + +[keyboard-lv-modern-cyr] +Description="Keyboard - Latvian - Latvian (Modern Cyrillic)" +Language=lv +Label="lv (modern-cyr)" + +[keyboard-lv-ergonomic] +Description="Keyboard - Latvian - Latvian (ergonomic, ŪGJRMV)" +Language=lv +Label="lv (ergonomic)" + +[keyboard-lv-adapted] +Description="Keyboard - Latvian - Latvian (adapted)" +Language=lv +Label="lv (adapted)" + +[keyboard-lv-dvorak] +Description="Keyboard - Latvian - Latvian (Dvorak)" +Language=lv +Label="lv (dvorak)" + +[keyboard-lv-ykeydvorak] +Description="Keyboard - Latvian - Latvian (Dvorak, with Y)" +Language=lv +Label="lv (ykeydvorak)" + +[keyboard-lv-minuskeydvorak] +Description="Keyboard - Latvian - Latvian (Dvorak, with minus)" +Language=lv +Label="lv (minuskeydvorak)" + +[keyboard-lv-dvorakprogr] +Description="Keyboard - Latvian - Latvian (programmer Dvorak)" +Language=lv +Label="lv (dvorakprogr)" + +[keyboard-lv-ykeydvorakprogr] +Description="Keyboard - Latvian - Latvian (programmer Dvorak, with Y)" +Language=lv +Label="lv (ykeydvorakprogr)" + +[keyboard-lv-minuskeydvorakprogr] +Description="Keyboard - Latvian - Latvian (programmer Dvorak, with minus)" +Language=lv +Label="lv (minuskeydvorakprogr)" + +[keyboard-lv-colemak] +Description="Keyboard - Latvian - Latvian (Colemak)" +Language=lv +Label="lv (colemak)" + +[keyboard-lv-apostrophecolemak] +Description="Keyboard - Latvian - Latvian (Colemak, with apostrophe)" +Language=lv +Label="lv (apostrophecolemak)" + +[keyboard-lv-sun_type6] +Description="Keyboard - Latvian - Latvian (Sun Type 6/7)" +Language=lv +Label="lv (sun_type6)" + +[keyboard-lv-apostrophe-deadquotes] +Description="Keyboard - Latvian - Latvian (apostrophe, dead quotes)" +Language=lv +Label="lv (apostrophe-deadquotes)" + +[keyboard-ba] +Description="Keyboard - Bosnian" +Language=bs +Label=bs + +[keyboard-ba-alternatequotes] +Description="Keyboard - Bosnian - Bosnian (with guillemets)" +Language=bs +Label="ba (alternatequotes)" + +[keyboard-ba-unicode] +Description="Keyboard - Bosnian - Bosnian (with Bosnian digraphs)" +Language=bs +Label="ba (unicode)" + +[keyboard-ba-unicodeus] +Description="Keyboard - Bosnian - Bosnian (US, with Bosnian digraphs)" +Language=bs +Label="ba (unicodeus)" + +[keyboard-ba-us] +Description="Keyboard - Bosnian - Bosnian (US)" +Language=bs +Label="ba (us)" + +[keyboard-tw] +Description="Keyboard - Taiwanese" +Language= +Label=zh + +[keyboard-tw-indigenous] +Description="Keyboard - Taiwanese - Taiwanese (indigenous)" +Language=tay +Label="tw (indigenous)" + +[keyboard-tw-saisiyat] +Description="Keyboard - Taiwanese - Saisiyat (Taiwan)" +Language=xsy +Label="xsy (saisiyat)" + +[keyboard-rs] +Description="Keyboard - Serbian" +Language=sr +Label=sr + +[keyboard-rs-alternatequotes] +Description="Keyboard - Serbian - Serbian (Cyrillic, with guillemets)" +Language=sr +Label="rs (alternatequotes)" + +[keyboard-rs-yz] +Description="Keyboard - Serbian - Serbian (Cyrillic, ZE and ZHE swapped)" +Language=sr +Label="rs (yz)" + +[keyboard-rs-latin] +Description="Keyboard - Serbian - Serbian (Latin)" +Language=sr +Label="rs (latin)" + +[keyboard-rs-latinalternatequotes] +Description="Keyboard - Serbian - Serbian (Latin, with guillemets)" +Language=sr +Label="rs (latinalternatequotes)" + +[keyboard-rs-latinunicode] +Description="Keyboard - Serbian - Serbian (Latin, Unicode)" +Language=sr +Label="rs (latinunicode)" + +[keyboard-rs-latinyz] +Description="Keyboard - Serbian - Serbian (Latin, QWERTY)" +Language=sr +Label="rs (latinyz)" + +[keyboard-rs-latinunicodeyz] +Description="Keyboard - Serbian - Serbian (Latin, Unicode, QWERTY)" +Language=sr +Label="rs (latinunicodeyz)" + +[keyboard-rs-rue] +Description="Keyboard - Serbian - Pannonian Rusyn" +Language=rue +Label="rs (rue)" + +[keyboard-rs-combiningkeys] +Description="Keyboard - Serbian - Serbian (combining accents instead of dead keys)" +Language=sr +Label="rs (combiningkeys)" + +[keyboard-dk] +Description="Keyboard - Danish" +Language=da +Label=da + +[keyboard-dk-nodeadkeys] +Description="Keyboard - Danish - Danish (no dead keys)" +Language=da +Label="dk (nodeadkeys)" + +[keyboard-dk-winkeys] +Description="Keyboard - Danish - Danish (Windows)" +Language=da +Label="dk (winkeys)" + +[keyboard-dk-mac] +Description="Keyboard - Danish - Danish (Macintosh)" +Language=da +Label="dk (mac)" + +[keyboard-dk-mac_nodeadkeys] +Description="Keyboard - Danish - Danish (Macintosh, no dead keys)" +Language=da +Label="dk (mac_nodeadkeys)" + +[keyboard-dk-dvorak] +Description="Keyboard - Danish - Danish (Dvorak)" +Language=da +Label="dk (dvorak)" + +[keyboard-dk-sun_type6] +Description="Keyboard - Danish - Danish (Sun Type 6/7)" +Language=da +Label="dk (sun_type6)" + +[keyboard-bw] +Description="Keyboard - Tswana" +Language=tn +Label=tn + +[keyboard-kr] +Description="Keyboard - Korean" +Language=ko +Label=ko + +[keyboard-kr-kr104] +Description="Keyboard - Korean - Korean (101/104-key compatible)" +Language=ko +Label="kr (kr104)" + +[keyboard-kr-sun_type6] +Description="Keyboard - Korean - Korean (Sun Type 6/7)" +Language=ko +Label="kr (sun_type6)" + +[keyboard-nl] +Description="Keyboard - Dutch" +Language=nl +Label=nl + +[keyboard-nl-us] +Description="Keyboard - Dutch - Dutch (US)" +Language=nl +Label="nl (us)" + +[keyboard-nl-mac] +Description="Keyboard - Dutch - Dutch (Macintosh)" +Language=nl +Label="nl (mac)" + +[keyboard-nl-std] +Description="Keyboard - Dutch - Dutch (standard)" +Language=nl +Label="nl (std)" + +[keyboard-nl-sun_type6] +Description="Keyboard - Dutch - Dutch (Sun Type 6/7)" +Language=nl +Label="nl (sun_type6)" + +[keyboard-et] +Description="Keyboard - Amharic" +Language=am +Label=am + +[keyboard-be] +Description="Keyboard - Belgian" +Language=de +Label=be + +[keyboard-be-oss] +Description="Keyboard - Belgian - Belgian (alt.)" +Language=de +Label="be (oss)" + +[keyboard-be-oss_latin9] +Description="Keyboard - Belgian - Belgian (Latin-9 only, alt.)" +Language=de +Label="be (oss_latin9)" + +[keyboard-be-iso-alternate] +Description="Keyboard - Belgian - Belgian (ISO, alt.)" +Language=de +Label="be (iso-alternate)" + +[keyboard-be-nodeadkeys] +Description="Keyboard - Belgian - Belgian (no dead keys)" +Language=de +Label="be (nodeadkeys)" + +[keyboard-be-wang] +Description="Keyboard - Belgian - Belgian (Wang 724 AZERTY)" +Language=de +Label="be (wang)" + +[keyboard-be-sun_type6] +Description="Keyboard - Belgian - Belgian (Sun Type 6/7)" +Language=de +Label="be (sun_type6)" + +[keyboard-la] +Description="Keyboard - Lao" +Language=lo +Label=lo + +[keyboard-la-stea] +Description="Keyboard - Lao - Lao (STEA)" +Language=lo +Label="la (stea)" + +[keyboard-bt] +Description="Keyboard - Dzongkha" +Language=dz +Label=dz + +[keyboard-mm] +Description="Keyboard - Burmese" +Language=my +Label=my + +[keyboard-mm-zawgyi] +Description="Keyboard - Burmese - Burmese (Zawgyi)" +Language=my +Label="my-zwg (zawgyi)" + +[keyboard-mm-mnw] +Description="Keyboard - Burmese - Mon" +Language=mnw +Label=mnw + +[keyboard-mm-mnw-a1] +Description="Keyboard - Burmese - Mon (A1)" +Language=mnw +Label="mnw (mnw-a1)" + +[keyboard-mm-shn] +Description="Keyboard - Burmese - Shan" +Language=shn +Label=shn + +[keyboard-mm-zgt] +Description="Keyboard - Burmese - Shan (Zawgyi)" +Language=shn +Label="shn-zwg (zgt)" + +[keyboard-si] +Description="Keyboard - Slovenian" +Language=sl +Label=sl + +[keyboard-si-alternatequotes] +Description="Keyboard - Slovenian - Slovenian (with guillemets)" +Language=sl +Label="si (alternatequotes)" + +[keyboard-si-us] +Description="Keyboard - Slovenian - Slovenian (US)" +Language=sl +Label="si (us)" + +[keyboard-am] +Description="Keyboard - Armenian" +Language=hy +Label=hy + +[keyboard-am-phonetic] +Description="Keyboard - Armenian - Armenian (phonetic)" +Language=hy +Label="am (phonetic)" + +[keyboard-am-phonetic-alt] +Description="Keyboard - Armenian - Armenian (alt. phonetic)" +Language=hy +Label="am (phonetic-alt)" + +[keyboard-am-eastern] +Description="Keyboard - Armenian - Armenian (eastern)" +Language=hy +Label="am (eastern)" + +[keyboard-am-eastern-alt] +Description="Keyboard - Armenian - Armenian (alt. eastern)" +Language=hy +Label="am (eastern-alt)" + +[keyboard-am-western] +Description="Keyboard - Armenian - Armenian (western)" +Language=hy +Label="am (western)" + +[keyboard-am-olpc-phonetic] +Description="Keyboard - Armenian - Armenian (OLPC, phonetic)" +Language=hy +Label="am (olpc-phonetic)" + +[keyboard-by] +Description="Keyboard - Belarusian" +Language=be +Label=by + +[keyboard-by-legacy] +Description="Keyboard - Belarusian - Belarusian (legacy)" +Language=be +Label="by (legacy)" + +[keyboard-by-latin] +Description="Keyboard - Belarusian - Belarusian (Latin)" +Language=be +Label="by (latin)" + +[keyboard-by-intl] +Description="Keyboard - Belarusian - Belarusian (intl.)" +Language=be +Label="by (intl)" + +[keyboard-by-phonetic] +Description="Keyboard - Belarusian - Belarusian (phonetic)" +Language=be +Label="by (phonetic)" + +[keyboard-by-ru] +Description="Keyboard - Belarusian - Russian (Belarus)" +Language=ru +Label="by (ru)" + +[keyboard-vn] +Description="Keyboard - Vietnamese" +Language=vi +Label=vi + +[keyboard-vn-us] +Description="Keyboard - Vietnamese - Vietnamese (US)" +Language=vi +Label="vn (us)" + +[keyboard-vn-fr] +Description="Keyboard - Vietnamese - Vietnamese (France)" +Language=vi +Label="vn (fr)" + +[keyboard-vn-aderty] +Description="Keyboard - Vietnamese - Vietnamese (AÐERTY)" +Language=vi +Label="vn (aderty)" + +[keyboard-vn-qderty] +Description="Keyboard - Vietnamese - Vietnamese (QĐERTY)" +Language=vi +Label="vn (qderty)" + +[keyboard-ml] +Description="Keyboard - Bambara" +Language=bm +Label=bm + +[keyboard-ml-fr-oss] +Description="Keyboard - Bambara - French (Mali, alt.)" +Language=fr +Label="fr (fr-oss)" + +[keyboard-ml-us-mac] +Description="Keyboard - Bambara - English (Mali, US, Macintosh)" +Language=en +Label="en (us-mac)" + +[keyboard-ml-us-intl] +Description="Keyboard - Bambara - English (Mali, US, intl.)" +Language=en +Label="en (us-intl)" + +[keyboard-ara] +Description="Keyboard - Arabic" +Language=ar +Label=ar + +[keyboard-ara-digits] +Description="Keyboard - Arabic - Arabic (Eastern Arabic numerals)" +Language=ar +Label="ara (digits)" + +[keyboard-ara-azerty] +Description="Keyboard - Arabic - Arabic (AZERTY)" +Language=ar +Label="ara (azerty)" + +[keyboard-ara-azerty_digits] +Description="Keyboard - Arabic - Arabic (AZERTY, Eastern Arabic numerals)" +Language=ar +Label="ara (azerty_digits)" + +[keyboard-ara-buckwalter] +Description="Keyboard - Arabic - Arabic (Buckwalter)" +Language=ar +Label="ara (buckwalter)" + +[keyboard-ara-mac] +Description="Keyboard - Arabic - Arabic (Macintosh)" +Language=ar +Label="ara (mac)" + +[keyboard-ara-mac-phonetic] +Description="Keyboard - Arabic - Arabic (Macintosh, phonetic)" +Language=ar +Label="ara (mac-phonetic)" + +[keyboard-ara-olpc] +Description="Keyboard - Arabic - Arabic (OLPC)" +Language=ar +Label="ara (olpc)" + +[keyboard-ara-sun_type6] +Description="Keyboard - Arabic - Arabic (Sun Type 6/7)" +Language=ar +Label="ara (sun_type6)" + +[keyboard-ara-basic_ext] +Description="Keyboard - Arabic - Arabic (Arabic numerals, extensions in the 4th level)" +Language=ar +Label="ara (basic_ext)" + +[keyboard-ara-basic_ext_digits] +Description="Keyboard - Arabic - Arabic (Eastern Arabic numerals, extensions in the 4th level)" +Language=ar +Label="ara (basic_ext_digits)" + +[keyboard-ara-ergoarabic] +Description="Keyboard - Arabic - Arabic (ErgoArabic)" +Language=ar +Label="ara (ergoarabic)" + +[keyboard-ie] +Description="Keyboard - Irish" +Language=en +Label=ie + +[keyboard-ie-UnicodeExpert] +Description="Keyboard - Irish - Irish (UnicodeExpert)" +Language=en +Label="ie (UnicodeExpert)" + +[keyboard-ie-CloGaelach] +Description="Keyboard - Irish - CloGaelach" +Language=ga +Label="ie (CloGaelach)" + +[keyboard-ie-ogam] +Description="Keyboard - Irish - Ogham" +Language=sga +Label="ie (ogam)" + +[keyboard-ie-ogam_is434] +Description="Keyboard - Irish - Ogham (IS434)" +Language=sga +Label="ie (ogam_is434)" + +[keyboard-cm] +Description="Keyboard - English (Cameroon)" +Language=en +Label=cm + +[keyboard-cm-french] +Description="Keyboard - English (Cameroon) - French (Cameroon)" +Language=fr +Label="fr (french)" + +[keyboard-cm-qwerty] +Description="Keyboard - English (Cameroon) - Cameroon Multilingual (QWERTY, intl.)" +Language=en +Label="cm (qwerty)" + +[keyboard-cm-azerty] +Description="Keyboard - English (Cameroon) - Cameroon (AZERTY, intl.)" +Language=fr +Label="cm (azerty)" + +[keyboard-cm-dvorak] +Description="Keyboard - English (Cameroon) - Cameroon (Dvorak, intl.)" +Language=en +Label="cm (dvorak)" + +[keyboard-cm-mmuock] +Description="Keyboard - English (Cameroon) - Mmuock" +Language=en +Label="cm (mmuock)" + +[keyboard-iq] +Description="Keyboard - Arabic (Iraq)" +Language=ar +Label=ar + +[keyboard-iq-ku] +Description="Keyboard - Arabic (Iraq) - Kurdish (Iraq, Latin Q)" +Language=ku +Label=ku + +[keyboard-iq-ku_alt] +Description="Keyboard - Arabic (Iraq) - Kurdish (Iraq, Latin Alt-Q)" +Language=ku +Label="ku (ku_alt)" + +[keyboard-iq-ku_f] +Description="Keyboard - Arabic (Iraq) - Kurdish (Iraq, F)" +Language=ku +Label="ku (ku_f)" + +[keyboard-iq-ku_ara] +Description="Keyboard - Arabic (Iraq) - Kurdish (Iraq, Arabic-Latin)" +Language=ku +Label="ku (ku_ara)" + +[keyboard-af] +Description="Keyboard - Dari" +Language=prs +Label=fa + +[keyboard-af-ps] +Description="Keyboard - Dari - Pashto" +Language=ps +Label=ps + +[keyboard-af-uz] +Description="Keyboard - Dari - Uzbek (Afghanistan)" +Language=uz +Label=uz + +[keyboard-af-fa-olpc] +Description="Keyboard - Dari - Dari (Afghanistan, OLPC)" +Language=prs +Label="fa (fa-olpc)" + +[keyboard-af-ps-olpc] +Description="Keyboard - Dari - Pashto (Afghanistan, OLPC)" +Language=ps +Label="ps (ps-olpc)" + +[keyboard-af-uz-olpc] +Description="Keyboard - Dari - Uzbek (Afghanistan, OLPC)" +Language=uz +Label="uz (uz-olpc)" + +[keyboard-hr] +Description="Keyboard - Croatian" +Language=hr +Label=hr + +[keyboard-hr-alternatequotes] +Description="Keyboard - Croatian - Croatian (with guillemets)" +Language=hr +Label="hr (alternatequotes)" + +[keyboard-hr-unicode] +Description="Keyboard - Croatian - Croatian (with Croatian digraphs)" +Language=hr +Label="hr (unicode)" + +[keyboard-hr-unicodeus] +Description="Keyboard - Croatian - Croatian (US, with Croatian digraphs)" +Language=hr +Label="hr (unicodeus)" + +[keyboard-hr-us] +Description="Keyboard - Croatian - Croatian (US)" +Language=hr +Label="hr (us)" + +[keyboard-ma] +Description="Keyboard - Arabic (Morocco)" +Language=ary +Label=ar + +[keyboard-ma-tifinagh] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh)" +Language= +Label="ber (tifinagh)" + +[keyboard-ma-tifinagh-alt] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh alt.)" +Language= +Label="ber (tifinagh-alt)" + +[keyboard-ma-tifinagh-alt-phonetic] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh phonetic, alt.)" +Language= +Label="ber (tifinagh-alt-phonetic)" + +[keyboard-ma-tifinagh-extended] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh extended)" +Language= +Label="ber (tifinagh-extended)" + +[keyboard-ma-tifinagh-phonetic] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh phonetic)" +Language= +Label="ber (tifinagh-phonetic)" + +[keyboard-ma-tifinagh-extended-phonetic] +Description="Keyboard - Arabic (Morocco) - Berber (Morocco, Tifinagh extended phonetic)" +Language= +Label="ber (tifinagh-extended-phonetic)" + +[keyboard-ma-french] +Description="Keyboard - Arabic (Morocco) - French (Morocco)" +Language=fr +Label="fr (french)" + +[keyboard-ma-rif] +Description="Keyboard - Arabic (Morocco) - Tarifit" +Language=rif +Label=rif + +[keyboard-sy] +Description="Keyboard - Arabic (Syria)" +Language=syr +Label=ar + +[keyboard-sy-syc] +Description="Keyboard - Arabic (Syria) - Syriac" +Language=syr +Label=syc + +[keyboard-sy-syc_phonetic] +Description="Keyboard - Arabic (Syria) - Syriac (phonetic)" +Language=syr +Label="syc (syc_phonetic)" + +[keyboard-sy-ku] +Description="Keyboard - Arabic (Syria) - Kurdish (Syria, Latin Q)" +Language=ku +Label=ku + +[keyboard-sy-ku_alt] +Description="Keyboard - Arabic (Syria) - Kurdish (Syria, Latin Alt-Q)" +Language=ku +Label="ku (ku_alt)" + +[keyboard-sy-ku_f] +Description="Keyboard - Arabic (Syria) - Kurdish (Syria, F)" +Language=ku +Label="ku (ku_f)" + +[keyboard-at] +Description="Keyboard - German (Austria)" +Language=de +Label=de + +[keyboard-at-nodeadkeys] +Description="Keyboard - German (Austria) - German (Austria, no dead keys)" +Language=de +Label="at (nodeadkeys)" + +[keyboard-at-mac] +Description="Keyboard - German (Austria) - German (Austria, Macintosh)" +Language=de +Label="at (mac)" + +[keyboard-nz] +Description="Keyboard - English (New Zealand)" +Language=en +Label=en + +[keyboard-nz-mao] +Description="Keyboard - English (New Zealand) - Maori" +Language=mi +Label="mi (mao)" + +[keyboard-epo] +Description="Keyboard - Esperanto" +Language=eo +Label=eo + +[keyboard-epo-legacy] +Description="Keyboard - Esperanto - Esperanto (legacy)" +Language=eo +Label="epo (legacy)" + +[keyboard-eu] +Description="Keyboard - EurKEY (US)" +Language=ca +Label=eu + +[keyboard-za] +Description="Keyboard - English (South Africa)" +Language=en +Label=en + +[keyboard-fo] +Description="Keyboard - Faroese" +Language=fo +Label=fo + +[keyboard-fo-nodeadkeys] +Description="Keyboard - Faroese - Faroese (no dead keys)" +Language=fo +Label="fo (nodeadkeys)" + +[keyboard-gb] +Description="Keyboard - English (UK)" +Language=en +Label=en + +[keyboard-gb-extd] +Description="Keyboard - English (UK) - English (UK, extended, Windows)" +Language=en +Label="gb (extd)" + +[keyboard-gb-intl] +Description="Keyboard - English (UK) - English (UK, intl., with dead keys)" +Language=en +Label="gb (intl)" + +[keyboard-gb-dvorak] +Description="Keyboard - English (UK) - English (UK, Dvorak)" +Language=en +Label="gb (dvorak)" + +[keyboard-gb-dvorakukp] +Description="Keyboard - English (UK) - English (UK, Dvorak, with UK punctuation)" +Language=en +Label="gb (dvorakukp)" + +[keyboard-gb-mac] +Description="Keyboard - English (UK) - English (UK, Macintosh)" +Language=en +Label="gb (mac)" + +[keyboard-gb-mac_intl] +Description="Keyboard - English (UK) - English (UK, Macintosh, intl.)" +Language=en +Label="gb (mac_intl)" + +[keyboard-gb-colemak] +Description="Keyboard - English (UK) - English (UK, Colemak)" +Language=en +Label="gb (colemak)" + +[keyboard-gb-colemak_dh] +Description="Keyboard - English (UK) - English (UK, Colemak-DH)" +Language=en +Label="gb (colemak_dh)" + +[keyboard-gb-gla] +Description="Keyboard - English (UK) - Scottish Gaelic" +Language=en +Label="gd (gla)" + +[keyboard-gb-pl] +Description="Keyboard - English (UK) - Polish (British keyboard)" +Language=pl +Label=pl + +[keyboard-gb-sun_type6] +Description="Keyboard - English (UK) - English (UK, Sun Type 6/7)" +Language=en +Label="gb (sun_type6)" + +[keyboard-ke] +Description="Keyboard - Swahili (Kenya)" +Language=sw +Label=sw + +[keyboard-ke-kik] +Description="Keyboard - Swahili (Kenya) - Kikuyu" +Language=ki +Label="ki (kik)" + +[keyboard-md] +Description="Keyboard - Moldavian" +Language=ro +Label=ro + +[keyboard-md-gag] +Description="Keyboard - Moldavian - Gagauz (Moldova)" +Language=gag +Label=gag + +[keyboard-us] +Description="Keyboard - English (US)" +Language=en +Label=en + +[keyboard-us-euro] +Description="Keyboard - English (US) - English (US, euro on 5)" +Language=en +Label="us (euro)" + +[keyboard-us-intl] +Description="Keyboard - English (US) - English (US, intl., with dead keys)" +Language=en +Label="us (intl)" + +[keyboard-us-alt-intl] +Description="Keyboard - English (US) - English (US, alt. intl.)" +Language=en +Label="us (alt-intl)" + +[keyboard-us-altgr-intl] +Description="Keyboard - English (US) - English (intl., with AltGr dead keys)" +Language=en +Label="us (altgr-intl)" + +[keyboard-us-mac] +Description="Keyboard - English (US) - English (Macintosh)" +Language=en +Label="us (mac)" + +[keyboard-us-colemak] +Description="Keyboard - English (US) - English (Colemak)" +Language=en +Label="us (colemak)" + +[keyboard-us-colemak_dh] +Description="Keyboard - English (US) - English (Colemak-DH)" +Language=en +Label="us (colemak_dh)" + +[keyboard-us-colemak_dh_wide] +Description="Keyboard - English (US) - English (Colemak-DH Wide)" +Language=en +Label="us (colemak_dh_wide)" + +[keyboard-us-colemak_dh_ortho] +Description="Keyboard - English (US) - English (Colemak-DH Ortholinear)" +Language=en +Label="us (colemak_dh_ortho)" + +[keyboard-us-colemak_dh_iso] +Description="Keyboard - English (US) - English (Colemak-DH ISO)" +Language=en +Label="us (colemak_dh_iso)" + +[keyboard-us-colemak_dh_wide_iso] +Description="Keyboard - English (US) - English (Colemak-DH Wide ISO)" +Language=en +Label="us (colemak_dh_wide_iso)" + +[keyboard-us-dvorak] +Description="Keyboard - English (US) - English (Dvorak)" +Language=en +Label="us (dvorak)" + +[keyboard-us-dvorak-intl] +Description="Keyboard - English (US) - English (Dvorak, intl., with dead keys)" +Language=en +Label="us (dvorak-intl)" + +[keyboard-us-dvorak-alt-intl] +Description="Keyboard - English (US) - English (Dvorak, alt. intl.)" +Language=en +Label="us (dvorak-alt-intl)" + +[keyboard-us-dvorak-l] +Description="Keyboard - English (US) - English (Dvorak, left-handed)" +Language=en +Label="us (dvorak-l)" + +[keyboard-us-dvorak-r] +Description="Keyboard - English (US) - English (Dvorak, right-handed)" +Language=en +Label="us (dvorak-r)" + +[keyboard-us-dvorak-classic] +Description="Keyboard - English (US) - English (classic Dvorak)" +Language=en +Label="us (dvorak-classic)" + +[keyboard-us-dvp] +Description="Keyboard - English (US) - English (programmer Dvorak)" +Language=en +Label="us (dvp)" + +[keyboard-us-dvorak-mac] +Description="Keyboard - English (US) - English (Dvorak, Macintosh)" +Language=en +Label="us (dvorak-mac)" + +[keyboard-us-norman] +Description="Keyboard - English (US) - English (Norman)" +Language=en +Label="us (norman)" + +[keyboard-us-symbolic] +Description="Keyboard - English (US) - English (US, Symbolic)" +Language=en +Label="us (symbolic)" + +[keyboard-us-workman] +Description="Keyboard - English (US) - English (Workman)" +Language=en +Label="us (workman)" + +[keyboard-us-workman-intl] +Description="Keyboard - English (US) - English (Workman, intl., with dead keys)" +Language=en +Label="us (workman-intl)" + +[keyboard-us-olpc2] +Description="Keyboard - English (US) - English (the divide/multiply toggle the layout)" +Language=en +Label="us (olpc2)" + +[keyboard-us-chr] +Description="Keyboard - English (US) - Cherokee" +Language=chr +Label=chr + +[keyboard-us-haw] +Description="Keyboard - English (US) - Hawaiian" +Language=haw +Label=haw + +[keyboard-us-rus] +Description="Keyboard - English (US) - Russian (US, phonetic)" +Language=ru +Label="ru (rus)" + +[keyboard-us-hbs] +Description="Keyboard - English (US) - Serbo-Croatian (US)" +Language=en +Label="us (hbs)" + +[keyboard-us-intl-unicode] +Description="Keyboard - English (US) - English (US, intl., AltGr Unicode combining)" +Language=en +Label="us (intl-unicode)" + +[keyboard-us-alt-intl-unicode] +Description="Keyboard - English (US) - English (US, intl., AltGr Unicode combining, alt.)" +Language=en +Label="us (alt-intl-unicode)" + +[keyboard-us-ats] +Description="Keyboard - English (US) - Atsina" +Language=en +Label="us (ats)" + +[keyboard-us-crd] +Description="Keyboard - English (US) - Coeur d'Alene Salish" +Language=crd +Label="us (crd)" + +[keyboard-us-cz_sk_de] +Description="Keyboard - English (US) - Czech, Slovak and German (US)" +Language=en +Label="us (cz_sk_de)" + +[keyboard-us-cz_sk_pl_de_es_fi_sv] +Description="Keyboard - English (US) - Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US)" +Language=en +Label="us (cz_sk_pl_de_es_fi_sv)" + +[keyboard-us-drix] +Description="Keyboard - English (US) - English (Drix)" +Language=en +Label="us (drix)" + +[keyboard-us-de_se_fi] +Description="Keyboard - English (US) - German, Swedish and Finnish (US)" +Language=en +Label="us (de_se_fi)" + +[keyboard-us-ibm238l] +Description="Keyboard - English (US) - English (US, IBM Arabic 238_L)" +Language=en +Label="us (ibm238l)" + +[keyboard-us-sun_type6] +Description="Keyboard - English (US) - English (US, Sun Type 6/7)" +Language=en +Label="us (sun_type6)" + +[keyboard-us-carpalx] +Description="Keyboard - English (US) - English (Carpalx)" +Language=en +Label="us (carpalx)" + +[keyboard-us-carpalx-intl] +Description="Keyboard - English (US) - English (Carpalx, intl., with dead keys)" +Language=en +Label="us (carpalx-intl)" + +[keyboard-us-carpalx-altgr-intl] +Description="Keyboard - English (US) - English (Carpalx, intl., with AltGr dead keys)" +Language=en +Label="us (carpalx-altgr-intl)" + +[keyboard-us-carpalx-full] +Description="Keyboard - English (US) - English (Carpalx, full optimization)" +Language=en +Label="us (carpalx-full)" + +[keyboard-us-carpalx-full-intl] +Description="Keyboard - English (US) - English (Carpalx, full optimization, intl., with dead keys)" +Language=en +Label="us (carpalx-full-intl)" + +[keyboard-us-carpalx-full-altgr-intl] +Description="Keyboard - English (US) - English (Carpalx, full optimization, intl., with AltGr dead keys)" +Language=en +Label="us (carpalx-full-altgr-intl)" + +[keyboard-us-3l] +Description="Keyboard - English (US) - English (3l)" +Language=en +Label="us (3l)" + +[keyboard-us-3l-cros] +Description="Keyboard - English (US) - English (3l, Chromebook)" +Language=en +Label="us (3l-cros)" + +[keyboard-us-3l-emacs] +Description="Keyboard - English (US) - English (3l, emacs)" +Language=en +Label="us (3l-emacs)" + +[keyboard-us-workman-p] +Description="Keyboard - English (US) - English (Workman-P)" +Language=en +Label=workman-p + +[keyboard-us-scn] +Description="Keyboard - English (US) - Sicilian (US keyboard)" +Language=en +Label="us (scn)" + +[keyboard-us-altgr-weur] +Description="Keyboard - English (US) - English (Western European AltGr dead keys)" +Language=en +Label="us (altgr-weur)" + +[keyboard-ge] +Description="Keyboard - Georgian" +Language=ka +Label=ka + +[keyboard-ge-ergonomic] +Description="Keyboard - Georgian - Georgian (ergonomic)" +Language=ka +Label="ge (ergonomic)" + +[keyboard-ge-mess] +Description="Keyboard - Georgian - Georgian (MESS)" +Language=ka +Label="ge (mess)" + +[keyboard-ge-os] +Description="Keyboard - Georgian - Ossetian (Georgia)" +Language=os +Label="ge (os)" + +[keyboard-ge-ru] +Description="Keyboard - Georgian - Russian (Georgia)" +Language=ru +Label=ru + +[keyboard-es] +Description="Keyboard - Spanish" +Language=es +Label=es + +[keyboard-es-nodeadkeys] +Description="Keyboard - Spanish - Spanish (no dead keys)" +Language=es +Label="es (nodeadkeys)" + +[keyboard-es-deadtilde] +Description="Keyboard - Spanish - Spanish (dead tilde)" +Language=es +Label="es (deadtilde)" + +[keyboard-es-winkeys] +Description="Keyboard - Spanish - Spanish (Windows)" +Language=es +Label="es (winkeys)" + +[keyboard-es-dvorak] +Description="Keyboard - Spanish - Spanish (Dvorak)" +Language=es +Label="es (dvorak)" + +[keyboard-es-ast] +Description="Keyboard - Spanish - Asturian (Spain, with bottom-dot H and L)" +Language=ast +Label=ast + +[keyboard-es-cat] +Description="Keyboard - Spanish - Catalan (Spain, with middle-dot L)" +Language=ca +Label="ca (cat)" + +[keyboard-es-sun_type6] +Description="Keyboard - Spanish - Spanish (Sun Type 6/7)" +Language=es +Label="es (sun_type6)" + +[keyboard-ee] +Description="Keyboard - Estonian" +Language=et +Label=et + +[keyboard-ee-nodeadkeys] +Description="Keyboard - Estonian - Estonian (no dead keys)" +Language=et +Label="ee (nodeadkeys)" + +[keyboard-ee-dvorak] +Description="Keyboard - Estonian - Estonian (Dvorak)" +Language=et +Label="ee (dvorak)" + +[keyboard-ee-us] +Description="Keyboard - Estonian - Estonian (US)" +Language=et +Label="ee (us)" + +[keyboard-ee-sun_type6] +Description="Keyboard - Estonian - Estonian (Sun Type 6/7)" +Language=et +Label="ee (sun_type6)" + +[keyboard-bd] +Description="Keyboard - Bangla" +Language=bn +Label=bn + +[keyboard-bd-probhat] +Description="Keyboard - Bangla - Bangla (Probhat)" +Language=bn +Label="bd (probhat)" + +[keyboard-ph] +Description="Keyboard - Filipino" +Language=fil +Label=ph + +[keyboard-ph-qwerty-bay] +Description="Keyboard - Filipino - Filipino (QWERTY, Baybayin)" +Language=fil +Label="ph (qwerty-bay)" + +[keyboard-ph-capewell-dvorak] +Description="Keyboard - Filipino - Filipino (Capewell-Dvorak, Latin)" +Language=fil +Label="ph (capewell-dvorak)" + +[keyboard-ph-capewell-dvorak-bay] +Description="Keyboard - Filipino - Filipino (Capewell-Dvorak, Baybayin)" +Language=fil +Label="ph (capewell-dvorak-bay)" + +[keyboard-ph-capewell-qwerf2k6] +Description="Keyboard - Filipino - Filipino (Capewell-QWERF 2006, Latin)" +Language=fil +Label="ph (capewell-qwerf2k6)" + +[keyboard-ph-capewell-qwerf2k6-bay] +Description="Keyboard - Filipino - Filipino (Capewell-QWERF 2006, Baybayin)" +Language=fil +Label="ph (capewell-qwerf2k6-bay)" + +[keyboard-ph-colemak] +Description="Keyboard - Filipino - Filipino (Colemak, Latin)" +Language=fil +Label="ph (colemak)" + +[keyboard-ph-colemak-bay] +Description="Keyboard - Filipino - Filipino (Colemak, Baybayin)" +Language=fil +Label="ph (colemak-bay)" + +[keyboard-ph-dvorak] +Description="Keyboard - Filipino - Filipino (Dvorak, Latin)" +Language=fil +Label="ph (dvorak)" + +[keyboard-ph-dvorak-bay] +Description="Keyboard - Filipino - Filipino (Dvorak, Baybayin)" +Language=fil +Label="ph (dvorak-bay)" + +[keyboard-uz] +Description="Keyboard - Uzbek" +Language=uz +Label=uz + +[keyboard-uz-latin] +Description="Keyboard - Uzbek - Uzbek (Latin)" +Language=uz +Label="uz (latin)" + +[keyboard-lt] +Description="Keyboard - Lithuanian" +Language=lt +Label=lt + +[keyboard-lt-std] +Description="Keyboard - Lithuanian - Lithuanian (standard)" +Language=lt +Label="lt (std)" + +[keyboard-lt-us] +Description="Keyboard - Lithuanian - Lithuanian (US)" +Language=lt +Label="lt (us)" + +[keyboard-lt-ibm] +Description="Keyboard - Lithuanian - Lithuanian (IBM)" +Language=lt +Label="lt (ibm)" + +[keyboard-lt-lekp] +Description="Keyboard - Lithuanian - Lithuanian (LEKP)" +Language=lt +Label="lt (lekp)" + +[keyboard-lt-lekpa] +Description="Keyboard - Lithuanian - Lithuanian (LEKPa)" +Language=lt +Label="lt (lekpa)" + +[keyboard-lt-ratise] +Description="Keyboard - Lithuanian - Lithuanian (Ratise)" +Language=lt +Label="lt (ratise)" + +[keyboard-lt-sgs] +Description="Keyboard - Lithuanian - Samogitian" +Language=sgs +Label="lt (sgs)" + +[keyboard-lt-us_dvorak] +Description="Keyboard - Lithuanian - Lithuanian (Dvorak)" +Language=lt +Label="lt (us_dvorak)" + +[keyboard-lt-sun_type6] +Description="Keyboard - Lithuanian - Lithuanian (Sun Type 6/7)" +Language=lt +Label="lt (sun_type6)" + +[keyboard-fi] +Description="Keyboard - Finnish" +Language=fi +Label=fi + +[keyboard-fi-winkeys] +Description="Keyboard - Finnish - Finnish (Windows)" +Language=fi +Label="fi (winkeys)" + +[keyboard-fi-classic] +Description="Keyboard - Finnish - Finnish (classic)" +Language=fi +Label="fi (classic)" + +[keyboard-fi-nodeadkeys] +Description="Keyboard - Finnish - Finnish (classic, no dead keys)" +Language=fi +Label="fi (nodeadkeys)" + +[keyboard-fi-mac] +Description="Keyboard - Finnish - Finnish (Macintosh)" +Language=fi +Label="fi (mac)" + +[keyboard-fi-smi] +Description="Keyboard - Finnish - Northern Saami (Finland)" +Language=se +Label="fi (smi)" + +[keyboard-fi-sun_type6] +Description="Keyboard - Finnish - Finnish (Sun Type 6/7)" +Language=fi +Label="fi (sun_type6)" + +[keyboard-fi-das] +Description="Keyboard - Finnish - Finnish (DAS)" +Language=fi +Label="fi (das)" + +[keyboard-fi-fidvorak] +Description="Keyboard - Finnish - Finnish (Dvorak)" +Language=fi +Label="fi (fidvorak)" + +[keyboard-cn] +Description="Keyboard - Chinese" +Language=zh +Label=zh + +[keyboard-cn-altgr-pinyin] +Description="Keyboard - Chinese - Hanyu Pinyin Letters (with AltGr dead keys)" +Language=zh +Label="cn (altgr-pinyin)" + +[keyboard-cn-mon_trad] +Description="Keyboard - Chinese - Mongolian (Bichig)" +Language=mvf +Label="cn (mon_trad)" + +[keyboard-cn-mon_trad_todo] +Description="Keyboard - Chinese - Mongolian (Todo)" +Language=mvf +Label="cn (mon_trad_todo)" + +[keyboard-cn-mon_trad_xibe] +Description="Keyboard - Chinese - Mongolian (Xibe)" +Language=sjo +Label="cn (mon_trad_xibe)" + +[keyboard-cn-mon_trad_manchu] +Description="Keyboard - Chinese - Mongolian (Manchu)" +Language=mnc +Label="cn (mon_trad_manchu)" + +[keyboard-cn-mon_trad_galik] +Description="Keyboard - Chinese - Mongolian (Galik)" +Language=mvf +Label="cn (mon_trad_galik)" + +[keyboard-cn-mon_todo_galik] +Description="Keyboard - Chinese - Mongolian (Todo Galik)" +Language=mvf +Label="cn (mon_todo_galik)" + +[keyboard-cn-mon_manchu_galik] +Description="Keyboard - Chinese - Mongolian (Manchu Galik)" +Language=mnc +Label="cn (mon_manchu_galik)" + +[keyboard-cn-tib] +Description="Keyboard - Chinese - Tibetan" +Language=bo +Label="cn (tib)" + +[keyboard-cn-tib_asciinum] +Description="Keyboard - Chinese - Tibetan (with ASCII numerals)" +Language=bo +Label="cn (tib_asciinum)" + +[keyboard-cn-ug] +Description="Keyboard - Chinese - Uyghur" +Language=ug +Label=ug + +[keyboard-ca] +Description="Keyboard - French (Canada)" +Language=fr +Label=fr + +[keyboard-ca-fr-dvorak] +Description="Keyboard - French (Canada) - French (Canada, Dvorak)" +Language=fr +Label="fr (fr-dvorak)" + +[keyboard-ca-fr-legacy] +Description="Keyboard - French (Canada) - French (Canada, legacy)" +Language=fr +Label="fr (fr-legacy)" + +[keyboard-ca-multix] +Description="Keyboard - French (Canada) - Canadian (CSA)" +Language=fr +Label="ca (multix)" + +[keyboard-ca-eng] +Description="Keyboard - French (Canada) - English (Canada)" +Language=en +Label="en (eng)" + +[keyboard-ca-ike] +Description="Keyboard - French (Canada) - Inuktitut" +Language=iu +Label=ike + +[keyboard-ca-kut] +Description="Keyboard - French (Canada) - Kutenai" +Language=fr +Label=kut + +[keyboard-ca-shs] +Description="Keyboard - French (Canada) - Secwepemctsin" +Language=fr +Label=shs + +[keyboard-ca-sun_type6] +Description="Keyboard - French (Canada) - Multilingual (Canada, Sun Type 6/7)" +Language=fr +Label="ca (sun_type6)" + +[keyboard-gh] +Description="Keyboard - English (Ghana)" +Language=en +Label=en + +[keyboard-gh-generic] +Description="Keyboard - English (Ghana) - English (Ghana, multilingual)" +Language=en +Label="gh (generic)" + +[keyboard-gh-gillbt] +Description="Keyboard - English (Ghana) - English (Ghana, GILLBT)" +Language=en +Label="gh (gillbt)" + +[keyboard-gh-akan] +Description="Keyboard - English (Ghana) - Akan" +Language=ak +Label="ak (akan)" + +[keyboard-gh-avn] +Description="Keyboard - English (Ghana) - Avatime" +Language=avn +Label=avn + +[keyboard-gh-ewe] +Description="Keyboard - English (Ghana) - Ewe" +Language=ee +Label="ee (ewe)" + +[keyboard-gh-fula] +Description="Keyboard - English (Ghana) - Fula" +Language=ff +Label="ff (fula)" + +[keyboard-gh-ga] +Description="Keyboard - English (Ghana) - Ga" +Language=gaa +Label="gaa (ga)" + +[keyboard-gh-hausa] +Description="Keyboard - English (Ghana) - Hausa (Ghana)" +Language=ha +Label="ha (hausa)" + +[keyboard-fr] +Description="Keyboard - French" +Language=fr +Label=fr + +[keyboard-fr-nodeadkeys] +Description="Keyboard - French - French (no dead keys)" +Language=fr +Label="fr (nodeadkeys)" + +[keyboard-fr-oss] +Description="Keyboard - French - French (alt.)" +Language=fr +Label="fr (oss)" + +[keyboard-fr-oss_nodeadkeys] +Description="Keyboard - French - French (alt., no dead keys)" +Language=fr +Label="fr (oss_nodeadkeys)" + +[keyboard-fr-oss_latin9] +Description="Keyboard - French - French (alt., Latin-9 only)" +Language=fr +Label="fr (oss_latin9)" + +[keyboard-fr-latin9] +Description="Keyboard - French - French (legacy, alt.)" +Language=fr +Label="fr (latin9)" + +[keyboard-fr-latin9_nodeadkeys] +Description="Keyboard - French - French (legacy, alt., no dead keys)" +Language=fr +Label="fr (latin9_nodeadkeys)" + +[keyboard-fr-azerty] +Description="Keyboard - French - French (AZERTY)" +Language=fr +Label="fr (azerty)" + +[keyboard-fr-afnor] +Description="Keyboard - French - French (AZERTY, AFNOR)" +Language=fr +Label="fr (afnor)" + +[keyboard-fr-bepo] +Description="Keyboard - French - French (BEPO)" +Language=fr +Label="fr (bepo)" + +[keyboard-fr-bepo_latin9] +Description="Keyboard - French - French (BEPO, Latin-9 only)" +Language=fr +Label="fr (bepo_latin9)" + +[keyboard-fr-bepo_afnor] +Description="Keyboard - French - French (BEPO, AFNOR)" +Language=fr +Label="fr (bepo_afnor)" + +[keyboard-fr-dvorak] +Description="Keyboard - French - French (Dvorak)" +Language=fr +Label="fr (dvorak)" + +[keyboard-fr-ergol] +Description="Keyboard - French - French (Ergo‑L)" +Language=fr +Label="fr (ergol)" + +[keyboard-fr-ergol_iso] +Description="Keyboard - French - French (Ergo‑L, ISO variant)" +Language=fr +Label="fr (ergol_iso)" + +[keyboard-fr-mac] +Description="Keyboard - French - French (Macintosh)" +Language=fr +Label="fr (mac)" + +[keyboard-fr-us] +Description="Keyboard - French - French (US)" +Language=fr +Label="fr (us)" + +[keyboard-fr-bre] +Description="Keyboard - French - Breton (France)" +Language=br +Label="fr (bre)" + +[keyboard-fr-oci] +Description="Keyboard - French - Occitan" +Language=oc +Label="fr (oci)" + +[keyboard-fr-geo] +Description="Keyboard - French - Georgian (France, AZERTY Tskapo)" +Language=ka +Label="fr (geo)" + +[keyboard-fr-sun_type6] +Description="Keyboard - French - French (Sun Type 6/7)" +Language=fr +Label="fr (sun_type6)" + +[keyboard-fr-us-alt] +Description="Keyboard - French - French (US with dead keys, alt.)" +Language=fr +Label="fr (us-alt)" + +[keyboard-fr-us-azerty] +Description="Keyboard - French - French (US, AZERTY)" +Language=fr +Label="fr (us-azerty)" + +[keyboard-eg] +Description="Keyboard - Arabic (Egypt)" +Language=ar +Label=ar + +[keyboard-eg-cop] +Description="Keyboard - Arabic (Egypt) - Coptic" +Language=cop +Label=cop + +[keyboard-cd] +Description="Keyboard - French (Democratic Republic of the Congo)" +Language=fr +Label=fr + +[keyboard-tg] +Description="Keyboard - French (Togo)" +Language=fr +Label=fr + +[keyboard-kz] +Description="Keyboard - Kazakh" +Language=kk +Label=kk + +[keyboard-kz-kazrus] +Description="Keyboard - Kazakh - Kazakh (with Russian)" +Language=kk +Label="kz (kazrus)" + +[keyboard-kz-ext] +Description="Keyboard - Kazakh - Kazakh (extended)" +Language=kk +Label="kz (ext)" + +[keyboard-kz-latin] +Description="Keyboard - Kazakh - Kazakh (Latin)" +Language=kk +Label="kz (latin)" + +[keyboard-kz-ruskaz] +Description="Keyboard - Kazakh - Russian (Kazakhstan, with Kazakh)" +Language=ru +Label="ru (ruskaz)" + +[keyboard-ch] +Description="Keyboard - German (Switzerland)" +Language=de +Label=de + +[keyboard-ch-de_nodeadkeys] +Description="Keyboard - German (Switzerland) - German (Switzerland, no dead keys)" +Language=de +Label="de (de_nodeadkeys)" + +[keyboard-ch-de_mac] +Description="Keyboard - German (Switzerland) - German (Switzerland, Macintosh)" +Language=de +Label="de (de_mac)" + +[keyboard-ch-legacy] +Description="Keyboard - German (Switzerland) - German (Switzerland, legacy)" +Language=de +Label="ch (legacy)" + +[keyboard-ch-fr] +Description="Keyboard - German (Switzerland) - French (Switzerland)" +Language=fr +Label=fr + +[keyboard-ch-fr_nodeadkeys] +Description="Keyboard - German (Switzerland) - French (Switzerland, no dead keys)" +Language=fr +Label="fr (fr_nodeadkeys)" + +[keyboard-ch-fr_mac] +Description="Keyboard - German (Switzerland) - French (Switzerland, Macintosh)" +Language=fr +Label="fr (fr_mac)" + +[keyboard-ch-sun_type6_de] +Description="Keyboard - German (Switzerland) - German (Switzerland, Sun Type 6/7)" +Language=de +Label="ch (sun_type6_de)" + +[keyboard-ch-sun_type6_fr] +Description="Keyboard - German (Switzerland) - French (Switzerland, Sun Type 6/7)" +Language=de +Label="ch (sun_type6_fr)" + +[keyboard-gr] +Description="Keyboard - Greek" +Language=el +Label=gr + +[keyboard-gr-simple] +Description="Keyboard - Greek - Greek (simple)" +Language=el +Label="gr (simple)" + +[keyboard-gr-nodeadkeys] +Description="Keyboard - Greek - Greek (no dead keys)" +Language=el +Label="gr (nodeadkeys)" + +[keyboard-gr-polytonic] +Description="Keyboard - Greek - Greek (polytonic)" +Language=el +Label="gr (polytonic)" + +[keyboard-gr-sun_type6] +Description="Keyboard - Greek - Greek (Sun Type 6/7)" +Language=el +Label="gr (sun_type6)" + +[keyboard-gr-colemak] +Description="Keyboard - Greek - Greek (Colemak)" +Language=el +Label="gr (colemak)" + +[keyboard-tr] +Description="Keyboard - Turkish" +Language=tr +Label=tr + +[keyboard-tr-f] +Description="Keyboard - Turkish - Turkish (F)" +Language=tr +Label="tr (f)" + +[keyboard-tr-e] +Description="Keyboard - Turkish - Turkish (E)" +Language=tr +Label="tr (e)" + +[keyboard-tr-alt] +Description="Keyboard - Turkish - Turkish (Alt-Q)" +Language=tr +Label="tr (alt)" + +[keyboard-tr-intl] +Description="Keyboard - Turkish - Turkish (intl., with dead keys)" +Language=tr +Label="tr (intl)" + +[keyboard-tr-ku] +Description="Keyboard - Turkish - Kurdish (Turkey, Latin Q)" +Language=ku +Label=ku + +[keyboard-tr-ku_f] +Description="Keyboard - Turkish - Kurdish (Turkey, F)" +Language=ku +Label="ku (ku_f)" + +[keyboard-tr-ku_alt] +Description="Keyboard - Turkish - Kurdish (Turkey, Latin Alt-Q)" +Language=ku +Label="ku (ku_alt)" + +[keyboard-tr-sun_type6] +Description="Keyboard - Turkish - Turkish (Sun Type 6/7)" +Language=tr +Label="tr (sun_type6)" + +[keyboard-tr-us] +Description="Keyboard - Turkish - Turkish (i and ı swapped)" +Language=tr +Label="tr (us)" + +[keyboard-tr-otk] +Description="Keyboard - Turkish - Old Turkic" +Language=tr +Label="tr (otk)" + +[keyboard-tr-otkf] +Description="Keyboard - Turkish - Old Turkic (F)" +Language=tr +Label="tr (otkf)" + +[keyboard-tr-ot] +Description="Keyboard - Turkish - Ottoman (Q)" +Language=tr +Label="tr (ot)" + +[keyboard-tr-otf] +Description="Keyboard - Turkish - Ottoman (F)" +Language=tr +Label="tr (otf)" + +[keyboard-il] +Description="Keyboard - Hebrew" +Language=he +Label=he + +[keyboard-il-si2] +Description="Keyboard - Hebrew - Hebrew (SI-1452-2)" +Language=he +Label="il (si2)" + +[keyboard-il-lyx] +Description="Keyboard - Hebrew - Hebrew (lyx)" +Language=he +Label="il (lyx)" + +[keyboard-il-phonetic] +Description="Keyboard - Hebrew - Hebrew (phonetic)" +Language=he +Label="il (phonetic)" + +[keyboard-il-biblical] +Description="Keyboard - Hebrew - Hebrew (Biblical, Tiro)" +Language=he +Label="il (biblical)" + +[keyboard-il-biblicalSIL] +Description="Keyboard - Hebrew - Hebrew (Biblical, SIL phonetic)" +Language=he +Label="il (biblicalSIL)" + +[keyboard-de] +Description="Keyboard - German" +Language=de +Label=de + +[keyboard-de-deadacute] +Description="Keyboard - German - German (dead acute)" +Language=de +Label="de (deadacute)" + +[keyboard-de-deadgraveacute] +Description="Keyboard - German - German (dead grave acute)" +Language=de +Label="de (deadgraveacute)" + +[keyboard-de-deadtilde] +Description="Keyboard - German - German (dead tilde)" +Language=de +Label="de (deadtilde)" + +[keyboard-de-nodeadkeys] +Description="Keyboard - German - German (no dead keys)" +Language=de +Label="de (nodeadkeys)" + +[keyboard-de-e1] +Description="Keyboard - German - German (E1)" +Language=de +Label="de (e1)" + +[keyboard-de-e2] +Description="Keyboard - German - German (E2)" +Language=de +Label="de (e2)" + +[keyboard-de-T3] +Description="Keyboard - German - German (T3)" +Language=de +Label="de (T3)" + +[keyboard-de-us] +Description="Keyboard - German - German (US)" +Language=de +Label="de (us)" + +[keyboard-de-dvorak] +Description="Keyboard - German - German (Dvorak)" +Language=de +Label="de (dvorak)" + +[keyboard-de-mac] +Description="Keyboard - German - German (Macintosh)" +Language=de +Label="de (mac)" + +[keyboard-de-mac_nodeadkeys] +Description="Keyboard - German - German (Macintosh, no dead keys)" +Language=de +Label="de (mac_nodeadkeys)" + +[keyboard-de-neo] +Description="Keyboard - German - German (Neo 2)" +Language=de +Label="de (neo)" + +[keyboard-de-qwerty] +Description="Keyboard - German - German (QWERTY)" +Language=de +Label="de (qwerty)" + +[keyboard-de-dsb] +Description="Keyboard - German - Lower Sorbian" +Language=dsb +Label="de (dsb)" + +[keyboard-de-dsb_qwertz] +Description="Keyboard - German - Lower Sorbian (QWERTZ)" +Language=dsb +Label="de (dsb_qwertz)" + +[keyboard-de-ro] +Description="Keyboard - German - Romanian (Germany)" +Language=ro +Label="de (ro)" + +[keyboard-de-ro_nodeadkeys] +Description="Keyboard - German - Romanian (Germany, no dead keys)" +Language=ro +Label="de (ro_nodeadkeys)" + +[keyboard-de-ru] +Description="Keyboard - German - Russian (Germany, phonetic)" +Language=ru +Label=ru + +[keyboard-de-tr] +Description="Keyboard - German - Turkish (Germany)" +Language=tr +Label="de (tr)" + +[keyboard-de-hu] +Description="Keyboard - German - German (with Hungarian letters, no dead keys)" +Language=de +Label="de (hu)" + +[keyboard-de-pl] +Description="Keyboard - German - Polish (Germany, no dead keys)" +Language=de +Label="de (pl)" + +[keyboard-de-sun_type6] +Description="Keyboard - German - German (Sun Type 6/7)" +Language=de +Label="de (sun_type6)" + +[keyboard-de-adnw] +Description="Keyboard - German - German (Aus der Neo-Welt)" +Language=de +Label="de (adnw)" + +[keyboard-de-koy] +Description="Keyboard - German - German (KOY)" +Language=de +Label="de (koy)" + +[keyboard-de-bone] +Description="Keyboard - German - German (Bone)" +Language=de +Label="de (bone)" + +[keyboard-de-bone_eszett_home] +Description="Keyboard - German - German (Bone, eszett in the home row)" +Language=de +Label="de (bone_eszett_home)" + +[keyboard-de-neo_qwertz] +Description="Keyboard - German - German (Neo, QWERTZ)" +Language=de +Label="de (neo_qwertz)" + +[keyboard-de-neo_qwerty] +Description="Keyboard - German - German (Neo, QWERTY)" +Language=de +Label="de (neo_qwerty)" + +[keyboard-de-ru-recom] +Description="Keyboard - German - Russian (Germany, recommended)" +Language=ru +Label="ru (ru-recom)" + +[keyboard-de-ru-translit] +Description="Keyboard - German - Russian (Germany, transliteration)" +Language=ru +Label="ru (ru-translit)" + +[keyboard-id] +Description="Keyboard - Indonesian (Latin)" +Language=id +Label=id + +[keyboard-id-melayu-phonetic] +Description="Keyboard - Indonesian (Latin) - Indonesian (Arab Melayu, phonetic)" +Language=id +Label="id (melayu-phonetic)" + +[keyboard-id-melayu-phoneticx] +Description="Keyboard - Indonesian (Latin) - Indonesian (Arab Melayu, extended phonetic)" +Language=id +Label="id (melayu-phoneticx)" + +[keyboard-id-pegon-phonetic] +Description="Keyboard - Indonesian (Latin) - Indonesian (Arab Pegon, phonetic)" +Language=id +Label="id (pegon-phonetic)" + +[keyboard-id-javanese] +Description="Keyboard - Indonesian (Latin) - Javanese" +Language=jax +Label="id (javanese)" + +[keyboard-sn] +Description="Keyboard - Wolof" +Language=wo +Label=wo + +[keyboard-az] +Description="Keyboard - Azerbaijani" +Language=az +Label=az + +[keyboard-az-cyrillic] +Description="Keyboard - Azerbaijani - Azerbaijani (Cyrillic)" +Language=az +Label="az (cyrillic)" + +[keyboard-kh] +Description="Keyboard - Khmer (Cambodia)" +Language=km +Label=km + +[keyboard-hu] +Description="Keyboard - Hungarian" +Language=hu +Label=hu + +[keyboard-hu-standard] +Description="Keyboard - Hungarian - Hungarian (standard)" +Language=hu +Label="hu (standard)" + +[keyboard-hu-nodeadkeys] +Description="Keyboard - Hungarian - Hungarian (no dead keys)" +Language=hu +Label="hu (nodeadkeys)" + +[keyboard-hu-qwerty] +Description="Keyboard - Hungarian - Hungarian (QWERTY)" +Language=hu +Label="hu (qwerty)" + +[keyboard-hu-101_qwertz_comma_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 101-key, comma, dead keys)" +Language=hu +Label="hu (101_qwertz_comma_dead)" + +[keyboard-hu-101_qwertz_comma_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 101-key, comma, no dead keys)" +Language=hu +Label="hu (101_qwertz_comma_nodead)" + +[keyboard-hu-101_qwertz_dot_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 101-key, dot, dead keys)" +Language=hu +Label="hu (101_qwertz_dot_dead)" + +[keyboard-hu-101_qwertz_dot_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 101-key, dot, no dead keys)" +Language=hu +Label="hu (101_qwertz_dot_nodead)" + +[keyboard-hu-101_qwerty_comma_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 101-key, comma, dead keys)" +Language=hu +Label="hu (101_qwerty_comma_dead)" + +[keyboard-hu-101_qwerty_comma_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 101-key, comma, no dead keys)" +Language=hu +Label="hu (101_qwerty_comma_nodead)" + +[keyboard-hu-101_qwerty_dot_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 101-key, dot, dead keys)" +Language=hu +Label="hu (101_qwerty_dot_dead)" + +[keyboard-hu-101_qwerty_dot_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 101-key, dot, no dead keys)" +Language=hu +Label="hu (101_qwerty_dot_nodead)" + +[keyboard-hu-102_qwertz_comma_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 102-key, comma, dead keys)" +Language=hu +Label="hu (102_qwertz_comma_dead)" + +[keyboard-hu-102_qwertz_comma_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 102-key, comma, no dead keys)" +Language=hu +Label="hu (102_qwertz_comma_nodead)" + +[keyboard-hu-102_qwertz_dot_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 102-key, dot, dead keys)" +Language=hu +Label="hu (102_qwertz_dot_dead)" + +[keyboard-hu-102_qwertz_dot_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTZ, 102-key, dot, no dead keys)" +Language=hu +Label="hu (102_qwertz_dot_nodead)" + +[keyboard-hu-102_qwerty_comma_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 102-key, comma, dead keys)" +Language=hu +Label="hu (102_qwerty_comma_dead)" + +[keyboard-hu-102_qwerty_comma_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 102-key, comma, no dead keys)" +Language=hu +Label="hu (102_qwerty_comma_nodead)" + +[keyboard-hu-102_qwerty_dot_dead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 102-key, dot, dead keys)" +Language=hu +Label="hu (102_qwerty_dot_dead)" + +[keyboard-hu-102_qwerty_dot_nodead] +Description="Keyboard - Hungarian - Hungarian (QWERTY, 102-key, dot, no dead keys)" +Language=hu +Label="hu (102_qwerty_dot_nodead)" + +[keyboard-hu-oldhunlig] +Description="Keyboard - Hungarian - Old Hungarian (for ligatures)" +Language=hu +Label="oldhun(lig) (oldhunlig)" + +[keyboard-hu-oldhun_sk_sh] +Description="Keyboard - Hungarian - Old Hungarian (Carpathian Highlands, S as Sh)" +Language=hu +Label="oldhun(SK,Sh) (oldhun_sk_sh)" + +[keyboard-hu-oldhun_sk_sz] +Description="Keyboard - Hungarian - Old Hungarian (Carpathian Highlands, S as Sz)" +Language=hu +Label="oldhun(SK,Sz) (oldhun_sk_sz)" + +[keyboard-hu-us] +Description="Keyboard - Hungarian - Hungarian (US)" +Language=hu +Label=us + +[keyboard-ng] +Description="Keyboard - English (Nigeria)" +Language=en +Label=en + +[keyboard-ng-hausa] +Description="Keyboard - English (Nigeria) - Hausa (Nigeria)" +Language=ha +Label="ha (hausa)" + +[keyboard-ng-igbo] +Description="Keyboard - English (Nigeria) - Igbo" +Language=ig +Label="ig (igbo)" + +[keyboard-ng-yoruba] +Description="Keyboard - English (Nigeria) - Yoruba" +Language=yo +Label="yo (yoruba)" + +[keyboard-is] +Description="Keyboard - Icelandic" +Language=is +Label=is + +[keyboard-is-mac_legacy] +Description="Keyboard - Icelandic - Icelandic (Macintosh, legacy)" +Language=is +Label="is (mac_legacy)" + +[keyboard-is-mac] +Description="Keyboard - Icelandic - Icelandic (Macintosh)" +Language=is +Label="is (mac)" + +[keyboard-is-dvorak] +Description="Keyboard - Icelandic - Icelandic (Dvorak)" +Language=is +Label="is (dvorak)" + +[keyboard-in] +Description="Keyboard - Indian" +Language=hi +Label=in + +[keyboard-in-asm-kagapa] +Description="Keyboard - Indian - Assamese (KaGaPa, phonetic)" +Language=as +Label="as (asm-kagapa)" + +[keyboard-in-ben] +Description="Keyboard - Indian - Bangla (India)" +Language=bn +Label="bn (ben)" + +[keyboard-in-ben_probhat] +Description="Keyboard - Indian - Bangla (India, Probhat)" +Language=bn +Label="bn (ben_probhat)" + +[keyboard-in-ben_baishakhi] +Description="Keyboard - Indian - Bangla (India, Baishakhi)" +Language=bn +Label="in (ben_baishakhi)" + +[keyboard-in-ben_bornona] +Description="Keyboard - Indian - Bangla (India, Bornona)" +Language=bn +Label="in (ben_bornona)" + +[keyboard-in-ben-kagapa] +Description="Keyboard - Indian - Bangla (India, KaGaPa, phonetic)" +Language=bn +Label="in (ben-kagapa)" + +[keyboard-in-ben_gitanjali] +Description="Keyboard - Indian - Bangla (India, Gitanjali)" +Language=bn +Label="in (ben_gitanjali)" + +[keyboard-in-ben_inscript] +Description="Keyboard - Indian - Bangla (India, Baishakhi InScript)" +Language=bn +Label="in (ben_inscript)" + +[keyboard-in-eng] +Description="Keyboard - Indian - English (India, with rupee)" +Language=en +Label="en (eng)" + +[keyboard-in-guj] +Description="Keyboard - Indian - Gujarati" +Language=gu +Label="gu (guj)" + +[keyboard-in-guj-kagapa] +Description="Keyboard - Indian - Gujarati (KaGaPa, phonetic)" +Language=gu +Label="gu (guj-kagapa)" + +[keyboard-in-bolnagri] +Description="Keyboard - Indian - Hindi (Bolnagri)" +Language=hi +Label="hi (bolnagri)" + +[keyboard-in-hin-wx] +Description="Keyboard - Indian - Hindi (Wx)" +Language=hi +Label="hi (hin-wx)" + +[keyboard-in-hin-kagapa] +Description="Keyboard - Indian - Hindi (KaGaPa, phonetic)" +Language=hi +Label="hi (hin-kagapa)" + +[keyboard-in-kan] +Description="Keyboard - Indian - Kannada" +Language=kn +Label="kn (kan)" + +[keyboard-in-kan-kagapa] +Description="Keyboard - Indian - Kannada (KaGaPa, phonetic)" +Language=kn +Label="kn (kan-kagapa)" + +[keyboard-in-mal] +Description="Keyboard - Indian - Malayalam" +Language=ml +Label="ml (mal)" + +[keyboard-in-mal_lalitha] +Description="Keyboard - Indian - Malayalam (Lalitha)" +Language=ml +Label="ml (mal_lalitha)" + +[keyboard-in-mal_enhanced] +Description="Keyboard - Indian - Malayalam (enhanced InScript, with rupee)" +Language=ml +Label="ml (mal_enhanced)" + +[keyboard-in-mal_poorna] +Description="Keyboard - Indian - Malayalam (Poorna, extended InScript)" +Language=ml +Label="ml (mal_poorna)" + +[keyboard-in-mni] +Description="Keyboard - Indian - Manipuri (Meitei)" +Language=mni +Label="in (mni)" + +[keyboard-in-mar-kagapa] +Description="Keyboard - Indian - Marathi (KaGaPa, phonetic)" +Language=mr +Label="mr (mar-kagapa)" + +[keyboard-in-marathi] +Description="Keyboard - Indian - Marathi (enhanced InScript)" +Language=mr +Label="in (marathi)" + +[keyboard-in-ori] +Description="Keyboard - Indian - Oriya" +Language=or +Label="or (ori)" + +[keyboard-in-ori-bolnagri] +Description="Keyboard - Indian - Oriya (Bolnagri)" +Language=or +Label="or (ori-bolnagri)" + +[keyboard-in-ori-wx] +Description="Keyboard - Indian - Oriya (Wx)" +Language=or +Label="or (ori-wx)" + +[keyboard-in-guru] +Description="Keyboard - Indian - Punjabi (Gurmukhi)" +Language=pa +Label="pa (guru)" + +[keyboard-in-jhelum] +Description="Keyboard - Indian - Punjabi (Gurmukhi Jhelum)" +Language=pa +Label="pa (jhelum)" + +[keyboard-in-san-kagapa] +Description="Keyboard - Indian - Sanskrit (KaGaPa, phonetic)" +Language=sa +Label="sa (san-kagapa)" + +[keyboard-in-sat] +Description="Keyboard - Indian - Santali (Ol Chiki)" +Language=sat +Label=sat + +[keyboard-in-tamilnet] +Description="Keyboard - Indian - Tamil (TamilNet '99)" +Language=ta +Label="ta (tamilnet)" + +[keyboard-in-tamilnet_tamilnumbers] +Description="Keyboard - Indian - Tamil (TamilNet '99 with Tamil numerals)" +Language=ta +Label="ta (tamilnet_tamilnumbers)" + +[keyboard-in-tamilnet_TAB] +Description="Keyboard - Indian - Tamil (TamilNet '99, TAB encoding)" +Language=ta +Label="ta (tamilnet_TAB)" + +[keyboard-in-tamilnet_TSCII] +Description="Keyboard - Indian - Tamil (TamilNet '99, TSCII encoding)" +Language=ta +Label="ta (tamilnet_TSCII)" + +[keyboard-in-tam] +Description="Keyboard - Indian - Tamil (InScript, with Arabic numerals)" +Language=ta +Label="ta (tam)" + +[keyboard-in-tam_tamilnumbers] +Description="Keyboard - Indian - Tamil (InScript, with Tamil numerals)" +Language=ta +Label="ta (tam_tamilnumbers)" + +[keyboard-in-tel] +Description="Keyboard - Indian - Telugu" +Language=te +Label="te (tel)" + +[keyboard-in-tel-kagapa] +Description="Keyboard - Indian - Telugu (KaGaPa, phonetic)" +Language=te +Label="te (tel-kagapa)" + +[keyboard-in-tel-sarala] +Description="Keyboard - Indian - Telugu (Sarala)" +Language=te +Label="te (tel-sarala)" + +[keyboard-in-urd-phonetic] +Description="Keyboard - Indian - Urdu (phonetic)" +Language=ur +Label="ur (urd-phonetic)" + +[keyboard-in-urd-phonetic3] +Description="Keyboard - Indian - Urdu (alt. phonetic)" +Language=ur +Label="ur (urd-phonetic3)" + +[keyboard-in-urd-winkeys] +Description="Keyboard - Indian - Urdu (Windows)" +Language=ur +Label="ur (urd-winkeys)" + +[keyboard-in-iipa] +Description="Keyboard - Indian - Indic IPA" +Language=en +Label="in (iipa)" + +[keyboard-in-modi-kagapa] +Description="Keyboard - Indian - Modi (KaGaPa, phonetic)" +Language=mr +Label="mr (modi-kagapa)" + +[keyboard-in-san-misc] +Description="Keyboard - Indian - Sanskrit symbols" +Language=sa +Label="sas (san-misc)" + +[keyboard-in-urd-navees] +Description="Keyboard - Indian - Urdu (Navees)" +Language=ur +Label="ur (urd-navees)" + +[keyboard-it] +Description="Keyboard - Italian" +Language=it +Label=it + +[keyboard-it-nodeadkeys] +Description="Keyboard - Italian - Italian (no dead keys)" +Language=it +Label="it (nodeadkeys)" + +[keyboard-it-winkeys] +Description="Keyboard - Italian - Italian (Windows)" +Language=it +Label="it (winkeys)" + +[keyboard-it-mac] +Description="Keyboard - Italian - Italian (Macintosh)" +Language=it +Label="it (mac)" + +[keyboard-it-us] +Description="Keyboard - Italian - Italian (US)" +Language=it +Label="it (us)" + +[keyboard-it-ibm] +Description="Keyboard - Italian - Italian (IBM 142)" +Language=it +Label="it (ibm)" + +[keyboard-it-fur] +Description="Keyboard - Italian - Friulian (Italy)" +Language=fur +Label="it (fur)" + +[keyboard-it-scn] +Description="Keyboard - Italian - Sicilian" +Language=it +Label="it (scn)" + +[keyboard-it-geo] +Description="Keyboard - Italian - Georgian (Italy)" +Language=ka +Label="it (geo)" + +[keyboard-it-sun_type6] +Description="Keyboard - Italian - Italian (Sun Type 6/7)" +Language=it +Label="it (sun_type6)" + +[keyboard-it-lld] +Description="Keyboard - Italian - Ladin (Italian keyboard)" +Language=it +Label="it_lld (lld)" + +[keyboard-it-lldde] +Description="Keyboard - Italian - Ladin (German keyboard)" +Language=de +Label="de_lld (lldde)" + +[keyboard-it-dvorak] +Description="Keyboard - Italian - Italian (Dvorak)" +Language=it +Label="it (dvorak)" + +[keyboard-jp] +Description="Keyboard - Japanese" +Language=ja +Label=ja + +[keyboard-jp-kana] +Description="Keyboard - Japanese - Japanese (Kana)" +Language=ja +Label="jp (kana)" + +[keyboard-jp-kana86] +Description="Keyboard - Japanese - Japanese (Kana 86)" +Language=ja +Label="jp (kana86)" + +[keyboard-jp-OADG109A] +Description="Keyboard - Japanese - Japanese (OADG 109A)" +Language=ja +Label="jp (OADG109A)" + +[keyboard-jp-mac] +Description="Keyboard - Japanese - Japanese (Macintosh)" +Language=ja +Label="jp (mac)" + +[keyboard-jp-dvorak] +Description="Keyboard - Japanese - Japanese (Dvorak)" +Language=ja +Label="jp (dvorak)" + +[keyboard-jp-sun_type6] +Description="Keyboard - Japanese - Japanese (Sun Type 6)" +Language=ja +Label="jp (sun_type6)" + +[keyboard-jp-sun_type7] +Description="Keyboard - Japanese - Japanese (Sun Type 7, PC-compatible)" +Language=ja +Label="jp (sun_type7)" + +[keyboard-jp-sun_type7_suncompat] +Description="Keyboard - Japanese - Japanese (Sun Type 7, Sun-compatible)" +Language=ja +Label="jp (sun_type7_suncompat)" + diff --git a/dotfiles/.config/fcitx5/conf/classicui.conf b/dotfiles/.config/fcitx5/conf/classicui.conf new file mode 100644 index 0000000..8cc16b5 --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/classicui.conf @@ -0,0 +1,35 @@ +# Vertical Candidate List +Vertical Candidate List=False +# Use mouse wheel to go to prev or next page +WheelForPaging=True +# Font +Font="Sarasa Gothic SC 14" +# Menu Font +MenuFont="Sarasa Gothic SC 14" +# Tray Font +TrayFont="Sarasa Gothic SC 12" +# Tray Label Outline Color +TrayOutlineColor=#000000 +# Tray Label Text Color +TrayTextColor=#ffffff +# Prefer Text Icon +PreferTextIcon=False +# Show Layout Name In Icon +ShowLayoutNameInIcon=True +# Use input method language to display text +UseInputMethodLanguageToDisplayText=True +# Theme +Theme=catppuccin-mocha-flamingo +# Dark Theme +DarkTheme=catppuccin-mocha-flamingo +# Follow system light/dark color scheme +UseDarkTheme=True +# Follow system accent color if it is supported by theme and desktop +UseAccentColor=True +# Use Per Screen DPI on X11 +PerScreenDPI=False +# Force font DPI on Wayland +ForceWaylandDPI=0 +# Enable fractional scale under Wayland +EnableFractionalScale=True + diff --git a/dotfiles/.config/fcitx5/conf/clipboard.conf b/dotfiles/.config/fcitx5/conf/clipboard.conf new file mode 100644 index 0000000..c2d6def --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/clipboard.conf @@ -0,0 +1,13 @@ +# Paste Primary +PastePrimaryKey= +# Number of entries +Number of entries=10 +# Do not show password from password managers +IgnorePasswordFromPasswordManager=False +# Hidden clipboard content that contains a password +ShowPassword=False +# Seconds before clearing password +ClearPasswordAfter=30 + +[TriggerKey] +0=Super+V diff --git a/dotfiles/.config/fcitx5/conf/keyboard.conf b/dotfiles/.config/fcitx5/conf/keyboard.conf new file mode 100644 index 0000000..4793bba --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/keyboard.conf @@ -0,0 +1,29 @@ +# Page size +PageSize=5 +# Enable emoji in hint +EnableEmoji=True +# Enable emoji in quickphrase +EnableQuickPhraseEmoji=True +# Choose key modifier +Choose Modifier=Alt +# Enable hint by default +EnableHintByDefault=False +# Use new compose behavior +UseNewComposeBehavior=True +# Type special characters with long press +EnableLongPress=False +# Applications disabled for long press +LongPressBlocklist= + +[PrevCandidate] +0=Shift+Tab + +[NextCandidate] +0=Tab + +[Hint Trigger] +0=Control+Alt+H + +[One Time Hint Trigger] +0=Control+Alt+J + diff --git a/dotfiles/.config/fcitx5/conf/notifications.conf b/dotfiles/.config/fcitx5/conf/notifications.conf new file mode 100644 index 0000000..6e7d1b9 --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/notifications.conf @@ -0,0 +1,3 @@ +# Hidden Notifications +HiddenNotifications= + diff --git a/dotfiles/.config/fcitx5/conf/quickphrase.conf b/dotfiles/.config/fcitx5/conf/quickphrase.conf new file mode 100644 index 0000000..90b06be --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/quickphrase.conf @@ -0,0 +1,9 @@ +# Trigger Key +TriggerKey= +# Choose key modifier +Choose Modifier=None +# Enable Spell check +Spell=False +# Fallback Spell check language +FallbackSpellLanguage=en + diff --git a/dotfiles/.config/fcitx5/conf/rime.conf b/dotfiles/.config/fcitx5/conf/rime.conf new file mode 100644 index 0000000..1f68a4a --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/rime.conf @@ -0,0 +1,13 @@ +# Preedit Mode +PreeditMode="Do not show" +# Shared Input State +InputState=All +# Fix embedded preedit cursor at the beginning of the preedit +PreeditCursorPositionAtBeginning=True +# Action when switching input method +SwitchInputMethodBehavior="Commit commit preview" +# Deploy +Deploy= +# Synchronize +Synchronize= + diff --git a/dotfiles/.config/fcitx5/conf/spell.conf b/dotfiles/.config/fcitx5/conf/spell.conf new file mode 100644 index 0000000..25197e3 --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/spell.conf @@ -0,0 +1,5 @@ +[ProviderOrder] +0=Presage +1=Custom +2=Enchant + diff --git a/dotfiles/.config/fcitx5/conf/wayland.conf b/dotfiles/.config/fcitx5/conf/wayland.conf new file mode 100644 index 0000000..6d970c1 --- /dev/null +++ b/dotfiles/.config/fcitx5/conf/wayland.conf @@ -0,0 +1,3 @@ +# Allow Overriding System XKB Settings (Only support KDE 5) +Allow Overriding System XKB Settings=False + diff --git a/dotfiles/.config/fcitx5/config b/dotfiles/.config/fcitx5/config new file mode 100644 index 0000000..0443fe2 --- /dev/null +++ b/dotfiles/.config/fcitx5/config @@ -0,0 +1,73 @@ +[Hotkey] +# Enumerate when press trigger key repeatedly +EnumerateWithTriggerKeys=True +# Temporally switch between first and current Input Method +AltTriggerKeys= +# Enumerate Input Method Forward +EnumerateForwardKeys= +# Enumerate Input Method Backward +EnumerateBackwardKeys= +# Skip first input method while enumerating +EnumerateSkipFirst=False +# Enumerate Input Method Group Forward +EnumerateGroupForwardKeys= +# Enumerate Input Method Group Backward +EnumerateGroupBackwardKeys= +# Activate Input Method +ActivateKeys= +# Deactivate Input Method +DeactivateKeys= +# Toggle embedded preedit +TogglePreedit= + +[Hotkey/TriggerKeys] +0=Super+space + +[Hotkey/PrevPage] +0=Up + +[Hotkey/NextPage] +0=Down + +[Hotkey/PrevCandidate] +0=Shift+Tab + +[Hotkey/NextCandidate] +0=Tab + +[Behavior] +# Active By Default +ActiveByDefault=False +# Reset state on Focus In +resetStateWhenFocusIn=No +# Share Input State +ShareInputState=No +# Show preedit in application +PreeditEnabledByDefault=True +# Show Input Method Information when switch input method +ShowInputMethodInformation=True +# Show Input Method Information when changing focus +showInputMethodInformationWhenFocusIn=False +# Show compact input method information +CompactInputMethodInformation=True +# Show first input method information +ShowFirstInputMethodInformation=True +# Default page size +DefaultPageSize=5 +# Override Xkb Option +OverrideXkbOption=False +# Custom Xkb Option +CustomXkbOption= +# Force Enabled Addons +EnabledAddons= +# Force Disabled Addons +DisabledAddons= +# Preload input method to be used by default +PreloadInputMethod=True +# Allow input method in the password field +AllowInputMethodForPassword=False +# Show preedit text when typing password +ShowPreeditForPassword=False +# Interval of saving user data in minutes +AutoSavePeriod=30 + diff --git a/dotfiles/.config/fcitx5/profile b/dotfiles/.config/fcitx5/profile new file mode 100644 index 0000000..d28185b --- /dev/null +++ b/dotfiles/.config/fcitx5/profile @@ -0,0 +1,23 @@ +[Groups/0] +# Group Name +Name=Default +# Layout +Default Layout=us +# Default Input Method +DefaultIM=rime + +[Groups/0/Items/0] +# Name +Name=keyboard-us +# Layout +Layout= + +[Groups/0/Items/1] +# Name +Name=rime +# Layout +Layout= + +[GroupOrder] +0=Default + diff --git a/dotfiles/.config/fuzzel/fuzzel.ini b/dotfiles/.config/fuzzel/fuzzel.ini new file mode 100644 index 0000000..9da285f --- /dev/null +++ b/dotfiles/.config/fuzzel/fuzzel.ini @@ -0,0 +1,21 @@ +[colors] +background=1e1e2edd +text=cdd6f4ff +prompt=bac2deff +placeholder=7f849cff +input=cdd6f4ff +match=b4befeff +selection=585b70ff +selection-text=cdd6f4ff +selection-match=b4befeff +counter=7f849cff +border=b4befeff + +[main] +font=Sarasa Gothic SC:size=18 +icon-theme=Papirus-Dark +icons-enabled=yes +delayed-filter-ms=0 +delayed-filter-limit=0 +lines=10 +sort-result=yes diff --git a/dotfiles/.config/hypr/hyprland/autostart.conf b/dotfiles/.config/hypr/hyprland/autostart.conf new file mode 100644 index 0000000..907a5b7 --- /dev/null +++ b/dotfiles/.config/hypr/hyprland/autostart.conf @@ -0,0 +1,9 @@ +exec-once = fcitx5 -d -r +exec-once = nm-applet +exec-once = swayosd-server +exec-once = swww-daemon +exec-once = swww restore +exec-once = xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE $SCALE +exec-once = waybar + +# exec-once = sleep 1 && strawberry diff --git a/dotfiles/.config/hypr/hyprland/basic.conf b/dotfiles/.config/hypr/hyprland/basic.conf new file mode 100644 index 0000000..66bedbc --- /dev/null +++ b/dotfiles/.config/hypr/hyprland/basic.conf @@ -0,0 +1,136 @@ +source = ~/.config/hypr/theme.conf + +animations { + enabled = true + bezier = liner, 1, 1, 1, 1 + bezier = overshot, 0.13, 0.99, 0.29, 1.1 + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 7, winIn, slide + animation = windowsOut, 1, 7, default, popin 80% + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + animation = fade, 1, 10, default + animation = workspaces, 1, 8, default, slidefade 20% + animation = specialWorkspaceIn, 1, 8, default, fade + animation = specialWorkspaceOut, 1, 8, default, fade +} + + +debug { + suppress_errors = true + watchdog_timeout = 0 +} + + +decoration { + active_opacity = 1.0 + blur { + enabled = false + } + dim_inactive = false + fullscreen_opacity = 1.0 + inactive_opacity = 1.0 + rounding = 4 + shadow { + enabled = false + } +} + + +ecosystem { + no_donation_nag = true + no_update_news = true +} + + +env = XDG_SESSION_DESKTOP, Hyprland + + +general { + gaps_in = 1 + gaps_out = 1 + border_size = 1 + col.active_border = $lavender + col.inactive_border = $base + layout = hy3 +} + + +gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 + workspace_swipe_distance = 250 + workspace_swipe_invert = true + workspace_swipe_min_speed_to_force = 15 + workspace_swipe_cancel_ratio = 0.5 + workspace_swipe_create_new = false +} + + +input { + follow_mouse = 1 + float_switch_override_focus = 2 + kb_layout = $KEYBOARDLAYOUT + numlock_by_default = false + sensitivity = 0 + touchpad { + disable_while_typing = true + natural_scroll = true + scroll_factor = 0.5 + } +} + + +misc { + always_follow_on_dnd = true + disable_autoreload = true + disable_hyprland_logo = true + disable_hyprland_qtutils_check = true; + disable_splash_rendering = true; + disable_xdg_env_checks = true; + enable_anr_dialog = false; + enable_swallow = true + focus_on_activate = true + initial_workspace_tracking = 0 + key_press_enables_dpms = false + layers_hog_keyboard_focus = true + mouse_move_enables_dpms = false + vfr = true +} + + +plugin { + hy3 { + no_gaps_when_only = 1 + node_collapse_policy = 1 + group_inset = 10 + tab_first_window = true + tabs { + col.active = rgb(b4befe) + col.active.border = rgb(313244) + col.active.text = rgb(181825) + col.inactive = rgb(181825) + col.inactive.border = rgb(313244) + col.inactive.text = rgb(b4befe) + col.urgent = rgb(f2cdcd) + col.urgent.border = rgb(313244) + col.urgent.text = rgb(181825) + from_top = false + height = 14 + padding = 2 + render_text = true + rounding = 6 + text_center = true + text_font = Sarasa Gothic SC + text_height = 10 + text_padding = 0 + } + } +} + + +xwayland { + force_zero_scaling = true +} diff --git a/dotfiles/.config/hypr/hyprland/bind.conf b/dotfiles/.config/hypr/hyprland/bind.conf new file mode 100644 index 0000000..e450e49 --- /dev/null +++ b/dotfiles/.config/hypr/hyprland/bind.conf @@ -0,0 +1,178 @@ +## bind settings +binds { + workspace_back_and_forth = 1 + allow_workspace_cycles = 1 +} + + +## App Launcher +bindr = ALT, SPACE, exec, fuzzel + + +## Restart some programs +### Input Tool +bind = Ctrl_ALT, I, exec, pkill fcitx5 -9;sleep 1;fcitx5 -d --replace; sleep 1;fcitx5-remote -r +### Notification Manager +bind = Ctrl_ALT, N, exec, swaync-client -rs +### Status Bar +bind = Ctrl_ALT, B, exec, pkill waybar;sleep 1;waybar # Status Bar + + +## Shortcuts +### File Explorer +bind = SUPER, E, exec, nemo +### Logout Menu +bind = CTRL_SUPER, Q, exec, wlogout +### Terminal Emulator +bind = SUPER, T, exec, alacritty +### Screenshot (Area Mod) +bind = SUPER, S, exec, sh ~/.config/waybar/scripts/Screenshot-Area.sh +### Screenshot (Fullscreen Mod) +bind = SUPER_ALT, S, exec, sh ~/.config/waybar/scripts/Screenshot-Fullscreen.sh +### Screenshot (Window Mod) +bind = SUPER_CTRL, S, exec, sh ~/.config/waybar/scripts/Screenshot-Hyprland-Window.sh +### Screenshot (OCR Mod) +bind = SUPER_CTRL_ALT, S, exec, sh ~/.config/waybar/scripts/Screenshot-OCR.sh + + +## Window actions +bind = SUPER, F, fullscreen +bind = SUPER, Q, hy3:killactive + +## Window actions (bonus) +bind = SUPER_SHIFT, F, togglefloating + + +## Workspace jumping +bind = SUPER,1,workspace,1 +bind = SUPER,2,workspace,2 +bind = SUPER,3,workspace,3 +bind = SUPER,4,workspace,4 +bind = SUPER,5,workspace,5 +bind = SUPER,6,workspace,6 +bind = SUPER,7,workspace,7 +bind = SUPER,8,workspace,8 +bind = SUPER,9,workspace,9 +bind = SUPER,0,workspace,10 + + +## Window movement between Workspace +### without switching to the Workspace +bind = SUPER_CTRL, 1, movetoworkspacesilent, 1 +bind = SUPER_CTRL, 2, movetoworkspacesilent, 2 +bind = SUPER_CTRL, 3, movetoworkspacesilent, 3 +bind = SUPER_CTRL, 4, movetoworkspacesilent, 4 +bind = SUPER_CTRL, 5, movetoworkspacesilent, 5 +bind = SUPER_CTRL, 6, movetoworkspacesilent, 6 +bind = SUPER_CTRL, 7, movetoworkspacesilent, 7 +bind = SUPER_CTRL, 8, movetoworkspacesilent, 8 +bind = SUPER_CTRL, 9, movetoworkspacesilent, 9 +bind = SUPER_CTRL, 0, movetoworkspacesilent, 10 + +### also switching to the Workspace +bind = SUPER_SHIFT, 1, movetoworkspace, 1 +bind = SUPER_SHIFT, 2, movetoworkspace, 2 +bind = SUPER_SHIFT, 3, movetoworkspace, 3 +bind = SUPER_SHIFT, 4, movetoworkspace, 4 +bind = SUPER_SHIFT, 5, movetoworkspace, 5 +bind = SUPER_SHIFT, 6, movetoworkspace, 6 +bind = SUPER_SHIFT, 7, movetoworkspace, 7 +bind = SUPER_SHIFT, 8, movetoworkspace, 8 +bind = SUPER_SHIFT, 9, movetoworkspace, 9 +bind = SUPER_SHIFT, 0, movetoworkspace, 10 + +bind = SUPER_SHIFT, mouse_down, movetoworkspace, -1 +bind = SUPER_SHIFT, mouse_up, movetoworkspace, +1 + +bind = SUPER_SHIFT, mouse:275, movetoworkspace, e+1 +bind = SUPER_SHIFT, mouse:276, movetoworkspace, e-1 + + +### Special Workspace +bind = SUPER, Grave, togglespecialworkspace +bind = SUPER_CTRL, Grave, movetoworkspacesilent, special +bind = SUPER_SHIFT, Grave, movetoworkspace, special + + +## Workspace movement +bind = SUPER_CTRL, left, workspace, -1 +bind = SUPER_CTRL, right, workspace, +1 + +### Using Vim-like keys +bind = SUPER_CTRL, H, workspace, -1 +bind = SUPER_CTRL, L, workspace, +1 + +## Window focus movement +### Using Alt+Tab +bind = ALT, Tab, hy3:movefocus, r +bind = ALT_SHIFT, Tab, hy3:movefocus, l + +### Using Arrow keys +bind = SUPER, left, hy3:movefocus,l +bind = SUPER, right, hy3:movefocus,r +bind = SUPER, up, hy3:movefocus,u +bind = SUPER, down, hy3:movefocus,d + +### Using Vim-like keys +bind = SUPER_Alt, H, hy3:movefocus, l +bind = SUPER_Alt, L, hy3:movefocus, r +bind = SUPER_Alt, K, hy3:movefocus, u +bind = SUPER_Alt, J, hy3:movefocus, d + + +## Window direction movement +### Using Arrow keys +bind = SUPER_SHIFT, left, hy3:movewindow,l +bind = SUPER_SHIFT, right, hy3:movewindow,r +bind = SUPER_SHIFT, up, hy3:movewindow,u +bind = SUPER_SHIFT, down, hy3:movewindow,d + +### Using Vim-like keys +bind = SUPER_SHIFT, H, hy3:movefocus, l +bind = SUPER_SHIFT, L, hy3:movefocus, r +bind = SUPER_SHIFT, K, hy3:movefocus, u +bind = SUPER_SHIFT, J, hy3:movefocus, d + + +## Some smart actions with Mouse +bindm = SUPER, mouse:272, movewindow +bindm = SUPER, mouse:273, resizewindow + +bind = SUPER, mouse_down, workspace, -1 +bind = SUPER, mouse_up, workspace, +1 + +bind = SUPER, mouse:275, workspace, e+1 +bind = SUPER, mouse:276, workspace, e-1 + +### hy3 bonus +bindn = , mouse:272, hy3:focustab, mouse +bindn = , mouse_down, hy3:focustab, l, require_hovered +bindn = , mouse_up, hy3:focustab, r, require_hovered + + +## Brightness control +bindel = , XF86MonBrightnessUp, exec, swayosd-client --brightness +5 +bindel = , XF86MonBrightnessDown, exec, swayosd-client --brightness -5 + + +## Playback control +bindl = ,XF86AudioPlay,exec, playerctl play-pause +bindl = ,XF86AudioNext,exec, playerctl next +bindl = ,XF86AudioPrev,exec, playerctl previous + +### Playback control (bonus) +bindl = CONTROL_ALT, Return, exec, playerctl play-pause +bindl = CONTROL_ALT, right, exec, playerctl next +bindl = CONTROL_ALT, left, exec, playerctl previous + + +## Volume control +bindel = ,XF86AudioRaiseVolume, exec, swayosd-client --output-volume +2 +bindel = ,XF86AudioLowerVolume, exec, swayosd-client --output-volume -2 +bindl = ,XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle +bindl = ,XF86AudioMute, exec, swayosd-client --output-volume mute-toggle + + +## Volume control (bonus) +bindel = CONTROL_ALT, up, exec, swayosd-client --output-volume +2 +bindel = CONTROL_ALT, down, exec, swayosd-client --output-volume -2 diff --git a/dotfiles/.config/hypr/hyprlock.conf b/dotfiles/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..a8212e1 --- /dev/null +++ b/dotfiles/.config/hypr/hyprlock.conf @@ -0,0 +1,77 @@ +source = $HOME/.config/hypr/theme.conf + +$accent = $mauve +$accentAlpha = $mauveAlpha +$font = JetBrainsMono Nerd Font + +# GENERAL +general { + disable_loading_bar = true + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + blur_passes = 0 + color = $base +} + +# LAYOUT +label { + monitor = + text = Layout: $LAYOUT + color = $text + font_size = 25 + font_family = $font + position = 30, -30 + halign = left + valign = top +} + +# TIME +label { + monitor = + text = $TIME + color = $text + font_size = 90 + font_family = $font + position = -30, 0 + halign = right + valign = top +} + +# DATE +label { + monitor = + text = cmd[update:43200000] date +"%A, %d %B %Y" + color = $text + font_size = 25 + font_family = $font + position = -30, -150 + halign = right + valign = top +} + +# INPUT FIELD +input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -47 + halign = center + valign = center +} diff --git a/dotfiles/.config/hypr/theme.conf b/dotfiles/.config/hypr/theme.conf new file mode 100644 index 0000000..0855b5d --- /dev/null +++ b/dotfiles/.config/hypr/theme.conf @@ -0,0 +1,79 @@ +# Catpucchin Mocha + +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b diff --git a/dotfiles/.config/keepassxc/keepassxc.ini b/dotfiles/.config/keepassxc/keepassxc.ini new file mode 100644 index 0000000..e1d1059 --- /dev/null +++ b/dotfiles/.config/keepassxc/keepassxc.ini @@ -0,0 +1,31 @@ +[General] +ConfigVersion=2 + +[Browser] +AlwaysAllowAccess=true +CustomProxyLocation= +Enabled=false + +[FdoSecrets] +Enabled=false + +[GUI] +ApplicationTheme=classic +MinimizeOnClose=true +MinimizeOnStartup=false +MinimizeToTray=true +ShowTrayIcon=true +ToolButtonStyle=0 +TrayIconAppearance=monochrome-dark + +[PasswordGenerator] +AdditionalChars= +ExcludedChars= +SpecialChars=false + +[SSHAgent] +Enabled=true + +[Security] +ClearClipboard=false +IconDownloadFallback=true diff --git a/dotfiles/.config/kwalletrc b/dotfiles/.config/kwalletrc new file mode 100644 index 0000000..95510c3 --- /dev/null +++ b/dotfiles/.config/kwalletrc @@ -0,0 +1,14 @@ +[Wallet] +Close When Idle=true +Close on Screensaver=true +Enabled=false +First Use=false +Idle Timeout=1 +Launch Manager=false +Leave Manager Open=false +Leave Open=false +Prompt on Open=false +Use One Wallet=true + +[org.freedesktop.secrets] +apiEnabled=false diff --git a/dotfiles/.config/nushell/config.nu b/dotfiles/.config/nushell/config.nu new file mode 100644 index 0000000..04df2f9 --- /dev/null +++ b/dotfiles/.config/nushell/config.nu @@ -0,0 +1,821 @@ + +let dark_theme = { + separator: white + leading_trailing_space_bg: { attr: n } + header: green_bold + bool: light_cyan + int: white + filesize: cyan + duration: white + date: purple + range: white + float: white + string: white + nothing: white + binary: white + cell-path: white + row_index: green_bold + record: white + list: white + block: white + hints: dark_gray + search_result: { bg: red fg: white } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} + +let light_theme = { + separator: dark_gray + leading_trailing_space_bg: { attr: n } + header: green_bold + empty: blue + bool: dark_cyan + int: dark_gray + filesize: cyan_bold + duration: dark_gray + date: purple + range: dark_gray + float: dark_gray + string: dark_gray + nothing: dark_gray + binary: dark_gray + cell-path: dark_gray + row_index: green_bold + record: dark_gray + list: dark_gray + block: dark_gray + hints: dark_gray + search_result: { fg: white bg: red } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_purple_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} +$env.config = { + show_banner: false + + ls: { + use_ls_colors: true + clickable_links: true + } + + rm: { + always_trash: false + } + + table: { + mode: rounded + index_mode: always + show_empty: true + padding: { left: 1, right: 1 } + trim: { + methodology: wrapping + wrapping_try_keep_words: true + truncating_suffix: "..." + } + header_on_separator: false + } + + error_style: "fancy" + display_errors: { + exit_code: false + termination_signal: true + } + datetime_format: { + } + + explore: { + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, + command_bar_text: { fg: "#C4C9C6" }, + highlight: { fg: "black", bg: "yellow" }, + status: { + error: { fg: "white", bg: "red" }, + warn: {} + info: {} + }, + selected_cell: { bg: light_blue }, + } + + history: { + max_size: 100_000 + sync_on_enter: true + file_format: "plaintext" + isolation: false + } + + completions: { + case_sensitive: false + quick: true + partial: true + algorithm: "prefix" + sort: "smart" + external: { + enable: true + max_results: 100 + completer: null + } + use_ls_colors: true + } + + cursor_shape: { + emacs: line + vi_insert: block + vi_normal: underscore + } + + color_config: $dark_theme + footer_mode: 25 + float_precision: 2 + buffer_editor: micro + use_ansi_coloring: true + bracketed_paste: true + edit_mode: emacs + shell_integration: { + osc2: true + osc7: true + osc8: true + osc9_9: false + osc133: true + osc633: true + reset_application_mode: true + } + render_right_prompt_on_last_line: false + use_kitty_protocol: false + highlight_resolved_externals: false + recursion_limit: 50 + + plugins: {} + + plugin_gc: { + default: { + enabled: true + stop_after: 10sec + } + plugins: { + } + } + + hooks: { + pre_prompt: [{ null }] + pre_execution: [{ null }] + env_change: { + PWD: [{|before, after| + if (which direnv | is-empty) { + return + } + + direnv export json | from json | default {} | load-env + }] + } + display_output: "if (term size).columns >= 100 { table -e } else { table }" + command_not_found: { null } + } + + menus: [ + { + name: completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: columnar + columns: 4 + col_width: 20 + col_padding: 2 + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: ide_completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: ide + min_completion_width: 0, + max_completion_width: 50, + max_completion_height: 10, + padding: 0, + border: true, + cursor_offset: 0, + description_mode: "prefer_right" + min_description_width: 0 + max_description_width: 50 + max_description_height: 10 + description_offset: 1 + correct_cursor_pos: false + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: history_menu + only_buffer_difference: true + marker: "? " + type: { + layout: list + page_size: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + { + name: help_menu + only_buffer_difference: true + marker: "? " + type: { + layout: description + columns: 4 + col_width: 20 + col_padding: 2 + selection_rows: 4 + description_rows: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + ] + + keybindings: [ + { + name: completion_menu + modifier: none + keycode: tab + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: completion_previous_menu + modifier: shift + keycode: backtab + mode: [emacs, vi_normal, vi_insert] + event: { send: menuprevious } + } + { + name: ide_completion_menu + modifier: control + keycode: space + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: ide_completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: history_menu + modifier: control + keycode: char_r + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: history_menu } + } + { + name: help_menu + modifier: none + keycode: f1 + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: help_menu } + } + { + name: next_page_menu + modifier: control + keycode: char_x + mode: emacs + event: { send: menupagenext } + } + { + name: undo_or_previous_page_menu + modifier: control + keycode: char_z + mode: emacs + event: { + until: [ + { send: menupageprevious } + { edit: undo } + ] + } + } + { + name: escape + modifier: none + keycode: escape + mode: [emacs, vi_normal, vi_insert] + event: { send: esc } # NOTE: does not appear to work + } + { + name: cancel_command + modifier: control + keycode: char_c + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrlc } + } + { + name: quit_shell + modifier: control + keycode: char_d + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrld } + } + { + name: clear_screen + modifier: control + keycode: char_l + mode: [emacs, vi_normal, vi_insert] + event: { send: clearscreen } + } + { + name: search_history + modifier: control + keycode: char_q + mode: [emacs, vi_normal, vi_insert] + event: { send: searchhistory } + } + { + name: open_command_editor + modifier: control + keycode: char_o + mode: [emacs, vi_normal, vi_insert] + event: { send: openeditor } + } + { + name: move_up + modifier: none + keycode: up + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: none + keycode: down + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_left + modifier: none + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: none + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: move_one_word_left + modifier: control + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: control + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_to_line_start + modifier: none + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_start + modifier: control + keycode: char_a + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end_or_take_history_hint + modifier: none + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_end_or_take_history_hint + modifier: control + keycode: char_e + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_start + modifier: control + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end + modifier: control + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolineend } + } + { + name: move_down + modifier: control + keycode: char_n + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_up + modifier: control + keycode: char_p + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: delete_one_character_backward + modifier: none + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: delete_one_character_forward + modifier: none + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_forward + modifier: control + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_backward + modifier: control + keycode: char_h + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: char_w + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: move_left + modifier: none + keycode: backspace + mode: vi_normal + event: { edit: moveleft } + } + { + name: newline_or_run_command + modifier: none + keycode: enter + mode: emacs + event: { send: enter } + } + { + name: move_left + modifier: control + keycode: char_b + mode: emacs + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: control + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: redo_change + modifier: control + keycode: char_g + mode: emacs + event: { edit: redo } + } + { + name: undo_change + modifier: control + keycode: char_z + mode: emacs + event: { edit: undo } + } + { + name: paste_before + modifier: control + keycode: char_y + mode: emacs + event: { edit: pastecutbufferbefore } + } + { + name: cut_word_left + modifier: control + keycode: char_w + mode: emacs + event: { edit: cutwordleft } + } + { + name: cut_line_to_end + modifier: control + keycode: char_k + mode: emacs + event: { edit: cuttolineend } + } + { + name: cut_line_from_start + modifier: control + keycode: char_u + mode: emacs + event: { edit: cutfromstart } + } + { + name: swap_graphemes + modifier: control + keycode: char_t + mode: emacs + event: { edit: swapgraphemes } + } + { + name: move_one_word_left + modifier: alt + keycode: left + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: right + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_one_word_left + modifier: alt + keycode: char_b + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: delete_one_word_forward + modifier: alt + keycode: delete + mode: emacs + event: { edit: deleteword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: backspace + mode: emacs + event: { edit: backspaceword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: char_m + mode: emacs + event: { edit: backspaceword } + } + { + name: cut_word_to_right + modifier: alt + keycode: char_d + mode: emacs + event: { edit: cutwordright } + } + { + name: upper_case_word + modifier: alt + keycode: char_u + mode: emacs + event: { edit: uppercaseword } + } + { + name: lower_case_word + modifier: alt + keycode: char_l + mode: emacs + event: { edit: lowercaseword } + } + { + name: capitalize_char + modifier: alt + keycode: char_c + mode: emacs + event: { edit: capitalizechar } + } + { + name: copy_selection + modifier: control_shift + keycode: char_c + mode: emacs + event: { edit: copyselection } + } + { + name: cut_selection + modifier: control_shift + keycode: char_x + mode: emacs + event: { edit: cutselection } + } + { + name: select_all + modifier: control_shift + keycode: char_a + mode: emacs + event: { edit: selectall } + } + ] +} + +mkdir ($nu.data-dir | path join "vendor/autoload") +atuin init nu | save -f ($nu.data-dir | path join "vendor/autoload/atuin.nu") +starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu") +zoxide init nushell | save -f ($nu.data-dir | path join "vendor/autoload/zoxide.nu") diff --git a/dotfiles/.config/nushell/env.nu b/dotfiles/.config/nushell/env.nu new file mode 100644 index 0000000..9006520 --- /dev/null +++ b/dotfiles/.config/nushell/env.nu @@ -0,0 +1,57 @@ +def create_left_prompt [] { + let dir = match (do --ignore-errors { $env.PWD | path relative-to $nu.home-path }) { + null => $env.PWD + '' => '~' + $relative_pwd => ([~ $relative_pwd] | path join) + } + + let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) + let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold }) + let path_segment = $"($path_color)($dir)(ansi reset)" + + $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" +} + +def create_right_prompt [] { + let time_segment = ([ + (ansi reset) + (ansi magenta) + (date now | format date '%x %X') + ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | + str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}") + + let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ + (ansi rb) + ($env.LAST_EXIT_CODE) + ] | str join) + } else { "" } + + ([$last_exit_code, (char space), $time_segment] | str join) +} + +$env.PROMPT_COMMAND = {|| create_left_prompt } +$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } +$env.PROMPT_INDICATOR = {|| "> " } +$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } +$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } +$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } + +$env.ENV_CONVERSIONS = { + "PATH": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } + "Path": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } +} + +$env.NU_LIB_DIRS = [ + ($nu.default-config-dir | path join 'scripts') + ($nu.data-dir | path join 'completions') +] + +$env.NU_PLUGIN_DIRS = [ + ($nu.default-config-dir | path join 'plugins') +] diff --git a/dotfiles/.config/obs-studio/basic/profiles/Untitled/basic.ini b/dotfiles/.config/obs-studio/basic/profiles/Untitled/basic.ini new file mode 100644 index 0000000..63a657c --- /dev/null +++ b/dotfiles/.config/obs-studio/basic/profiles/Untitled/basic.ini @@ -0,0 +1,113 @@ +[General] +Name=Untitled + +[Output] +Mode=Simple +FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss +DelayEnable=false +DelaySec=20 +DelayPreserve=true +Reconnect=true +RetryDelay=2 +MaxRetries=25 +BindIP=default +IPFamily=IPv4+IPv6 +NewSocketLoopEnable=false +LowLatencyEnable=false + +[Stream1] +IgnoreRecommended=false +EnableMultitrackVideo=false +MultitrackVideoMaximumAggregateBitrateAuto=true +MultitrackVideoMaximumVideoTracksAuto=true + +[SimpleOutput] +FilePath=/home/dich +RecFormat2=mp4 +VBitrate=2500 +ABitrate=160 +UseAdvanced=false +Preset=veryfast +NVENCPreset2=p5 +RecQuality=Stream +RecRB=false +RecRBTime=20 +RecRBSize=512 +RecRBPrefix=Replay +StreamAudioEncoder=aac +RecAudioEncoder=aac +RecTracks=1 +StreamEncoder=x264 +RecEncoder=x264 + +[AdvOut] +ApplyServiceSettings=true +UseRescale=false +TrackIndex=1 +VodTrackIndex=2 +Encoder=obs_x264 +RecType=Standard +RecFilePath=/home/dich +RecFormat2=mkv +RecUseRescale=false +RecTracks=1 +RecEncoder=none +FLVTrack=1 +StreamMultiTrackAudioMixes=1 +FFOutputToFile=true +FFFilePath=/home/dich +FFVBitrate=2500 +FFVGOPSize=250 +FFUseRescale=false +FFIgnoreCompat=false +FFABitrate=160 +FFAudioMixes=1 +Track1Bitrate=160 +Track2Bitrate=160 +Track3Bitrate=160 +Track4Bitrate=160 +Track5Bitrate=160 +Track6Bitrate=160 +RecSplitFileTime=15 +RecSplitFileSize=2048 +RecRB=false +RecRBTime=20 +RecRBSize=512 +AudioEncoder=libfdk_aac +RecAudioEncoder=libfdk_aac +RecSplitFileType=Time +FFFormat= +FFFormatMimeType= +FFVEncoderId=0 +FFVEncoder= +FFAEncoderId=0 +FFAEncoder= +FFExtension=mp4 + +[Video] +BaseCX=1920 +BaseCY=1080 +OutputCX=1280 +OutputCY=720 +FPSType=0 +FPSCommon=30 +FPSInt=30 +FPSNum=30 +FPSDen=1 +ScaleType=bicubic +ColorFormat=NV12 +ColorSpace=709 +ColorRange=Partial +SdrWhiteLevel=300 +HdrNominalPeakLevel=1000 + +[Audio] +MonitoringDeviceId=alsa_output.pci-0000_05_00.6.analog-stereo +MonitoringDeviceName=Family 17h/19h/1ah HD Audio Controller Analog Stereo +SampleRate=48000 +ChannelSetup=Stereo +MeterDecayRate=23.53 +PeakMeterType=0 + +[Panels] +CookieId=9FF9985CAAB5C18B diff --git a/dotfiles/.config/obs-studio/basic/scenes/Untitled.json b/dotfiles/.config/obs-studio/basic/scenes/Untitled.json new file mode 100644 index 0000000..1cb6079 --- /dev/null +++ b/dotfiles/.config/obs-studio/basic/scenes/Untitled.json @@ -0,0 +1,247 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520093699, + "name": "Desktop Audio", + "uuid": "02d5047a-68ce-43a6-a1c2-401dfb117480", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.pci-0000_05_00.6.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.32882726192474365, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + "AuxAudioDevice1": { + "prev_ver": 520093699, + "name": "Mic/Aux", + "uuid": "72203d14-38fc-419b-aac9-46a4c1385437", + "id": "pulse_input_capture", + "versioned_id": "pulse_input_capture", + "settings": { + "device_id": "alsa_input.pci-0000_05_00.6.analog-stereo" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.31743475794792175, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {}, + "filters": [ + { + "prev_ver": 520093699, + "name": "噪声抑制", + "uuid": "fd3d521b-86d5-48c6-b720-264c708ea2cb", + "id": "noise_suppress_filter", + "versioned_id": "noise_suppress_filter_v2", + "settings": {}, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ] + }, + "current_scene": "Scene", + "current_program_scene": "Scene", + "scene_order": [ + { + "name": "Scene" + } + ], + "name": "Untitled", + "sources": [ + { + "prev_ver": 520093699, + "name": "Scene", + "uuid": "aa201eee-721f-44aa-8e7a-6383fa5da63a", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Screen Capture (PipeWire)", + "source_uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 0.75, + "y": 0.75 + }, + "scale_rel": { + "x": 0.75, + "y": 0.75 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520093699, + "name": "Screen Capture (PipeWire)", + "uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "5f9f4fdb-56d1-45a2-aedf-19564983774a" + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ], + "groups": [], + "quick_transitions": [], + "transitions": [], + "saved_projectors": [], + "current_transition": "淡入淡出", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": 0, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "virtual-camera": { + "type2": 3 + }, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "resolution": { + "x": 1920, + "y": 1080 + }, + "version": 2 +} \ No newline at end of file diff --git a/dotfiles/.config/obs-studio/basic/scenes/Untitled.json.bak b/dotfiles/.config/obs-studio/basic/scenes/Untitled.json.bak new file mode 100644 index 0000000..1cb6079 --- /dev/null +++ b/dotfiles/.config/obs-studio/basic/scenes/Untitled.json.bak @@ -0,0 +1,247 @@ +{ + "DesktopAudioDevice1": { + "prev_ver": 520093699, + "name": "Desktop Audio", + "uuid": "02d5047a-68ce-43a6-a1c2-401dfb117480", + "id": "pulse_output_capture", + "versioned_id": "pulse_output_capture", + "settings": { + "device_id": "alsa_output.pci-0000_05_00.6.analog-stereo.monitor" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.32882726192474365, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + "AuxAudioDevice1": { + "prev_ver": 520093699, + "name": "Mic/Aux", + "uuid": "72203d14-38fc-419b-aac9-46a4c1385437", + "id": "pulse_input_capture", + "versioned_id": "pulse_input_capture", + "settings": { + "device_id": "alsa_input.pci-0000_05_00.6.analog-stereo" + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 0.31743475794792175, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {}, + "filters": [ + { + "prev_ver": 520093699, + "name": "噪声抑制", + "uuid": "fd3d521b-86d5-48c6-b720-264c708ea2cb", + "id": "noise_suppress_filter", + "versioned_id": "noise_suppress_filter_v2", + "settings": {}, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ] + }, + "current_scene": "Scene", + "current_program_scene": "Scene", + "scene_order": [ + { + "name": "Scene" + } + ], + "name": "Untitled", + "sources": [ + { + "prev_ver": 520093699, + "name": "Scene", + "uuid": "aa201eee-721f-44aa-8e7a-6383fa5da63a", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 1, + "custom_size": false, + "items": [ + { + "name": "Screen Capture (PipeWire)", + "source_uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.7777777910232544, + "y": -1.0 + }, + "scale": { + "x": 0.75, + "y": 0.75 + }, + "scale_rel": { + "x": 0.75, + "y": 0.75 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 520093699, + "name": "Screen Capture (PipeWire)", + "uuid": "385bea17-7de2-41ea-9fbb-acc8c50c9fb3", + "id": "pipewire-screen-capture-source", + "versioned_id": "pipewire-screen-capture-source", + "settings": { + "RestoreToken": "5f9f4fdb-56d1-45a2-aedf-19564983774a" + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": {}, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + } + ], + "groups": [], + "quick_transitions": [], + "transitions": [], + "saved_projectors": [], + "current_transition": "淡入淡出", + "transition_duration": 300, + "preview_locked": false, + "scaling_enabled": false, + "scaling_level": 0, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "virtual-camera": { + "type2": 3 + }, + "modules": { + "scripts-tool": [], + "output-timer": { + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "autoStartStreamTimer": false, + "autoStartRecordTimer": false, + "pauseRecordTimer": true + } + }, + "resolution": { + "x": 1920, + "y": 1080 + }, + "version": 2 +} \ No newline at end of file diff --git a/dotfiles/.config/obs-studio/global.ini b/dotfiles/.config/obs-studio/global.ini new file mode 100644 index 0000000..9102158 --- /dev/null +++ b/dotfiles/.config/obs-studio/global.ini @@ -0,0 +1,19 @@ +[General] +Pre31Migrated=true +MaxLogs=10 +InfoIncrement=-1 +ProcessPriority=Normal +EnableAutoUpdates=true +LastVersion=520093699 + +[Video] +Renderer=OpenGL + +[Locations] +Configuration=/home/dich/.config +SceneCollections=/home/dich/.config +Profiles=/home/dich/.config + +[PropertiesWindow] +cx=720 +cy=580 diff --git a/dotfiles/.config/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json new file mode 100644 index 0000000..2cb31e4 --- /dev/null +++ b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/amazon_ivs_ingests.json @@ -0,0 +1,625 @@ +{ + "ingests": [ + { + "_id": 0, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Narita (10)", + "url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}", + "priority": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (3)", + "url_template": "rtmp://tyo03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo03.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (5)", + "url_template": "rtmp://tyo05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo05.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Osaka (1)", + "url_template": "rtmp://osa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osa01.contribute.live-video.net/app/{stream_key}", + "priority": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (3)", + "url_template": "rtmp://sel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel03.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (4)", + "url_template": "rtmp://sel04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel04.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (3)", + "url_template": "rtmp://tpe03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe03.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (1)", + "url_template": "rtmp://tpe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe01.contribute.live-video.net/app/{stream_key}", + "priority": 7 + }, + { + "_id": 8, + "availability": 1.0, + "default": false, + "name": "Asia: China, Hong Kong (6)", + "url_template": "rtmp://hkg06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hkg06.contribute.live-video.net/app/{stream_key}", + "priority": 8 + }, + { + "_id": 9, + "availability": 1.0, + "default": false, + "name": "Asia: Manila, Philippines (1)", + "url_template": "rtmp://mnl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mnl01.contribute.live-video.net/app/{stream_key}", + "priority": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "Asia: Thailand, Bangkok (2)", + "url_template": "rtmp://bkk02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bkk02.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "Asia: Singapore (1)", + "url_template": "rtmp://sin01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sin01.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "Asia: Indonesia, Jakarta (2)", + "url_template": "rtmp://jkt02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jkt02.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "Asia: India, Hyderabad (1)", + "url_template": "rtmp://hyd01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hyd01.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "Asia: India, Chennai (1)", + "url_template": "rtmp://maa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://maa01.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "Asia: India, New Delhi (1)", + "url_template": "rtmp://del01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://del01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "Asia: India, Bangalore (1)", + "url_template": "rtmp://blr01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://blr01.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai", + "url_template": "rtmp://bom01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bom01.contribute.live-video.net/app/{stream_key}", + "priority": 17 + }, + { + "_id": 18, + "availability": 1.0, + "default": false, + "name": "US West: Seattle, WA (2)", + "url_template": "rtmp://sea02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sea02.contribute.live-video.net/app/{stream_key}", + "priority": 18 + }, + { + "_id": 19, + "availability": 1.0, + "default": false, + "name": "Europe: Finland, Helsinki (3)", + "url_template": "rtmp://hel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hel03.contribute.live-video.net/app/{stream_key}", + "priority": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (2)", + "url_template": "rtmp://syd02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd02.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (3)", + "url_template": "rtmp://syd03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (3)", + "url_template": "rtmp://arn03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn03.contribute.live-video.net/app/{stream_key}", + "priority": 22 + }, + { + "_id": 23, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (4)", + "url_template": "rtmp://arn04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn04.contribute.live-video.net/app/{stream_key}", + "priority": 23 + }, + { + "_id": 24, + "availability": 1.0, + "default": false, + "name": "US West: San Jose, California (6)", + "url_template": "rtmp://sjc06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sjc06.contribute.live-video.net/app/{stream_key}", + "priority": 24 + }, + { + "_id": 25, + "availability": 1.0, + "default": false, + "name": "Europe: Norway, Oslo", + "url_template": "rtmp://osl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osl.contribute.live-video.net/app/{stream_key}", + "priority": 25 + }, + { + "_id": 26, + "availability": 1.0, + "default": false, + "name": "Europe: Poland, Warsaw (2)", + "url_template": "rtmp://waw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://waw02.contribute.live-video.net/app/{stream_key}", + "priority": 26 + }, + { + "_id": 27, + "availability": 1.0, + "default": false, + "name": "Europe: Denmark, Copenhagen", + "url_template": "rtmp://cph.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cph.contribute.live-video.net/app/{stream_key}", + "priority": 27 + }, + { + "_id": 28, + "availability": 1.0, + "default": false, + "name": "US West: Los Angeles, CA", + "url_template": "rtmp://lax.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lax.contribute.live-video.net/app/{stream_key}", + "priority": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Czech Republic, Prague", + "url_template": "rtmp://prg03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://prg03.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "availability": 1.0, + "default": false, + "name": "Europe: Austria, Vienna (2)", + "url_template": "rtmp://vie02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://vie02.contribute.live-video.net/app/{stream_key}", + "priority": 30 + }, + { + "_id": 31, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (3)", + "url_template": "rtmp://ams03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams03.contribute.live-video.net/app/{stream_key}", + "priority": 31 + }, + { + "_id": 32, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (2)", + "url_template": "rtmp://ams02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams02.contribute.live-video.net/app/{stream_key}", + "priority": 32 + }, + { + "_id": 33, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Dusseldorf (1)", + "url_template": "rtmp://dus01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dus01.contribute.live-video.net/app/{stream_key}", + "priority": 33 + }, + { + "_id": 34, + "availability": 1.0, + "default": false, + "name": "US Central: Denver, CO (52)", + "url_template": "rtmp://den52.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://den52.contribute.live-video.net/app/{stream_key}", + "priority": 34 + }, + { + "_id": 35, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Munich (1)", + "url_template": "rtmp://muc01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://muc01.contribute.live-video.net/app/{stream_key}", + "priority": 35 + }, + { + "_id": 36, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (8)", + "url_template": "rtmp://lhr08.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr08.contribute.live-video.net/app/{stream_key}", + "priority": 36 + }, + { + "_id": 37, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (3)", + "url_template": "rtmp://lhr03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr03.contribute.live-video.net/app/{stream_key}", + "priority": 37 + }, + { + "_id": 38, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (2)", + "url_template": "rtmp://cdg02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg02.contribute.live-video.net/app/{stream_key}", + "priority": 38 + }, + { + "_id": 39, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (10)", + "url_template": "rtmp://cdg10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg10.contribute.live-video.net/app/{stream_key}", + "priority": 39 + }, + { + "_id": 40, + "availability": 1.0, + "default": false, + "name": "Europe: Italy, Milan (2)", + "url_template": "rtmp://mil02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mil02.contribute.live-video.net/app/{stream_key}", + "priority": 40 + }, + { + "_id": 41, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (5)", + "url_template": "rtmp://fra05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra05.contribute.live-video.net/app/{stream_key}", + "priority": 41 + }, + { + "_id": 42, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (2)", + "url_template": "rtmp://fra02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra02.contribute.live-video.net/app/{stream_key}", + "priority": 42 + }, + { + "_id": 43, + "availability": 1.0, + "default": false, + "name": "Europe: France, Marseille (2)", + "url_template": "rtmp://mrs02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mrs02.contribute.live-video.net/app/{stream_key}", + "priority": 43 + }, + { + "_id": 44, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (3)", + "url_template": "rtmp://ord03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord03.contribute.live-video.net/app/{stream_key}", + "priority": 44 + }, + { + "_id": 45, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (56)", + "url_template": "rtmp://ord56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord56.contribute.live-video.net/app/{stream_key}", + "priority": 45 + }, + { + "_id": 46, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Toronto", + "url_template": "rtmp://yto.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://yto.contribute.live-video.net/app/{stream_key}", + "priority": 46 + }, + { + "_id": 47, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Quebec", + "url_template": "rtmp://ymq03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ymq03.contribute.live-video.net/app/{stream_key}", + "priority": 47 + }, + { + "_id": 48, + "availability": 1.0, + "default": false, + "name": "US Central: Garland, TX (56)", + "url_template": "rtmp://dfw56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw56.contribute.live-video.net/app/{stream_key}", + "priority": 48 + }, + { + "_id": 49, + "availability": 1.0, + "default": false, + "name": "US Central: Dallas, TX (2)", + "url_template": "rtmp://dfw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw02.contribute.live-video.net/app/{stream_key}", + "priority": 49 + }, + { + "_id": 50, + "availability": 1.0, + "default": false, + "name": "US Central: Houston, TX (50)", + "url_template": "rtmp://iah50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iah50.contribute.live-video.net/app/{stream_key}", + "priority": 50 + }, + { + "_id": 51, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (2)", + "url_template": "rtmp://mad02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad02.contribute.live-video.net/app/{stream_key}", + "priority": 51 + }, + { + "_id": 52, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (1)", + "url_template": "rtmp://mad01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad01.contribute.live-video.net/app/{stream_key}", + "priority": 52 + }, + { + "_id": 53, + "availability": 1.0, + "default": false, + "name": "US East: McAllen, TX (1)", + "url_template": "rtmp://mfe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mfe01.contribute.live-video.net/app/{stream_key}", + "priority": 53 + }, + { + "_id": 54, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY (50)", + "url_template": "rtmp://jfk50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk50.contribute.live-video.net/app/{stream_key}", + "priority": 54 + }, + { + "_id": 55, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY", + "url_template": "rtmp://jfk.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk.contribute.live-video.net/app/{stream_key}", + "priority": 55 + }, + { + "_id": 56, + "availability": 1.0, + "default": false, + "name": "US East: Ashburn, VA (5)", + "url_template": "rtmp://iad05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iad05.contribute.live-video.net/app/{stream_key}", + "priority": 56 + }, + { + "_id": 57, + "availability": 1.0, + "default": false, + "name": "US East: Atlanta, GA", + "url_template": "rtmp://atl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://atl.contribute.live-video.net/app/{stream_key}", + "priority": 57 + }, + { + "_id": 58, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (4)", + "url_template": "rtmp://qro04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro04.contribute.live-video.net/app/{stream_key}", + "priority": 58 + }, + { + "_id": 59, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (3)", + "url_template": "rtmp://qro03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro03.contribute.live-video.net/app/{stream_key}", + "priority": 59 + }, + { + "_id": 60, + "availability": 1.0, + "default": false, + "name": "US East: Miami, FL (5)", + "url_template": "rtmp://mia05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mia05.contribute.live-video.net/app/{stream_key}", + "priority": 60 + }, + { + "_id": 61, + "availability": 1.0, + "default": false, + "name": "South America: Colombia, Bogota (1)", + "url_template": "rtmp://bog01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bog01.contribute.live-video.net/app/{stream_key}", + "priority": 61 + }, + { + "_id": 62, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Fortaleza (1)", + "url_template": "rtmp://for01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://for01.contribute.live-video.net/app/{stream_key}", + "priority": 62 + }, + { + "_id": 63, + "availability": 1.0, + "default": false, + "name": "South America : chile, Santiago (1)", + "url_template": "rtmp://scl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://scl01.contribute.live-video.net/app/{stream_key}", + "priority": 63 + }, + { + "_id": 64, + "availability": 1.0, + "default": false, + "name": "South America: Buenos Aires, Argentina (1)", + "url_template": "rtmp://bue01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bue01.contribute.live-video.net/app/{stream_key}", + "priority": 64 + }, + { + "_id": 65, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (5)", + "url_template": "rtmp://sao05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao05.contribute.live-video.net/app/{stream_key}", + "priority": 65 + }, + { + "_id": 66, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo", + "url_template": "rtmp://sao03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao03.contribute.live-video.net/app/{stream_key}", + "priority": 66 + }, + { + "_id": 67, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (4)", + "url_template": "rtmp://rio04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio04.contribute.live-video.net/app/{stream_key}", + "priority": 67 + }, + { + "_id": 68, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (3)", + "url_template": "rtmp://rio03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio03.contribute.live-video.net/app/{stream_key}", + "priority": 68 + } + ] +} diff --git a/dotfiles/.config/obs-studio/plugin_config/rtmp-services/package.json b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/package.json new file mode 100644 index 0000000..7a60fe0 --- /dev/null +++ b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/package.json @@ -0,0 +1,11 @@ +{ + "$schema": "schema/package-schema.json", + "url": "https://obsproject.com/obs2_update/rtmp-services/v5", + "version": 268, + "files": [ + { + "name": "services.json", + "version": 268 + } + ] +} diff --git a/dotfiles/.config/obs-studio/plugin_config/rtmp-services/services.json b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/services.json new file mode 100644 index 0000000..3ddd184 --- /dev/null +++ b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/services.json @@ -0,0 +1,3586 @@ +{ + "$schema": "schema/service-schema-v5.json", + "format_version": 5, + "services": [ + { + "name": "Twitch", + "common": true, + "stream_key_link": "https://dashboard.twitch.tv/settings/stream", + "multitrack_video_configuration_url": "https://ingest.twitch.tv/api/v3/GetClientConfiguration", + "multitrack_video_name": "Enhanced Broadcasting", + "multitrack_video_learn_more_link": "https://help.twitch.tv/s/article/multiple-encodes", + "servers": [ + { + "name": "Asia: Hong Kong", + "url": "rtmp://live-hkg.twitch.tv/app" + }, + { + "name": "Asia: Seoul, South Korea", + "url": "rtmp://live-sel.twitch.tv/app" + }, + { + "name": "Asia: Singapore", + "url": "rtmp://live-sin.twitch.tv/app" + }, + { + "name": "Asia: Taipei, Taiwan", + "url": "rtmp://live-tpe.twitch.tv/app" + }, + { + "name": "Asia: Tokyo, Japan", + "url": "rtmp://live-tyo.twitch.tv/app" + }, + { + "name": "Australia: Sydney", + "url": "rtmp://live-syd.twitch.tv/app" + }, + { + "name": "EU: Amsterdam, NL", + "url": "rtmp://live-ams.twitch.tv/app" + }, + { + "name": "EU: Berlin, DE", + "url": "rtmp://live-ber.twitch.tv/app" + }, + { + "name": "Europe: Copenhagen, DK", + "url": "rtmp://live-cph.twitch.tv/app" + }, + { + "name": "EU: Frankfurt, DE", + "url": "rtmp://live-fra.twitch.tv/app" + }, + { + "name": "EU: Helsinki, FI", + "url": "rtmp://live-hel.twitch.tv/app" + }, + { + "name": "EU: Lisbon, Portugal", + "url": "rtmp://live-lis.twitch.tv/app" + }, + { + "name": "EU: London, UK", + "url": "rtmp://live-lhr.twitch.tv/app" + }, + { + "name": "EU: Madrid, Spain", + "url": "rtmp://live-mad.twitch.tv/app" + }, + { + "name": "EU: Marseille, FR", + "url": "rtmp://live-mrs.twitch.tv/app" + }, + { + "name": "EU: Milan, Italy", + "url": "rtmp://live-mil.twitch.tv/app" + }, + { + "name": "EU: Norway, Oslo", + "url": "rtmp://live-osl.twitch.tv/app" + }, + { + "name": "EU: Paris, FR", + "url": "rtmp://live-cdg.twitch.tv/app" + }, + { + "name": "EU: Prague, CZ", + "url": "rtmp://live-prg.twitch.tv/app" + }, + { + "name": "EU: Stockholm, SE", + "url": "rtmp://live-arn.twitch.tv/app" + }, + { + "name": "EU: Vienna, Austria", + "url": "rtmp://live-vie.twitch.tv/app" + }, + { + "name": "EU: Warsaw, Poland", + "url": "rtmp://live-waw.twitch.tv/app" + }, + { + "name": "NA: Mexico City", + "url": "rtmp://live-qro.twitch.tv/app" + }, + { + "name": "NA: Quebec, Canada", + "url": "rtmp://live-ymq.twitch.tv/app" + }, + { + "name": "NA: Toronto, Canada", + "url": "rtmp://live-yto.twitch.tv/app" + }, + { + "name": "South America: Argentina", + "url": "rtmp://live-eze.twitch.tv/app" + }, + { + "name": "South America: Chile", + "url": "rtmp://live-scl.twitch.tv/app" + }, + { + "name": "South America: Lima, Peru", + "url": "rtmp://live-lim.twitch.tv/app" + }, + { + "name": "South America: Medellin, Colombia", + "url": "rtmp://live-mde.twitch.tv/app" + }, + { + "name": "South America: Rio de Janeiro, Brazil", + "url": "rtmp://live-rio.twitch.tv/app" + }, + { + "name": "South America: Sao Paulo, Brazil", + "url": "rtmp://live-sao.twitch.tv/app" + }, + { + "name": "US Central: Dallas, TX", + "url": "rtmp://live-dfw.twitch.tv/app" + }, + { + "name": "US Central: Denver, CO", + "url": "rtmp://live-den.twitch.tv/app" + }, + { + "name": "US Central: Houston, TX", + "url": "rtmp://live-hou.twitch.tv/app" + }, + { + "name": "US Central: Salt Lake City, UT", + "url": "rtmp://live-slc.twitch.tv/app" + }, + { + "name": "US East: Ashburn, VA", + "url": "rtmp://live-iad.twitch.tv/app" + }, + { + "name": "US East: Atlanta, GA", + "url": "rtmp://live-atl.twitch.tv/app" + }, + { + "name": "US East: Chicago", + "url": "rtmp://live-ord.twitch.tv/app" + }, + { + "name": "US East: Miami, FL", + "url": "rtmp://live-mia.twitch.tv/app" + }, + { + "name": "US East: New York, NY", + "url": "rtmp://live-jfk.twitch.tv/app" + }, + { + "name": "US West: Los Angeles, CA", + "url": "rtmp://live-lax.twitch.tv/app" + }, + { + "name": "US West: Phoenix, AZ", + "url": "rtmp://live-phx.twitch.tv/app" + }, + { + "name": "US West: Portland, Oregon", + "url": "rtmp://live-pdx.twitch.tv/app" + }, + { + "name": "US West: San Francisco, CA", + "url": "rtmp://live-sfo.twitch.tv/app" + }, + { + "name": "US West: San Jose, CA", + "url": "rtmp://live-sjc.twitch.tv/app" + }, + { + "name": "US West: Seattle, WA", + "url": "rtmp://live-sea.twitch.tv/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "YouTube - HLS", + "common": false, + "more_info_link": "https://developers.google.com/youtube/v3/live/guides/ingestion-protocol-comparison", + "stream_key_link": "https://www.youtube.com/live_dashboard", + "protocol": "HLS", + "supported video codecs": [ + "h264", + "hevc" + ], + "servers": [ + { + "name": "Primary YouTube ingest server", + "url": "https://a.upload.youtube.com/http_upload_hls?cid={stream_key}©=0&file=out.m3u8" + }, + { + "name": "Backup YouTube ingest server", + "url": "https://b.upload.youtube.com/http_upload_hls?cid={stream_key}©=1&file=out.m3u8" + } + ], + "recommended": { + "keyint": 2, + "output": "ffmpeg_hls_muxer", + "max video bitrate": 51000, + "max audio bitrate": 160 + } + }, + { + "name": "YouTube - RTMPS", + "common": true, + "stream_key_link": "https://www.youtube.com/live_dashboard", + "alt_names": [ + "YouTube / YouTube Gaming", + "YouTube - RTMP", + "YouTube - RTMPS (Beta)" + ], + "supported video codecs": [ + "h264", + "hevc", + "av1" + ], + "servers": [ + { + "name": "Primary YouTube ingest server", + "url": "rtmps://a.rtmps.youtube.com:443/live2" + }, + { + "name": "Backup YouTube ingest server", + "url": "rtmps://b.rtmps.youtube.com:443/live2?backup=1" + }, + { + "name": "Primary YouTube ingest server (legacy RTMP)", + "url": "rtmp://a.rtmp.youtube.com/live2" + }, + { + "name": "Backup YouTube ingest server (legacy RTMP)", + "url": "rtmp://b.rtmp.youtube.com/live2?backup=1" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 51000, + "max audio bitrate": 160 + } + }, + { + "name": "Loola.tv", + "common": false, + "servers": [ + { + "name": "US East: Virginia", + "url": "rtmp://rtmp.loola.tv/push" + }, + { + "name": "EU Central: Germany", + "url": "rtmp://rtmp-eu.loola.tv/push" + }, + { + "name": "South America: Brazil", + "url": "rtmp://rtmp-sa.loola.tv/push" + }, + { + "name": "Asia/Pacific: Singapore", + "url": "rtmp://rtmp-sg.loola.tv/push" + }, + { + "name": "Middle East: Bahrain", + "url": "rtmp://rtmp-me.loola.tv/push" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max video bitrate": 2500, + "max audio bitrate": 160, + "bframes": 2, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Lovecast", + "servers": [ + { + "name": "Default", + "url": "rtmp://live-a.lovecastapp.com:5222/app" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 8000, + "max audio bitrate": 192, + "supported resolutions": [ + "1920x1080", + "1280x720" + ], + "max fps": 30 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Luzento.com - RTMP", + "stream_key_link": "https://cms.luzento.com/dashboard/stream-key?from=OBS", + "servers": [ + { + "name": "Primary", + "url": "rtmp://ingest.luzento.com/live" + }, + { + "name": "Primary (Test)", + "url": "rtmp://ingest.luzento.com/test" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 256, + "bframes": 2, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Web.TV", + "servers": [ + { + "name": "Primary", + "url": "rtmp://live3.origins.web.tv/liveext" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 3500, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "GoodGame.ru", + "servers": [ + { + "name": "Моscow", + "url": "rtmp://msk.goodgame.ru:1940/live" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Vaughn Live / iNSTAGIB", + "servers": [ + { + "name": "US: Vint Hill, VA", + "url": "rtmp://live-iad.vaughnsoft.net/live" + }, + { + "name": "US: Vint Hill, VA #2", + "url": "rtmp://live-iad2.vaughnsoft.net/live" + }, + { + "name": "US: Dallas, TX", + "url": "rtmp://live-dfw.vaughnsoft.net/live" + }, + { + "name": "US: Denver, CO", + "url": "rtmp://live-den.vaughnsoft.net/live" + }, + { + "name": "US: New York, NY", + "url": "rtmp://live-nyc.vaughnsoft.net/live" + }, + { + "name": "US: Miami, FL", + "url": "rtmp://live-mia.vaughnsoft.net/live" + }, + { + "name": "US: Seattle, WA", + "url": "rtmp://live-sea.vaughnsoft.net/live" + }, + { + "name": "CA: Toronto", + "url": "rtmp://live-tor.vaughnsoft.net/live" + }, + { + "name": "EU: Amsterdam, NL", + "url": "rtmp://live-ams.vaughnsoft.net/live" + }, + { + "name": "EU: London, UK", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + }, + { + "name": "EU: Paris, FR", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + }, + { + "name": "Tokyo, JP", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 15000, + "max audio bitrate": 320 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Breakers.TV", + "servers": [ + { + "name": "US: Vint Hill, VA", + "url": "rtmp://live-iad.vaughnsoft.net/live" + }, + { + "name": "US: Vint Hill, VA #2", + "url": "rtmp://live-iad2.vaughnsoft.net/live" + }, + { + "name": "US: Dallas, TX", + "url": "rtmp://live-dfw.vaughnsoft.net/live" + }, + { + "name": "US: Denver, CO", + "url": "rtmp://live-den.vaughnsoft.net/live" + }, + { + "name": "US: New York, NY", + "url": "rtmp://live-nyc.vaughnsoft.net/live" + }, + { + "name": "US: Miami, FL", + "url": "rtmp://live-mia.vaughnsoft.net/live" + }, + { + "name": "US: Seattle, WA", + "url": "rtmp://live-sea.vaughnsoft.net/live" + }, + { + "name": "CA: Toronto", + "url": "rtmp://live-tor.vaughnsoft.net/live" + }, + { + "name": "EU: Amsterdam, NL", + "url": "rtmp://live-ams.vaughnsoft.net/live" + }, + { + "name": "EU: London, UK", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + }, + { + "name": "EU: Paris, FR", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + }, + { + "name": "Tokyo, JP", + "url": "rtmp://live-lhr.vaughnsoft.net/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 15000, + "max audio bitrate": 320 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Facebook Live", + "common": true, + "stream_key_link": "https://www.facebook.com/live/producer?ref=OBS", + "servers": [ + { + "name": "Default", + "url": "rtmps://rtmp-api.facebook.com:443/rtmp/" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "supported resolutions": [ + "1920x1080", + "1280x720", + "852x480", + "640x360" + ], + "bitrate matrix": [ + { + "res": "640x360", + "fps": 30, + "max bitrate": 1000 + }, + { + "res": "640x360", + "fps": 60, + "max bitrate": 1500 + }, + { + "res": "852x480", + "fps": 30, + "max bitrate": 2000 + }, + { + "res": "852x480", + "fps": 60, + "max bitrate": 3000 + }, + { + "res": "1280x720", + "fps": 30, + "max bitrate": 4000 + }, + { + "res": "1280x720", + "fps": 60, + "max bitrate": 6000 + }, + { + "res": "1920x1080", + "fps": 30, + "max bitrate": 6000 + }, + { + "res": "1920x1080", + "fps": 60, + "max bitrate": 9000 + } + ], + "max fps": 60, + "max video bitrate": 9000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Restream.io", + "alt_names": [ + "Restream.io - RTMP", + "Restream.io - FTL" + ], + "common": true, + "stream_key_link": "https://restream.io/settings/streaming-setup?from=OBS", + "servers": [ + { + "name": "Autodetect", + "url": "rtmp://live.restream.io/live" + }, + { + "name": "EU-West (London, GB)", + "url": "rtmp://london.restream.io/live" + }, + { + "name": "EU-West (Amsterdam, NL)", + "url": "rtmp://amsterdam.restream.io/live" + }, + { + "name": "EU-West (Paris, FR)", + "url": "rtmp://paris.restream.io/live" + }, + { + "name": "EU-Central (Frankfurt, DE)", + "url": "rtmp://frankfurt.restream.io/live" + }, + { + "name": "EU-South (Madrid, Spain)", + "url": "rtmp://madrid.restream.io/live" + }, + { + "name": "Turkey (Istanbul)", + "url": "rtmp://istanbul.restream.io/live" + }, + { + "name": "US-West (Seattle, WA)", + "url": "rtmp://seattle.restream.io/live" + }, + { + "name": "US-West (San Jose, CA)", + "url": "rtmp://sanjose.restream.io/live" + }, + { + "name": "US-Central (Dallas, TX)", + "url": "rtmp://dallas.restream.io/live" + }, + { + "name": "US-East (Chicago, IL)", + "url": "rtmp://chicago.restream.io/live" + }, + { + "name": "US-East (New York, NY)", + "url": "rtmp://newyork.restream.io/live" + }, + { + "name": "US-East (Washington, DC)", + "url": "rtmp://washington.restream.io/live" + }, + { + "name": "NA-East (Toronto, Canada)", + "url": "rtmp://toronto.restream.io/live" + }, + { + "name": "SA (Saint Paul, Brazil)", + "url": "rtmp://saopaulo.restream.io/live" + }, + { + "name": "India (Bangalore)", + "url": "rtmp://bangalore.restream.io/live" + }, + { + "name": "Asia (Hong Kong)", + "url": "rtmp://hongkong.restream.io/live" + }, + { + "name": "Asia (Singapore)", + "url": "rtmp://singapore.restream.io/live" + }, + { + "name": "Asia (Seoul, South Korea)", + "url": "rtmp://seoul.restream.io/live" + }, + { + "name": "Asia (Tokyo, Japan)", + "url": "rtmp://tokyo.restream.io/live" + }, + { + "name": "Australia (Sydney)", + "url": "rtmp://sydney.restream.io/live" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Castr.io", + "servers": [ + { + "name": "US-East (Chicago, IL)", + "url": "rtmp://cg.castr.io/static" + }, + { + "name": "US-East (New York, NY)", + "url": "rtmp://ny.castr.io/static" + }, + { + "name": "US-East (Miami, FL)", + "url": "rtmp://mi.castr.io/static" + }, + { + "name": "US-West (Seattle, WA)", + "url": "rtmp://se.castr.io/static" + }, + { + "name": "US-West (Los Angeles, CA)", + "url": "rtmp://la.castr.io/static" + }, + { + "name": "US-Central (Dallas, TX)", + "url": "rtmp://da.castr.io/static" + }, + { + "name": "NA-East (Toronto, CA)", + "url": "rtmp://qc.castr.io/static" + }, + { + "name": "Mexico", + "url": "rtmp://mexico.castr.io/static" + }, + { + "name": "Sao Paulo, BR", + "url": "rtmp://br.castr.io/static" + }, + { + "name": "Colombia", + "url": "rtmp://bogota.castr.io/static" + }, + { + "name": "Santiago, Chile", + "url": "rtmp://santiago.castr.io/static" + }, + { + "name": "Istanbul, TR", + "url": "rtmp://istanbul.castr.io/static" + }, + { + "name": "Tel Aviv, IL", + "url": "rtmp://telaviv.castr.io/static" + }, + { + "name": "EU-West (London, UK)", + "url": "rtmp://uk.castr.io/static" + }, + { + "name": "EU-West (Paris, FR)", + "url": "rtmp://paris.castr.io/static" + }, + { + "name": "EU-West (Madrid, ES)", + "url": "rtmp://madrid.castr.io/static" + }, + { + "name": "EU-Central (Frankfurt, DE)", + "url": "rtmp://fr.castr.io/static" + }, + { + "name": "EU-Central (Milan, IT)", + "url": "rtmp://milan.castr.io/static" + }, + { + "name": "EU-North (Stockholm, SE)", + "url": "rtmp://stockholm.castr.io/static" + }, + { + "name": "EU-North (Copenhagen, DK)", + "url": "rtmp://copenhagen.castr.io/static" + }, + { + "name": "Russia (Moscow)", + "url": "rtmp://ru.castr.io/static" + }, + { + "name": "Asia (Singapore)", + "url": "rtmp://sg.castr.io/static" + }, + { + "name": "Asia (Hong Kong, HK)", + "url": "rtmp://hongkong.castr.io/static" + }, + { + "name": "Asia (India)", + "url": "rtmp://in.castr.io/static" + }, + { + "name": "Australia (Sydney)", + "url": "rtmp://au.castr.io/static" + }, + { + "name": "UAE (Dubai)", + "url": "rtmp://dubai.castr.io/static" + }, + { + "name": "Africa (Johannesburg, ZA)", + "url": "rtmp://southafrica.castr.io/static" + }, + { + "name": "Africa (Lagos, NG)", + "url": "rtmp://lagos.castr.io/static" + }, + { + "name": "US Central", + "url": "rtmp://us-central.castr.io/static" + }, + { + "name": "US West", + "url": "rtmp://us-west.castr.io/static" + }, + { + "name": "US East", + "url": "rtmp://us-east.castr.io/static" + }, + { + "name": "US South", + "url": "rtmp://us-south.castr.io/static" + }, + { + "name": "South America", + "url": "rtmp://south-am.castr.io/static" + }, + { + "name": "EU Central", + "url": "rtmp://eu-central.castr.io/static" + }, + { + "name": "Singapore", + "url": "rtmp://sg-central.castr.io/static" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Boomstream", + "servers": [ + { + "name": "Default", + "url": "rtmp://live.boomstream.com/live" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Meridix Live Sports Platform", + "servers": [ + { + "name": "Primary", + "url": "rtmp://publish.meridix.com/live" + } + ], + "recommended": { + "max video bitrate": 3500 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "AfreecaTV", + "alt_names": [ + "아프리카TV", + "Afreeca.TV" + ], + "servers": [ + { + "name": "Asia : Korea", + "url": "rtmp://rtmpmanager-freecat.afreeca.tv/app" + }, + { + "name": "North America : US East", + "url": "rtmp://rtmp-esu.afreecatv.com/app" + }, + { + "name": "North America : US West", + "url": "rtmp://rtmp-wsu.afreecatv.com/app" + }, + { + "name": "South America : Brazil", + "url": "rtmp://rtmp-brz.afreecatv.com/app" + }, + { + "name": "Europe : UK", + "url": "rtmp://rtmp-uk.afreecatv.com/app" + }, + { + "name": "Asia : Singapore", + "url": "rtmp://rtmp-sgp.afreecatv.com/app" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 8000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "CAM4", + "servers": [ + { + "name": "CAM4", + "url": "rtmp://origin.cam4.com/cam4-origin-live" + } + ], + "recommended": { + "keyint": 1, + "profile": "baseline", + "max video bitrate": 3000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "ePlay", + "servers": [ + { + "name": "ePlay Primary", + "url": "rtmp://live.eplay.link/origin" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 7500, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Picarto", + "servers": [ + { + "name": "Autoselect closest server", + "url": "rtmp://live.us.picarto.tv/golive" + }, + { + "name": "Los Angeles, USA", + "url": "rtmp://live.us-losangeles.picarto.tv/golive" + }, + { + "name": "Dallas, USA", + "url": "rtmp://live.us-dallas.picarto.tv/golive" + }, + { + "name": "Miami, USA", + "url": "rtmp://live.us-miami.picarto.tv/golive" + }, + { + "name": "New York, USA", + "url": "rtmp://live.us-newyork.picarto.tv/golive" + }, + { + "name": "Europe", + "url": "rtmp://live.eu-west1.picarto.tv/golive" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 3500 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Livestream", + "servers": [ + { + "name": "Primary", + "url": "rtmp://rtmpin.livestreamingest.com/rtmpin" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Uscreen", + "servers": [ + { + "name": "Default", + "url": "rtmp://global-live.uscreen.app:5222/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 8000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Stripchat", + "servers": [ + { + "name": "Auto", + "url": "rtmp://live.doppiocdn.com/ext" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "bframes": 0, + "max video bitrate": 6000, + "max audio bitrate": 128, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "CamSoda", + "servers": [ + { + "name": "North America", + "url": "rtmp://obs-ingest-na.livemediahost.com/cam_obs" + }, + { + "name": "South America", + "url": "rtmp://obs-ingest-sa.livemediahost.com/cam_obs" + }, + { + "name": "Asia", + "url": "rtmp://obs-ingest-as.livemediahost.com/cam_obs" + }, + { + "name": "Europe", + "url": "rtmp://obs-ingest-eu.livemediahost.com/cam_obs" + }, + { + "name": "Oceania", + "url": "rtmp://obs-ingest-oc.livemediahost.com/cam_obs" + } + ], + "recommended": { + "supported resolutions": [ + "1920x1080", + "1280x720", + "852x480", + "480x360" + ], + "max fps": 30, + "max video bitrate": 6000, + "max audio bitrate": 160, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Chaturbate", + "stream_key_link": "https://chaturbate.com/b/?useExternalSoftware=true", + "more_info_link": "https://support.chaturbate.com/hc/en-us/articles/360037971952-How-do-I-set-up-OBS", + "servers": [ + { + "name": "Global Main Fastest - Recommended", + "url": "rtmp://global.live.mmcdn.com/live-origin" + }, + { + "name": "Global Backup", + "url": "rtmp://global-backup.live.mmcdn.com/live-origin" + }, + { + "name": "Asia: Mumbai, India", + "url": "rtmp://bom.live.mmcdn.com/live-origin" + }, + { + "name": "Asia: Singapore", + "url": "rtmp://sin.live.mmcdn.com/live-origin" + }, + { + "name": "Asia: Taiwan", + "url": "rtmp://tsa.live.mmcdn.com/live-origin" + }, + { + "name": "Asia: Tokyo, Japan", + "url": "rtmp://nrt.live.mmcdn.com/live-origin" + }, + { + "name": "Australasia: Sydney, Australia", + "url": "rtmp://syd.live.mmcdn.com/live-origin" + }, + { + "name": "EU East: Sofia, Bulgaria", + "url": "rtmp://sof.live.mmcdn.com/live-origin" + }, + { + "name": "EU East: Warsaw, Poland", + "url": "rtmp://waw.live.mmcdn.com/live-origin" + }, + { + "name": "EU North: Helsinki, Finland", + "url": "rtmp://hel.live.mmcdn.com/live-origin" + }, + { + "name": "EU West: Amsterdam, Netherlands", + "url": "rtmp://ams.live.mmcdn.com/live-origin" + }, + { + "name": "EU West: Frankfurt, Germany", + "url": "rtmp://fra.live.mmcdn.com/live-origin" + }, + { + "name": "EU West: Madrid, Spain", + "url": "rtmp://mad.live.mmcdn.com/live-origin" + }, + { + "name": "EU West: Milan, Italy", + "url": "rtmp://mxp.live.mmcdn.com/live-origin" + }, + { + "name": "EU West: Rotterdam, Netherlands", + "url": "rtmp://rtm.live.mmcdn.com/live-origin" + }, + { + "name": "South America: Bogota, Colombia", + "url": "rtmp://bog.live.mmcdn.com/live-origin" + }, + { + "name": "South America: Sao Paulo, Brazil", + "url": "rtmp://gru.live.mmcdn.com/live-origin" + }, + { + "name": "US Central: Austin, TX", + "url": "rtmp://aus.live.mmcdn.com/live-origin" + }, + { + "name": "US Central: Chicago, IL", + "url": "rtmp://chi.live.mmcdn.com/live-origin" + }, + { + "name": "US East: Ashburn, VA", + "url": "rtmp://ash.live.mmcdn.com/live-origin" + }, + { + "name": "US East: Atlanta, GA", + "url": "rtmp://atl.live.mmcdn.com/live-origin" + }, + { + "name": "US East: Miami, FL", + "url": "rtmp://mia.live.mmcdn.com/live-origin" + }, + { + "name": "US West: Los Angeles, CA", + "url": "rtmp://lax.live.mmcdn.com/live-origin" + }, + { + "name": "US West: Phoenix, AZ", + "url": "rtmp://phx.live.mmcdn.com/live-origin" + }, + { + "name": "US West: Salt Lake City, UT", + "url": "rtmp://slc.live.mmcdn.com/live-origin" + }, + { + "name": "US West: Seattle, WA", + "url": "rtmp://sea.live.mmcdn.com/live-origin" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 50000, + "max audio bitrate": 192, + "supported resolutions": [ + "3840x2160", + "2560x1440", + "1920x1080", + "1280x720", + "960x540", + "852x480", + "640x360" + ], + "max fps": 60 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "WpStream", + "more_info_link": "https://wpstream.net/obs-more-info", + "stream_key_link": "https://wpstream.net/obs-get-stream-key", + "servers": [ + { + "name": "Closest server - Automatic", + "url": "rtmp://ingest.wpstream.net/golive" + }, + { + "name": "North America", + "url": "rtmp://ingest-na.wpstream.net/golive" + }, + { + "name": "Europe", + "url": "rtmp://ingest-eu.wpstream.net/golive" + }, + { + "name": "Asia", + "url": "rtmp://ingest-as.wpstream.net/golive" + }, + { + "name": "South America", + "url": "rtmp://ingest-sa.wpstream.net/golive" + }, + { + "name": "Australia & Oceania", + "url": "rtmp://ingest-au.wpstream.net/golive" + } + ], + "recommended": { + "keyint": 2, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Twitter", + "common": true, + "stream_key_link": "https://studio.twitter.com/producer/sources", + "alt_names": [ + "Twitter / Periscope" + ], + "servers": [ + { + "name": "US West: California", + "url": "rtmp://ca.pscp.tv:80/x" + }, + { + "name": "US West: Oregon", + "url": "rtmp://or.pscp.tv:80/x" + }, + { + "name": "US East: Virginia", + "url": "rtmp://va.pscp.tv:80/x" + }, + { + "name": "South America: Brazil", + "url": "rtmp://br.pscp.tv:80/x" + }, + { + "name": "EU West: France", + "url": "rtmp://fr.pscp.tv:80/x" + }, + { + "name": "EU West: Ireland", + "url": "rtmp://ie.pscp.tv:80/x" + }, + { + "name": "EU Central: Germany", + "url": "rtmp://de.pscp.tv:80/x" + }, + { + "name": "Asia/Pacific: Australia", + "url": "rtmp://au.pscp.tv:80/x" + }, + { + "name": "Asia/Pacific: India", + "url": "rtmp://in.pscp.tv:80/x" + }, + { + "name": "Asia/Pacific: Japan", + "url": "rtmp://jp.pscp.tv:80/x" + }, + { + "name": "Asia/Pacific: Korea", + "url": "rtmp://kr.pscp.tv:80/x" + }, + { + "name": "Asia/Pacific: Singapore", + "url": "rtmp://sg.pscp.tv:80/x" + } + ], + "recommended": { + "keyint": 3, + "max video bitrate": 12000, + "max audio bitrate": 128, + "max fps": 60 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Switchboard Live", + "alt_names": [ + "Switchboard Live (Joicaster)" + ], + "servers": [ + { + "name": "Default", + "url": "rtmps://live.sb.zone:443/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "high" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Eventials", + "servers": [ + { + "name": "Default", + "url": "rtmp://transmission.eventials.com/eventialsLiveOrigin" + } + ], + "recommended": { + "keyint": 1, + "profile": "baseline", + "max video bitrate": 900, + "max audio bitrate": 96 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "EventLive.pro", + "servers": [ + { + "name": "Default", + "url": "rtmp://go.eventlive.pro/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 3000, + "max audio bitrate": 192, + "supported resolutions": [ + "1920x1080", + "1280x720" + ], + "max fps": 30 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Lahzenegar - StreamG | لحظه‌نگار - استریمجی", + "servers": [ + { + "name": "Primary", + "url": "rtmp://rtmp.lahzecdn.com/pro" + }, + { + "name": "Iran", + "url": "rtmp://rtmp-iran.lahzecdn.com/pro" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 4000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "MyLive", + "servers": [ + { + "name": "Default", + "url": "rtmp://stream.mylive.in.th/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 7000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Trovo", + "alt_names": [ + "Madcat" + ], + "stream_key_link": "https://studio.trovo.live/mychannel/stream", + "servers": [ + { + "name": "Default", + "url": "rtmp://livepush.trovo.live/live/" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 9000, + "max audio bitrate": 160, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Mixcloud", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.mixcloud.com/broadcast" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 320, + "supported resolutions": [ + "1280x720", + "852x480", + "480x360" + ], + "max fps": 30, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "SermonAudio Cloud", + "alt_names": [ + "SermonAudio.com" + ], + "servers": [ + { + "name": "Primary", + "url": "rtmp://webcast.sermonaudio.com/sa" + } + ], + "recommended": { + "max video bitrate": 2000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Vimeo", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.cloud.vimeo.com/live" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Aparat", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.cdn.asset.aparat.com:443/event" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "KakaoTV", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.play.kakao.com/kakaotv" + } + ], + "recommended": { + "max video bitrate": 8000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Piczel.tv", + "servers": [ + { + "name": "Default", + "url": "rtmp://piczel.tv:1935/live" + } + ], + "recommended": { + "keyint": 4, + "max video bitrate": 2500, + "max audio bitrate": 256, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "STAGE TEN", + "servers": [ + { + "name": "STAGE TEN", + "url": "rtmps://app-rtmp.stageten.tv:443/stageten" + } + ], + "recommended": { + "keyint": 2, + "profile": "baseline", + "max video bitrate": 4000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "DLive", + "servers": [ + { + "name": "Default", + "url": "rtmp://stream.dlive.tv/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Lightcast.com", + "servers": [ + { + "name": "North America 1", + "url": "rtmp://ingest-na1.live.lightcast.com/in" + }, + { + "name": "North America 2", + "url": "rtmp://ingest-na2.live.lightcast.com/in" + }, + { + "name": "Europe", + "url": "rtmp://ingest-eu1.live.lightcast.com/in" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Bongacams", + "servers": [ + { + "name": "Automatic / Default", + "url": "rtmp://auto.origin.gnsbc.com:1934/live" + }, + { + "name": "Automatic / Backup", + "url": "rtmp://origin.bcvidorigin.com:1934/live" + }, + { + "name": "Europe", + "url": "rtmp://z-eu.origin.gnsbc.com:1934/live" + }, + { + "name": "North America", + "url": "rtmp://z-us.origin.gnsbc.com:1934/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 192, + "bframes": 0, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "OnlyFans.com", + "stream_key_link": "https://onlyfans.com/my/settings/other", + "servers": [ + { + "name": "CloudBeta", + "url": "rtmp://cloudbetastreaming.onlyfans.com/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 2500, + "max audio bitrate": 192, + "bframes": 0, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Steam", + "common": false, + "servers": [ + { + "name": "Default", + "url": "rtmp://ingest-rtmp.broadcast.steamcontent.com/app" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max video bitrate": 7000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Konduit.live", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.konduit.live/live" + } + ], + "recommended": { + "keyint": 2, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "LOCO", + "servers": [ + { + "name": "Default", + "url": "rtmp://ivory-ingest.getloconow.com:1935/stream" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "niconico, premium member (ニコニコ生放送 プレミアム会員)", + "servers": [ + { + "name": "Default", + "url": "rtmp://aliveorigin.dmc.nico/named_input" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max audio bitrate": 192, + "max video bitrate": 5808, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "niconico, free member (ニコニコ生放送 一般会員)", + "servers": [ + { + "name": "Default", + "url": "rtmp://aliveorigin.dmc.nico/named_input" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max audio bitrate": 96, + "max video bitrate": 904, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Nimo TV", + "servers": [ + { + "name": "Global:2", + "url": "rtmp://txpush.rtmp.nimo.tv/live/" + }, + { + "name": "Global:3", + "url": "rtmp://alpush.rtmp.nimo.tv/live/" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "XLoveCam.com", + "servers": [ + { + "name": "Europe(main)", + "url": "rtmp://nl.eu.stream.xlove.com/performer-origin" + }, + { + "name": "Europe(Romania)", + "url": "rtmp://ro.eu.stream.xlove.com/performer-origin" + }, + { + "name": "Europe(Russia)", + "url": "rtmp://ru.eu.stream.xlove.com/performer-origin" + }, + { + "name": "North America(US East)", + "url": "rtmp://usec.na.stream.xlove.com/performer-origin" + }, + { + "name": "North America(US West)", + "url": "rtmp://uswc.na.stream.xlove.com/performer-origin" + }, + { + "name": "North America(Canada)", + "url": "rtmp://ca.na.stream.xlove.com/performer-origin" + }, + { + "name": "South America", + "url": "rtmp://co.sa.stream.xlove.com/performer-origin" + }, + { + "name": "Asia", + "url": "rtmp://sg.as.stream.xlove.com/performer-origin" + } + ], + "recommended": { + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "AngelThump", + "servers": [ + { + "name": "Auto", + "url": "rtmp://ingest.angelthump.com/live" + }, + { + "name": "New York 3", + "url": "rtmp://nyc-ingest.angelthump.com:1935/live" + }, + { + "name": "San Francisco 2", + "url": "rtmp://sfo-ingest.angelthump.com:1935/live" + }, + { + "name": "Singapore 1", + "url": "rtmp://sgp-ingest.angelthump.com:1935/live" + }, + { + "name": "London 1", + "url": "rtmp://lon-ingest.angelthump.com:1935/live" + }, + { + "name": "Frankfurt 1", + "url": "rtmp://fra-ingest.angelthump.com:1935/live" + }, + { + "name": "Toronto 1", + "url": "rtmp://tor-ingest.angelthump.com:1935/live" + }, + { + "name": "Amsterdam 3", + "url": "rtmp://ams-ingest.angelthump.com:1935/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max video bitrate": 3500, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "api.video", + "servers": [ + { + "name": "Default", + "url": "rtmp://broadcast.api.video/s" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 20000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "SHOWROOM", + "protocol": "RTMP", + "servers": [ + { + "name": "Default", + "url": "https://www.showroom-live.com/api/obs/streaming_info?obs_key=" + } + ], + "recommended": { + "keyint": 2, + "profile": "main", + "max video bitrate": 1500, + "max audio bitrate": 160, + "x264opts": "tune=zerolatency" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Mux", + "servers": [ + { + "name": "Global (RTMPS)", + "url": "rtmps://global-live.mux.com:443/app" + }, + { + "name": "Global (RTMP)", + "url": "rtmp://global-live.mux.com:5222/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 5000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Viloud", + "servers": [ + { + "name": "Default", + "url": "rtmp://live.viloud.tv:5222/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 5000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "MyFreeCams", + "servers": [ + { + "name": "Automatic", + "url": "rtmp://publish.myfreecams.com/NxServer" + }, + { + "name": "Australia", + "url": "rtmp://publish-syd.myfreecams.com/NxServer" + }, + { + "name": "East Asia", + "url": "rtmp://publish-tyo.myfreecams.com/NxServer" + }, + { + "name": "Europe (East)", + "url": "rtmp://publish-buh.myfreecams.com/NxServer" + }, + { + "name": "Europe (West)", + "url": "rtmp://publish-ams.myfreecams.com/NxServer" + }, + { + "name": "North America (East Coast)", + "url": "rtmp://publish-ord.myfreecams.com/NxServer" + }, + { + "name": "North America (West Coast)", + "url": "rtmp://publish-tuk.myfreecams.com/NxServer" + }, + { + "name": "South America", + "url": "rtmp://publish-sao.myfreecams.com/NxServer" + } + ], + "recommended": { + "keyint": 1, + "profile": "high", + "max fps": 60, + "max video bitrate": 10000, + "max audio bitrate": 192, + "x264opts": "tune=zerolatency scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "PolyStreamer.com", + "servers": [ + { + "name": "Auto-select closest server", + "url": "rtmp://live.polystreamer.com/live" + }, + { + "name": "United States - West", + "url": "rtmp://us-west.live.polystreamer.com/live" + }, + { + "name": "United States - East", + "url": "rtmp://us-east.live.polystreamer.com/live" + }, + { + "name": "Australia", + "url": "rtmp://aus.live.polystreamer.com/live" + }, + { + "name": "India", + "url": "rtmp://ind.live.polystreamer.com/live" + }, + { + "name": "Germany", + "url": "rtmp://deu.live.polystreamer.com/live" + }, + { + "name": "Japan", + "url": "rtmp://jpn.live.polystreamer.com/live" + }, + { + "name": "Singapore", + "url": "rtmp://sgp.live.polystreamer.com/live" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "OPENREC.tv - Premium member (プレミアム会員)", + "stream_key_link": "https://www.openrec.tv/login?keep_login=true&url=https://www.openrec.tv/dashboard/live?from=obs", + "servers": [ + { + "name": "Default", + "url": "rtmp://a.station.openrec.tv:1935/live1" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 5000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "nanoStream Cloud / bintu", + "more_info_link": "https://www.nanocosmos.de/obs", + "stream_key_link": "https://bintu-cloud-frontend.nanocosmos.de/organisation", + "servers": [ + { + "name": "bintu-stream global ingest (rtmp)", + "url": "rtmp://bintu-stream.nanocosmos.de/live" + }, + { + "name": "bintu-stream global ingest (rtmps)", + "url": "rtmps://bintu-stream.nanocosmos.de:1937/live" + }, + { + "name": "bintu-vtrans global ingest with transcoding/ABR (rtmp)", + "url": "rtmp://bintu-vtrans.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans global ingest with transcoding/ABR (rtmps)", + "url": "rtmps://bintu-vtrans.nanocosmos.de:1937/live" + }, + { + "name": "bintu-stream Europe (EU)", + "url": "rtmp://bintu-stream-eu.nanocosmos.de/live" + }, + { + "name": "bintu-stream USA West (USW)", + "url": "rtmp://bintu-stream-usw.nanocosmos.de/live" + }, + { + "name": "bintu-stream US East (USE)", + "url": "rtmp://bintu-stream-use.nanocosmos.de/live" + }, + { + "name": "bintu-stream Asia South (ASS)", + "url": "rtmp://bintu-stream-ass.nanocosmos.de/live" + }, + { + "name": "bintu-stream Australia (AU)", + "url": "rtmp://bintu-stream-au.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans Europe (EU)", + "url": "rtmp://bintu-vtrans-eu.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans USA West (USW)", + "url": "rtmp://bintu-vtrans-usw.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans US East (USE)", + "url": "rtmp://bintu-vtrans-use.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans Asia South (ASS)", + "url": "rtmp://bintu-vtrans-ass.nanocosmos.de/live" + }, + { + "name": "bintu-vtrans Australia (AU)", + "url": "rtmp://bintu-vtrans-au.nanocosmos.de/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "baseline", + "bframes": 0, + "max video bitrate": 5000, + "max audio bitrate": 192, + "x264opts": "tune=zerolatency b-pyramid=0 scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Dacast", + "protocol": "RTMP", + "servers": [ + { + "name": "Default", + "url": "https://developer.dacast.com/v3/encoder-setup/" + } + ], + "recommended": { + "keyint": 1, + "profile": "high", + "max video bitrate": 7000, + "max audio bitrate": 128 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Bilibili Live - RTMP | 哔哩哔哩直播 - RTMP", + "more_info_link": "https://link.bilibili.com/p/help/index?id=4#/tools-tutorial", + "stream_key_link": "https://link.bilibili.com/p/center/index#/my-room/start-live", + "alt_names": [ + "Bilibili Live" + ], + "servers": [ + { + "name": "Global - Primary | 全球 - 主要", + "url": "rtmp://live-push.bilivideo.com/live-bvc/" + }, + { + "name": "Non Chinese Mainland - Primary | 非中国大陆地区 - 主要", + "url": "rtmp://bdy.live-push.bilivideo.com/live-bvc/" + }, + { + "name": "Chinese Mainland - Backup | 中国大陆地区 - 备用", + "url": "rtmp://txy2.live-push.bilivideo.com/live-bvc/" + }, + { + "name": "Non Chinese Mainland - Backup | 非中国大陆地区 - 备用", + "url": "rtmp://txy.live-push.bilivideo.com/live-bvc/" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Volume.com", + "stream_key_link": "https://volume.com/b?show_key=1&webrtc=0", + "servers": [ + { + "name": "Default - Recommended", + "url": "rtmp://live.volume.com/live-origin" + }, + { + "name": "US - West", + "url": "rtmp://live-pdx.volume.com/live-origin" + }, + { + "name": "US - East", + "url": "rtmp://live-ash.volume.com/live-origin" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 20000, + "max fps": 60 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "BoxCast", + "stream_key_link": "https://dashboard.boxcast.com/#/sources", + "servers": [ + { + "name": "BoxCast", + "url": "rtmp://rtmp.boxcast.com/live" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Disciple Media", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.disciplemedia.com/b-fme" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Jio Games", + "servers": [ + { + "name": "Primary", + "url": "rtmp://livepub1.api.engageapps.jio/live" + }, + { + "name": "Secondary", + "url": "rtmp://livepub2.api.engageapps.jio/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 32000, + "max audio bitrate": 256 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Kuaishou Live", + "stream_key_link": "https://studio.kuaishou.com/live/list", + "servers": [ + { + "name": "Default", + "url": "rtmp://open-push.voip.yximgs.com/gifshow/" + }, + { + "name": "North America", + "url": "rtmp://tx.push.yximgs.com/live/" + } + ], + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Playeur", + "alt_names": [ + "Utreon" + ], + "servers": [ + { + "name": "Default", + "url": "rtmp://live.playeur.com:5222/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 5000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "PhoneLiveStreaming", + "stream_key_link": "https://app.phonelivestreaming.com/media/rtmp", + "servers": [ + { + "name": "PhoneLiveStreaming", + "url": "rtmp://live.phonelivestreaming.com/live/" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 128, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Sympla", + "servers": [ + { + "name": "Sympla RTMP", + "url": "rtmp://rtmp.sympla.com.br:5222/app" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 5000, + "max audio bitrate": 160 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Livepush", + "more_info_link": "https://docs.livepush.io/en/articles/5065323-how-to-stream-live-from-obs-to-livepush", + "servers": [ + { + "name": "Livepush Global (Default)", + "url": "rtmp://dc-global.livepush.io/live" + }, + { + "name": "Chicago, US", + "url": "rtmp://us-central-ch.livepush.io/live" + }, + { + "name": "New York, US", + "url": "rtmp://us-east-ny.livepush.io/live" + }, + { + "name": "Los Angeles, US", + "url": "rtmp://us-west-la.livepush.io/live" + }, + { + "name": "Miami, US", + "url": "rtmp://us-south-mia.livepush.io/live" + }, + { + "name": "Dallas, US", + "url": "rtmp://us-central-dal.livepush.io/live" + }, + { + "name": "Montreal, CA", + "url": "rtmp://ca-central-mon.livepush.io/live" + }, + { + "name": "Toronto, CA", + "url": "rtmp://ca-south-tor.livepush.io/live" + }, + { + "name": "Sydney, AU", + "url": "rtmp://au-east-syd.livepush.io/live" + }, + { + "name": "London, UK", + "url": "rtmp://uk-central-ldn.livepush.io/live" + }, + { + "name": "Milan, Italy", + "url": "rtmp://it-north-mln.livepush.io/live" + }, + { + "name": "Paris, FR", + "url": "rtmp://fr-central-par.livepush.io/live" + }, + { + "name": "Singapore", + "url": "rtmp://as-southeast-sg.livepush.io/live" + }, + { + "name": "Bangalore, IN", + "url": "rtmp://in-south-blr.livepush.io/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 16000 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Vindral", + "more_info_link": "https://docs.vindral.com/docs/vindral-cdn/", + "stream_key_link": "https://portal.cdn.vindral.com/channels", + "servers": [ + { + "name": "Global", + "url": "rtmps://rtmp.global.cdn.vindral.com/publish" + } + ], + "recommended": { + "keyint": 1, + "profile": "high", + "bframes": 0, + "max video bitrate": 20000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Whowatch (ふわっち)", + "more_info_link": "https://whowatch.tv/help/encoder", + "stream_key_link": "https://whowatch.tv/publish", + "servers": [ + { + "name": "default", + "url": "rtmp://live.whowatch.tv/live/" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 1800, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "IRLToolkit", + "stream_key_link": "https://irl.run/settings/ingest/", + "servers": [ + { + "name": "Global (Recommended)", + "url": "rtmps://stream.global.irl.run/ingest" + }, + { + "name": "Los Angeles, US", + "url": "rtmps://stream.lax.irl.run/ingest" + }, + { + "name": "Dallas, US", + "url": "rtmps://stream.dal.irl.run/ingest" + }, + { + "name": "New York, US", + "url": "rtmps://stream.ewr.irl.run/ingest" + }, + { + "name": "Miami, US", + "url": "rtmps://stream.mia.irl.run/ingest" + }, + { + "name": "Amsterdam, NL", + "url": "rtmps://stream.ams.irl.run/ingest" + }, + { + "name": "Frankfurt, DE", + "url": "rtmps://stream.fra.irl.run/ingest" + }, + { + "name": "Singapore", + "url": "rtmps://stream.sin.irl.run/ingest" + }, + { + "name": "Tokyo, JP", + "url": "rtmps://stream.tyo.irl.run/ingest" + }, + { + "name": "Sydney, AU", + "url": "rtmps://stream.syd.irl.run/ingest" + } + ], + "recommended": { + "keyint": 2, + "bframes": 2, + "max video bitrate": 20000, + "max audio bitrate": 256 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Bitmovin", + "more_info_link": "https://developer.bitmovin.com/docs/overview", + "stream_key_link": "https://bitmovin.com/dashboard/streams?streamsTab=LIVE", + "servers": [ + { + "name": "Streams Live", + "url": "rtmp://live-input.bitmovin.com/streams" + } + ], + "recommended": { + "keyint": 2 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Live Streamer Cafe", + "more_info_link": "https://livestreamercafe.com/help.php", + "stream_key_link": "https://livestreamercafe.com/profile.php", + "servers": [ + { + "name": "Live Streamer Cafe Server", + "url": "rtmp://tophicles.com/live" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 6000 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Enchant.events", + "more_info_link": "https://docs.enchant.events/knowledge-base-y4pOb", + "servers": [ + { + "name": "Primary RTMPS", + "url": "rtmps://stream.enchant.cloud:443/live" + } + ], + "recommended": { + "keyint": 2, + "profile": "high", + "max video bitrate": 9000, + "max audio bitrate": 192 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Joystick.TV", + "more_info_link": "https://support.joystick.tv/live_streaming/", + "stream_key_link": "https://joystick.tv/stream-settings", + "servers": [ + { + "name": "North America", + "url": "rtmp://live.joystick.tv/live/" + }, + { + "name": "Europe", + "url": "rtmp://eu.live.joystick.tv/live/" + } + ], + "recommended": { + "keyint": 2, + "max video bitrate": 7500, + "max audio bitrate": 192, + "max fps": 60, + "profile": "main", + "bframes": 0, + "x264opts": "tune=zerolatency scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Livepeer Studio", + "more_info_link": "https://docs.livepeer.org/guides/developing/stream-via-obs", + "stream_key_link": "https://livepeer.studio/dashboard/streams", + "servers": [ + { + "name": "Global (RTMP)", + "url": "rtmp://rtmp.livepeer.com/live" + }, + { + "name": "Global (RTMP Primary)", + "url": "rtmp://rtmp-a.livepeer.com/live" + }, + { + "name": "Global (RTMP Backup)", + "url": "rtmp://rtmp-b.livepeer.com/live" + } + ], + "recommended": { + "keyint": 1, + "profile": "high", + "bframes": 0, + "max video bitrate": 20000, + "max audio bitrate": 512 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "MasterStream.iR | مستراستریم | ری استریم و استریم همزمان", + "common": false, + "more_info_link": "https://masterstream.ir/webpage/page/docs", + "stream_key_link": "https://masterstream.ir/managestreams.php", + "servers": [ + { + "name": "Iran Server 1 - Bandwidth Required", + "url": "rtmp://live-vip1.masterstream.ir/live" + }, + { + "name": "Iran Server 2 - Bandwidth Required", + "url": "rtmp://live-vip2.masterstream.ir/live" + }, + { + "name": "Turkey Server 1", + "url": "rtmp://tr-live1.masterstream.ir/live" + }, + { + "name": "Russia Server 1", + "url": "rtmp://ru-live1.masterstream.ir/live" + } + ], + "protocol": "RTMP", + "supported video codecs": [ + "h264" + ], + "recommended": { + "keyint": 2, + "supported resolutions": [ + "1920x1080", + "1280x720", + "852x480", + "640x360" + ], + "max video bitrate": 6000, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + } + }, + { + "name": "PandaTV | 팬더티비", + "common": false, + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.pandalive.co.kr/app" + } + ], + "recommended": { + "keyint": 2, + "supported resolutions": [ + "1920x1080", + "1280x720", + "852x480", + "640x360" + ], + "max video bitrate": 7500, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "Vault - by CommanderRoot", + "common": false, + "more_info_link": "https://vault.root-space.eu/", + "stream_key_link": "https://vault.root-space.eu/recordings", + "servers": [ + { + "name": "EU - Central", + "url": "rtmp://ingest-eu-central.vault.root-space.eu/app" + }, + { + "name": "US - West", + "url": "rtmp://ingest-us-west.vault.root-space.eu/app" + } + ], + "protocol": "RTMP", + "supported video codecs": [ + "h264" + ], + "supported audio codecs": [ + "aac" + ], + "recommended": { + "keyint": 2, + "max video bitrate": 7800, + "max audio bitrate": 320, + "x264opts": "scenecut=0" + } + }, + { + "name": "CHZZK", + "common": false, + "stream_key_link": "https://studio.chzzk.naver.com/setting", + "servers": [ + { + "name": "Default", + "url": "rtmp://global-rtmp.lip2.navercorp.com:8080/relay" + } + ], + "supported video codecs": [ + "h264" + ], + "recommended": { + "keyint": 1, + "bframes": 0, + "max fps": 60, + "max video bitrate": 8000, + "max audio bitrate": 192, + "x264opts": "tune=zerolatency scenecut=0", + "supported resolutions": [ + "1920x1080" + ] + } + }, + { + "name": "Streamway", + "common": false, + "more_info_link": "https://support.streamway.in/how-to-connect-obs-studio-to-streamway/", + "stream_key_link": "https://app.streamway.in/broadcasts", + "servers": [ + { + "name": "Primary", + "url": "rtmp://injest.streamway.in/LiveApp" + }, + { + "name": "Backup", + "url": "rtmps://bkp.streamway.in:443/live" + } + ], + "protocol": "RTMP", + "supported video codecs": [ + "h264" + ], + "recommended": { + "keyint": 2 + } + }, + { + "name": "SharePlay.tv", + "common": false, + "stream_key_link": "https://playstudio.shareplay.tv/stream/settings", + "servers": [ + { + "name": "Default (Auto Detect)", + "url": "rtmp://stream.shareplay.tv" + }, + { + "name": "Miami, Florida, USA", + "url": "rtmp://live-us-mia-stream.shareplay.tv" + }, + { + "name": "Chicago, Illinois, USA", + "url": "rtmp://live-us-ord-stream.shareplay.tv" + }, + { + "name": "Washington D.C., USA", + "url": "rtmp://live-us-iad-stream.shareplay.tv" + }, + { + "name": "Los Angeles, California, USA", + "url": "rtmp://live-us-lax-stream.shareplay.tv" + }, + { + "name": "Milan, Italy", + "url": "rtmp://live-it-mil-stream.shareplay.tv" + }, + { + "name": "Toronto, Canada", + "url": "rtmp://live-ca-yyz-stream.shareplay.tv" + }, + { + "name": "London, UK", + "url": "rtmp://live-uk-lhr-stream.shareplay.tv" + }, + { + "name": "Atlanta, Georgia, USA", + "url": "rtmp://live-us-atl-stream.shareplay.tv" + }, + { + "name": "Dallas, Texas, USA", + "url": "rtmp://live-us-dfw-stream.shareplay.tv" + } + ], + "supported video codecs": [ + "h264" + ], + "recommended": { + "keyint": 2, + "max video bitrate": 12000, + "max audio bitrate": 320 + } + }, + { + "name": "sheeta", + "common": false, + "more_info_link": "https://partner-support.sheeta.com/hc/ja/articles/4404573942425-%E7%94%9F%E6%94%BE%E9%80%81%E3%81%AE%E9%85%8D%E4%BF%A1%E6%96%B9%E6%B3%95", + "servers": [ + { + "name": "Default", + "url": "rtmp://lsm.sheeta.com:1935/lsm" + } + ], + "protocol": "RTMP", + "supported video codecs": [ + "h264" + ], + "supported audio codecs": [ + "aac" + ], + "recommended": { + "keyint": 1, + "profile": "main", + "supported resolutions": [ + "1920x1080", + "1280x720", + "854x480", + "640x480" + ], + "bitrate matrix": [ + { + "res": "1920x1080", + "fps": 30, + "max bitrate": 6000 + }, + { + "res": "1280x720", + "fps": 30, + "max bitrate": 4700 + }, + { + "res": "854x480", + "fps": 30, + "max bitrate": 3400 + }, + { + "res": "640x480", + "fps": 30, + "max bitrate": 3400 + }, + { + "res": "1920x1080", + "fps": 60, + "max bitrate": 9000 + }, + { + "res": "1280x720", + "fps": 60, + "max bitrate": 7000 + }, + { + "res": "854x480", + "fps": 60, + "max bitrate": 5000 + }, + { + "res": "640x480", + "fps": 60, + "max bitrate": 5000 + } + ], + "max fps": 60, + "max video bitrate": 9000, + "max audio bitrate": 512, + "x264opts": "scenecut=0", + "output": "rtmp_output" + } + }, + { + "name": "Amazon IVS", + "supported video codecs": [ + "h264" + ], + "servers": [ + { + "name": "Asia: China, Hong Kong (6) (RTMPS)", + "url": "rtmps://hkg06.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Bangalore (1) (RTMPS)", + "url": "rtmps://blr01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Chennai (RTMPS)", + "url": "rtmps://maa01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Hyderabad (1) (RTMPS)", + "url": "rtmps://hyd01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Mumbai (RTMPS)", + "url": "rtmps://bom01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, New Delhi (RTMPS)", + "url": "rtmps://del01.contribute.live-video.net/app" + }, + { + "name": "Asia: Indonesia, Cikarang Barat (1) (RTMPS)", + "url": "rtmps://jkt01.contribute.live-video.net/app" + }, + { + "name": "Asia: Indonesia, Jakarta (2) (RTMPS)", + "url": "rtmps://jkt02.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Osaka (1) (RTMPS)", + "url": "rtmps://osa01.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Tokyo (3) (RTMPS)", + "url": "rtmps://tyo03.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Tokyo (5) (RTMPS)", + "url": "rtmps://tyo05.contribute.live-video.net/app" + }, + { + "name": "Asia: Manila, Philippines (1) (RTMPS)", + "url": "rtmps://mnl01.contribute.live-video.net/app" + }, + { + "name": "Asia: Singapore (1) (RTMPS)", + "url": "rtmps://sin01.contribute.live-video.net/app" + }, + { + "name": "Asia: Singapore (4) (RTMPS)", + "url": "rtmps://sin04.contribute.live-video.net/app" + }, + { + "name": "Asia: South Korea, Seoul (3) (RTMPS)", + "url": "rtmps://sel03.contribute.live-video.net/app" + }, + { + "name": "Asia: South Korea, Seoul (4) (RTMPS)", + "url": "rtmps://sel04.contribute.live-video.net/app" + }, + { + "name": "Asia: Taiwan, Taipei (1) (RTMPS)", + "url": "rtmps://tpe01.contribute.live-video.net/app" + }, + { + "name": "Asia: Taiwan, Taipei (3) (RTMPS)", + "url": "rtmps://tpe03.contribute.live-video.net/app" + }, + { + "name": "Asia: Thailand, Bangkok (2) (RTMPS)", + "url": "rtmps://bkk02.contribute.live-video.net/app" + }, + { + "name": "Europe: Austria, Vienna (2) (RTMPS)", + "url": "rtmps://vie02.contribute.live-video.net/app" + }, + { + "name": "Europe: Czech Republic, Prague (RTMPS)", + "url": "rtmps://prg03.contribute.live-video.net/app" + }, + { + "name": "Europe: Denmark, Copenhagen (RTMPS)", + "url": "rtmps://cph.contribute.live-video.net/app" + }, + { + "name": "Europe: Finland, Helsinki (3) (RTMPS)", + "url": "rtmps://hel03.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Marseille (RTMPS)", + "url": "rtmps://mrs.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Marseille (2) (RTMPS)", + "url": "rtmps://mrs02.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Paris (10) (RTMPS)", + "url": "rtmps://cdg10.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Paris (2) (RTMPS)", + "url": "rtmps://cdg02.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Berlin (RTMPS)", + "url": "rtmps://ber.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Dusseldorf (1) (RTMPS)", + "url": "rtmps://dus01.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (2) (RTMPS)", + "url": "rtmps://fra02.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (5) (RTMPS)", + "url": "rtmps://fra05.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (6) (RTMPS)", + "url": "rtmps://fra06.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Munich (1) (RTMPS)", + "url": "rtmps://muc01.contribute.live-video.net/app" + }, + { + "name": "Europe: Italy, Milan (2) (RTMPS)", + "url": "rtmps://mil02.contribute.live-video.net/app" + }, + { + "name": "Europe: Netherlands, Amsterdam (2) (RTMPS)", + "url": "rtmps://ams02.contribute.live-video.net/app" + }, + { + "name": "Europe: Netherlands, Amsterdam (3) (RTMPS)", + "url": "rtmps://ams03.contribute.live-video.net/app" + }, + { + "name": "Europe: Norway, Oslo (RTMPS)", + "url": "rtmps://osl.contribute.live-video.net/app" + }, + { + "name": "Europe: Poland, Warsaw (2) (RTMPS)", + "url": "rtmps://waw02.contribute.live-video.net/app" + }, + { + "name": "Europe: Spain, Madrid (1) (RTMPS)", + "url": "rtmps://mad01.contribute.live-video.net/app" + }, + { + "name": "Europe: Spain, Madrid (2) (RTMPS)", + "url": "rtmps://mad02.contribute.live-video.net/app" + }, + { + "name": "Europe: Sweden, Stockholm (3) (RTMPS)", + "url": "rtmps://arn03.contribute.live-video.net/app" + }, + { + "name": "Europe: Sweden, Stockholm (4) (RTMPS)", + "url": "rtmps://arn04.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (3) (RTMPS)", + "url": "rtmps://lhr03.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (4) (RTMPS)", + "url": "rtmps://lhr04.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (8) (RTMPS)", + "url": "rtmps://lhr08.contribute.live-video.net/app" + }, + { + "name": "NA: Canada, Quebec (RTMPS)", + "url": "rtmps://ymq03.contribute.live-video.net/app" + }, + { + "name": "NA: Canada, Toronto (RTMPS)", + "url": "rtmps://yto.contribute.live-video.net/app" + }, + { + "name": "NA: Mexico, Queretaro (3) (RTMPS)", + "url": "rtmps://qro03.contribute.live-video.net/app" + }, + { + "name": "NA: Mexico, Queretaro (4) (RTMPS)", + "url": "rtmps://qro04.contribute.live-video.net/app" + }, + { + "name": "Oceania: Australia, Sydney (2) (RTMPS)", + "url": "rtmps://syd02.contribute.live-video.net/app" + }, + { + "name": "Oceania: Australia, Sydney (3) (RTMPS)", + "url": "rtmps://syd03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Fortaleza (1) (RTMPS)", + "url": "rtmps://for01.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Rio de Janeiro (3) (RTMPS)", + "url": "rtmps://rio03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Rio de Janeiro (4) (RTMPS)", + "url": "rtmps://rio04.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Sao Paulo (RTMPS)", + "url": "rtmps://sao03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Sao Paulo (5) (RTMPS)", + "url": "rtmps://sao05.contribute.live-video.net/app" + }, + { + "name": "South America: Buenos Aires, Argentina (1) (RTMPS)", + "url": "rtmps://bue01.contribute.live-video.net/app" + }, + { + "name": "South America: Colombia, Bogota (1) (RTMPS)", + "url": "rtmps://bog01.contribute.live-video.net/app" + }, + { + "name": "US Central: Dallas, TX (RTMPS)", + "url": "rtmps://dfw.contribute.live-video.net/app" + }, + { + "name": "US Central: Dallas, TX (2) (RTMPS)", + "url": "rtmps://dfw02.contribute.live-video.net/app" + }, + { + "name": "US Central: Denver, CO (52) (RTMPS)", + "url": "rtmps://den52.contribute.live-video.net/app" + }, + { + "name": "US Central: Garland, TX (56) (RTMPS)", + "url": "rtmps://dfw56.contribute.live-video.net/app" + }, + { + "name": "US Central: Houston, TX (50) (RTMPS)", + "url": "rtmps://iah50.contribute.live-video.net/app" + }, + { + "name": "US East: Ashburn, VA (5) (RTMPS)", + "url": "rtmps://iad05.contribute.live-video.net/app" + }, + { + "name": "US East: Atlanta, GA (RTMPS)", + "url": "rtmps://atl.contribute.live-video.net/app" + }, + { + "name": "US East: Chicago, IL (3) (RTMPS)", + "url": "rtmps://ord03.contribute.live-video.net/app" + }, + { + "name": "US East: Chicago, IL (56) (RTMPS)", + "url": "rtmps://ord56.contribute.live-video.net/app" + }, + { + "name": "US East: McAllen, TX (1) (RTMPS)", + "url": "rtmps://mfe01.contribute.live-video.net/app" + }, + { + "name": "US East: Miami, FL (5) (RTMPS)", + "url": "rtmps://mia05.contribute.live-video.net/app" + }, + { + "name": "US East: New York, NY (RTMPS)", + "url": "rtmps://jfk.contribute.live-video.net/app" + }, + { + "name": "US East: New York, NY (50) (RTMPS)", + "url": "rtmps://jfk50.contribute.live-video.net/app" + }, + { + "name": "US West: Los Angeles, CA (RTMPS)", + "url": "rtmps://lax.contribute.live-video.net/app" + }, + { + "name": "US West: Salt Lake City, UT (RTMPS)", + "url": "rtmps://slc.contribute.live-video.net/app" + }, + { + "name": "US West: San Francisco, CA (RTMPS)", + "url": "rtmps://sfo.contribute.live-video.net/app" + }, + { + "name": "US West: San Jose, California (6) (RTMPS)", + "url": "rtmps://sjc06.contribute.live-video.net/app" + }, + { + "name": "US West: Seattle, WA (RTMPS)", + "url": "rtmps://sea.contribute.live-video.net/app" + }, + { + "name": "US West: Seattle, WA (2) (RTMPS)", + "url": "rtmps://sea02.contribute.live-video.net/app" + }, + { + "name": "Asia: China, Hong Kong (6) (RTMP)", + "url": "rtmp://hkg06.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Bangalore (1) (RTMP)", + "url": "rtmp://blr01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Chennai (RTMP)", + "url": "rtmp://maa01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Hyderabad (1) (RTMP)", + "url": "rtmp://hyd01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, Mumbai (RTMP)", + "url": "rtmp://bom01.contribute.live-video.net/app" + }, + { + "name": "Asia: India, New Delhi (RTMP)", + "url": "rtmp://del01.contribute.live-video.net/app" + }, + { + "name": "Asia: Indonesia, Cikarang Barat (1) (RTMP)", + "url": "rtmp://jkt01.contribute.live-video.net/app" + }, + { + "name": "Asia: Indonesia, Jakarta (2) (RTMP)", + "url": "rtmp://jkt02.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Osaka (1) (RTMP)", + "url": "rtmp://osa01.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Tokyo (3) (RTMP)", + "url": "rtmp://tyo03.contribute.live-video.net/app" + }, + { + "name": "Asia: Japan, Tokyo (5) (RTMP)", + "url": "rtmp://tyo05.contribute.live-video.net/app" + }, + { + "name": "Asia: Manila, Philippines (1) (RTMP)", + "url": "rtmp://mnl01.contribute.live-video.net/app" + }, + { + "name": "Asia: Singapore (1) (RTMP)", + "url": "rtmp://sin01.contribute.live-video.net/app" + }, + { + "name": "Asia: Singapore (4) (RTMP)", + "url": "rtmp://sin04.contribute.live-video.net/app" + }, + { + "name": "Asia: South Korea, Seoul (3) (RTMP)", + "url": "rtmp://sel03.contribute.live-video.net/app" + }, + { + "name": "Asia: South Korea, Seoul (4) (RTMP)", + "url": "rtmp://sel04.contribute.live-video.net/app" + }, + { + "name": "Asia: Taiwan, Taipei (1) (RTMP)", + "url": "rtmp://tpe01.contribute.live-video.net/app" + }, + { + "name": "Asia: Taiwan, Taipei (3) (RTMP)", + "url": "rtmp://tpe03.contribute.live-video.net/app" + }, + { + "name": "Asia: Thailand, Bangkok (2) (RTMP)", + "url": "rtmp://bkk02.contribute.live-video.net/app" + }, + { + "name": "Europe: Austria, Vienna (2) (RTMP)", + "url": "rtmp://vie02.contribute.live-video.net/app" + }, + { + "name": "Europe: Czech Republic, Prague (RTMP)", + "url": "rtmp://prg03.contribute.live-video.net/app" + }, + { + "name": "Europe: Denmark, Copenhagen (RTMP)", + "url": "rtmp://cph.contribute.live-video.net/app" + }, + { + "name": "Europe: Finland, Helsinki (3) (RTMP)", + "url": "rtmp://hel03.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Marseille (RTMP)", + "url": "rtmp://mrs.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Marseille (2) (RTMP)", + "url": "rtmp://mrs02.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Paris (10) (RTMP)", + "url": "rtmp://cdg10.contribute.live-video.net/app" + }, + { + "name": "Europe: France, Paris (2) (RTMP)", + "url": "rtmp://cdg02.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Berlin (RTMP)", + "url": "rtmp://ber.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Dusseldorf (1) (RTMP)", + "url": "rtmp://dus01.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (2) (RTMP)", + "url": "rtmp://fra02.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (5) (RTMP)", + "url": "rtmp://fra05.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Frankfurt (6) (RTMP)", + "url": "rtmp://fra06.contribute.live-video.net/app" + }, + { + "name": "Europe: Germany, Munich (1) (RTMP)", + "url": "rtmp://muc01.contribute.live-video.net/app" + }, + { + "name": "Europe: Italy, Milan (2) (RTMP)", + "url": "rtmp://mil02.contribute.live-video.net/app" + }, + { + "name": "Europe: Netherlands, Amsterdam (2) (RTMP)", + "url": "rtmp://ams02.contribute.live-video.net/app" + }, + { + "name": "Europe: Netherlands, Amsterdam (3) (RTMP)", + "url": "rtmp://ams03.contribute.live-video.net/app" + }, + { + "name": "Europe: Norway, Oslo (RTMP)", + "url": "rtmp://osl.contribute.live-video.net/app" + }, + { + "name": "Europe: Poland, Warsaw (2) (RTMP)", + "url": "rtmp://waw02.contribute.live-video.net/app" + }, + { + "name": "Europe: Spain, Madrid (1) (RTMP)", + "url": "rtmp://mad01.contribute.live-video.net/app" + }, + { + "name": "Europe: Spain, Madrid (2) (RTMP)", + "url": "rtmp://mad02.contribute.live-video.net/app" + }, + { + "name": "Europe: Sweden, Stockholm (3) (RTMP)", + "url": "rtmp://arn03.contribute.live-video.net/app" + }, + { + "name": "Europe: Sweden, Stockholm (4) (RTMP)", + "url": "rtmp://arn04.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (3) (RTMP)", + "url": "rtmp://lhr03.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (4) (RTMP)", + "url": "rtmp://lhr04.contribute.live-video.net/app" + }, + { + "name": "Europe: UK, London (8) (RTMP)", + "url": "rtmp://lhr08.contribute.live-video.net/app" + }, + { + "name": "NA: Canada, Quebec (RTMP)", + "url": "rtmp://ymq03.contribute.live-video.net/app" + }, + { + "name": "NA: Canada, Toronto (RTMP)", + "url": "rtmp://yto.contribute.live-video.net/app" + }, + { + "name": "NA: Mexico, Queretaro (3) (RTMP)", + "url": "rtmp://qro03.contribute.live-video.net/app" + }, + { + "name": "NA: Mexico, Queretaro (4) (RTMP)", + "url": "rtmp://qro04.contribute.live-video.net/app" + }, + { + "name": "Oceania: Australia, Sydney (2) (RTMP)", + "url": "rtmp://syd02.contribute.live-video.net/app" + }, + { + "name": "Oceania: Australia, Sydney (3) (RTMP)", + "url": "rtmp://syd03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Fortaleza (1) (RTMP)", + "url": "rtmp://for01.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Rio de Janeiro (3) (RTMP)", + "url": "rtmp://rio03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Rio de Janeiro (4) (RTMP)", + "url": "rtmp://rio04.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Sao Paulo (RTMP)", + "url": "rtmp://sao03.contribute.live-video.net/app" + }, + { + "name": "South America: Brazil, Sao Paulo (5) (RTMP)", + "url": "rtmp://sao05.contribute.live-video.net/app" + }, + { + "name": "South America: Buenos Aires, Argentina (1) (RTMP)", + "url": "rtmp://bue01.contribute.live-video.net/app" + }, + { + "name": "South America: Colombia, Bogota (1) (RTMP)", + "url": "rtmp://bog01.contribute.live-video.net/app" + }, + { + "name": "US Central: Dallas, TX (RTMP)", + "url": "rtmp://dfw.contribute.live-video.net/app" + }, + { + "name": "US Central: Dallas, TX (2) (RTMP)", + "url": "rtmp://dfw02.contribute.live-video.net/app" + }, + { + "name": "US Central: Denver, CO (52) (RTMP)", + "url": "rtmp://den52.contribute.live-video.net/app" + }, + { + "name": "US Central: Garland, TX (56) (RTMP)", + "url": "rtmp://dfw56.contribute.live-video.net/app" + }, + { + "name": "US Central: Houston, TX (50) (RTMP)", + "url": "rtmp://iah50.contribute.live-video.net/app" + }, + { + "name": "US East: Ashburn, VA (5) (RTMP)", + "url": "rtmp://iad05.contribute.live-video.net/app" + }, + { + "name": "US East: Atlanta, GA (RTMP)", + "url": "rtmp://atl.contribute.live-video.net/app" + }, + { + "name": "US East: Chicago, IL (3) (RTMP)", + "url": "rtmp://ord03.contribute.live-video.net/app" + }, + { + "name": "US East: Chicago, IL (56) (RTMP)", + "url": "rtmp://ord56.contribute.live-video.net/app" + }, + { + "name": "US East: McAllen, TX (1) (RTMP)", + "url": "rtmp://mfe01.contribute.live-video.net/app" + }, + { + "name": "US East: Miami, FL (5) (RTMP)", + "url": "rtmp://mia05.contribute.live-video.net/app" + }, + { + "name": "US East: New York, NY (RTMP)", + "url": "rtmp://jfk.contribute.live-video.net/app" + }, + { + "name": "US East: New York, NY (50) (RTMP)", + "url": "rtmp://jfk50.contribute.live-video.net/app" + }, + { + "name": "US West: Los Angeles, CA (RTMP)", + "url": "rtmp://lax.contribute.live-video.net/app" + }, + { + "name": "US West: Salt Lake City, UT (RTMP)", + "url": "rtmp://slc.contribute.live-video.net/app" + }, + { + "name": "US West: San Francisco, CA (RTMP)", + "url": "rtmp://sfo.contribute.live-video.net/app" + }, + { + "name": "US West: San Jose, California (6) (RTMP)", + "url": "rtmp://sjc06.contribute.live-video.net/app" + }, + { + "name": "US West: Seattle, WA (RTMP)", + "url": "rtmp://sea.contribute.live-video.net/app" + }, + { + "name": "US West: Seattle, WA (2) (RTMP)", + "url": "rtmp://sea02.contribute.live-video.net/app" + } + ], + "multitrack_video_configuration_url": "https://ingest.contribute.live-video.net/api/v3/GetClientConfiguration", + "recommended": { + "keyint": 2, + "x264opts": "scenecut=0" + } + }, + { + "name": "Dolby Millicast", + "common": false, + "more_info_link": "https://docs.dolby.io/streaming-apis/docs/using-obs", + "stream_key_link": "https://streaming.dolby.io", + "servers": [ + { + "name": "Global (RTMPS)", + "url": "rtmps://rtmp-auto.millicast.com:443/v2/pub" + }, + { + "name": "Global (RTMP)", + "url": "rtmp://rtmp-auto.millicast.com:1935/v2/pub" + }, + { + "name": "Bangalore, India (RTMPS)", + "url": "rtmps://rtmp-blr-1.millicast.com:443/v2/pub" + }, + { + "name": "Bangalore, India (RTMP)", + "url": "rtmp://rtmp-blr-1.millicast.com:1935/v2/pub" + }, + { + "name": "Frankfurt, Germany (RTMPS)", + "url": "rtmps://rtmp-fra-1.millicast.com:443/v2/pub" + }, + { + "name": "Frankfurt, Germany (RTMP)", + "url": "rtmp://rtmp-fra-1.millicast.com:1935/v2/pub" + }, + { + "name": "Ashburn, Virginia, USA (RTMPS)", + "url": "rtmps://rtmp-iad-1.millicast.com:443/v2/pub" + }, + { + "name": "Ashburn, Virginia, USA (RTMP)", + "url": "rtmp://rtmp-iad-1.millicast.com:1935/v2/pub" + }, + { + "name": "London, England (RTMPS)", + "url": "rtmps://rtmp-lon-1.millicast.com:443/v2/pub" + }, + { + "name": "London, England (RTMP)", + "url": "rtmp://rtmp-lon-1.millicast.com:1935/v2/pub" + }, + { + "name": "Phoenix, AZ, USA (RTMPS)", + "url": "rtmps://rtmp-phx-1.millicast.com:443/v2/pub" + }, + { + "name": "Phoenix, AZ, USA (RTMP)", + "url": "rtmp://rtmp-phx-1.millicast.com:1935/v2/pub" + }, + { + "name": "Sao Paulo, Brazil (RTMPS)", + "url": "rtmps://rtmp-sao-1.millicast.com:443/v2/pub" + }, + { + "name": "Sao Paulo, Brazil (RTMP)", + "url": "rtmp://rtmp-sao-1.millicast.com:1935/v2/pub" + }, + { + "name": "Singapore (RTMPS)", + "url": "rtmps://rtmp-sgp-1.millicast.com:443/v2/pub" + }, + { + "name": "Singapore (RTMP)", + "url": "rtmp://rtmp-sgp-1.millicast.com:1935/v2/pub" + }, + { + "name": "Sydney, Australia (RTMPS)", + "url": "rtmps://rtmp-syd-1.millicast.com:443/v2/pub" + }, + { + "name": "Sydney, Australia (RTMP)", + "url": "rtmp://rtmp-syd-1.millicast.com:1935/v2/pub" + } + ], + "supported video codecs": [ + "h264", + "hevc", + "av1" + ], + "recommended": { + "keyint": 1, + "bframes": 0 + } + }, + { + "name": "NFHS Network", + "more_info_link": "https://support.nfhsnetwork.com/hc/en-us", + "stream_key_link": "https://console.nfhsnetwork.com/nfhs-events/", + "servers": [ + { + "name": "Manual Broadcasts", + "url": "rtmp://video.nfhsnetwork.com/manual" + } + ], + "recommended": { + "supported resolutions": [ + "1920x1080", + "1280x720", + "640x360" + ], + "max fps": 60 + }, + "supported video codecs": [ + "h264" + ] + }, + { + "name": "VRCDN - Live", + "more_info_link": "https://vrcdn.live", + "servers": [ + { + "name": "Automatic", + "url": "rtmp://ingest.vrcdn.live/live" + } + ], + "supported video codecs": ["h264"], + "recommended": { + "keyint": 1, + "max video bitrate": 6000 + } + } + ] +} diff --git a/dotfiles/.config/obs-studio/plugin_config/rtmp-services/twitch_ingests.json b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/twitch_ingests.json new file mode 100644 index 0000000..2cb31e4 --- /dev/null +++ b/dotfiles/.config/obs-studio/plugin_config/rtmp-services/twitch_ingests.json @@ -0,0 +1,625 @@ +{ + "ingests": [ + { + "_id": 0, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Narita (10)", + "url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}", + "priority": 0 + }, + { + "_id": 1, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (3)", + "url_template": "rtmp://tyo03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo03.contribute.live-video.net/app/{stream_key}", + "priority": 1 + }, + { + "_id": 2, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Tokyo (5)", + "url_template": "rtmp://tyo05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tyo05.contribute.live-video.net/app/{stream_key}", + "priority": 2 + }, + { + "_id": 3, + "availability": 1.0, + "default": false, + "name": "Asia: Japan, Osaka (1)", + "url_template": "rtmp://osa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osa01.contribute.live-video.net/app/{stream_key}", + "priority": 3 + }, + { + "_id": 4, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (3)", + "url_template": "rtmp://sel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel03.contribute.live-video.net/app/{stream_key}", + "priority": 4 + }, + { + "_id": 5, + "availability": 1.0, + "default": false, + "name": "Asia: South Korea, Seoul (4)", + "url_template": "rtmp://sel04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sel04.contribute.live-video.net/app/{stream_key}", + "priority": 5 + }, + { + "_id": 6, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (3)", + "url_template": "rtmp://tpe03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe03.contribute.live-video.net/app/{stream_key}", + "priority": 6 + }, + { + "_id": 7, + "availability": 1.0, + "default": false, + "name": "Asia: Taiwan, Taipei (1)", + "url_template": "rtmp://tpe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://tpe01.contribute.live-video.net/app/{stream_key}", + "priority": 7 + }, + { + "_id": 8, + "availability": 1.0, + "default": false, + "name": "Asia: China, Hong Kong (6)", + "url_template": "rtmp://hkg06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hkg06.contribute.live-video.net/app/{stream_key}", + "priority": 8 + }, + { + "_id": 9, + "availability": 1.0, + "default": false, + "name": "Asia: Manila, Philippines (1)", + "url_template": "rtmp://mnl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mnl01.contribute.live-video.net/app/{stream_key}", + "priority": 9 + }, + { + "_id": 10, + "availability": 1.0, + "default": false, + "name": "Asia: Thailand, Bangkok (2)", + "url_template": "rtmp://bkk02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bkk02.contribute.live-video.net/app/{stream_key}", + "priority": 10 + }, + { + "_id": 11, + "availability": 1.0, + "default": false, + "name": "Asia: Singapore (1)", + "url_template": "rtmp://sin01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sin01.contribute.live-video.net/app/{stream_key}", + "priority": 11 + }, + { + "_id": 12, + "availability": 1.0, + "default": false, + "name": "Asia: Indonesia, Jakarta (2)", + "url_template": "rtmp://jkt02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jkt02.contribute.live-video.net/app/{stream_key}", + "priority": 12 + }, + { + "_id": 13, + "availability": 1.0, + "default": false, + "name": "Asia: India, Hyderabad (1)", + "url_template": "rtmp://hyd01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hyd01.contribute.live-video.net/app/{stream_key}", + "priority": 13 + }, + { + "_id": 14, + "availability": 1.0, + "default": false, + "name": "Asia: India, Chennai (1)", + "url_template": "rtmp://maa01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://maa01.contribute.live-video.net/app/{stream_key}", + "priority": 14 + }, + { + "_id": 15, + "availability": 1.0, + "default": false, + "name": "Asia: India, New Delhi (1)", + "url_template": "rtmp://del01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://del01.contribute.live-video.net/app/{stream_key}", + "priority": 15 + }, + { + "_id": 16, + "availability": 1.0, + "default": false, + "name": "Asia: India, Bangalore (1)", + "url_template": "rtmp://blr01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://blr01.contribute.live-video.net/app/{stream_key}", + "priority": 16 + }, + { + "_id": 17, + "availability": 1.0, + "default": false, + "name": "Asia: India, Mumbai", + "url_template": "rtmp://bom01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bom01.contribute.live-video.net/app/{stream_key}", + "priority": 17 + }, + { + "_id": 18, + "availability": 1.0, + "default": false, + "name": "US West: Seattle, WA (2)", + "url_template": "rtmp://sea02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sea02.contribute.live-video.net/app/{stream_key}", + "priority": 18 + }, + { + "_id": 19, + "availability": 1.0, + "default": false, + "name": "Europe: Finland, Helsinki (3)", + "url_template": "rtmp://hel03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://hel03.contribute.live-video.net/app/{stream_key}", + "priority": 19 + }, + { + "_id": 20, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (2)", + "url_template": "rtmp://syd02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd02.contribute.live-video.net/app/{stream_key}", + "priority": 20 + }, + { + "_id": 21, + "availability": 1.0, + "default": false, + "name": "Oceania: Australia, Sydney (3)", + "url_template": "rtmp://syd03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://syd03.contribute.live-video.net/app/{stream_key}", + "priority": 21 + }, + { + "_id": 22, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (3)", + "url_template": "rtmp://arn03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn03.contribute.live-video.net/app/{stream_key}", + "priority": 22 + }, + { + "_id": 23, + "availability": 1.0, + "default": false, + "name": "Europe: Sweden, Stockholm (4)", + "url_template": "rtmp://arn04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://arn04.contribute.live-video.net/app/{stream_key}", + "priority": 23 + }, + { + "_id": 24, + "availability": 1.0, + "default": false, + "name": "US West: San Jose, California (6)", + "url_template": "rtmp://sjc06.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sjc06.contribute.live-video.net/app/{stream_key}", + "priority": 24 + }, + { + "_id": 25, + "availability": 1.0, + "default": false, + "name": "Europe: Norway, Oslo", + "url_template": "rtmp://osl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://osl.contribute.live-video.net/app/{stream_key}", + "priority": 25 + }, + { + "_id": 26, + "availability": 1.0, + "default": false, + "name": "Europe: Poland, Warsaw (2)", + "url_template": "rtmp://waw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://waw02.contribute.live-video.net/app/{stream_key}", + "priority": 26 + }, + { + "_id": 27, + "availability": 1.0, + "default": false, + "name": "Europe: Denmark, Copenhagen", + "url_template": "rtmp://cph.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cph.contribute.live-video.net/app/{stream_key}", + "priority": 27 + }, + { + "_id": 28, + "availability": 1.0, + "default": false, + "name": "US West: Los Angeles, CA", + "url_template": "rtmp://lax.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lax.contribute.live-video.net/app/{stream_key}", + "priority": 28 + }, + { + "_id": 29, + "availability": 1.0, + "default": false, + "name": "Europe: Czech Republic, Prague", + "url_template": "rtmp://prg03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://prg03.contribute.live-video.net/app/{stream_key}", + "priority": 29 + }, + { + "_id": 30, + "availability": 1.0, + "default": false, + "name": "Europe: Austria, Vienna (2)", + "url_template": "rtmp://vie02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://vie02.contribute.live-video.net/app/{stream_key}", + "priority": 30 + }, + { + "_id": 31, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (3)", + "url_template": "rtmp://ams03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams03.contribute.live-video.net/app/{stream_key}", + "priority": 31 + }, + { + "_id": 32, + "availability": 1.0, + "default": false, + "name": "Europe: Netherlands, Amsterdam (2)", + "url_template": "rtmp://ams02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ams02.contribute.live-video.net/app/{stream_key}", + "priority": 32 + }, + { + "_id": 33, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Dusseldorf (1)", + "url_template": "rtmp://dus01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dus01.contribute.live-video.net/app/{stream_key}", + "priority": 33 + }, + { + "_id": 34, + "availability": 1.0, + "default": false, + "name": "US Central: Denver, CO (52)", + "url_template": "rtmp://den52.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://den52.contribute.live-video.net/app/{stream_key}", + "priority": 34 + }, + { + "_id": 35, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Munich (1)", + "url_template": "rtmp://muc01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://muc01.contribute.live-video.net/app/{stream_key}", + "priority": 35 + }, + { + "_id": 36, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (8)", + "url_template": "rtmp://lhr08.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr08.contribute.live-video.net/app/{stream_key}", + "priority": 36 + }, + { + "_id": 37, + "availability": 1.0, + "default": false, + "name": "Europe: UK, London (3)", + "url_template": "rtmp://lhr03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://lhr03.contribute.live-video.net/app/{stream_key}", + "priority": 37 + }, + { + "_id": 38, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (2)", + "url_template": "rtmp://cdg02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg02.contribute.live-video.net/app/{stream_key}", + "priority": 38 + }, + { + "_id": 39, + "availability": 1.0, + "default": false, + "name": "Europe: France, Paris (10)", + "url_template": "rtmp://cdg10.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://cdg10.contribute.live-video.net/app/{stream_key}", + "priority": 39 + }, + { + "_id": 40, + "availability": 1.0, + "default": false, + "name": "Europe: Italy, Milan (2)", + "url_template": "rtmp://mil02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mil02.contribute.live-video.net/app/{stream_key}", + "priority": 40 + }, + { + "_id": 41, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (5)", + "url_template": "rtmp://fra05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra05.contribute.live-video.net/app/{stream_key}", + "priority": 41 + }, + { + "_id": 42, + "availability": 1.0, + "default": false, + "name": "Europe: Germany, Frankfurt (2)", + "url_template": "rtmp://fra02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://fra02.contribute.live-video.net/app/{stream_key}", + "priority": 42 + }, + { + "_id": 43, + "availability": 1.0, + "default": false, + "name": "Europe: France, Marseille (2)", + "url_template": "rtmp://mrs02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mrs02.contribute.live-video.net/app/{stream_key}", + "priority": 43 + }, + { + "_id": 44, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (3)", + "url_template": "rtmp://ord03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord03.contribute.live-video.net/app/{stream_key}", + "priority": 44 + }, + { + "_id": 45, + "availability": 1.0, + "default": false, + "name": "US East: Chicago, IL (56)", + "url_template": "rtmp://ord56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ord56.contribute.live-video.net/app/{stream_key}", + "priority": 45 + }, + { + "_id": 46, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Toronto", + "url_template": "rtmp://yto.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://yto.contribute.live-video.net/app/{stream_key}", + "priority": 46 + }, + { + "_id": 47, + "availability": 1.0, + "default": false, + "name": "NA: Canada, Quebec", + "url_template": "rtmp://ymq03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://ymq03.contribute.live-video.net/app/{stream_key}", + "priority": 47 + }, + { + "_id": 48, + "availability": 1.0, + "default": false, + "name": "US Central: Garland, TX (56)", + "url_template": "rtmp://dfw56.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw56.contribute.live-video.net/app/{stream_key}", + "priority": 48 + }, + { + "_id": 49, + "availability": 1.0, + "default": false, + "name": "US Central: Dallas, TX (2)", + "url_template": "rtmp://dfw02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://dfw02.contribute.live-video.net/app/{stream_key}", + "priority": 49 + }, + { + "_id": 50, + "availability": 1.0, + "default": false, + "name": "US Central: Houston, TX (50)", + "url_template": "rtmp://iah50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iah50.contribute.live-video.net/app/{stream_key}", + "priority": 50 + }, + { + "_id": 51, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (2)", + "url_template": "rtmp://mad02.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad02.contribute.live-video.net/app/{stream_key}", + "priority": 51 + }, + { + "_id": 52, + "availability": 1.0, + "default": false, + "name": "Europe: Spain, Madrid (1)", + "url_template": "rtmp://mad01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mad01.contribute.live-video.net/app/{stream_key}", + "priority": 52 + }, + { + "_id": 53, + "availability": 1.0, + "default": false, + "name": "US East: McAllen, TX (1)", + "url_template": "rtmp://mfe01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mfe01.contribute.live-video.net/app/{stream_key}", + "priority": 53 + }, + { + "_id": 54, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY (50)", + "url_template": "rtmp://jfk50.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk50.contribute.live-video.net/app/{stream_key}", + "priority": 54 + }, + { + "_id": 55, + "availability": 1.0, + "default": false, + "name": "US East: New York, NY", + "url_template": "rtmp://jfk.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://jfk.contribute.live-video.net/app/{stream_key}", + "priority": 55 + }, + { + "_id": 56, + "availability": 1.0, + "default": false, + "name": "US East: Ashburn, VA (5)", + "url_template": "rtmp://iad05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://iad05.contribute.live-video.net/app/{stream_key}", + "priority": 56 + }, + { + "_id": 57, + "availability": 1.0, + "default": false, + "name": "US East: Atlanta, GA", + "url_template": "rtmp://atl.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://atl.contribute.live-video.net/app/{stream_key}", + "priority": 57 + }, + { + "_id": 58, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (4)", + "url_template": "rtmp://qro04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro04.contribute.live-video.net/app/{stream_key}", + "priority": 58 + }, + { + "_id": 59, + "availability": 1.0, + "default": false, + "name": "NA: Mexico, Queretaro (3)", + "url_template": "rtmp://qro03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://qro03.contribute.live-video.net/app/{stream_key}", + "priority": 59 + }, + { + "_id": 60, + "availability": 1.0, + "default": false, + "name": "US East: Miami, FL (5)", + "url_template": "rtmp://mia05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://mia05.contribute.live-video.net/app/{stream_key}", + "priority": 60 + }, + { + "_id": 61, + "availability": 1.0, + "default": false, + "name": "South America: Colombia, Bogota (1)", + "url_template": "rtmp://bog01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bog01.contribute.live-video.net/app/{stream_key}", + "priority": 61 + }, + { + "_id": 62, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Fortaleza (1)", + "url_template": "rtmp://for01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://for01.contribute.live-video.net/app/{stream_key}", + "priority": 62 + }, + { + "_id": 63, + "availability": 1.0, + "default": false, + "name": "South America : chile, Santiago (1)", + "url_template": "rtmp://scl01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://scl01.contribute.live-video.net/app/{stream_key}", + "priority": 63 + }, + { + "_id": 64, + "availability": 1.0, + "default": false, + "name": "South America: Buenos Aires, Argentina (1)", + "url_template": "rtmp://bue01.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://bue01.contribute.live-video.net/app/{stream_key}", + "priority": 64 + }, + { + "_id": 65, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo (5)", + "url_template": "rtmp://sao05.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao05.contribute.live-video.net/app/{stream_key}", + "priority": 65 + }, + { + "_id": 66, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Sao Paulo", + "url_template": "rtmp://sao03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://sao03.contribute.live-video.net/app/{stream_key}", + "priority": 66 + }, + { + "_id": 67, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (4)", + "url_template": "rtmp://rio04.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio04.contribute.live-video.net/app/{stream_key}", + "priority": 67 + }, + { + "_id": 68, + "availability": 1.0, + "default": false, + "name": "South America: Brazil, Rio de Janeiro (3)", + "url_template": "rtmp://rio03.contribute.live-video.net/app/{stream_key}", + "url_template_secure": "rtmps://rio03.contribute.live-video.net/app/{stream_key}", + "priority": 68 + } + ] +} diff --git a/dotfiles/.config/obs-studio/user.ini b/dotfiles/.config/obs-studio/user.ini new file mode 100644 index 0000000..7222899 --- /dev/null +++ b/dotfiles/.config/obs-studio/user.ini @@ -0,0 +1,68 @@ +[General] +Pre19Defaults=false +Pre21Defaults=false +Pre23Defaults=false +Pre24.1Defaults=false +ConfirmOnExit=true +HotkeyFocusType=NeverDisableHotkeys +FirstRun=true +Language=zh-CN + +[BasicWindow] +PreviewEnabled=true +PreviewProgramMode=false +SceneDuplicationMode=true +SwapScenesMode=true +SnappingEnabled=true +ScreenSnapping=true +SourceSnapping=true +CenterSnapping=false +SnapDistance=10 +SpacingHelpersEnabled=true +RecordWhenStreaming=false +KeepRecordingWhenStreamStops=false +SysTrayEnabled=true +SysTrayWhenStarted=false +SaveProjectors=false +ShowTransitions=true +ShowListboxToolbars=true +ShowStatusBar=true +ShowSourceIcons=true +ShowContextToolbars=true +StudioModeLabels=true +VerticalVolControl=false +MultiviewMouseSwitch=true +MultiviewDrawNames=true +MultiviewDrawAreas=true +MediaControlsCountdownTimer=true +WarnBeforeStartingStream=false +WarnBeforeStoppingStream=false +WarnBeforeStoppingRecord=false +geometry=AdnQywADAAAAAAAAAAAAAAAAA2oAAAPwAAAAAAAAAAAAAANqAAAD8AAAAAAAAAAAB2gAAAAAAAAAAAAAA2oAAAPw +DockState=AAAA/wAAAAD9AAAAAQAAAAMAAANrAAAA/PwBAAAABvsAAAAUAHMAYwBlAG4AZQBzAEQAbwBjAGsBAAAAAAAAAKMAAACYAP////sAAAAWAHMAbwB1AHIAYwBlAHMARABvAGMAawEAAACnAAAAowAAAJgA////+wAAABIAbQBpAHgAZQByAEQAbwBjAGsBAAABTgAAAN4AAADeAP////sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AcwBEAG8AYwBrAQAAAjAAAACIAAAAiAD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAK8AAAArwAAAK8A////+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAACVgAAAbIAAAK8AAAAyAAAA2sAAAK4AAAABAAAAAQAAAAIAAAACPwAAAAA +AlwaysOnTop=false +EditPropertiesMode=false +DocksLocked=false +SideDocks=false +AdvAudioVolumeType=1 + +[Basic] +Profile=Untitled +ProfileDir=Untitled +SceneCollection=Untitled +SceneCollectionFile=Untitled +ConfigOnNewProfile=true + +[Accessibility] +SelectRed=255 +SelectGreen=65280 +SelectBlue=16744192 +MixerGreen=2522918 +MixerYellow=2523007 +MixerRed=2500223 +MixerGreenActive=5046092 +MixerYellowActive=5046271 +MixerRedActive=5000447 + +[ScriptLogWindow] +geometry=AdnQywADAAAAAAABAAAAGQAAAlgAAAGoAAAAAQAAABkAAAJYAAABqAAAAAAAAAAAB2gAAAABAAAAGQAAAlgAAAGo diff --git a/dotfiles/.config/qt5ct/colors/catppuccin-mocha-lavender.conf b/dotfiles/.config/qt5ct/colors/catppuccin-mocha-lavender.conf new file mode 100644 index 0000000..4d19c93 --- /dev/null +++ b/dotfiles/.config/qt5ct/colors/catppuccin-mocha-lavender.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors= #ffcdd6f4, #ff45475a, #ff585b70, #ff313244, #ff11111b, #ff181825, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff11111b, #ffb4befe, #ff11111b, #ff89b4fa, #ffb4befe, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +inactive_colors=#ff7f849c, #ff1e1e2e, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff7f849c, #ffcdd6f4, #ff7f849c, #ff1e1e2e, #ff181825, #ff11111b, #ff313244, #ff7f849c, #ff7f849c, #ff7f849c, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +disabled_colors=#ff6c7086, #ff313244, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff6c7086, #ffcdd6f4, #ff6c7086, #ff1e1e2e, #ff181825, #ff11111b, #ff181825, #ff6c7086, #ffa9bcdb, #ffc7cceb, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 diff --git a/dotfiles/.config/qt5ct/qt5ct.conf b/dotfiles/.config/qt5ct/qt5ct.conf new file mode 100644 index 0000000..5e69bad --- /dev/null +++ b/dotfiles/.config/qt5ct/qt5ct.conf @@ -0,0 +1,35 @@ +[Appearance] +color_scheme_path=/home/admin/.config/qt5ct/colors/catppuccin-mocha-lavender.conf +custom_palette=true +icon_theme=Papirus-Dark +standard_dialogs=default +style=kvantum + +[Fonts] +fixed="Sarasa Gothic SC,16,-1,5,50,0,0,0,0,0,Regular" +general="Sarasa Gothic SC,16,-1,5,50,0,0,0,0,0,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[PaletteEditor] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2\0\0\0\0\x2\0\0\0\a\x80\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2) + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xd6\0\0\x2\xaa\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xd6\0\0\x2\xaa) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/dotfiles/.config/qt6ct/colors/catppuccin-mocha-lavender.conf b/dotfiles/.config/qt6ct/colors/catppuccin-mocha-lavender.conf new file mode 100644 index 0000000..4d19c93 --- /dev/null +++ b/dotfiles/.config/qt6ct/colors/catppuccin-mocha-lavender.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors= #ffcdd6f4, #ff45475a, #ff585b70, #ff313244, #ff11111b, #ff181825, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff11111b, #ffb4befe, #ff11111b, #ff89b4fa, #ffb4befe, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +inactive_colors=#ff7f849c, #ff1e1e2e, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff7f849c, #ffcdd6f4, #ff7f849c, #ff1e1e2e, #ff181825, #ff11111b, #ff313244, #ff7f849c, #ff7f849c, #ff7f849c, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 +disabled_colors=#ff6c7086, #ff313244, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff6c7086, #ffcdd6f4, #ff6c7086, #ff1e1e2e, #ff181825, #ff11111b, #ff181825, #ff6c7086, #ffa9bcdb, #ffc7cceb, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086 diff --git a/dotfiles/.config/qt6ct/qt6ct.conf b/dotfiles/.config/qt6ct/qt6ct.conf new file mode 100644 index 0000000..cf2c582 --- /dev/null +++ b/dotfiles/.config/qt6ct/qt6ct.conf @@ -0,0 +1,35 @@ +[Appearance] +color_scheme_path=~/.config/qt6ct/colors/catppuccin-mocha-lavender.conf +custom_palette=true +icon_theme=Papirus-Dark +standard_dialogs=default +style=kvantum + +[Fonts] +fixed="Sarasa Gothic SC,16,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" +general="Sarasa Gothic SC,16,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[PaletteEditor] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2\0\0\0\0\x2\0\0\0\a\x80\0\0\x2{\0\0\0\xd2\0\0\x4\xf1\0\0\x2\xe2) + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x4\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\x44\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x4) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/dotfiles/.config/starship.toml b/dotfiles/.config/starship.toml new file mode 100644 index 0000000..557ecd0 --- /dev/null +++ b/dotfiles/.config/starship.toml @@ -0,0 +1,80 @@ +palette = "catppuccin_mocha" + +[palettes.catppuccin_mocha] +rosewater = "#f5e0dc" +flamingo = "#f2cdcd" +pink = "#f5c2e7" +mauve = "#cba6f7" +red = "#f38ba8" +maroon = "#eba0ac" +peach = "#fab387" +yellow = "#f9e2af" +green = "#a6e3a1" +teal = "#94e2d5" +sky = "#89dceb" +sapphire = "#74c7ec" +blue = "#89b4fa" +lavender = "#b4befe" +text = "#cdd6f4" +subtext1 = "#bac2de" +subtext0 = "#a6adc8" +overlay2 = "#9399b2" +overlay1 = "#7f849c" +overlay0 = "#6c7086" +surface2 = "#585b70" +surface1 = "#45475a" +surface0 = "#313244" +base = "#1e1e2e" +mantle = "#181825" +crust = "#11111b" + +continuation_prompt = '▶▶ ' + +format = """ +$username\ +$hostname\ +$directory\ +$git_branch\ +$git_state\ +$git_status\ +$cmd_duration\ +$line_break\ +$python\ +$character""" + +[directory] +style = "blue" + +[character] +success_symbol = "[❯](purple)" +error_symbol = "[❯](red)" +vimcmd_symbol = "[❮](green)" + +[git_branch] +format = "[$branch]($style)" +style = "bright-black" + +[git_status] +format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)" +style = "cyan" +conflicted = "​" +untracked = "​" +modified = "​" +staged = "​" +renamed = "​" +deleted = "​" +stashed = "≡" + +[git_state] +format = '\([$state( $progress_current/$progress_total)]($style)\) ' +style = "bright-black" + +[cmd_duration] +format = "[$duration]($style) " +style = "yellow" + +[python] +format = "[$virtualenv]($style) " +style = "bright-black" + + diff --git a/dotfiles/.config/strawberry/strawberry.conf b/dotfiles/.config/strawberry/strawberry.conf new file mode 100644 index 0000000..4fbfc12 --- /dev/null +++ b/dotfiles/.config/strawberry/strawberry.conf @@ -0,0 +1,415 @@ +[Analyzer] +framerate=25 +type=BlockAnalyzer + +[Appearance] +background_image_do_not_cut=true +background_image_keep_aspect_ratio=true +background_image_max_size=0 +background_image_position=5 +background_image_stretch=false +background_image_type=1 +blur_radius=0 +icon_size_configure_buttons=18 +icon_size_left_panel_buttons=28 +icon_size_play_control_buttons=36 +icon_size_playlist_buttons=28 +icon_size_tabbar_large_mode=34 +icon_size_tabbar_small_mode=30 +opacity_level=40 +playlist_playing_song_color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0) +style=default +system_icons=false +tab_color=@Variant(\0\0\0\x43\x2\xff\xffZ<33\x9f\x38\0\0) +tab_gradient=true +tab_system_color=true + +[Backend] +AutoCrossfadeEnabled=false +CrossfadeEnabled=false +Device=@Invalid() +FadeoutDuration=2000 +FadeoutEnabled=false +FadeoutPauseDuration=250 +FadeoutPauseEnabled=false +NoCrossfadeSameAlbum=true +Output=autoaudiosink +alsaplugin=3 +bs2b=false +bufferduration=4000 +bufferhighwatermark=0.99 +bufferlowwatermark=0.33 +channels=2 +channels_enabled=false +ebur128_loudness_normalization=false +ebur128_target_level_lufs=-23 +http2=false +rgcompression=true +rgenabled=false +rgfallbackgain=0 +rgmode=0 +rgpreamp=0 +strict_ssl=false +volume_control=true + +[Behaviour] +doubleclick_addmode=1 +doubleclick_playlist_addmode=1 +doubleclick_playmode=2 +keeprunning=true +language= +menu_playmode=2 +menu_previousmode=1 +playing_widget=true +resumeplayback=false +seek_step_sec=10 +showtrayicon=true +startupbehaviour=3 +taskbar_progress=false +trayicon_progress=false +volume_increment=5 + +[Collection] +auto_open=true +cache_size=160 +cache_size_unit=1 +cover_art_patterns=front, cover +delete_files=false +disk_cache_enable=false +disk_cache_size=360 +disk_cache_size_unit=1 +expire_unavailable_songs=60 +group_by1=3 +group_by2=0 +group_by3=0 +group_by_version=1 +last_path= +mark_songs_unavailable=true +monitor=true +overwrite_playcount=false +overwrite_rating=false +pretty_covers=true +save_playcounts=false +save_ratings=false +separate_albums_by_grouping=false +show_dividers=true +song_ebur128_loudness_analysis=false +song_tracking=false +sort_skips_articles=true +startup_scan=true +various_artists=true + +[Context] +AlbumEnable=true +SearchCoverEnable=true +SearchLyricsEnable=true +SongLyricsEnable=true +SummaryFmt=%album% +TechnicalDataEnable=false +TitleFmt=%title% - %artist% +font_headline=Sarasa Gothic SC +font_normal=Sarasa Gothic SC +font_size_headline=16 +font_size_normal=14 + +[Covers] +providers=@Invalid() +save_filename=2 +save_lowercase=true +save_overwrite=false +save_pattern=%albumartist-%album +save_replace_spaces=true +save_type=1 +types=art_unset, art_manual, art_automatic, art_embedded + +[Equalizer] +enable_stereo_balancer=false +enabled=false +presets\1\name=Classical +presets\1\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xce) +presets\10\name=Live +presets\10\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xe7\0\0\0\0\0\0\0\x14\0\0\0\x19\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\xf\0\0\0\xf\0\0\0\n) +presets\11\name=Party +presets\11\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#) +presets\12\name=Pop +presets\12\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf6\0\0\0\x19\0\0\0#\0\0\0(\0\0\0\x19\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xf1\xff\xff\xff\xf6\xff\xff\xff\xf6) +presets\13\name=Reggae +presets\13\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xfb\xff\xff\xff\xe2\0\0\0\0\xff\xff\xff\xdd\xff\xff\xff\xdd\0\0\0\0\0\0\0\0\0\0\0\0) +presets\14\name=Rock +presets\14\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x19\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xec\0\0\0\x14\0\0\0-\0\0\0\x37\0\0\0\x37\0\0\0\x37) +presets\15\name=Ska +presets\15\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf1\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xfb\0\0\0\x14\0\0\0\x1e\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0\x32) +presets\16\name=Soft +presets\16\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xfb\0\0\0\x14\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0<) +presets\17\name=Soft Rock +presets\17\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xe7\xff\xff\xff\xe2\xff\xff\xff\xec\xff\xff\xff\xfb\0\0\0\xf\0\0\0-) +presets\18\name=Techno +presets\18\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xe7\0\0\0\0\0\0\0(\0\0\0\x32\0\0\0\x32\0\0\0-) +presets\19\name=Zero +presets\19\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0) +presets\2\name=Club +presets\2\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x1e\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\0\0\0\0\0\0\0\0\0) +presets\3\name=Custom +presets\3\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0) +presets\4\name=Dance +presets\4\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0#\0\0\0\n\0\0\0\0\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0) +presets\5\name=Full Bass +presets\5\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x46\0\0\0\x46\0\0\0\x46\0\0\0(\0\0\0\x14\xff\xff\xff\xd3\xff\xff\xff\xce\xff\xff\xff\xc9\xff\xff\xff\xc9\xff\xff\xff\xc9) +presets\6\name=Full Bass + Treble +presets\6\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0\x1e\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xe7\0\0\0\n\0\0\0-\0\0\0\x37\0\0\0<\0\0\0<) +presets\7\name=Full Treble +presets\7\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xe7\0\0\0\xf\0\0\0\x37\0\0\0P\0\0\0P\0\0\0P\0\0\0U) +presets\8\name=Laptop/Headphones +presets\8\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\x32\0\0\0\x19\xff\xff\xff\xec\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0) +presets\9\name=Large Hall +presets\9\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0\x32\0\0\0\x1e\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xe7\0\0\0\0\0\0\0\0) +presets\size=19 +selected_preset=Custom +stereo_balance=0 + +[GlobalShortcuts] +dec_volume= +inc_volume= +love= +mute= +next_track=Media Next +pause= +play= +play_pause=Media Play +prev_track=Media Previous +repeat_mode= +restart_or_prev_track= +seek_backward= +seek_forward= +show_hide= +show_osd= +shuffle_mode= +stop=Media Stop +stop_after= +toggle_pretty_osd= +toggle_scrobbling= +use_kglobalaccel=false +use_x11=false + +[LastFM] +enabled=false + +[LibreFM] +enabled=false + +[ListenBrainz] +enabled=false +user_token= + +[Lyrics] +providers=@Invalid() + +[MainWindow] +current_tab=5 +do_not_show_sponsor_message=true +file_path= +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\a\xf7\0\0\x4>\0\0\0\0\0\0\0\0\0\0\a\xf7\0\0\x4>\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\a\xf7\0\0\x4>) +hidden=false +maximized=false +minimized=false +search_for_cover_auto=true +show_sidebar=true +splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1\x8a\0\0\x4W\0\xff\xff\xff\xff\x1\0\0\0\x1\0) +tab_collection=1 +tab_context=0 +tab_devices=7 +tab_files=5 +tab_mode=1 +tab_playlists=3 +tab_queue=2 +tab_radios=6 +tab_smartplaylists=4 + +[Moodbar] +enabled=true +save=false +show=true +style=4 + +[NetworkProxy] +engine=true +hostname= +mode=0 +password= +port=0 +type=3 +use_authentication=false +username= + +[OSD] +Behaviour=1 +CustomText1= +CustomText2= +CustomTextEnabled=false +ShowArt=true +ShowOnPausePlayback=true +ShowOnPlayModeChange=true +ShowOnResumePlayback=false +ShowOnVolumeChange=false +Timeout=3000 + +[OSDPretty] +background_color=4284913379 +background_opacity=0.8500000238418579 +disable_duration=false +fading=false +font="Verdana,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" +foreground_color=4278190080 +popup_pos=@Point(1652 0) +popup_screen=DP-3 + +[Player] +playback_playlist=1 +playback_position=179 +playback_state=2 +volume=50 + +[Playlist] +alternating_row_colors=true +auto_sort=false +column_alignments=@Variant(\0\0\0\x7f\0\0\0\x13\x43olumnAlignmentMap\0\0\0\0\xe\0\0\0\0\0\0\0\x81\0\0\0\x2\0\0\0\x81\0\0\0\x6\0\0\0\x82\0\0\0\a\0\0\0\x82\0\0\0\b\0\0\0\x82\0\0\0\t\0\0\0\x82\0\0\0\n\0\0\0\x82\0\0\0\f\0\0\0\x82\0\0\0\r\0\0\0\x82\0\0\0\xe\0\0\0\x82\0\0\0\x11\0\0\0\x82\0\0\0\x12\0\0\0\x81\0\0\0\x15\0\0\0\x82\0\0\0\x16\0\0\0\x82) +continue_on_error=false +delete_files=false +editmetadatainline=false +glow_effect=false +greyout_songs_play=true +greyout_songs_startup=true +path_type=0 +playlist_clear=true +rating_locked=false +select_track=false +show_bars=true +show_toolbar=true +state="@ByteArray(P,\x95\x10\x1\0\0\0 \0\0\0\b\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x6\0\0\0\a\0\0\0\t\0\0\0\n\0\0\0\v\0\0\0\f\0\0\0\r\0\0\0\xe\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e\0\0\0\x1f\0\0\0 \0\0\x1r\0\0\x1\x64\0\0\x1h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x66\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x66\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x6\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\n\0\0\0\xe\0\0\0\x12\0\0\0 ?\xd0\xe5}\xdb\xf1\x97t?\xd0>\xc5y\xb2\xd6\x9c?\xd0k\xa6/\xa2--\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xb2\xbf\xff\xcf\x9e\xd2{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xb4K\xe\x1a\xe6\xbf\xd7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xb2\xb5L\0`\0\xbb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)" +state_version=1 +warn_close_playlist=true +write_metadata=false + +[PlaylistSequence] +repeat_mode=3 +shuffle_mode=0 + +[Qobuz] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists + +[Scrobbler] +albumartist=false +enabled=false +love_button=false +offline=false +scrobble_button=false +show_error_dialog=true +sources=collection, file, cd, device, subsonic, tidal, qobuz, spotify, stream, somafm, radioparadise, unknown +strip_remastered=true +submit=0 + +[SerializedSmartPlaylists] +songs_version=3 + +[SettingsDialog] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x4\0\0\0 \0\0\a\xfb\0\0\x4^\0\0\0\x4\0\0\0 \0\0\a\xfb\0\0\x4^\0\0\0\0\0\0\0\0\b\0\0\0\0\x4\0\0\0 \0\0\a\xfb\0\0\x4^) + +[Spotify] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists + +[Subsonic] +group_by1=1 +group_by2=4 +group_by3=0 +group_by_version=1 +separate_albums_by_grouping=false + +[Tidal] +albums_group_by1=1 +albums_group_by2=4 +albums_group_by3=0 +albums_group_by_version=1 +albums_separate_albums_by_grouping=false +artists_group_by1=1 +artists_group_by2=4 +artists_group_by3=0 +artists_group_by_version=1 +artists_separate_albums_by_grouping=false +search_group_by1=1 +search_group_by2=4 +search_group_by3=0 +search_group_by_version=1 +songs_group_by1=1 +songs_group_by2=4 +songs_group_by3=0 +songs_group_by_version=1 +songs_separate_albums_by_grouping=false +tab=artists + +[Transcoder] +faac\bitrate=320000 +faac\midside=true +faac\profile=2 +faac\shortctl=0 +faac\tns=false +ffenc_wmav2\bitrate=320000 +flacenc\quality=5 +lamemp3enc\bitrate=320 +lamemp3enc\cbr=false +lamemp3enc\encoding-engine-quality=2 +lamemp3enc\mono=false +lamemp3enc\quality=10 +lamemp3enc\target=1 +opusenc\bitrate=320000 +speexenc\abr=0 +speexenc\bitrate=0 +speexenc\complexity=3 +speexenc\dtx=false +speexenc\mode=0 +speexenc\nframes=1 +speexenc\quality=10 +speexenc\vad=false +speexenc\vbr=false +vorbisenc\bitrate=-1 +vorbisenc\managed=false +vorbisenc\max-bitrate=-1 +vorbisenc\min-bitrate=-1 +vorbisenc\quality=1 diff --git a/dotfiles/.config/swappy/config b/dotfiles/.config/swappy/config new file mode 100644 index 0000000..d1eb6bb --- /dev/null +++ b/dotfiles/.config/swappy/config @@ -0,0 +1,11 @@ +[Default] +auto_save = false +early_exit = true +fill_shape = false +line_size = 5 +paint_mode = brush +save_dir = ~/Pictures/Screenshots +save_filename_format = SCREENSHOT-%Y-%m-%d-%H:%M:%S.png +show_panel = false +text_font = Sarasa Gothic SC +text_size = 20 diff --git a/dotfiles/.config/waybar/config.jsonc b/dotfiles/.config/waybar/config.jsonc new file mode 100644 index 0000000..681e134 --- /dev/null +++ b/dotfiles/.config/waybar/config.jsonc @@ -0,0 +1,171 @@ +{ + "layer": "top", + "position": "top", + //"height": 20, + "margin-left": 10, + "margin-bottom": 0, + "margin-right": 10, + "spacing": 8, + "modules-left": [ + "custom/startmenu", + "backlight", + "battery", + "network", + "hyprland/workspaces", + "niri/workspaces", + "sway/workspaces" + ], + "modules-center": [ + "wlr/taskbar" + ], + "modules-right": [ + "custom/screenshot", + "tray", + "custom/wl-gammarelay-brightness", + "custom/wl-gammarelay-temperature", + "wireplumber", + "clock", + "custom/swaync", + ], + + // ------------------------------------------------------------------------- + // Modules + // ------------------------------------------------------------------------- + + "custom/startmenu": { + "format": " ", + "tooltip": false, + "on-click": "wlogout", + "on-click-right": "fuzzel", + }, + + "backlight": { + "device": "intel_backlight", + "format": "{icon} {percent}%", + "format-icons": [""], + "on-scroll-down": "brightnessctl s 2%-", + "on-scroll-up": "brightnessctl s +2%", + }, + + "battery": { + "interval": 5, + "states": { + "good": 95, + "warning": 15, + "critical": 10, + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-icons": ["", "", "", "", ""], + }, + + "network": { + "interval": 3, + "format": "{bandwidthUpBytes} {bandwidthDownBytes}", + "format-disconnected": "󰲜 ", + "on-click": "alacritty -e zenith", + "on-click-right": "corestats", + "tooltip-format": "{ifname}\n{ipaddr}/{cidr}\n", + }, + + "hyprland/workspaces": { + "all-outputs": true, + "format": "{name}", + "on-scroll-down": "hyprctl dispatch workspace e+1 1>/dev/null", + "on-scroll-up": "hyprctl dispatch workspace e-1 1>/dev/null", + "sort-by-number": true, + "active-only": false, + }, + + "niri/workspaces": { + "format": "{icon}", + }, + + "sway/workspaces": { + "all-outputs": true, + "format": "{name}", + }, + + "wlr/taskbar": { + "format": "{icon}", + "icon-size": 22, + "spacing": 3, + "tooltip-format": "{title}", + "ignore-list": [], + "on-click": "activate", + "on-click-middle": "close", + }, + + "custom/screenshot": { + "format": " 󰨵 ", + "on-click": "sh ~/.config/waybar/scripts/Screenshot-Area.sh", + "on-click-right": "nemo ~/Pictures/Screenshots", + "on-click-middle": "sh ~/.config/waybar/scripts/Screenshot-Fullscreen.sh", + "tooltip": false, + }, + + "tray": { + "spacing": 8, + }, + + "custom/wl-gammarelay-brightness": { + "format": "{}%", + "exec": "wl-gammarelay-rs watch {bp}", + "on-click": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.7", + "on-click-right": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 1", + "on-scroll-up": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateBrightness d +0.02", + "on-scroll-down": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateBrightness d -0.02", + "tooltip": false + }, + "custom/wl-gammarelay-temperature": { + "format": "{}K", + "exec": "wl-gammarelay-rs watch {t}", + "on-click": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Temperature q 4500", + "on-click-right": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Temperature q 6500", + "on-scroll-up": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n +100", + "on-scroll-down": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n -100", + "tooltip": false + }, + + "wireplumber": { + "on-click": "pwvucontrol", + "on-click-right": "easyeffects", + "on-click-middle": "swayosd-client --output-volume mute-toggle", + "on-scroll-down": "swayosd-client --output-volume -2", + "on-scroll-up": "swayosd-client --output-volume +2", + "format": "{icon} {volume}%", + "format-muted": "MUTE", + "format-source": "", + "format-source-muted": "", + "format-icons": { + "default": ["", "", ""], + }, + }, + + "clock": { + "interval": 60, + "align": 0, + "rotate": 0, + "tooltip-format": "{calendar}", + "format": " {:%H:%M}", + "format-alt": " {:%a %b %d, %G}", + }, + + "custom/swaync": { + "tooltip": true, + "format": " {icon} ", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "escape": true, + }, +} + diff --git a/dotfiles/.config/waybar/mocha.css b/dotfiles/.config/waybar/mocha.css new file mode 100644 index 0000000..75cfb9d --- /dev/null +++ b/dotfiles/.config/waybar/mocha.css @@ -0,0 +1,26 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; diff --git a/dotfiles/.config/waybar/scripts/Screenshot-Area.sh b/dotfiles/.config/waybar/scripts/Screenshot-Area.sh new file mode 100644 index 0000000..ee12ad2 --- /dev/null +++ b/dotfiles/.config/waybar/scripts/Screenshot-Area.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +grim -g "$(slurp)" - | swappy -f - diff --git a/dotfiles/.config/waybar/scripts/Screenshot-Fullscreen.sh b/dotfiles/.config/waybar/scripts/Screenshot-Fullscreen.sh new file mode 100644 index 0000000..ce131b7 --- /dev/null +++ b/dotfiles/.config/waybar/scripts/Screenshot-Fullscreen.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +grim - | wl-copy -t image/png;notify-send "Screenshot copied to clipboard" diff --git a/dotfiles/.config/waybar/scripts/Screenshot-Hyprland-Window.sh b/dotfiles/.config/waybar/scripts/Screenshot-Hyprland-Window.sh new file mode 100644 index 0000000..08305ba --- /dev/null +++ b/dotfiles/.config/waybar/scripts/Screenshot-Hyprland-Window.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +grim -g "$(hyprctl clients -j | jq '.[] | select(.hidden | not) | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' -r | slurp)" - | swappy -f - diff --git a/dotfiles/.config/waybar/scripts/Screenshot-OCR.sh b/dotfiles/.config/waybar/scripts/Screenshot-OCR.sh new file mode 100644 index 0000000..eebdf67 --- /dev/null +++ b/dotfiles/.config/waybar/scripts/Screenshot-OCR.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +## only support EN +grim -g "$(slurp)" - | tesseract -l "eng" stdin stdout | wl-copy;notify-send "OCR content copied to clipboard" diff --git a/dotfiles/.config/waybar/scripts/Screenshot-sway-Window.sh b/dotfiles/.config/waybar/scripts/Screenshot-sway-Window.sh new file mode 100644 index 0000000..4d0977c --- /dev/null +++ b/dotfiles/.config/waybar/scripts/Screenshot-sway-Window.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)" - | swappy -f - diff --git a/dotfiles/.config/waybar/style.css b/dotfiles/.config/waybar/style.css new file mode 100644 index 0000000..c79b262 --- /dev/null +++ b/dotfiles/.config/waybar/style.css @@ -0,0 +1,133 @@ +@import "mocha.css"; + +* { + /* https://docs.gtk.org/gtk3/css-overview.html#colors */ + color: @text; + font-family: "JetBrainsMono Nerd Font"; + font-size: 12pt; + font-weight: bold; + border-radius: 8px; + transition-property: background-color; + transition-duration: 0.5s; +} +@keyframes blink_red { + to { + background-color: @red; + color: @base; + } +} +.warning, +.critical, +.urgent { + animation-name: blink_red; + animation-duration: 2s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} +window#waybar { + background-color: @mantle; + border: 2px solid alpha(@crust, 0.3); +} +/* +window > box { + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + background-color: shade(@base, 0.9); + padding: 3px; + padding-left: 8px; + border: 2px none @blue; +} +*/ +#workspaces { + padding-left: 0px; + padding-right: 4px; +} +#workspaces button { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 6px; + padding-right: 6px; +} +#workspaces button.active { + background-color: @surface2; + color: @base; +} +#workspaces button.urgent { + color: @base; +} +#workspaces button:hover { + background-color: @surface0; + color: @base; +} +tooltip { + background: @mantle; +} +tooltip label { + color: @subtext1; +} +#custom-launcher { + font-size: 20px; + padding-left: 8px; + padding-right: 6px; + color: #7ebae4; +} + +#custom-powermenu { + color: @red; + padding-left: 10px; + padding-right: 10px; +} + +#memory { + color: @teal; +} +#cpu { + color: @maroon; +} +#clock { + color: @subtext1; +} + +#idle_inhibitor { + color: @pink; + padding-right: 8px; +} +#battery { + min-width: 55px; + color: @sky; +} +#battery.charging, +#battery.full, +#battery.plugged { + color: @green; +} +#battery.warning:not(.charging) { + color: @yellow; +} +#battery.critical:not(.charging) { + color: @red; +} +#custom-wall { + color: @sky; +} +#temperature { + color: @sky; +} +#backlight { + color: @peach; +} +#pulseaudio { + color: @flamingo; +} +#network { + color: @sapphire; +} +#network.disconnected { + color: @subtext0; +} +#tray { + padding-right: 8px; + padding-left: 10px; +} diff --git a/dotfiles/.config/wlogout/layout b/dotfiles/.config/wlogout/layout new file mode 100644 index 0000000..30b3392 --- /dev/null +++ b/dotfiles/.config/wlogout/layout @@ -0,0 +1,36 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "Lock", + "keybind" : "l" +} +{ + "label" : "hibernate", + "action" : "systemctl hibernate", + "text" : "Hibernate", + "keybind" : "h" +} +{ + "label" : "logout", + "action" : "loginctl terminate-user $USER", + "text" : "Logout", + "keybind" : "e" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "suspend", + "action" : "systemctl suspend", + "text" : "Suspend", + "keybind" : "u" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/dotfiles/.config/xarchiver/xarchiverrc b/dotfiles/.config/xarchiver/xarchiverrc new file mode 100644 index 0000000..382ab63 --- /dev/null +++ b/dotfiles/.config/xarchiver/xarchiverrc @@ -0,0 +1,29 @@ +[xarchiver] +preferred_format=0 +prefer_unzip=true +confirm_deletion=true +sort_filename_content=false +advanced_isearch=true +auto_expand=true +store_output=false +icon_size=4 +show_archive_comment=false +show_sidebar=true +show_location_bar=true +show_toolbar=true +preferred_custom_cmd= +preferred_temp_dir=/tmp +preferred_extract_dir=/tmp +allow_sub_dir=0 +ensure_directory=true +overwrite=false +full_path=2 +touch=false +fresh=false +update=false +store_path=false +updadd=true +freshen=false +recurse=true +solid_archive=false +remove_files=false diff --git a/dotfiles/.config/zed/keymap.json b/dotfiles/.config/zed/keymap.json new file mode 100644 index 0000000..c81d4ad --- /dev/null +++ b/dotfiles/.config/zed/keymap.json @@ -0,0 +1,18 @@ +[ + { + "context": "Editor", + "bindings": { + "ctrl-q": null, + "ctrl-/": "workspace::ToggleBottomDock", + "ctrl-\\": "workspace::ToggleLeftDock" + } + }, + { + "context": "Workspace", + "bindings": { + "ctrl-q": null, + "ctrl-/": "workspace::ToggleBottomDock", + "ctrl-\\": "workspace::ToggleLeftDock" + } + } +] diff --git a/dotfiles/.config/zed/settings.json b/dotfiles/.config/zed/settings.json new file mode 100644 index 0000000..44f6d85 --- /dev/null +++ b/dotfiles/.config/zed/settings.json @@ -0,0 +1,65 @@ +{ + "assistant": { + "enabled": false, + "version": "2" + }, + "auto_install_extensions": { + "catppucchin-icons": true, + "catppuccin": true, + "nix": true + }, + "auto_update": false, + "base_keymap": "VSCode", + "features": { + "copilot": false, + "inline_completion_provider": "none" + }, + "hour_format": "hour24", + "icon_theme": { + "dark": "Catppuccin Mocha", + "light": "Catppuccin Mocha", + "mode": "system" + }, + "load_direnv": "shell_hook", + "lsp": { + "nix": { + "binary": { + "path_lookup": true + } + } + }, + "show_whitespaces": "all", + "terminal": { + "alternate_scroll": "off", + "blinking": "off", + "button": true, + "copy_on_select": false, + "detect_venv": { + "on": { + "activate_script": "default", + "directories": [".env", "env", ".venv", "venv"] + } + }, + "dock": "bottom", + "env": { + "TERM": "alacritty" + }, + "font_family": "JetBrainsMono Nerd Font", + "font_features": null, + "font_size": null, + "line_height": "comfortable", + "option_as_meta": false, + "shell": "system", + "toolbar": { + "breadcrumbs": false, + "title": true + }, + "working_directory": "current_project_directory" + }, + "theme": { + "dark": "Catppuccin Mocha", + "light": "Catppuccin Mocha", + "mode": "system" + }, + "vim_mode": false +} diff --git a/dotfiles/.config/zellij/config.kdl b/dotfiles/.config/zellij/config.kdl new file mode 100644 index 0000000..6a8808a --- /dev/null +++ b/dotfiles/.config/zellij/config.kdl @@ -0,0 +1,466 @@ +// +// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/dich/.config/zellij/config.kdl.bak.1 +// + +keybinds clear-defaults=true { + locked { + bind "Ctrl g" { SwitchToMode "normal"; } + } + pane { + bind "left" { MoveFocus "left"; } + bind "down" { MoveFocus "down"; } + bind "up" { MoveFocus "up"; } + bind "right" { MoveFocus "right"; } + bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } + bind "d" { NewPane "down"; SwitchToMode "normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; } + bind "h" { MoveFocus "left"; } + bind "i" { TogglePanePinned; SwitchToMode "normal"; } + bind "j" { MoveFocus "down"; } + bind "k" { MoveFocus "up"; } + bind "l" { MoveFocus "right"; } + bind "n" { NewPane; SwitchToMode "normal"; } + bind "p" { SwitchFocus; } + bind "Ctrl p" { SwitchToMode "normal"; } + bind "r" { NewPane "right"; SwitchToMode "normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "normal"; } + } + tab { + bind "left" { GoToPreviousTab; } + bind "down" { GoToNextTab; } + bind "up" { GoToPreviousTab; } + bind "right" { GoToNextTab; } + bind "1" { GoToTab 1; SwitchToMode "normal"; } + bind "2" { GoToTab 2; SwitchToMode "normal"; } + bind "3" { GoToTab 3; SwitchToMode "normal"; } + bind "4" { GoToTab 4; SwitchToMode "normal"; } + bind "5" { GoToTab 5; SwitchToMode "normal"; } + bind "6" { GoToTab 6; SwitchToMode "normal"; } + bind "7" { GoToTab 7; SwitchToMode "normal"; } + bind "8" { GoToTab 8; SwitchToMode "normal"; } + bind "9" { GoToTab 9; SwitchToMode "normal"; } + bind "[" { BreakPaneLeft; SwitchToMode "normal"; } + bind "]" { BreakPaneRight; SwitchToMode "normal"; } + bind "b" { BreakPane; SwitchToMode "normal"; } + bind "h" { GoToPreviousTab; } + bind "j" { GoToNextTab; } + bind "k" { GoToPreviousTab; } + bind "l" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "normal"; } + bind "r" { SwitchToMode "renametab"; TabNameInput 0; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; } + bind "Ctrl t" { SwitchToMode "normal"; } + bind "x" { CloseTab; SwitchToMode "normal"; } + bind "tab" { ToggleTab; } + } + resize { + bind "left" { Resize "Increase left"; } + bind "down" { Resize "Increase down"; } + bind "up" { Resize "Increase up"; } + bind "right" { Resize "Increase right"; } + bind "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + bind "=" { Resize "Increase"; } + bind "H" { Resize "Decrease left"; } + bind "J" { Resize "Decrease down"; } + bind "K" { Resize "Decrease up"; } + bind "L" { Resize "Decrease right"; } + bind "h" { Resize "Increase left"; } + bind "j" { Resize "Increase down"; } + bind "k" { Resize "Increase up"; } + bind "l" { Resize "Increase right"; } + bind "Ctrl n" { SwitchToMode "normal"; } + } + move { + bind "left" { MovePane "left"; } + bind "down" { MovePane "down"; } + bind "up" { MovePane "up"; } + bind "right" { MovePane "right"; } + bind "h" { MovePane "left"; } + bind "Ctrl h" { SwitchToMode "normal"; } + bind "j" { MovePane "down"; } + bind "k" { MovePane "up"; } + bind "l" { MovePane "right"; } + bind "n" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "tab" { MovePane; } + } + scroll { + bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "normal"; } + bind "Alt down" { MoveFocus "down"; SwitchToMode "normal"; } + bind "Alt up" { MoveFocus "up"; SwitchToMode "normal"; } + bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "normal"; } + bind "e" { EditScrollback; SwitchToMode "normal"; } + bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "normal"; } + bind "Alt j" { MoveFocus "down"; SwitchToMode "normal"; } + bind "Alt k" { MoveFocus "up"; SwitchToMode "normal"; } + bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "normal"; } + bind "s" { SwitchToMode "entersearch"; SearchInput 0; } + } + search { + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "n" { Search "down"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } + } + session { + bind "a" { + LaunchOrFocusPlugin "zellij:about" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "Ctrl o" { SwitchToMode "normal"; } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + } + shared_except "locked" { + bind "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt =" { Resize "Increase"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Ctrl g" { SwitchToMode "locked"; } + bind "Alt i" { MoveTab "left"; } + bind "Alt n" { NewPane; } + bind "Alt o" { MoveTab "right"; } + bind "Ctrl q" { Quit; } + } + shared_except "locked" "move" { + bind "Ctrl h" { SwitchToMode "move"; } + } + shared_except "locked" "session" { + bind "Ctrl o" { SwitchToMode "session"; } + } + shared_except "locked" "scroll" { + bind "Alt left" { MoveFocusOrTab "left"; } + bind "Alt down" { MoveFocus "down"; } + bind "Alt up" { MoveFocus "up"; } + bind "Alt right" { MoveFocusOrTab "right"; } + bind "Alt h" { MoveFocusOrTab "left"; } + bind "Alt j" { MoveFocus "down"; } + bind "Alt k" { MoveFocus "up"; } + bind "Alt l" { MoveFocusOrTab "right"; } + } + shared_except "locked" "scroll" "search" "tmux" { + bind "Ctrl b" { SwitchToMode "tmux"; } + } + shared_except "locked" "scroll" "search" { + bind "Ctrl s" { SwitchToMode "scroll"; } + } + shared_except "locked" "tab" { + bind "Ctrl t" { SwitchToMode "tab"; } + } + shared_except "locked" "pane" { + bind "Ctrl p" { SwitchToMode "pane"; } + } + shared_except "locked" "resize" { + bind "Ctrl n" { SwitchToMode "resize"; } + } + shared_except "normal" "locked" "entersearch" { + bind "enter" { SwitchToMode "normal"; } + } + shared_except "normal" "locked" "entersearch" "renametab" "renamepane" { + bind "esc" { SwitchToMode "normal"; } + } + shared_among "pane" "tmux" { + bind "x" { CloseFocus; SwitchToMode "normal"; } + } + shared_among "scroll" "search" { + bind "PageDown" { PageScrollDown; } + bind "PageUp" { PageScrollUp; } + bind "left" { PageScrollUp; } + bind "down" { ScrollDown; } + bind "up" { ScrollUp; } + bind "right" { PageScrollDown; } + bind "Ctrl b" { PageScrollUp; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; } + bind "d" { HalfPageScrollDown; } + bind "Ctrl f" { PageScrollDown; } + bind "h" { PageScrollUp; } + bind "j" { ScrollDown; } + bind "k" { ScrollUp; } + bind "l" { PageScrollDown; } + bind "Ctrl s" { SwitchToMode "normal"; } + bind "u" { HalfPageScrollUp; } + } + entersearch { + bind "Ctrl c" { SwitchToMode "scroll"; } + bind "esc" { SwitchToMode "scroll"; } + bind "enter" { SwitchToMode "search"; } + } + renametab { + bind "esc" { UndoRenameTab; SwitchToMode "tab"; } + } + shared_among "renametab" "renamepane" { + bind "Ctrl c" { SwitchToMode "normal"; } + } + renamepane { + bind "esc" { UndoRenamePane; SwitchToMode "pane"; } + } + shared_among "session" "tmux" { + bind "d" { Detach; } + } + tmux { + bind "left" { MoveFocus "left"; SwitchToMode "normal"; } + bind "down" { MoveFocus "down"; SwitchToMode "normal"; } + bind "up" { MoveFocus "up"; SwitchToMode "normal"; } + bind "right" { MoveFocus "right"; SwitchToMode "normal"; } + bind "space" { NextSwapLayout; } + bind "\"" { NewPane "down"; SwitchToMode "normal"; } + bind "%" { NewPane "right"; SwitchToMode "normal"; } + bind "," { SwitchToMode "renametab"; } + bind "[" { SwitchToMode "scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "normal"; } + bind "c" { NewTab; SwitchToMode "normal"; } + bind "h" { MoveFocus "left"; SwitchToMode "normal"; } + bind "j" { MoveFocus "down"; SwitchToMode "normal"; } + bind "k" { MoveFocus "up"; SwitchToMode "normal"; } + bind "l" { MoveFocus "right"; SwitchToMode "normal"; } + bind "n" { GoToNextTab; SwitchToMode "normal"; } + bind "o" { FocusNextPane; } + bind "p" { GoToPreviousTab; SwitchToMode "normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; } + } +} + +// Plugin aliases - can be used to change the implementation of Zellij +// changing these requires a restart to take effect +plugins { + about location="zellij:about" + compact-bar location="zellij:compact-bar" + configuration location="zellij:configuration" + filepicker location="zellij:strider" { + cwd "/" + } + plugin-manager location="zellij:plugin-manager" + session-manager location="zellij:session-manager" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + tab-bar location="zellij:tab-bar" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } +} + +// Plugins to load in the background when a new session starts +// eg. "file:/path/to/my-plugin.wasm" +// eg. "https://example.com/my-plugin.wasm" +load_plugins { +} + +// Use a simplified UI without special fonts (arrow glyphs) +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Choose the theme that is specified in the themes section. +// Default: default +// +// theme "dracula" + +// Choose the base input mode of zellij. +// Default: normal +// +default_mode "normal" + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "/tmp" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// The folder in which Zellij will look for layouts +// (Requires restart) +// +// layout_dir "/tmp" + +// The folder in which Zellij will look for themes +// (Requires restart) +// +// theme_dir "/tmp" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// Options: +// - true (default) +// - false +// +// mouse_mode false + +// Toggle having pane frames around the panes +// Options: +// - true (default, enabled) +// - false +// +// pane_frames false + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// (Requires restart) +// Default: false +// +// mirror_session true + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// (Requires restart) +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// (Requires restart) +// Valid values: positive integers +// Default value: 10000 +// +// scroll_buffer_size 10000 + +// Provide a command to execute when copying text. The text will be piped to +// the stdin of the program to perform the copy. This can be used with +// terminal emulators which do not support the OSC 52 ANSI control sequence +// that will be used by default if this option is not set. +// Examples: +// +// copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx +// +// copy_command "pbcopy" + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable automatic copying (and clearing) of selection when releasing mouse +// Default: true +// +// copy_on_select true + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// scrollback_editor "/usr/bin/vim" + +// A fixed name to always give the Zellij session. +// Consider also setting `attach_to_session true,` +// otherwise this will error if such a session exists. +// Default: +// +// session_name "My singleton session" + +// When `session_name` is provided, attaches to that session +// if it is already running or creates it otherwise. +// Default: false +// +// attach_to_session true + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout false + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// Options: +// - true +// - false (default) +// +// serialize_pane_viewport false + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// +// scrollback_lines_to_serialize 10000 + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// (Requires restart) +// Default: true +// +// styled_underlines false + +// How often in seconds sessions are serialized +// +// serialization_interval 10000 + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// (Requires restart) +// Default: false +// +// disable_session_metadata false + +// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_keyboard_protocol false + +// Whether to stack panes when resizing beyond a certain size +// Default: true +// +// stacked_resize false + +// Whether to show tips on startup +// Default: true +// +show_startup_tips false + +// Whether to show release notes on first version run +// Default: true +// +// show_release_notes false diff --git a/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/arrow.png b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/arrow.png new file mode 100644 index 0000000..b10ddb5 Binary files /dev/null and b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/arrow.png differ diff --git a/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/radio.png b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/radio.png new file mode 100644 index 0000000..d2d87ec Binary files /dev/null and b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/radio.png differ diff --git a/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/theme.conf b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/theme.conf new file mode 100644 index 0000000..e32d456 --- /dev/null +++ b/dotfiles/.local/share/fcitx5/themes/catppuccin-mocha-flamingo/theme.conf @@ -0,0 +1,110 @@ +# vim: ft=dosini +[Metadata] +Name=Catppuccin Mocha Flamingo +Version=0.2 +Author=justTOBBI and Isabelinc +Description=Catppuccin Mocha Flamingo Color Theme +ScaleWithDPI=True + +[InputPanel] +# 字体 +Font=Sarasa Gothic SC 14 +# 非选中候选字颜色 +# Blue +NormalColor=#89b4fa +# 选中候选字颜色 +# Flamingo +HighlightCandidateColor=#f2cdcd +# 高亮前景颜色(输入字符颜色) +# Flamingo +HighlightColor=#f2cdcd +# 输入字符背景颜色 +# Surface 0 +HighlightBackgroundColor=#313244 + +Spacing=3 + +[InputPanel/TextMargin] +# 候选字对左边距 +Left=10 +# 候选字对右边距 +Right=10 +# 候选字向上边距 +Top=6 +# 候选字向下边距 +Bottom=6 + +[InputPanel/Background] +# Surface 0 +Color=#313244 +# Surface 0 +BorderColor=#313244 +BorderWidth=2 + +[InputPanel/Background/Margin] +Left=2 +Right=2 +Top=2 +Bottom=2 + +[InputPanel/Highlight] +# Surface 0 +Color=#313244 + +[InputPanel/Highlight/Margin] +# 高亮区域左边距 +Left=10 +# 高亮区域右边距 +Right=10 +# 高亮区域上边距 +Top=7 +# 高亮区域下边距 +Bottom=7 + +[Menu] +Font=Sarasa Gothic SC 14 +# Text +NormalColor=#cdd6f4 +Spacing=3 + +[Menu/Background] +# Surface 0 +Color=#313244 + +[Menu/Background/Margin] +Left=2 +Right=2 +Top=2 +Bottom=2 + +[Menu/ContentMargin] +Left=2 +Right=2 +Top=2 +Bottom=2 + +[Menu/Highlight] +# Pink +Color=#f5c2e7 + +[Menu/Highlight/Margin] +Left=10 +Right=10 +Top=5 +Bottom=5 + +[Menu/Separator] +# Base +Color=#1e1e2e + +[Menu/CheckBox] +Image=radio.png + +[Menu/SubMenu] +Image=arrow.png + +[Menu/TextMargin] +Left=5 +Right=5 +Top=5 +Bottom=5 diff --git a/dotfiles/.local/share/oculante/config.json b/dotfiles/.local/share/oculante/config.json new file mode 100644 index 0000000..e747bbd --- /dev/null +++ b/dotfiles/.local/share/oculante/config.json @@ -0,0 +1,66 @@ +{ + "accent_color": [255, 0, 75], + "background_color": [30, 30, 30], + "vsync": true, + "force_redraw": false, + "shortcuts": { + "AlwaysOnTop": ["T"], + "Fullscreen": ["F"], + "InfoMode": ["I"], + "EditMode": ["E"], + "NextImage": ["Right"], + "FirstImage": ["Home"], + "LastImage": ["End"], + "PreviousImage": ["Left"], + "RedChannel": ["R"], + "GreenChannel": ["G"], + "BlueChannel": ["B"], + "AlphaChannel": ["A"], + "RGBChannel": ["U"], + "RGBAChannel": ["C"], + "ResetView": ["V"], + "ZoomOut": ["Minus"], + "ZoomIn": ["Equals"], + "ZoomActualSize": ["Key1"], + "ZoomDouble": ["Key2"], + "ZoomThree": ["Key3"], + "ZoomFour": ["Key4"], + "ZoomFive": ["Key5"], + "CompareNext": ["C", "LShift"], + "PanLeft": ["LShift", "Left"], + "PanRight": ["LShift", "Right"], + "PanUp": ["LShift", "Up"], + "PanDown": ["Down", "LShift"], + "DeleteFile": ["Delete"], + "ClearImage": ["Delete", "LShift"], + "LosslessRotateRight": ["RBracket"], + "LosslessRotateLeft": ["LBracket"], + "Copy": ["C", "LControl"], + "Paste": ["LControl", "V"], + "Browse": ["LControl", "O"], + "Quit": ["Q"], + "ZenMode": ["Z"] + }, + "keep_view": false, + "max_cache": 30, + "show_scrub_bar": false, + "wrap_folder": true, + "keep_edits": false, + "title_format": "{APP} | {VERSION} | {FULLPATH}", + "info_enabled": false, + "edit_enabled": false, + "show_checker_background": false, + "show_minimap": false, + "show_frame": false, + "current_channel": "Rgba", + "svg_scale": 1.0, + "zen_mode": false, + "theme": "Dark", + "linear_mag_filter": false, + "linear_min_filter": true, + "use_mipmaps": true, + "fit_image_on_window_resize": true, + "zoom_multiplier": 1.0, + "borderless": false, + "min_window_size": [800, 800] +} diff --git a/dotfiles/.local/share/wallpapers/nixos-1.png b/dotfiles/.local/share/wallpapers/nixos-1.png new file mode 100644 index 0000000..2cd684f Binary files /dev/null and b/dotfiles/.local/share/wallpapers/nixos-1.png differ diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..205b136 --- /dev/null +++ b/flake.lock @@ -0,0 +1,837 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1746562888, + "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1748408240, + "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "chaotic": { + "inputs": { + "flake-schemas": "flake-schemas", + "home-manager": "home-manager", + "jovian": "jovian", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1751313278, + "narHash": "sha256-H7i6eH7z9sAtl+NUU7ArUxcSIsegmh9xn31ZbTB5PO4=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "2678df2ed81d2343979a5a19d7a087e1cfa953e8", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, + "daeuniverse": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1750820125, + "narHash": "sha256-WDN3/TUs9vqZVXL6jMjl+D0pNsHJ4oO4muMVxnIc5hk=", + "owner": "daeuniverse", + "repo": "flake.nix", + "rev": "2eeb017f69333eea5bc348c555ebcefa0269a071", + "type": "github" + }, + "original": { + "owner": "daeuniverse", + "repo": "flake.nix", + "type": "github" + } + }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1750903843, + "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", + "owner": "nix-community", + "repo": "disko", + "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1748383148, + "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-schemas": { + "locked": { + "lastModified": 1721999734, + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", + "revCount": 75, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "stylix", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1744584021, + "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "48.1", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1751238753, + "narHash": "sha256-hJUPWfz/h+QgXKaKovPwFAdNBnALsvVMggAPgBB+Qvw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "cab8104e9236fab1eb9a702165454ffed353c20f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1751309344, + "narHash": "sha256-zmb01yyOXttyhJD3kRtW6Pkt1lsPbJvN3P92/GnI0tk=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "78fc50f1cf8e57a974ff4bfe654563fce43d6289", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748737919, + "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "5675a9686851d9626560052a032c4e14e533c1fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748294338, + "narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.0.8", + "repo": "ixx", + "type": "github" + } + }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1750403547, + "narHash": "sha256-XDDINMbHTtKQeSRpX5mwq20z23Wg/I/G4JUinA3V8Xg=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "52b86b86d925ec00c836ecc6d36f9c947bb15736", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "chaotic", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1751011381, + "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1738452942, + "narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1739866667, + "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1751011381, + "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1751144320, + "narHash": "sha256-KJsKiGfkfXFB23V26NQ1p+UPsexI6NKtivnrwSlWWdQ=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "ceb52aece5d571b37096945c2815604195a04eb4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1748730660, + "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", + "owner": "nix-community", + "repo": "NUR", + "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749730855, + "narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", + "owner": "NuschtOS", + "repo": "search", + "rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "root": { + "inputs": { + "chaotic": "chaotic", + "daeuniverse": "daeuniverse", + "disko": "disko", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_3", + "nixvim": "nixvim", + "stylix": "stylix" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1751165203, + "narHash": "sha256-3QhlpAk2yn+ExwvRLtaixWsVW1q3OX3KXXe0l8VMLl4=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "90f547b90e73d3c6025e66c5b742d6db51c418c3", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_3", + "git-hooks": "git-hooks", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_4", + "nur": "nur", + "systems": "systems_3", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1751296480, + "narHash": "sha256-PMuzVs9khM7cYrjUCXQeV2OP6WVtbsmdZwa4Cc21y0o=", + "owner": "danth", + "repo": "stylix", + "rev": "4ead8043f70cc3b951e704a1f6e40c8a10230e61", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1748180480, + "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1748740859, + "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1725758778, + "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a87fe91 --- /dev/null +++ b/flake.nix @@ -0,0 +1,27 @@ +{ + description = "🥶"; + + inputs = { + chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + daeuniverse.url = "github:daeuniverse/flake.nix"; + disko.inputs.nixpkgs.follows = "nixpkgs"; + disko.url = "github:nix-community/disko"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.url = "github:nix-community/home-manager"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixvim.inputs.nixpkgs.follows = "nixpkgs"; + nixvim.url = "github:nix-community/nixvim"; + stylix.url = "github:danth/stylix"; + }; + outputs = inputs: let + hostname = "woonix"; + username = "dich"; + in { + nixosConfigurations = { + "${hostname}" = inputs.nixpkgs.lib.nixosSystem { + modules = [./hosts]; + specialArgs = {inherit hostname inputs username;}; + }; + }; + }; +} diff --git a/home/cli/alejandra.nix b/home/cli/alejandra.nix new file mode 100644 index 0000000..626bce0 --- /dev/null +++ b/home/cli/alejandra.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + alejandra + ]; +} diff --git a/home/cli/atuin.nix b/home/cli/atuin.nix new file mode 100644 index 0000000..749a8d7 --- /dev/null +++ b/home/cli/atuin.nix @@ -0,0 +1,5 @@ +_: { + programs.atuin = { + enable = true; + }; +} diff --git a/home/cli/deadnix.nix b/home/cli/deadnix.nix new file mode 100644 index 0000000..b9d4964 --- /dev/null +++ b/home/cli/deadnix.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + deadnix + ]; +} diff --git a/home/cli/direnv.nix b/home/cli/direnv.nix new file mode 100644 index 0000000..37f6d99 --- /dev/null +++ b/home/cli/direnv.nix @@ -0,0 +1,6 @@ +_: { + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; +} diff --git a/home/cli/expect.nix b/home/cli/expect.nix new file mode 100644 index 0000000..0099e0e --- /dev/null +++ b/home/cli/expect.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + expect + ]; +} diff --git a/home/cli/fastfetch.nix b/home/cli/fastfetch.nix new file mode 100644 index 0000000..defd935 --- /dev/null +++ b/home/cli/fastfetch.nix @@ -0,0 +1,5 @@ +_: { + programs.fastfetch = { + enable = true; + }; +} diff --git a/home/cli/fd.nix b/home/cli/fd.nix new file mode 100644 index 0000000..cd17b26 --- /dev/null +++ b/home/cli/fd.nix @@ -0,0 +1,6 @@ +_: { + programs.fd = { + enable = true; + hidden = true; + }; +} diff --git a/home/cli/fzf.nix b/home/cli/fzf.nix new file mode 100644 index 0000000..4164e84 --- /dev/null +++ b/home/cli/fzf.nix @@ -0,0 +1,5 @@ +_: { + programs.fzf = { + enable = true; + }; +} diff --git a/home/cli/just.nix b/home/cli/just.nix new file mode 100644 index 0000000..99878ba --- /dev/null +++ b/home/cli/just.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + just + ]; +} diff --git a/home/cli/nom.nix b/home/cli/nom.nix new file mode 100644 index 0000000..79724e1 --- /dev/null +++ b/home/cli/nom.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + nix-output-monitor + ]; +} diff --git a/home/cli/nushell.nix b/home/cli/nushell.nix new file mode 100644 index 0000000..c47d21c --- /dev/null +++ b/home/cli/nushell.nix @@ -0,0 +1,5 @@ +_: { + programs.nushell = { + enable = true; + }; +} diff --git a/home/cli/onefetch.nix b/home/cli/onefetch.nix new file mode 100644 index 0000000..dcecf4c --- /dev/null +++ b/home/cli/onefetch.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + onefetch + ]; +} diff --git a/home/cli/ripgrep.nix b/home/cli/ripgrep.nix new file mode 100644 index 0000000..4d6b57e --- /dev/null +++ b/home/cli/ripgrep.nix @@ -0,0 +1,5 @@ +_: { + programs.ripgrep = { + enable = true; + }; +} diff --git a/home/cli/starship.nix b/home/cli/starship.nix new file mode 100644 index 0000000..934bae2 --- /dev/null +++ b/home/cli/starship.nix @@ -0,0 +1,5 @@ +_: { + programs.starship = { + enable = true; + }; +} diff --git a/home/cli/tesseract.nix b/home/cli/tesseract.nix new file mode 100644 index 0000000..61a65b2 --- /dev/null +++ b/home/cli/tesseract.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + tesseract + ]; +} diff --git a/home/cli/zoxide.nix b/home/cli/zoxide.nix new file mode 100644 index 0000000..8fa0b33 --- /dev/null +++ b/home/cli/zoxide.nix @@ -0,0 +1,5 @@ +_: { + programs.zoxide = { + enable = true; + }; +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..c1b8ca0 --- /dev/null +++ b/home/default.nix @@ -0,0 +1,35 @@ +{ + hostname, + lib, + username, + ... +}: let + inherit (import ../hosts/${hostname}/env.nix) StateVersion; + ls = lib.filesystem.listFilesRecursive; +in { + imports = + ls ./cli + ++ ls ./gui + ++ ls ./tui + ++ ls ./wayland; + + home = { + file = { + ".config" = { + force = true; + recursive = true; + source = ../dotfiles/.config; + }; + ".local" = { + force = true; + recursive = true; + source = ../dotfiles/.local; + }; + }; + homeDirectory = "/home/${username}"; + stateVersion = StateVersion; + username = "${username}"; + }; + + programs.home-manager.enable = true; +} diff --git a/home/gui/archiver/peazip.nix b/home/gui/archiver/peazip.nix new file mode 100644 index 0000000..8b8801a --- /dev/null +++ b/home/gui/archiver/peazip.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + peazip + ]; +} diff --git a/home/gui/browser/floorp.nix b/home/gui/browser/floorp.nix new file mode 100644 index 0000000..6a1b126 --- /dev/null +++ b/home/gui/browser/floorp.nix @@ -0,0 +1,52 @@ +_: { + programs = { + floorp = { + enable = true; + languagePacks = ["en-US"]; + policies = { + DisableAccounts = true; + DisableAppUpdate = true; + DisableFirefoxAccounts = true; + DisableFirefoxScreenshots = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisplayBookmarksToolbar = "newtab"; + DisplayMenuBar = "default-off"; + DontCheckDefaultBrowser = true; + EnableTrackingProtection = { + Cryptomining = true; + Fingerprinting = true; + Locked = true; + Value = true; + }; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + Preferences = { + "browser.contentblocking.category" = { + Value = "strict"; + Status = "locked"; + }; + "browser.formfill.enable" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.topsites.contile.enabled" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.urlbar.suggest.searches" = false; + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = true; + }; + SearchBar = "unified"; + }; + }; + }; +} diff --git a/home/gui/code-editor&IDE/zed-editor.nix b/home/gui/code-editor&IDE/zed-editor.nix new file mode 100644 index 0000000..94288a7 --- /dev/null +++ b/home/gui/code-editor&IDE/zed-editor.nix @@ -0,0 +1,82 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + nil + nixd + zed-editor + ]; + + # programs.zed-editor = { + # enable = true; + # package = pkgs.zed-editor-fhs; + + # userSettings = { + # assistant = { + # enabled = false; + # version = "2"; + # }; + # auto_install_extensions = { + # catppuccin = true; + # catppucchin-icons = true; + # nix = true; + # }; + # auto_update = false; + # base_keymap = "VSCode"; + # features = { + # copilot = false; + # inline_completion_provider = "none"; + # }; + # hour_format = "hour24"; + # icon_theme = { + # dark = "Catppuccin Mocha"; + # light = "Catppuccin Mocha"; + # mode = "system"; + # }; + # load_direnv = "shell_hook"; + # lsp = { + # nix = { + # binary = { + # path_lookup = true; + # }; + # }; + # }; + # show_whitespaces = "all"; + # terminal = { + # alternate_scroll = "off"; + # blinking = "off"; + # button = false; + # copy_on_select = false; + # detect_venv = { + # on = { + # directories = [ + # ".env" + # "env" + # ".venv" + # "venv" + # ]; + # activate_script = "default"; + # }; + # }; + # dock = "bottom"; + # font_family = "JetBrainsMono Nerd Font"; + # font_features = null; + # font_size = null; + # line_height = "comfortable"; + # shell = "system"; + # toolbar = { + # breadcrumbs = false; + # }; + # option_as_meta = false; + # toolbar = { + # title = true; + # }; + # working_directory = "current_project_directory"; + # }; + # theme = { + # dark = "Catppuccin Mocha"; + # light = "Catppuccin Mocha"; + # mode = "system"; + # }; + # vim_mode = false; + # }; + # }; +} diff --git a/home/gui/communication/legcord.nix b/home/gui/communication/legcord.nix new file mode 100644 index 0000000..4ba3e18 --- /dev/null +++ b/home/gui/communication/legcord.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + legcord + ]; +} diff --git a/home/gui/communication/materialgram.nix b/home/gui/communication/materialgram.nix new file mode 100644 index 0000000..8d0224c --- /dev/null +++ b/home/gui/communication/materialgram.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + materialgram + ]; +} diff --git a/home/gui/ebook-reader/foliate.nix b/home/gui/ebook-reader/foliate.nix new file mode 100644 index 0000000..985b8c6 --- /dev/null +++ b/home/gui/ebook-reader/foliate.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + foliate + ]; +} diff --git a/home/gui/file-manager/nemo.nix b/home/gui/file-manager/nemo.nix new file mode 100644 index 0000000..2e19cfa --- /dev/null +++ b/home/gui/file-manager/nemo.nix @@ -0,0 +1,14 @@ +{pkgs, ...}: { + dconf.settings = { + "org/nemo/preferences" = { + "date-font-choice" = "no-mono"; + "date-format" = "iso"; + "default-folder-viewer" = "list-view"; + "show-hidden-files" = true; + }; + }; + + home.packages = with pkgs; [ + nemo + ]; +} diff --git a/home/gui/file-sync/syncthingtray.nix b/home/gui/file-sync/syncthingtray.nix new file mode 100644 index 0000000..d72a735 --- /dev/null +++ b/home/gui/file-sync/syncthingtray.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + syncthing + syncthingtray + ]; +} diff --git a/home/gui/image-viewer/oculante.nix b/home/gui/image-viewer/oculante.nix new file mode 100644 index 0000000..27ef707 --- /dev/null +++ b/home/gui/image-viewer/oculante.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + oculante + ]; +} diff --git a/home/gui/localsend/localsend.nix b/home/gui/localsend/localsend.nix new file mode 100644 index 0000000..8b56a97 --- /dev/null +++ b/home/gui/localsend/localsend.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + localsend + ]; +} diff --git a/home/gui/media-player/vlc.nix b/home/gui/media-player/vlc.nix new file mode 100644 index 0000000..4ccdb40 --- /dev/null +++ b/home/gui/media-player/vlc.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + vlc + ]; +} diff --git a/home/gui/music-player/strawberry.nix b/home/gui/music-player/strawberry.nix new file mode 100644 index 0000000..5b542d7 --- /dev/null +++ b/home/gui/music-player/strawberry.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + strawberry + ]; +} diff --git a/home/gui/office/onlyoffice.nix b/home/gui/office/onlyoffice.nix new file mode 100644 index 0000000..2da7f65 --- /dev/null +++ b/home/gui/office/onlyoffice.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + onlyoffice-bin + ]; +} diff --git a/home/gui/password-manager/keepassxc.nix b/home/gui/password-manager/keepassxc.nix new file mode 100644 index 0000000..aabcae9 --- /dev/null +++ b/home/gui/password-manager/keepassxc.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + git-credential-keepassxc + keepassxc + ]; +} diff --git a/home/gui/screencast/obs-studio.nix b/home/gui/screencast/obs-studio.nix new file mode 100644 index 0000000..7f1087a --- /dev/null +++ b/home/gui/screencast/obs-studio.nix @@ -0,0 +1,5 @@ +_: { + programs.obs-studio = { + enable = true; + }; +} diff --git a/home/gui/terminal/alacritty.nix b/home/gui/terminal/alacritty.nix new file mode 100644 index 0000000..e33c843 --- /dev/null +++ b/home/gui/terminal/alacritty.nix @@ -0,0 +1,5 @@ +_: { + programs.alacritty = { + enable = true; + }; +} diff --git a/home/gui/virtual-machine-manager/virt-manager.nix b/home/gui/virtual-machine-manager/virt-manager.nix new file mode 100644 index 0000000..560b7c0 --- /dev/null +++ b/home/gui/virtual-machine-manager/virt-manager.nix @@ -0,0 +1,21 @@ +{ + hostname, + lib, + pkgs, + ... +}: let + inherit (import ../../../hosts/${hostname}/env.nix) QEMU-VM-Use-Case; +in + with lib; + mkIf QEMU-VM-Use-Case { + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; + }; + }; + + home.packages = with pkgs; [ + virt-manager + ]; + } diff --git a/home/tui/btop.nix b/home/tui/btop.nix new file mode 100644 index 0000000..8f8c990 --- /dev/null +++ b/home/tui/btop.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + btop + ]; +} diff --git a/home/tui/nixvim/keymaps.nix b/home/tui/nixvim/keymaps.nix new file mode 100644 index 0000000..b2ac14f --- /dev/null +++ b/home/tui/nixvim/keymaps.nix @@ -0,0 +1,225 @@ +_: { + programs.nixvim = { + extraConfigLua = '' + function ToggleLineNumber() + if vim.wo.number then + vim.wo.number = false + else + vim.wo.number = true + vim.wo.relativenumber = false + end + end + + function ToggleRelativeLineNumber() + if vim.wo.relativenumber then + vim.wo.relativenumber = false + else + vim.wo.relativenumber = true + vim.wo.number = false + end + end + + function ToggleWrap() + vim.wo.wrap = not vim.wo.wrap + end + + if vim.lsp.inlay_hint then + vim.keymap.set('n', 'uh', function() + vim.lsp.inlay_hint(0, nil) + end, { desc = 'Toggle Inlay Hints' }) + end + ''; + keymaps = [ + { + action = " norm! ggVG"; + key = ""; + mode = "i"; + options.desc = "Select all lines in buffer"; + } + { + action = "c"; + key = "wd"; + mode = "n"; + options = { + desc = "Delete window"; + silent = true; + }; + } + { + action = "s"; + key = "-"; + mode = "n"; + options = { + desc = "Split window below"; + silent = true; + }; + } + { + action = "v"; + key = "|"; + mode = "n"; + options = { + desc = "Split window right"; + silent = true; + }; + } + { + action = "m .+1=="; + key = ""; + mode = "n"; + options.desc = "Move line down"; + } + { + action = "m .-2=="; + key = ""; + mode = "n"; + options.desc = "Move line up"; + } + { + action = "quitall"; + key = "qq"; + mode = "n"; + options = { + desc = "Quit all"; + silent = true; + }; + } + { + action = "w"; + key = ""; + mode = "n"; + options = { + desc = "Save file"; + silent = true; + }; + } + { + action = "j"; + key = ""; + mode = "n"; + options.desc = "Move To Window Down"; + } + { + action = "h"; + key = ""; + mode = "n"; + options.desc = "Move To Window Left"; + } + { + action = "l"; + key = ""; + mode = "n"; + options.desc = "Move To Window Right"; + } + { + action = "k"; + key = ""; + mode = "n"; + options.desc = "Move To Window Up"; + } + { + action = "\"_d"; + key = "D"; + mode = [ + "n" + "v" + ]; + options.desc = "Delete to void register"; + } + { + action = "noh"; + key = ""; + mode = [ + "n" + "i" + ]; + options = { + desc = "Escape and clear hlsearch"; + silent = true; + }; + } + { + action = ":lua ToggleLineNumber()"; + key = "ul"; + mode = "n"; + options = { + desc = "Toggle Line Numbers"; + silent = true; + }; + } + { + action = ":lua ToggleRelativeLineNumber()"; + key = "uL"; + mode = "n"; + options = { + desc = "Toggle Relative Line Numbers"; + silent = true; + }; + } + { + action = ":lua ToggleWrap()"; + key = "uw"; + mode = "n"; + options = { + desc = "Toggle Line Wrap"; + silent = true; + }; + } + { + action = "\"+y"; + key = "y"; + mode = [ + "n" + "v" + ]; + options.desc = "Copy to system clipboard"; + } + { + action = ":m '>+1gv=gv"; + key = ""; + mode = "v"; + options.desc = "Move line Down"; + } + { + action = ":m '<-2gv=gv"; + key = ""; + mode = "v"; + options.desc = "Move line up"; + } + { + action = "q" = { + action = "setloclist"; + desc = "Open diagnostic [Q]uickfix list"; + }; + }; + + extra = [ + { + mode = "n"; + key = "gd"; + action.__raw = "require('telescope.builtin').lsp_definitions"; + options = { + desc = "LSP: [G]oto [D]efinition"; + }; + } + { + mode = "n"; + key = "gr"; + action.__raw = "require('telescope.builtin').lsp_references"; + options = { + desc = "LSP: [G]oto [R]eferences"; + }; + } + { + mode = "n"; + key = "gI"; + action.__raw = "require('telescope.builtin').lsp_implementations"; + options = { + desc = "LSP: [G]oto [I]mplementation"; + }; + } + { + mode = "n"; + key = "D"; + action.__raw = "require('telescope.builtin').lsp_type_definitions"; + options = { + desc = "LSP: Type [D]efinition"; + }; + } + { + mode = "n"; + key = "ds"; + action.__raw = "require('telescope.builtin').lsp_document_symbols"; + options = { + desc = "LSP: [D]ocument [S]ymbols"; + }; + } + { + mode = "n"; + key = "ws"; + action.__raw = "require('telescope.builtin').lsp_dynamic_workspace_symbols"; + options = { + desc = "LSP: [W]orkspace [S]ymbols"; + }; + } + ]; + + lspBuf = { + "rn" = { + action = "rename"; + desc = "LSP: [R]e[n]ame"; + }; + "ca" = { + action = "code_action"; + desc = "LSP: [C]ode [A]ction"; + }; + "gD" = { + action = "declaration"; + desc = "LSP: [G]oto [D]eclaration"; + }; + }; + }; + + servers = { + # clangd = { + # enable = true; + # }; + # lua_ls = { + # enable = true; + # settings = { + # completion = { + # callSnippet = "Replace"; + # }; + # }; + # }; + # gopls = { + # enable = true; + # }; + # pyright = { + # enable = true; + # }; + # rust_analyzer = { + # enable = true; + # }; + # ...etc. See `https://nix-community.github.io/nixvim/plugins/lsp` for a list of pre-configured LSPs + + # Some languages (like typscript) have entire language plugins that can be useful: + # `https://nix-community.github.io/nixvim/plugins/typescript-tools/index.html?highlight=typescript-tools#pluginstypescript-toolspackage` + + # But for many setups the LSP (`ts_ls`) will work just fine + ts_ls = { + enable = true; + }; + }; + }; + }; + }; +} diff --git a/home/tui/nixvim/plugins/mini.nix b/home/tui/nixvim/plugins/mini.nix new file mode 100755 index 0000000..dd4b16d --- /dev/null +++ b/home/tui/nixvim/plugins/mini.nix @@ -0,0 +1,23 @@ +_: { + programs.nixvim = { + plugins.mini = { + enable = true; + + modules = { + ai = { + n_lines = 500; + }; + statusline = { + use_icons.__raw = "vim.g.have_nerd_font"; + }; + surround = { + }; + }; + }; + extraConfigLua = '' + require('mini.statusline').section_location = function() + return '%2l:%-2v' + end + ''; + }; +} diff --git a/home/tui/nixvim/plugins/nvim-cmp.nix b/home/tui/nixvim/plugins/nvim-cmp.nix new file mode 100755 index 0000000..eb8df75 --- /dev/null +++ b/home/tui/nixvim/plugins/nvim-cmp.nix @@ -0,0 +1,56 @@ +_: { + programs.nixvim = { + plugins.cmp = { + enable = true; + + settings = { + completion = { + completeopt = "menu,menuone,noinsert"; + }; + + mapping = { + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.confirm { select = true }"; + "" = "cmp.mapping.complete {}"; + "" = '' + cmp.mapping(function() + if luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + end + end, { 'i', 's' }) + ''; + "" = '' + cmp.mapping(function() + if luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + end + end, { 'i', 's' }) + ''; + }; + + snippet = { + expand = '' + function(args) + require('luasnip').lsp_expand(args.body) + end + ''; + }; + + sources = [ + { + name = "luasnip"; + } + { + name = "nvim_lsp"; + } + { + name = "path"; + } + ]; + }; + }; + }; +} diff --git a/home/tui/nixvim/plugins/nvim-tree.nix b/home/tui/nixvim/plugins/nvim-tree.nix new file mode 100644 index 0000000..431d30d --- /dev/null +++ b/home/tui/nixvim/plugins/nvim-tree.nix @@ -0,0 +1,17 @@ +_: { + programs.nixvim = { + plugins.nvim-tree = { + enable = true; + }; + + keymaps = [ + { + key = ""; + action = "NvimTreeToggle"; + options = { + desc = "NvimTree Toggle"; + }; + } + ]; + }; +} diff --git a/home/tui/nixvim/plugins/telescope.nix b/home/tui/nixvim/plugins/telescope.nix new file mode 100755 index 0000000..54926da --- /dev/null +++ b/home/tui/nixvim/plugins/telescope.nix @@ -0,0 +1,137 @@ +_: { + programs.nixvim = { + plugins.telescope = { + enable = true; + + extensions = { + fzf-native.enable = true; + ui-select.enable = true; + }; + + keymaps = { + "sh" = { + mode = "n"; + action = "help_tags"; + options = { + desc = "[S]earch [H]elp"; + }; + }; + "sk" = { + mode = "n"; + action = "keymaps"; + options = { + desc = "[S]earch [K]eymaps"; + }; + }; + "sf" = { + mode = "n"; + action = "find_files"; + options = { + desc = "[S]earch [F]iles"; + }; + }; + "ss" = { + mode = "n"; + action = "builtin"; + options = { + desc = "[S]earch [S]elect Telescope"; + }; + }; + "sw" = { + mode = "n"; + action = "grep_string"; + options = { + desc = "[S]earch current [W]ord"; + }; + }; + "sg" = { + mode = "n"; + action = "live_grep"; + options = { + desc = "[S]earch by [G]rep"; + }; + }; + "sd" = { + mode = "n"; + action = "diagnostics"; + options = { + desc = "[S]earch [D]iagnostics"; + }; + }; + "sr" = { + mode = "n"; + action = "resume"; + options = { + desc = "[S]earch [R]esume"; + }; + }; + "s" = { + mode = "n"; + action = "oldfiles"; + options = { + desc = "[S]earch Recent Files ('.' for repeat)"; + }; + }; + "" = { + mode = "n"; + action = "buffers"; + options = { + desc = "[ ] Find existing buffers"; + }; + }; + }; + settings = { + extensions.__raw = "{ ['ui-select'] = { require('telescope.themes').get_dropdown() } }"; + }; + }; + + keymaps = [ + { + mode = "n"; + key = "/"; + action.__raw = '' + function() + require('telescope.builtin').current_buffer_fuzzy_find( + require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false + } + ) + end + ''; + options = { + desc = "[/] Fuzzily search in current buffer"; + }; + } + { + mode = "n"; + key = "s/"; + action.__raw = '' + function() + require('telescope.builtin').live_grep { + grep_open_files = true, + prompt_title = 'Live Grep in Open Files' + } + end + ''; + options = { + desc = "[S]earch [/] in Open Files"; + }; + } + { + mode = "n"; + key = "sn"; + action.__raw = '' + function() + require('telescope.builtin').find_files { + cwd = vim.fn.stdpath 'config' + } + end + ''; + options = { + desc = "[S]earch [N]eovim files"; + }; + } + ]; + }; +} diff --git a/home/tui/nixvim/plugins/toggleterm.nix b/home/tui/nixvim/plugins/toggleterm.nix new file mode 100644 index 0000000..7689496 --- /dev/null +++ b/home/tui/nixvim/plugins/toggleterm.nix @@ -0,0 +1,66 @@ +_: { + programs.nixvim = { + keymaps = [ + { + action = "2ToggleTerm"; + key = ""; + mode = "t"; + options.desc = "Open/Close Terminal 2"; + } + { + action = "wincmd j"; + key = ""; + mode = "t"; + options.desc = "Go to Down window"; + } + { + action = "wincmd h"; + key = ""; + mode = "t"; + options.desc = "Go to Left window"; + } + { + action = "wincmd l"; + key = ""; + mode = "t"; + options.desc = "Go to Right window"; + } + { + action = "wincmd k"; + key = ""; + mode = "t"; + options.desc = "Go to Up window"; + } + ]; + plugins.toggleterm = { + enable = true; + settings = { + close_on_exit = true; + direction = "horizontal"; # 'vertical' | 'horizontal' | 'tab' | 'float' + float_opts = { + border = "single"; # 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open + height = 20; + width = 80; + winblend = 0; + }; + hide_numbers = true; + insert_mappings = true; + open_mapping = "[[]]"; + persist_mode = true; + shade_terminals = true; + shell = "nu"; + size = '' + function(term) + if term.direction == "horizontal" then + return 30 + elseif term.direction == "vertical" then + return vim.o.columns * 0.4 + end + end + ''; + start_in_insert = true; + terminal_mappings = true; + }; + }; + }; +} diff --git a/home/tui/nixvim/plugins/treesitter.nix b/home/tui/nixvim/plugins/treesitter.nix new file mode 100755 index 0000000..0f12a82 --- /dev/null +++ b/home/tui/nixvim/plugins/treesitter.nix @@ -0,0 +1,35 @@ +_: { + programs.nixvim = { + plugins.treesitter = { + enable = true; + + settings = { + ensureInstalled = [ + "bash" + "c" + "diff" + "html" + "lua" + "luadoc" + "markdown" + "markdown_inline" + "query" + "vim" + "vimdoc" + ]; + + highlight = { + additional_vim_regex_highlighting = true; + enable = true; + }; + + indent = { + enable = true; + disable = [ + "ruby" + ]; + }; + }; + }; + }; +} diff --git a/home/tui/nixvim/plugins/ui.nix b/home/tui/nixvim/plugins/ui.nix new file mode 100644 index 0000000..ac60531 --- /dev/null +++ b/home/tui/nixvim/plugins/ui.nix @@ -0,0 +1,189 @@ +_: { + programs.nixvim = { + plugins = { + alpha = { + enable = true; + layout = let + padding = val: { + type = "padding"; + inherit val; + }; + in [ + (padding 4) + { + opts = { + hl = "AlphaHeader"; + position = "center"; + }; + type = "text"; + val = [ + " ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗" + " ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║" + " ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║" + " ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║" + " ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║" + " ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝" + ]; + } + (padding 6) + { + type = "button"; + val = " Find File"; + on_press.raw = "require('telescope.builtin').find_files"; + opts = { + keymap = [ + "n" + "f" + ":Telescope find_files " + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "f"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + (padding 1) + { + type = "button"; + val = " New File"; + on_press.__raw = "function() vim.cmd[[ene]] end"; + opts = { + keymap = [ + "n" + "n" + ":ene startinsert " + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "n"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + (padding 1) + { + type = "button"; + val = " Recent Files"; + on_press.raw = "require('telescope.builtin').oldfiles"; + opts = { + keymap = [ + "n" + "r" + ":Telescope oldfiles " + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "r"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + (padding 1) + { + type = "button"; + val = " Find Word"; + on_press.raw = "require('telescope.builtin').live_grep"; + opts = { + keymap = [ + "n" + "w" + ":Telescope live_grep " + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "w"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + (padding 1) + { + type = "button"; + val = "󱀸 Restore Session"; + on_press.raw = "require('persistence').load()"; + opts = { + keymap = [ + "n" + "s" + ":lua require('persistence').load()" + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "s"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + (padding 1) + { + type = "button"; + val = "󰈆 Quit Neovim"; + on_press.__raw = "function() vim.cmd[[qa]] end"; + opts = { + keymap = [ + "n" + "q" + ":qa" + { + noremap = true; + silent = true; + nowait = true; + } + ]; + shortcut = "q"; + + position = "center"; + cursor = 3; + width = 40; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + } + ]; + }; + dressing.enable = true; + neoscroll.enable = true; + nui.enable = true; + persistence.enable = true; + todo-comments.enable = true; + trim.enable = true; + web-devicons.enable = true; + }; + }; +} diff --git a/home/tui/nixvim/plugins/which-key.nix b/home/tui/nixvim/plugins/which-key.nix new file mode 100755 index 0000000..18d227a --- /dev/null +++ b/home/tui/nixvim/plugins/which-key.nix @@ -0,0 +1,43 @@ +_: { + programs.nixvim = { + plugins.which-key = { + enable = true; + settings = { + spec = [ + { + __unkeyed-1 = "c"; + group = "[C]ode"; + } + { + __unkeyed-1 = "d"; + group = "[D]ocument"; + } + { + __unkeyed-1 = "h"; + group = "Git [H]unk"; + mode = [ + "n" + "v" + ]; + } + { + __unkeyed-1 = "r"; + group = "[R]ename"; + } + { + __unkeyed-1 = "s"; + group = "[S]earch"; + } + { + __unkeyed-1 = "t"; + group = "[T]oggle"; + } + { + __unkeyed-1 = "w"; + group = "[W]orkspace"; + } + ]; + }; + }; + }; +} diff --git a/home/tui/termshark.nix b/home/tui/termshark.nix new file mode 100644 index 0000000..2d04be3 --- /dev/null +++ b/home/tui/termshark.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + termshark + ]; +} diff --git a/home/tui/zellij.nix b/home/tui/zellij.nix new file mode 100644 index 0000000..f134261 --- /dev/null +++ b/home/tui/zellij.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + zellij + ]; +} diff --git a/home/wayland/blueman-applet.nix b/home/wayland/blueman-applet.nix new file mode 100644 index 0000000..96a08d9 --- /dev/null +++ b/home/wayland/blueman-applet.nix @@ -0,0 +1,5 @@ +{hostname, ...}: let + inherit (import ../../hosts/${hostname}/env.nix) Bluetooth; +in { + services.blueman-applet.enable = Bluetooth; +} diff --git a/home/wayland/brightnessctl.nix b/home/wayland/brightnessctl.nix new file mode 100644 index 0000000..f5103b0 --- /dev/null +++ b/home/wayland/brightnessctl.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + brightnessctl + ]; +} diff --git a/home/wayland/easyeffects.nix b/home/wayland/easyeffects.nix new file mode 100644 index 0000000..b574958 --- /dev/null +++ b/home/wayland/easyeffects.nix @@ -0,0 +1,3 @@ +_: { + services.easyeffects.enable = true; +} diff --git a/home/wayland/fcitx5.nix b/home/wayland/fcitx5.nix new file mode 100644 index 0000000..5f381ea --- /dev/null +++ b/home/wayland/fcitx5.nix @@ -0,0 +1,25 @@ +{pkgs, ...}: { + home.file.".local/share/fcitx5/rime" = { + force = true; + recursive = true; + source = pkgs.fetchFromGitHub { + hash = "sha256-s3r8cdEliiPnKWs64Wgi0rC9Ngl1mkIrLnr2tIcyXWw="; + owner = "iDvel"; + repo = "rime-ice"; + tag = "2025.04.06"; + }; + }; + + i18n.inputMethod = { + enable = true; + fcitx5 = { + addons = with pkgs; [ + fcitx5-gtk + fcitx5-rime + libsForQt5.fcitx5-qt + ]; + waylandFrontend = true; + }; + type = "fcitx5"; + }; +} diff --git a/home/wayland/fuzzel.nix b/home/wayland/fuzzel.nix new file mode 100644 index 0000000..fa9991d --- /dev/null +++ b/home/wayland/fuzzel.nix @@ -0,0 +1,5 @@ +_: { + programs.fuzzel = { + enable = true; + }; +} diff --git a/home/wayland/hyprland.nix b/home/wayland/hyprland.nix new file mode 100644 index 0000000..b3644dd --- /dev/null +++ b/home/wayland/hyprland.nix @@ -0,0 +1,60 @@ +{ + hostname, + lib, + pkgs, + ... +}: +let + inherit (import ../../hosts/${hostname}/env.nix) + GPU-Nvidia + MonitorSettings + KeyboardLayout + ScaleLevel + WM + ; +in +with lib; +mkIf (WM == "Hyprland") { + home.packages = with pkgs; [ + xorg.xprop + ]; + wayland.windowManager.hyprland = { + enable = true; + plugins = [ + pkgs.hyprlandPlugins.hy3 + ]; + systemd = { + enable = true; + variables = [ "--all" ]; + }; + xwayland.enable = true; + extraConfig = concatStrings [ + '' + ${MonitorSettings} + $KEYBOARDLAYOUT = ${KeyboardLayout} + $SCALE = ${ScaleLevel} + source = ~/.config/hypr/hyprland/* + '' + ]; + settings = mkIf GPU-Nvidia { + env = [ + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "GBM_BACKEND,nvidia-drm" + "LIBVA_DRIVER_NAME,nvidia" + "NVD_BACKEND,direct" + "WLR_NO_HARDWARE_CURSORS,1" + ]; + }; + }; + xdg.portal = { + config = { + common = { + default = [ "gtk" ]; + }; + }; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-hyprland + ]; + }; +} diff --git a/home/wayland/hyprlock.nix b/home/wayland/hyprlock.nix new file mode 100644 index 0000000..d2ace82 --- /dev/null +++ b/home/wayland/hyprlock.nix @@ -0,0 +1,5 @@ +_: { + programs.hyprlock = { + enable = true; + }; +} diff --git a/home/wayland/hyprpolkitagent.nix b/home/wayland/hyprpolkitagent.nix new file mode 100644 index 0000000..eaf5705 --- /dev/null +++ b/home/wayland/hyprpolkitagent.nix @@ -0,0 +1,3 @@ +_: { + services.hyprpolkitagent.enable = true; +} diff --git a/home/wayland/linux-wifi-hotspot.nix b/home/wayland/linux-wifi-hotspot.nix new file mode 100644 index 0000000..5efc5fc --- /dev/null +++ b/home/wayland/linux-wifi-hotspot.nix @@ -0,0 +1,15 @@ +{ + hostname, + lib, + pkgs, + ... +}: let + inherit (import ../../hosts/${hostname}/env.nix) HotSpot-Use-Case; +in + with lib; + mkIf HotSpot-Use-Case + { + home.packages = with pkgs; [ + linux-wifi-hotspot + ]; + } diff --git a/home/wayland/nm-applet.nix b/home/wayland/nm-applet.nix new file mode 100644 index 0000000..eee5e31 --- /dev/null +++ b/home/wayland/nm-applet.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + networkmanagerapplet + ]; +} diff --git a/home/wayland/playerctl.nix b/home/wayland/playerctl.nix new file mode 100644 index 0000000..c8516af --- /dev/null +++ b/home/wayland/playerctl.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + playerctl + ]; +} diff --git a/home/wayland/pwvucontrol.nix b/home/wayland/pwvucontrol.nix new file mode 100644 index 0000000..365c45b --- /dev/null +++ b/home/wayland/pwvucontrol.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + pwvucontrol + ]; +} diff --git a/home/wayland/screenshot.nix b/home/wayland/screenshot.nix new file mode 100644 index 0000000..91fafa3 --- /dev/null +++ b/home/wayland/screenshot.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + grim + jq + slurp + swappy + ]; +} diff --git a/home/wayland/swaync.nix b/home/wayland/swaync.nix new file mode 100644 index 0000000..48c9c9a --- /dev/null +++ b/home/wayland/swaync.nix @@ -0,0 +1,3 @@ +_: { + services.swaync.enable = true; +} diff --git a/home/wayland/swayosd.nix b/home/wayland/swayosd.nix new file mode 100644 index 0000000..5bc23bd --- /dev/null +++ b/home/wayland/swayosd.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + swayosd + ]; +} diff --git a/home/wayland/swww.nix b/home/wayland/swww.nix new file mode 100644 index 0000000..6cf8ed5 --- /dev/null +++ b/home/wayland/swww.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + swww + ]; +} diff --git a/home/wayland/theme.nix b/home/wayland/theme.nix new file mode 100644 index 0000000..f2f06a7 --- /dev/null +++ b/home/wayland/theme.nix @@ -0,0 +1,51 @@ +{pkgs, ...}: { + fonts.fontconfig = { + defaultFonts = { + emoji = ["Noto Color Emoji"]; + monospace = ["JetBrainsMono Nerd Font Mono"]; + sansSerif = ["Sarasa Gothic SC"]; + serif = ["Sarasa Gothic SC"]; + }; + enable = true; + }; + + gtk = { + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = true; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + }; + + home.packages = with pkgs; [ + libsForQt5.qtstyleplugin-kvantum + libsForQt5.qt5ct + qt6ct + ]; + + qt = { + enable = true; + style.name = "kvantum"; + }; + + stylix = { + autoEnable = true; + targets = { + fcitx5.enable = false; + floorp.enable = false; + hyprland.enable = false; + kde.enable = false; + mpv.enable = false; + nixvim.enable = false; + sway.enable = false; + waybar.enable = false; + yazi.enable = false; + zed.enable = false; + }; + }; +} diff --git a/home/wayland/waybar.nix b/home/wayland/waybar.nix new file mode 100644 index 0000000..e64891e --- /dev/null +++ b/home/wayland/waybar.nix @@ -0,0 +1,5 @@ +_: { + programs.waybar = { + enable = true; + }; +} diff --git a/home/wayland/waytrogen.nix b/home/wayland/waytrogen.nix new file mode 100644 index 0000000..415455e --- /dev/null +++ b/home/wayland/waytrogen.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + waytrogen + ]; +} diff --git a/home/wayland/wl-clipboard-rs.nix b/home/wayland/wl-clipboard-rs.nix new file mode 100644 index 0000000..6f36a6f --- /dev/null +++ b/home/wayland/wl-clipboard-rs.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + wl-clipboard-rs + ]; +} diff --git a/home/wayland/wl-gammarelay-rs.nix b/home/wayland/wl-gammarelay-rs.nix new file mode 100644 index 0000000..97b219e --- /dev/null +++ b/home/wayland/wl-gammarelay-rs.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + wl-gammarelay-rs + ]; +} diff --git a/home/wayland/wlogout.nix b/home/wayland/wlogout.nix new file mode 100644 index 0000000..c749348 --- /dev/null +++ b/home/wayland/wlogout.nix @@ -0,0 +1,5 @@ +_: { + programs.wlogout = { + enable = true; + }; +} diff --git a/home/wayland/xdg.nix b/home/wayland/xdg.nix new file mode 100644 index 0000000..a30c1ee --- /dev/null +++ b/home/wayland/xdg.nix @@ -0,0 +1,106 @@ +{config, ...}: { + xdg = { + enable = true; + mimeApps = let + archiver-extract-smart = ["peazip-extract-smart.desktop"]; + archiver-useless-options = [ + "peazip-extract.desktop" + "peazip-extract-desktop.desktop" + "peazip-extract-documents.desktop" + "peazip-extract-downloads.desktop" + "peazip-extract-here.desktop" + ]; + browser = ["brave-browser.desktop"]; + editor = ["dev.zed.Zed.desktop"]; + filemanager = ["nemo.desktop"]; + image-viewer = ["oculante.desktop"]; + media-player = ["vlc.desktop"]; + in { + associations = { + added = { + "application/x-directory" = ["peazip-add-to-archive.desktop"]; + "inode/directory" = ["peazip-add-to-archive.desktop"]; + }; + removed = { + "application/iso" = archiver-useless-options; + "application/x-7z-compressed" = archiver-useless-options; + "application/x-ace-compressed" = archiver-useless-options; + "application/x-bzip2" = archiver-useless-options; + "application/x-gzip" = archiver-useless-options; + "application/x-rar-compressed" = archiver-useless-options; + "application/x-tar" = archiver-useless-options; + "application/zip" = archiver-useless-options; + }; + }; + enable = true; + defaultApplications = { + "application/iso" = archiver-extract-smart; + "application/zip" = archiver-extract-smart; + "application/x-7z-compressed" = archiver-extract-smart; + "application/x-ace-compressed" = archiver-useless-options; + "application/x-bzip2" = archiver-extract-smart; + "application/x-gzip" = archiver-extract-smart; + "application/x-rar-compressed" = archiver-extract-smart; + "application/x-tar" = archiver-extract-smart; + + "application/json" = browser; + "application/pdf" = browser; + "application/rdf+xml" = browser; + "application/rss+xml" = browser; + "application/xhtml+xml" = browser; + "application/xhtml_xml" = browser; + "application/xml" = browser; + "application/x-extension-htm" = browser; + "application/x-extension-html" = browser; + "application/x-extension-shtml" = browser; + "application/x-extension-xht" = browser; + "application/x-extension-xhtml" = browser; + "text/html" = browser; + "text/xml" = browser; + "x-scheme-handler/http" = browser; + "x-scheme-handler/https" = browser; + "x-scheme-handler/unknown" = browser; + + "application/x-wine-extension-ini" = editor; + "text/plain" = editor; + + "x-scheme-handler/about" = filemanager; + "x-scheme-handler/ftp" = filemanager; + + "image/*" = image-viewer; + "image/avif" = image-viewer; + "image/gif" = image-viewer; + "image/jpeg" = image-viewer; + "image/png" = image-viewer; + "image/webp" = image-viewer; + + "audio/*" = media-player; + "video/*" = media-player; + + "x-scheme-handler/tg" = ["io.github.kukuruzka165.materialgram.desktop"]; + }; + }; + portal = { + config = { + common = { + "org.freedesktop.impl.portal.FileChooser" = "gtk"; + }; + }; + enable = true; + }; + userDirs = { + enable = true; + createDirectories = false; + documents = "$HOME/Documents"; + download = "$HOME/Downloads"; + music = "$HOME/Music"; + pictures = "$HOME/Pictures"; + publicShare = "/var/empty"; + templates = "/var/empty"; + videos = "$HOME/Videos"; + extraConfig = { + XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + }; + }; + }; +} diff --git a/hosts/default.nix b/hosts/default.nix new file mode 100644 index 0000000..2a0aefb --- /dev/null +++ b/hosts/default.nix @@ -0,0 +1,21 @@ +{ + hostname, + inputs, + username, + ... +}: { + imports = with inputs; [ + ./${hostname} + chaotic.nixosModules.default + daeuniverse.nixosModules.daed + disko.nixosModules.disko + stylix.nixosModules.stylix + home-manager.nixosModules.home-manager + { + home-manager = { + extraSpecialArgs = {inherit hostname inputs username;}; + users.${username} = import ../home; + }; + } + ]; +} diff --git a/hosts/example/default.nix b/hosts/example/default.nix new file mode 100644 index 0000000..3f69c62 --- /dev/null +++ b/hosts/example/default.nix @@ -0,0 +1,32 @@ +{ + lib, + pkgs, + username, + ... +}: { + imports = + [ + ./hardware.nix + ] + ++ lib.filesystem.listFilesRecursive ../../modules; + + # Define users + # If use nixos-anywhere to install, hashedPassword should be declared before installation + users = { + # users.root = { + # hashedPassword = "xxxxxx"; could be generated by mkpasswd + # }; + users."${username}" = { + extraGroups = [ + "libvirtd" + "networkmanager" + "wheel" + ]; + # hashedPassword = ""; + homeMode = "755"; + ignoreShellProgramCheck = true; + isNormalUser = true; + shell = pkgs.nushell; + }; + }; +} diff --git a/hosts/example/env.nix b/hosts/example/env.nix new file mode 100644 index 0000000..d73485b --- /dev/null +++ b/hosts/example/env.nix @@ -0,0 +1,66 @@ +{ + # Specific Use Cases + ## Hardware related + Bluetooth = false; + ### See https://github.com/blueman-project/blueman + + GPU-AMD = false; + ### See https://nixos.wiki/wiki/AMD_GPU + + GPU-Nvidia = false; + ### See https://nixos.wiki/wiki/Nvidia + + GPU-Intel = false; + ### See https://nixos.wiki/wiki/Intel_Graphics + + HotSpot-Use-Case = false; + ### See https://nixos.wiki/wiki/Internet_Connection_Sharing + + ZFS-Networking-HostID = ""; + ### See https://search.nixos.org/options?channel=unstable&show=networking.hostId&from=0&size=30&sort=relevance&query=networking.hostId + ### Could be generated by `head -c4 /dev/urandom | od -A none -t x4` + + ZFS-Use-Case = false; + ### See https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/index.html + + ## Software related + QEMU-VM-Use-Case = false; + ### See https://github.com/qemu/qemu ; https://github.com/virt-manager/virt-manager + + Transparent-Proxy = false; + ### See https://github.com/daeuniverse/daed + + # Options + ## System related + BootLoader = "systemd-boot"; + ### Possible options: grub ; grub-mirror ; systemd-boot # See https://nixos.wiki/wiki/Bootloader https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=mirroredBoots + + KernelPackages = "linuxPackages_cachyos"; + ### See https://search.nixos.org/options?show=boot.kernelPackages https://www.nyx.chaotic.cx/#using-sched-ext-schedulers + + KeyboardLayout = "us"; + ### See https://en.wikipedia.org/wiki/Keyboard_layout + + Locale = "en_US.UTF-8"; + ### See https://docs.moodle.org/405/en/Table_of_locales + + StateVersion = "25.05"; + ### See https://mynixos.com/nixpkgs/option/system.stateVersion + + TimeZone = "Asia/Singapore"; + ### See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + + ## Wayland related + MonitorSettings = "monitor = , preferred, auto, auto"; + ### MonitorSettings For Hyprland See https://wiki.hyprland.org/Configuring/Monitors/ + + OutputSettings = "output * scale 1"; + ### OutputSettings For sway See https://github.com/swaywm/sway/wiki#display-configuration + + ScaleLevel = "1"; + ### For Hyprland see https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland + ### For sway see https://github.com/swaywm/sway/wiki#hidpi + + WM = "Hyprland"; + ### Possible options: Hyprland ; niri ; sway +} diff --git a/hosts/example/hardware.nix b/hosts/example/hardware.nix new file mode 100644 index 0000000..27f1a46 --- /dev/null +++ b/hosts/example/hardware.nix @@ -0,0 +1,39 @@ +{ + config, + lib, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "nvme" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + # boot.kernelModules = [ "kvm-amd" ];# For AMD CPU + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + + swapDevices = []; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + # hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; # For AMD CPU + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; # For Intel CPU +} diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..f880455 --- /dev/null +++ b/install.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Check if running on NixOS +if [ -n "$(cat /etc/os-release | grep -i nixos)" ]; then + echo "Current running NixOS, going next step" + echo "----------------------------------------------------------------" +else + echo "Please install under NixOS host" + exit +fi + +# Check if boot directory exists in order to detect NixOS LiveCD environment +if [ -d "/boot" ]; then + echo "Running on installed NixOS, going next step" + echo "----------------------------------------------------------------" +else + echo "Please install under installed NixOS not in LiveCD" + exit 1 +fi + +# Get username +if [ "$(whoami)" == "root" ]; then + echo "Please install as a normal user rather than root" + exit 1 +else + echo "Successfully get the username, going next step" + echo "----------------------------------------------------------------" +fi + +echo "Default options are in brackets [ ]" +echo "Just press enter as default" +echo "----------------------------------------------------------------" +sleep 2 + +# Input hostname +read -p "Enter Hostname: [ nixos ] " hostName +if [ -z "$hostName" ]; then + hostName="nixos" +fi + +mkdir hosts/"$hostName" +cp hosts/example/*.nix hosts/"$hostName" +sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"$hostName\"/" ./flake.nix + +userName=$(whoami) +sed -i "/^\s*username[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"$userName\"/" ./flake.nix + +nixos-generate-config --show-hardware-config > ./hosts/$hostName/hardware.nix + +git add . + +echo "Now going to build, stay online and don't power down." +echo "----------------------------------------------------------------" +sleep 2 + +NIX_CONFIG="experimental-features = nix-command flakes" +sudo nixos-rebuild switch --flake .#${hostName} + +echo "----------------------------------------------------------------" + +# Remove useless nix-channel files +sudo rm -rf /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels + +echo "----------------------------------------------------------------" +echo "Jobs done." +echo "Live long and prosper!" +echo "Please reboot to get a brand new system." +echo "If there goes something wrong, please do report, thank you!" diff --git a/modules/drivers/amd-gpu.nix b/modules/drivers/amd-gpu.nix new file mode 100644 index 0000000..52af45c --- /dev/null +++ b/modules/drivers/amd-gpu.nix @@ -0,0 +1,14 @@ +{ + hostname, + lib, + pkgs, + ... +}: let + inherit (import ../../hosts/${hostname}/env.nix) GPU-AMD; +in + with lib; { + config = mkIf GPU-AMD { + systemd.tmpfiles.rules = ["L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"]; + services.xserver.videoDrivers = ["amdgpu"]; + }; + } diff --git a/modules/drivers/bluetooth.nix b/modules/drivers/bluetooth.nix new file mode 100644 index 0000000..57ee4ee --- /dev/null +++ b/modules/drivers/bluetooth.nix @@ -0,0 +1,16 @@ +{ + hostname, + lib, + ... +}: let + inherit (import ../../hosts/${hostname}/env.nix) Bluetooth; +in + with lib; { + config = mkIf Bluetooth { + hardware.bluetooth = { + enable = lib.mkDefault true; + powerOnBoot = lib.mkDefault true; + }; + services.blueman.enable = lib.mkDefault true; + }; + } diff --git a/modules/services/audio.nix b/modules/services/audio.nix new file mode 100644 index 0000000..fb49a6e --- /dev/null +++ b/modules/services/audio.nix @@ -0,0 +1,13 @@ +_: { + services = { + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + audio.enable = true; + jack.enable = true; + pulse.enable = true; + wireplumber.enable = true; + }; + }; +} diff --git a/modules/services/daed.nix b/modules/services/daed.nix new file mode 100644 index 0000000..eafe34d --- /dev/null +++ b/modules/services/daed.nix @@ -0,0 +1,14 @@ +{ + hostname, + lib, + ... +}: +with lib; let + inherit (import ../../hosts/${hostname}/env.nix) Transparent-Proxy; +in { + config = mkIf Transparent-Proxy { + services.daed = { + enable = true; + }; + }; +} diff --git a/modules/services/ddm.nix b/modules/services/ddm.nix new file mode 100644 index 0000000..26fb907 --- /dev/null +++ b/modules/services/ddm.nix @@ -0,0 +1,29 @@ +{ + hostname, + pkgs, + ... +}: let + inherit (import ../../hosts/${hostname}/env.nix) WM; +in { + services = { + greetd = { + enable = true; + vt = 1; + settings = { + default_session = { + user = "greeter"; + command = "${pkgs.greetd.tuigreet}/bin/tuigreet -c ${WM} -t --user-menu"; + }; + }; + }; + }; + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; + TTYReset = true; + TTYVHangup = true; + TTYVTDisallocate = true; + }; +} diff --git a/modules/services/keyd.nix b/modules/services/keyd.nix new file mode 100644 index 0000000..fdbe109 --- /dev/null +++ b/modules/services/keyd.nix @@ -0,0 +1,25 @@ +_: { + services.keyd = { + enable = true; + keyboards = { + default = { + ids = ["*"]; + settings = { + main = { + capslock = "overload(alt, esc)"; + }; + "alt" = { + c = "backspace"; + d = "delete"; + e = "enter"; + h = "left"; + j = "down"; + k = "up"; + l = "right"; + capslock = "capslock"; + }; + }; + }; + }; + }; +} diff --git a/modules/services/misc.nix b/modules/services/misc.nix new file mode 100644 index 0000000..3e51195 --- /dev/null +++ b/modules/services/misc.nix @@ -0,0 +1,13 @@ +_: { + services = { + fstrim = { + enable = true; + interval = "weekly"; + }; + gvfs.enable = true; + scx = { + enable = true; + scheduler = "scx_lavd"; + }; + }; +} diff --git a/modules/services/ntp.nix b/modules/services/ntp.nix new file mode 100644 index 0000000..eade20e --- /dev/null +++ b/modules/services/ntp.nix @@ -0,0 +1,22 @@ +_: { + services.ntpd-rs = { + enable = true; + settings = { + source = [ + { + address = "ntppool1.time.nl"; + mode = "nts"; + } + { + address = "ntppool2.time.nl"; + mode = "nts"; + } + { + address = "nts.netnod.se"; + mode = "nts"; + } + ]; + }; + useNetworkingTimeServers = false; + }; +} diff --git a/modules/services/qemu.nix b/modules/services/qemu.nix new file mode 100644 index 0000000..7efe5f0 --- /dev/null +++ b/modules/services/qemu.nix @@ -0,0 +1,16 @@ +{ + hostname, + lib, + ... +}: +with lib; let + inherit (import ../../hosts/${hostname}/env.nix) QEMU-VM-Use-Case; +in { + config = mkIf QEMU-VM-Use-Case { + services = { + spice-vdagentd.enable = true; + spice-webdavd.enable = true; + }; + virtualisation.libvirtd.enable = true; + }; +} diff --git a/modules/system/bootstrap.nix b/modules/system/bootstrap.nix new file mode 100644 index 0000000..9f4573d --- /dev/null +++ b/modules/system/bootstrap.nix @@ -0,0 +1,148 @@ +{ + config, + hostname, + lib, + pkgs, + ... +}: let + inherit + (import ../../hosts/${hostname}/env.nix) + BootLoader + KernelPackages + KeyboardLayout + Locale + StateVersion + TimeZone + ZFS-Use-Case + ; +in + with lib; { + boot = { + bcache.enable = false; + consoleLogLevel = 2; # Only errors and warnings are displayed + extraModprobeConfig = "blacklist mei mei_hdcp mei_me mei_pxp iTCO_wdt pstore sp5100_tco"; + extraModulePackages = [ + config.boot.kernelPackages.v4l2loopback # v4l2loopback is for OBS Virtual Cam Support + ]; + initrd = { + compressor = "zstd"; + compressorArgs = ["-T0" "-19" "--long"]; + systemd.enable = true; + verbose = false; + }; + kernel.sysctl = { + "kernel.core_pattern" = "|/bin/false"; # Disable automatic core dumps + "vm.max_map_count" = 2147483642; # Needed For Some Steam Games + }; + kernelModules = ["v4l2loopback"]; # v4l2loopback is for OBS Virtual Cam Support + kernelPackages = pkgs.${KernelPackages}; + kernelParams = ["audit=0" "console=tty1" "erst_disable" "nmi_watchdog=0" "noatime" "nowatchdog"]; + loader = { + grub = mkIf (strings.hasInfix "grub" BootLoader) { + configurationLimit = 50; + device = "nodev"; + efiInstallAsRemovable = true; + efiSupport = true; + enable = true; + mirroredBoots = mkIf (BootLoader == "grub-mirror") [ + { + devices = ["nodev"]; + path = "/boot"; + } + { + devices = ["nodev"]; + path = "/boot-mirror"; + } + ]; + theme = mkForce "${pkgs.minimal-grub-theme}"; + zfsSupport = ZFS-Use-Case; + }; + systemd-boot = mkIf (BootLoader == "systemd-boot") { + configurationLimit = 50; + editor = false; + enable = true; + }; + timeout = 3; + }; + tmp.cleanOnBoot = true; + }; + + console = { + earlySetup = true; + keyMap = KeyboardLayout; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + i18n = { + defaultLocale = Locale; + extraLocaleSettings = { + LC_ADDRESS = Locale; + LC_IDENTIFICATION = Locale; + LC_MEASUREMENT = Locale; + LC_MONETARY = Locale; + LC_NAME = Locale; + LC_NUMERIC = Locale; + LC_PAPER = Locale; + LC_TELEPHONE = Locale; + LC_TIME = Locale; + }; + }; + + networking = { + dhcpcd.extraConfig = "nohook resolv.conf"; + firewall.enable = false; + hostName = hostname; + nameservers = ["127.0.0.1" "::1"]; + networkmanager = { + dns = "none"; + enable = true; + }; + resolvconf.enable = mkForce false; + }; + + security = { + rtkit.enable = true; + sudo.enable = false; + sudo-rs = { + enable = true; + execWheelOnly = true; + }; + pam.services = { + hyprlock = {}; + login.kwallet.enable = mkForce false; + }; + polkit = { + enable = true; + extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + subject.isInGroup("users") + && ( + action.id == "org.freedesktop.login1.reboot" || + action.id == "org.freedesktop.login1.reboot-multiple-sessions" || + action.id == "org.freedesktop.login1.power-off" || + action.id == "org.freedesktop.login1.power-off-multiple-sessions" + ) + ) + { + return polkit.Result.YES; + } + }) + ''; + }; + }; + + system = { + rebuild.enableNg = true; + stateVersion = StateVersion; + }; + + time = { + hardwareClockInLocalTime = false; + timeZone = TimeZone; + }; + } diff --git a/modules/system/environment.nix b/modules/system/environment.nix new file mode 100644 index 0000000..6d21327 --- /dev/null +++ b/modules/system/environment.nix @@ -0,0 +1,83 @@ +{ + hostname, + pkgs, + ... +}: let + inherit (import ../../hosts/${hostname}/env.nix) ScaleLevel; +in { + environment = { + variables = { + EDITOR = "nvim"; + TERMINAL = "alacritty"; + + _JAVA_AWT_WM_NONREPARENTING = 1; + AWT_TOOLKIT = "MToolkit"; + CLUTTER_BACKEND = "wayland"; + ELECTRON_OZONE_PLATFORM_HINT = "wayland"; + GDK_BACKEND = "wayland"; + GDK_SCALE = "${ScaleLevel}"; + GTK_USE_PORTAL = 1; + MOZ_ENABLE_WAYLAND = 1; + NIXOS_OZONE_WL = 1; + QT_AUTO_SCREEN_SCALE_FACTOR = 1; + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; + SDL_HINT_VIDEODRIVER = "wayland"; + XDG_SESSION_TYPE = "wayland"; + SDL_VIDEODRIVER = "wayland"; + + QT_IM_MODULE = "fcitx"; + SDL_IM_MODULE = "fcitx"; + XMODIFIERS = "@im=fcitx"; + }; + + systemPackages = with pkgs; [ + # Archive + gnutar + p7zip + unzipNLS + xz + zip + zstd + + # Greeter with ddm + greetd.tuigreet + + # For OBS virtual cam support + v4l-utils + + # Editor + neovim + + # Networking tool + curl + nexttrace + aria2 + syncthing + + #Blog + zola + go + pnpm + + #Android + android-tools + payload-dumper-go + + # Misc + libnotify + libvirt + lm_sensors + ]; + }; + + programs = { + dconf.enable = true; + fuse.userAllowOther = true; + git = { + enable = true; + package = pkgs.gitMinimal; + }; + ssh.startAgent = true; + }; +} diff --git a/modules/system/minimize.nix b/modules/system/minimize.nix new file mode 100644 index 0000000..a5c690f --- /dev/null +++ b/modules/system/minimize.nix @@ -0,0 +1,70 @@ +{lib, ...}: +with lib; { + # Minimize boot + boot = { + bcache.enable = mkForce false; + binfmt.addEmulatedSystemsToNixSandbox = mkForce false; + }; + + # Disable unnecessary documentation + documentation.enable = mkForce false; + documentation.doc.enable = mkForce false; + documentation.info.enable = mkForce false; + documentation.man.enable = mkForce false; + documentation.nixos.enable = mkForce false; + + # Minimize environment + environment = { + defaultPackages = mkForce []; + }; + + # Disable unnecessary programs + programs = { + bash = { + completion.enable = mkForce false; + enableLsColors = mkForce false; + }; + command-not-found.enable = mkForce false; + nano.enable = mkForce false; + }; + + # Minimize services + services = { + gnome.gnome-keyring.enable = mkForce false; + journald = { + extraConfig = '' + Storage=volatile + Compress=yes + SystemMaxUse=50M + RuntimeMaxUse=10M + MaxFileSec=1day + MaxRetentionSec=1month + RateLimitInterval=30s + RateLimitBurst=1000 + ''; + }; + resolved.enable = mkForce false; + timesyncd.enable = mkForce false; + }; + + # Minimize systemd services + systemd = { + coredump.enable = mkForce false; + enableEmergencyMode = mkForce false; + network.wait-online.enable = mkForce false; + oomd.enable = mkForce false; + services = { + mount-pstore.enable = mkForce false; + NetworkManager-wait-online.enable = mkForce false; + systemd-bsod.enable = mkForce false; + systemd-importd.enable = mkForce false; + systemd-journal-flush.enable = mkForce false; + systemd-pstore.enable = mkForce false; + }; + }; + + # Disable xdg autostart + xdg = { + autostart.enable = mkForce false; + }; +} diff --git a/modules/system/nix.nix b/modules/system/nix.nix new file mode 100644 index 0000000..7403c6a --- /dev/null +++ b/modules/system/nix.nix @@ -0,0 +1,50 @@ +{ + inputs, + lib, + ... +}: +with lib; { + environment.etc."nix/inputs/nixpkgs".source = "${inputs.nixpkgs}"; + nix = { + channel.enable = false; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + optimise = { + automatic = true; + dates = ["weekly"]; + }; + # package = pkgs.lix; # use lix instead of nix would cause clan-cli error + registry.nixpkgs.flake = inputs.nixpkgs; + settings = { + auto-optimise-store = true; + builders-use-substitutes = true; + experimental-features = ["nix-command" "flakes"]; + connect-timeout = 5; + gc-keep-derivations = false; + gc-keep-outputs = false; + keep-going = true; + log-lines = 25; + nix-path = mkForce "nixpkgs=/etc/nix/inputs/nixpkgs"; + substituters = [ + "https://cache.garnix.io" # See https://github.com/daeuniverse/flake.nix + "https://cache.nixos.org" # See https://nixos.wiki/wiki/Binary_Cache + "https://chaotic-nyx.cachix.org" # See https://github.com/chaotic-cx/nyx + "https://nix-community.cachix.org" # See https://nix-community.org/cache/ + ]; + trusted-public-keys = [ + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + warn-dirty = false; + }; + }; + nixpkgs = { + config.allowUnfree = false; + hostPlatform = "x86_64-linux"; + }; +} diff --git a/modules/system/stylix.nix b/modules/system/stylix.nix new file mode 100644 index 0000000..c14073f --- /dev/null +++ b/modules/system/stylix.nix @@ -0,0 +1,52 @@ +{ + config, + pkgs, + ... +}: { + stylix = { + enable = true; + # catppuccin-mocha base16Scheme # See https://github.com/catppuccin/base16 + # base16Scheme = { + # base00 = "1e1e2e"; # base + # base01 = "181825"; # mantle + # base02 = "313244"; # surface0 + # base03 = "45475a"; # surface1 + # base04 = "585b70"; # surface2 + # base05 = "cdd6f4"; # text + # base06 = "f5e0dc"; # rosewater + # base07 = "b4befe"; # lavender + # base08 = "f38ba8"; # red + # base09 = "fab387"; # peach + # base0A = "f9e2af"; # yellow + # base0B = "a6e3a1"; # green + # base0C = "94e2d5"; # teal + # base0D = "89b4fa"; # blue + # base0E = "cba6f7"; # mauve + # base0F = "f2cdcd"; # flamingo + # }; + cursor = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + }; + fonts = { + monospace = { + name = "JetBrainsMono Nerd Font Mono"; + package = pkgs.nerd-fonts.jetbrains-mono; + }; + sansSerif = { + name = "Sarasa Gothic SC"; + package = pkgs.sarasa-gothic; + }; + serif = config.stylix.fonts.sansSerif; + sizes = { + applications = 16; + desktop = 14; + popups = 12; + terminal = 12; + }; + }; + image = ../../dotfiles/.local/share/wallpapers/nixos-1.png; + polarity = "dark"; + }; +} diff --git a/modules/system/zfs.nix b/modules/system/zfs.nix new file mode 100644 index 0000000..21c8f57 --- /dev/null +++ b/modules/system/zfs.nix @@ -0,0 +1,42 @@ +{ + hostname, + lib, + pkgs, + ... +}: let + inherit + (import ../../hosts/${hostname}/env.nix) + KernelPackages + ZFS-Networking-HostID + ZFS-Use-Case + ; +in + with lib; { + config = mkIf ZFS-Use-Case { + boot = { + kernelParams = ["zfs_force=1"]; + supportedFilesystems = ["zfs"]; + zfs = { + devNodes = "/dev/disk/by-id"; + forceImportRoot = false; + package = mkIf (strings.hasInfix "linuxPackages_cachyos" KernelPackages) pkgs.zfs_cachyos; + }; + }; + networking.hostId = ZFS-Networking-HostID; + services.zfs = { + autoScrub = { + enable = true; + interval = "weekly"; + }; + trim = { + enable = true; # HDD no need + interval = "weekly"; + }; + autoSnapshot.enable = true; + }; + systemd.services = { + zfs-share.enable = mkForce false; + zfs-zed.enable = mkForce false; + }; + }; + }