1223 lines
60 KiB
XML
1223 lines
60 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<requires lib="gtk" version="4.0"/>
|
|
<requires lib="Adw" version="1.0"/>
|
|
<template class="AlpacaWindow" parent="AdwApplicationWindow">
|
|
<signal name="close-request" handler="closing_app"/>
|
|
<property name="resizable">True</property>
|
|
<property name="width-request">400</property>
|
|
<property name="height-request">600</property>
|
|
<property name="default-width">1300</property>
|
|
<property name="default-height">800</property>
|
|
<property name="title">Alpaca</property>
|
|
<child>
|
|
<object class="AdwBreakpoint">
|
|
<condition>max-width: 690sp</condition>
|
|
<setter object="split_view_overlay" property="collapsed">true</setter>
|
|
<setter object="terminal_dialog" property="width-request">400</setter>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="AdwOverlaySplitView" id="split_view_overlay">
|
|
<property name="show-sidebar" bind-source="show_sidebar_button" bind-property="active" bind-flags="sync-create"/>
|
|
<property name="sidebar-width-fraction">0.3</property>
|
|
<property name="sidebar">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkButton" id="add_chat_button">
|
|
<property name="action-name">app.new_chat</property>
|
|
<property name="tooltip-text" translatable="yes">New Chat</property>
|
|
<property name="icon-name">chat-message-new-symbolic</property>
|
|
<style>
|
|
<class name="flat"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkMenuButton">
|
|
<property name="primary">True</property>
|
|
<property name="icon-name">open-menu-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Menu</property>
|
|
<property name="menu-model">primary_menu</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow" id="chat_list_container">
|
|
<property name="vexpand">true</property>
|
|
<property name="hexpand">true</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
<child>
|
|
<object class="AdwToolbarView">
|
|
<property name="height-request">140</property>
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkToggleButton" id="show_sidebar_button">
|
|
<property name="icon-name">sidebar-show-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Toggle Sidebar</property>
|
|
<property name="active" bind-source="split_view_overlay" bind-property="show-sidebar" bind-flags="sync-create"/>
|
|
</object>
|
|
</child>
|
|
<child type="start">
|
|
<object class="GtkToggleButton" id="message_search_button">
|
|
<property name="icon-name">edit-find-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Search Messages</property>
|
|
<signal name="clicked" handler="message_search_toggle"/>
|
|
</object>
|
|
</child>
|
|
<child type="title">
|
|
<object class="GtkStack" id="title_stack">
|
|
<property name="transition_duration">100</property>
|
|
<property name="transition_type">1</property>
|
|
<child>
|
|
<object class="GtkStackPage">
|
|
<property name="name">loading</property>
|
|
<property name="child">
|
|
<object class="GtkBox">
|
|
<property name="orientation">0</property>
|
|
<property name="spacing">10</property>
|
|
<child>
|
|
<object class="GtkSpinner">
|
|
<property name="spinning">true</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="label" translatable="yes">Loading Instance</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkStackPage">
|
|
<property name="name">no_models</property>
|
|
<property name="child">
|
|
<object class="GtkButton">
|
|
<property name="label" translatable="yes">Manage Models</property>
|
|
<property name="tooltip-text" translatable="yes">Manage Models</property>
|
|
<property name="action-name">app.manage_models</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkMenuButton" id="secondary_menu_button">
|
|
<property name="primary">False</property>
|
|
<property name="icon-name">view-more-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Chat Menu</property>
|
|
<property name="menu-model">secondary_menu</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="top">
|
|
<object class="GtkSearchBar" id="message_searchbar">
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Message search bar</property>
|
|
</accessibility>
|
|
<property name="key-capture-widget">AlpacaWindow</property>
|
|
<child>
|
|
<object class="GtkSearchEntry" id="searchentry_messages">
|
|
<signal name="search-changed" handler="message_search_changed"/>
|
|
<property name="search-delay">200</property>
|
|
<property name="placeholder-text" translatable="yes">Search messages</property>
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Search messages</property>
|
|
</accessibility>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkBox"><!--ACTUAL CONTENT-->
|
|
<property name="orientation">1</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="hexpand">true</property>
|
|
<child>
|
|
<object class="AdwBanner" id="banner">
|
|
<property name="button-label" translatable="true">Close</property>
|
|
<property name="title" translatable="yes">Warning: Power saver mode is enabled, this will slow down message generation</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwToastOverlay" id="main_overlay">
|
|
<child>
|
|
<object class="GtkStack" id="chat_stack">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="hhomogeneous">true</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwClamp">
|
|
<property name="maximum-size">1000</property>
|
|
<property name="tightening-threshold">800</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="orientation">1</property>
|
|
<property name="spacing">12</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<child>
|
|
<object class="GtkScrolledWindow" id="attachment_box">
|
|
<property name="visible">false</property>
|
|
<child>
|
|
<object class="GtkBox" id="attachment_container">
|
|
<property name="orientation">0</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="spacing">12</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="orientation">0</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="GtkButton" id="attachment_button">
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="sensitive">false</property>
|
|
<property name="tooltip-text" translatable="yes">Attach File</property>
|
|
<style>
|
|
<class name="circular"/>
|
|
</style>
|
|
<child>
|
|
<object class="AdwButtonContent">
|
|
<property name="icon-name">chain-link-loose-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<style>
|
|
<class name="card"/>
|
|
</style>
|
|
<child>
|
|
<object class="GtkScrolledWindow">
|
|
<property name="max-content-height">150</property>
|
|
<property name="propagate-natural-height">true</property>
|
|
<property name="margin-start">10</property>
|
|
<property name="margin-end">10</property>
|
|
<style>
|
|
<class name="message_input_scroll_window"/>
|
|
</style>
|
|
<child>
|
|
<object class="GtkTextView" id="message_text_view">
|
|
<signal name="paste-clipboard" handler="on_clipboard_paste"/>
|
|
<style>
|
|
<class name="message_text_view"/>
|
|
<class name="undershoot-bottom"/>
|
|
</style>
|
|
<property name="wrap-mode">word</property>
|
|
<property name="top-margin">10</property>
|
|
<property name="bottom-margin">10</property>
|
|
<property name="hexpand">true</property>
|
|
<property name="input-hints">spellcheck</property>
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Message text box</property>
|
|
</accessibility>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="send_button">
|
|
<signal name="clicked" handler="send_message"/>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="tooltip-text" translatable="yes">Send Message</property>
|
|
<property name="sensitive">false</property>
|
|
<style>
|
|
<class name="accent"/>
|
|
<class name="circular"/>
|
|
<class name="suggested-action"/>
|
|
</style>
|
|
<child>
|
|
<object class="AdwButtonContent">
|
|
<property name="icon-name">paper-plane-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="stop_button">
|
|
<signal name="clicked" handler="stop_message"/>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="visible">false</property>
|
|
<style>
|
|
<class name="destructive-action"/>
|
|
<class name="circular"/>
|
|
</style>
|
|
<child>
|
|
<object class="AdwButtonContent">
|
|
<property name="icon-name">media-playback-stop-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
|
|
</object><!--END OF CONTENT-->
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
<object class="AdwPreferencesDialog" id="preferences_dialog">
|
|
<property name="can-close">true</property>
|
|
<property name="width-request">400</property>
|
|
<property name="height-request">600</property>
|
|
<property name="title" translatable="yes">Preferences</property>
|
|
<child>
|
|
<object class="AdwPreferencesPage" id="general_page">
|
|
<property name="title" translatable="yes">General</property>
|
|
<property name="icon-name">settings-symbolic</property>
|
|
<child>
|
|
<object class="AdwPreferencesGroup">
|
|
<child>
|
|
<object class="AdwSwitchRow" id="remote_connection_switch">
|
|
<property name="title" translatable="yes">Use Remote Connection to Ollama</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwPreferencesGroup">
|
|
<child>
|
|
<object class="AdwSwitchRow" id="background_switch">
|
|
<signal name="notify::active" handler="switch_run_on_background"/>
|
|
<property name="title" translatable="yes">Run Alpaca In Background</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwSwitchRow" id="powersaver_warning_switch">
|
|
<signal name="notify::active" handler="switch_powersaver_warning"/>
|
|
<property name="title" translatable="yes">Show Power Saver Warning</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwPreferencesGroup" id="tweaks_group">
|
|
<child>
|
|
<object class="AdwSpinRow">
|
|
<signal name="changed" handler="model_spin_changed"/>
|
|
<property name="name">temperature</property>
|
|
<property name="title" translatable="yes">Temperature</property>
|
|
<property name="subtitle" translatable="yes">The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)</property>
|
|
<property name="digits">1</property>
|
|
<property name="adjustment">
|
|
<object class="GtkAdjustment">
|
|
<property name="lower">0</property>
|
|
<property name="upper">1</property>
|
|
<property name="step-increment">0.1</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwSpinRow">
|
|
<signal name="changed" handler="model_spin_changed"/>
|
|
<property name="name">seed</property>
|
|
<property name="title" translatable="yes">Seed</property>
|
|
<property name="subtitle" translatable="yes">Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt. (Default: 0 (random))</property>
|
|
<property name="adjustment">
|
|
<object class="GtkAdjustment">
|
|
<property name="lower">0</property>
|
|
<property name="upper">999999</property>
|
|
<property name="step-increment">1</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwSpinRow">
|
|
<signal name="changed" handler="model_spin_changed"/>
|
|
<property name="name">keep_alive</property>
|
|
<property name="title" translatable="yes">Keep Alive Time</property>
|
|
<property name="subtitle" translatable="yes">Controls how long the model will stay loaded into memory following the request in minutes (Default: 5)</property>
|
|
<property name="adjustment">
|
|
<object class="GtkAdjustment">
|
|
<property name="lower">-1</property>
|
|
<property name="upper">999999</property>
|
|
<property name="step-increment">1</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwPreferencesPage" id="instance_page">
|
|
<property name="title" translatable="yes">Ollama Instance</property>
|
|
<property name="icon-name">brain-augemnted-symbolic</property>
|
|
<child>
|
|
<object class="AdwPreferencesGroup" id="overrides_group">
|
|
<property name="title" translatable="yes">Ollama Overrides</property>
|
|
<property name="description" translatable="yes">Manage the arguments used on Ollama, any changes on this page only applies to the integrated instance, the instance will restart if you make changes.</property>
|
|
<child>
|
|
<object class="AdwEntryRow">
|
|
<signal name="apply" handler="override_changed"/>
|
|
<property name="name">HSA_OVERRIDE_GFX_VERSION</property>
|
|
<property name="title" translatable="no">HSA_OVERRIDE_GFX_VERSION</property>
|
|
<property name="show-apply-button">true</property>
|
|
<child type="prefix">
|
|
<object class="GtkButton">
|
|
<signal name="clicked" handler="link_button_handler"/>
|
|
<property name="name">https://github.com/ollama/ollama/blob/main/docs/gpu.md#overrides</property>
|
|
<property name="tooltip-text">https://github.com/ollama/ollama/blob/main/docs/gpu.md#overrides</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="icon-name">globe-symbolic</property>
|
|
<style>
|
|
<class name="success"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwEntryRow">
|
|
<signal name="apply" handler="override_changed"/>
|
|
<property name="name">CUDA_VISIBLE_DEVICES</property>
|
|
<property name="title" translatable="no">CUDA_VISIBLE_DEVICES</property>
|
|
<property name="show-apply-button">true</property>
|
|
<child type="prefix">
|
|
<object class="GtkButton">
|
|
<signal name="clicked" handler="link_button_handler"/>
|
|
<property name="name">https://github.com/ollama/ollama/blob/main/docs/gpu.md#gpu-selection</property>
|
|
<property name="tooltip-text">https://github.com/ollama/ollama/blob/main/docs/gpu.md#gpu-selection</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="icon-name">globe-symbolic</property>
|
|
<style>
|
|
<class name="success"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwEntryRow">
|
|
<signal name="apply" handler="override_changed"/>
|
|
<property name="name">HIP_VISIBLE_DEVICES</property>
|
|
<property name="title" translatable="no">HIP_VISIBLE_DEVICES</property>
|
|
<property name="show-apply-button">true</property>
|
|
<child type="prefix">
|
|
<object class="GtkButton">
|
|
<signal name="clicked" handler="link_button_handler"/>
|
|
<property name="name">https://github.com/ollama/ollama/blob/main/docs/gpu.md#gpu-selection-1</property>
|
|
<property name="tooltip-text">https://github.com/ollama/ollama/blob/main/docs/gpu.md#gpu-selection-1</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="icon-name">globe-symbolic</property>
|
|
<style>
|
|
<class name="success"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwPreferencesGroup">
|
|
<child>
|
|
<object class="AdwSpinRow" id="instance_idle_timer">
|
|
<signal name="changed" handler="instance_idle_timer_changed"/>
|
|
<property name="name">timer</property>
|
|
<property name="title" translatable="yes">Idle Timer</property>
|
|
<property name="subtitle" translatable="yes">Number of minutes the instance should remain idle before it is shut down (0 means it won't be shut down)</property>
|
|
<property name="digits">0</property>
|
|
<property name="adjustment">
|
|
<object class="GtkAdjustment">
|
|
<property name="lower">0</property>
|
|
<property name="upper">60</property>
|
|
<property name="step-increment">5</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwPreferencesGroup">
|
|
<child>
|
|
<object class="GtkLabel" id="ollama_information_label">
|
|
<property name="wrap">true</property>
|
|
<property name="use-markup">true</property>
|
|
<property name="label" translatable="yes">Integrated Ollama instance is not running</property>
|
|
<property name="justify">2</property>
|
|
<style>
|
|
<class name="dim-label"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
<object class="AdwDialog" id="terminal_dialog">
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Manage models dialog</property>
|
|
</accessibility>
|
|
<property name="title" translatable="yes">Terminal</property>
|
|
<property name="can-close">true</property>
|
|
<property name="width-request">600</property>
|
|
<property name="height-request">600</property>
|
|
<child>
|
|
<object class="AdwToolbarView">
|
|
<style>
|
|
<class name="osd"/>
|
|
</style>
|
|
<child type="top">
|
|
<object class="AdwHeaderBar"/>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow" id="terminal_scroller"/>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
<object class="AdwDialog" id="manage_models_dialog">
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Manage models dialog</property>
|
|
</accessibility>
|
|
<property name="can-close">true</property>
|
|
<property name="width-request">400</property>
|
|
<property name="height-request">600</property>
|
|
<child>
|
|
<object class="AdwToastOverlay" id="manage_models_overlay">
|
|
<child>
|
|
<object class="AdwNavigationView" id="navigation_view_manage_models">
|
|
<child>
|
|
<object class="AdwNavigationPage">
|
|
<property name="title" translatable="yes">Manage Models</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<property name="height-request">140</property>
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkMenuButton" id="create_model_button">
|
|
<property name="primary">True</property>
|
|
<property name="icon-name">list-add-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Create Model</property>
|
|
<property name="menu-model">create_model_menu</property>
|
|
</object>
|
|
</child>
|
|
<child type="start">
|
|
<object class="GtkToggleButton" id="model_search_button">
|
|
<property name="icon-name">edit-find-symbolic</property>
|
|
<property name="tooltip-text" translatable="yes">Search Model</property>
|
|
<signal name="clicked" handler="model_search_toggle"/>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="top">
|
|
<object class="GtkSearchBar" id="model_searchbar">
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Model search bar</property>
|
|
</accessibility>
|
|
<property name="key-capture-widget">AlpacaWindow</property>
|
|
<child>
|
|
<object class="GtkSearchEntry" id="searchentry">
|
|
<signal name="search-changed" handler="model_search_changed"/>
|
|
<property name="search-delay">100</property>
|
|
<property name="placeholder-text" translatable="yes">Search models</property>
|
|
<accessibility>
|
|
<property name="label" translatable="yes">Search models</property>
|
|
</accessibility>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkBox">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<child>
|
|
<object class="GtkScrolledWindow" id="model_scroller">
|
|
<property name="hscrollbar-policy">2</property>
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwStatusPage" id="no_results_page">
|
|
<property name="visible">false</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="hexpand">true</property>
|
|
<property name="icon-name">edit-find-symbolic</property>
|
|
<property name="title" translatable="yes">No Models Found</property>
|
|
<property name="description" translatable="yes">Try a different search or pull an unlisted model from it's name</property>
|
|
<property name="child">
|
|
<object class="GtkButton">
|
|
<property name="tooltip-text">Pull Model From Name</property>
|
|
<property name="action-name">app.create_model_from_name</property>
|
|
<property name="halign">center</property>
|
|
<property name="child">
|
|
<object class="GtkLabel">
|
|
<property name="label" translatable="yes">Pull Model From Name</property>
|
|
</object>
|
|
</property>
|
|
<style>
|
|
<class name="suggested-action"/>
|
|
</style>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwNavigationPage">
|
|
<property name="title">MODEL</property>
|
|
<property name="tag">model_tags_page</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkButton" id="model_link_button">
|
|
<signal name="clicked" handler="link_button_handler"/>
|
|
<property name="icon-name">globe-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow">
|
|
<property name="vexpand">true</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="orientation">1</property>
|
|
<property name="spacing">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="justify">2</property>
|
|
<property name="wrap">true</property>
|
|
<property name="wrap-mode">0</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="label" translatable="yes">By downloading this model you accept the license agreement available on the model's website.</property>
|
|
<style>
|
|
<class name="dim-label"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkListBox" id="model_tag_list_box">
|
|
<property name="valign">1</property>
|
|
<property name="selection-mode">none</property>
|
|
<style>
|
|
<class name="boxed-list"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwNavigationPage">
|
|
<property name="title" translatable="yes">Model Details</property>
|
|
<property name="tag">model_information</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkButton" id="model_detail_create_button">
|
|
<signal name="clicked" handler="model_detail_create_button_clicked"/>
|
|
<property name="icon-name">edit-copy-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow">
|
|
<property name="vexpand">true</property>
|
|
<property name="hexpand">true</property>
|
|
<child>
|
|
<object class="AdwStatusPage" id="model_detail_page">
|
|
<property name="icon-name">brain-augemnted-symbolic</property>
|
|
<property name="description">text</property>
|
|
<style>
|
|
<class name="compact"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwNavigationPage">
|
|
<property name="title" translatable="yes">Create Model</property>
|
|
<property name="tag">model_create_page</property>
|
|
<property name="child">
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar"/>
|
|
</child>
|
|
<property name="content">
|
|
<object class="GtkScrolledWindow">
|
|
<property name="vexpand">true</property>
|
|
<property name="hexpand">true</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="orientation">1</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="GtkListBox">
|
|
<style>
|
|
<class name="boxed-list"/>
|
|
<class name="card"/>
|
|
</style>
|
|
<property name="selection-mode">none</property>
|
|
<child>
|
|
<object class="AdwActionRow" id="create_model_base">
|
|
<property name="title" translatable="yes">Base</property>
|
|
<property name="sensitive">false</property>
|
|
<property name="subtitle"/>
|
|
<style>
|
|
<class name="property"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkListBox">
|
|
<style>
|
|
<class name="boxed-list"/>
|
|
<class name="card"/>
|
|
</style>
|
|
<property name="selection-mode">none</property>
|
|
<child>
|
|
<object class="AdwEntryRow" id="create_model_name">
|
|
<property name="title" translatable="yes">Name</property>
|
|
<property name="input-purpose">alpha</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwEntryRow" id="create_model_system">
|
|
<property name="title" translatable="yes">Context</property>
|
|
<property name="input-purpose">alpha</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkListBox">
|
|
<style>
|
|
<class name="boxed-list"/>
|
|
<class name="card"/>
|
|
</style>
|
|
<property name="selection-mode">none</property>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="height-request">140</property>
|
|
<property name="margin-top">10</property>
|
|
<property name="margin-bottom">10</property>
|
|
<property name="margin-start">10</property>
|
|
<property name="margin-end">10</property>
|
|
<style>
|
|
<class name="card"/>
|
|
</style>
|
|
<child>
|
|
<object class="GtkScrolledWindow">
|
|
<property name="margin-start">10</property>
|
|
<property name="margin-end">10</property>
|
|
<style>
|
|
<class name="undershoot-bottom"/>
|
|
</style>
|
|
<child>
|
|
<object class="GtkTextView" id="create_model_modelfile">
|
|
<style>
|
|
<class name="modelfile_textview"/>
|
|
</style>
|
|
<property name="wrap-mode">word</property>
|
|
<property name="top-margin">10</property>
|
|
<property name="bottom-margin">10</property>
|
|
<property name="hexpand">true</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="label" translatable="yes">Some models require a modelfile, Alpaca fills FROM and SYSTEM (context) instructions automatically. Please visit the model's website or Ollama documentation for more information if you're unsure.</property>
|
|
<property name="margin-top">10</property>
|
|
<property name="margin-bottom">10</property>
|
|
<property name="margin-start">10</property>
|
|
<property name="margin-end">10</property>
|
|
<property name="halign">1</property>
|
|
<property name="wrap">true</property>
|
|
<style>
|
|
<class name="caption"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton">
|
|
<property name="label" translatable="yes">Create</property>
|
|
<signal name="clicked" handler="create_model_start"/>
|
|
<style>
|
|
<class name="suggested-action"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
<object class="AdwDialog" id="file_preview_dialog">
|
|
<accessibility>
|
|
<property name="label" translatable="yes">File preview dialog</property>
|
|
</accessibility>
|
|
<property name="can-close">true</property>
|
|
<property name="width-request">400</property>
|
|
<property name="height-request">600</property>
|
|
<child>
|
|
<object class="AdwToolbarView">
|
|
<child type="top">
|
|
<object class="AdwHeaderBar">
|
|
<child type="start">
|
|
<object class="GtkButton" id="file_preview_open_button">
|
|
<signal name="clicked" handler="link_button_handler"/>
|
|
<property name="tooltip-text" translatable="yes">Open With Default App</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="icon-name">share-symbolic</property>
|
|
</object>
|
|
</child>
|
|
<child type="start">
|
|
<object class="GtkButton" id="file_preview_remove_button">
|
|
<property name="tooltip-text" translatable="yes">Remove Attachment</property>
|
|
<property name="vexpand">false</property>
|
|
<property name="valign">3</property>
|
|
<property name="icon-name">user-trash-symbolic</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkScrolledWindow">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<style>
|
|
<class name="card"/>
|
|
<class name="view"/>
|
|
</style>
|
|
<child>
|
|
<object class="GtkBox">
|
|
<child>
|
|
<object class="GtkLabel" id="file_preview_text_label">
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="selectable">true</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkImage" id="file_preview_image">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
<object class="AdwDialog" id="welcome_dialog">
|
|
<property name="can-close">false</property>
|
|
<property name="width-request">400</property>
|
|
<property name="height-request">600</property>
|
|
<child>
|
|
<object class="AdwToolbarView">
|
|
<child type="bottom">
|
|
<object class="GtkActionBar">
|
|
<property name="hexpand">true</property>
|
|
<property name="margin-start">5</property>
|
|
<property name="margin-end">5</property>
|
|
<property name="margin-bottom">5</property>
|
|
<child type="start">
|
|
<object class="GtkButton" id="welcome_previous_button">
|
|
<signal name="clicked" handler="welcome_previous_button_activate"/>
|
|
<property name="tooltip-text" translatable="yes">Previous</property>
|
|
<property name="label">Previous</property>
|
|
<property name="sensitive">false</property>
|
|
<style>
|
|
<class name="raised"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
<child type="center">
|
|
<object class="AdwCarouselIndicatorDots">
|
|
<property name="carousel">welcome_carousel</property>
|
|
</object>
|
|
</child>
|
|
<child type="end">
|
|
<object class="GtkButton" id="welcome_next_button">
|
|
<signal name="clicked" handler="welcome_next_button_activate"/>
|
|
<property name="tooltip-text" translatable="yes">Next</property>
|
|
<property name="label">Next</property>
|
|
<style>
|
|
<class name="suggested-action"/>
|
|
</style>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
|
|
<child>
|
|
<object class="AdwCarousel" id="welcome_carousel">
|
|
<signal name="page-changed" handler="welcome_carousel_page_changed"/>
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="allow-long-swipes">true</property>
|
|
<property name="allow-scroll-wheel">true</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="AdwStatusPage">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="icon-name">com.jeffser.Alpaca</property>
|
|
<property name="title" translatable="yes">Welcome to Alpaca</property>
|
|
<property name="description" translatable="yes">Powered by Ollama</property>
|
|
<child>
|
|
<object class="GtkLinkButton">
|
|
<property name="label" translatable="yes">Ollama Website</property>
|
|
<property name="uri">https://ollama.com/</property>
|
|
<property name="margin-top">12</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="AdwStatusPage">
|
|
<property name="hexpand">true</property>
|
|
<property name="vexpand">true</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="margin-bottom">12</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-end">12</property>
|
|
<property name="icon-name">dialog-warning-symbolic</property>
|
|
<property name="title" translatable="yes">Disclaimer</property>
|
|
<property name="description" translatable="yes">Alpaca and its developers are not liable for any damages to devices or software resulting from the execution of code generated by an AI model. Please exercise caution and review the code carefully before running it.</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
|
|
</template>
|
|
<menu id="primary_menu">
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Import Chat</attribute>
|
|
<attribute name="action">app.import_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Manage Models</attribute>
|
|
<attribute name="action">app.manage_models</attribute>
|
|
</item>
|
|
</section>
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Preferences</attribute>
|
|
<attribute name="action">app.preferences</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Keyboard Shortcuts</attribute>
|
|
<attribute name="action">win.show-help-overlay</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">About Alpaca</attribute>
|
|
<attribute name="action">app.about</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
<menu id="secondary_menu">
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Rename Chat</attribute>
|
|
<attribute name="action">app.rename_current_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Duplicate Chat</attribute>
|
|
<attribute name="action">app.duplicate_current_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Export Chat</attribute>
|
|
<attribute name="action">app.export_current_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Clear Chat</attribute>
|
|
<attribute name="action">app.clear</attribute>
|
|
</item>
|
|
</section>
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Delete Chat</attribute>
|
|
<attribute name="action">app.delete_current_chat</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
<menu id="chat_right_click_menu">
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Rename Chat</attribute>
|
|
<attribute name="action">app.rename_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Duplicate Chat</attribute>
|
|
<attribute name="action">app.duplicate_chat</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Export Chat</attribute>
|
|
<attribute name="action">app.export_chat</attribute>
|
|
</item>
|
|
</section>
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">Delete Chat</attribute>
|
|
<attribute name="action">app.delete_chat</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
<menu id="create_model_menu">
|
|
<section>
|
|
<item>
|
|
<attribute name="label" translatable="yes">From Existing Model</attribute>
|
|
<attribute name="action">app.create_model_from_existing</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">From GGUF File</attribute>
|
|
<attribute name="action">app.create_model_from_file</attribute>
|
|
</item>
|
|
<item>
|
|
<attribute name="label" translatable="yes">From Name</attribute>
|
|
<attribute name="action">app.create_model_from_name</attribute>
|
|
</item>
|
|
</section>
|
|
</menu>
|
|
<object class="GtkFileFilter" id="file_filter_attachments">
|
|
<suffixes>
|
|
<suffix>txt</suffix>
|
|
<suffix>md</suffix>
|
|
<suffix>html</suffix>
|
|
<suffix>css</suffix>
|
|
<suffix>js</suffix>
|
|
<suffix>py</suffix>
|
|
<suffix>java</suffix>
|
|
<suffix>json</suffix>
|
|
<suffix>xml</suffix>
|
|
<suffix>pdf</suffix>
|
|
<suffix>png</suffix>
|
|
<suffix>jpeg</suffix>
|
|
<suffix>jpg</suffix>
|
|
<suffix>webp</suffix>
|
|
<suffix>gif</suffix>
|
|
</suffixes>
|
|
</object>
|
|
<object class="GtkFileFilter" id="file_filter_tar">
|
|
<mime-types>
|
|
<mime-type>application/x-tar</mime-type>
|
|
</mime-types>
|
|
</object>
|
|
<object class="GtkFileFilter" id="file_filter_gguf">
|
|
<suffixes>
|
|
<suffix>gguf</suffix>
|
|
</suffixes>
|
|
</object>
|
|
<object class="GtkShortcutsWindow" id="shortcut_window">
|
|
<property name="modal">1</property>
|
|
<child>
|
|
<object class="GtkShortcutsSection">
|
|
<property name="section-name">shortcuts</property>
|
|
<property name="max-height">10</property>
|
|
<child>
|
|
<object class="GtkShortcutsGroup">
|
|
<property name="title" translatable="yes">General</property>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>Q</property>
|
|
<property name="title" translatable="yes">Close application</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>W</property>
|
|
<property name="title" translatable="yes">Delete current chat</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>I</property>
|
|
<property name="title" translatable="yes">Import chat</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>E</property>
|
|
<property name="title" translatable="yes">Clear chat</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>comma</property>
|
|
<property name="title" translatable="yes">Preferences</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>N</property>
|
|
<property name="title" translatable="yes">New chat</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>slash</property>
|
|
<property name="title" translatable="yes">Show shortcuts window</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>M</property>
|
|
<property name="title" translatable="yes">Manage models</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator">F9</property>
|
|
<property name="title" translatable="yes">Toggle sidebar</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator">F2</property>
|
|
<property name="title" translatable="yes">Rename chat</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsGroup">
|
|
<property name="title" translatable="yes">Editor</property>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>C</property>
|
|
<property name="title" translatable="yes">Copy</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><ctrl>V</property>
|
|
<property name="title" translatable="yes">Paste</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator"><shift>Return</property>
|
|
<property name="title" translatable="yes">Insert new line</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkShortcutsShortcut">
|
|
<property name="accelerator">Return</property>
|
|
<property name="title" translatable="yes">Send Message</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</interface>
|
|
|
|
|