Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/components/graph/GraphCanvas.vue
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,20 @@ watch(
await colorPaletteService.loadColorPalette(currentPaletteId)
}
)

watch(
() => settingStore.get('Comfy.Canvas.BackgroundImage'),
async () => {
if (!canvasStore.canvas) return
const currentPaletteId = colorPaletteStore.activePaletteId
if (!currentPaletteId) return

// Reload color palette to apply background image
await colorPaletteService.loadColorPalette(currentPaletteId)
// Mark background canvas as dirty
canvasStore.canvas.setDirty(false, true)
}
)
watch(
() => colorPaletteStore.activePaletteId,
async (newValue) => {
Expand Down
10 changes: 10 additions & 0 deletions src/components/sidebar/tabs/QueueSidebarTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,16 @@ const menuItems = computed<MenuItem[]>(() => [
useLitegraphService().goToNode(menuTargetNode.value.id)
},
visible: !!menuTargetNode.value
},
{
label: t('g.setAsBackground'),
icon: 'pi pi-image',
command: () => {
const url = menuTargetTask.value?.previewOutput?.url
if (url) {
void settingStore.set('Comfy.Canvas.BackgroundImage', url)
}
}
}
])

Expand Down
14 changes: 14 additions & 0 deletions src/constants/coreSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,20 @@ export const CORE_SETTINGS: SettingParams[] = [
defaultValue: false,
versionAdded: '1.18.0'
},
{
id: 'Comfy.Canvas.BackgroundImage',
category: ['Appearance', 'Canvas', 'Background'],
name: 'Canvas background image',
type: 'text',
tooltip:
'Image URL for the canvas background. You can right-click an image in the outputs panel and select "Set as Background" to use it.',
defaultValue: '',
versionAdded: '1.20.4',
attrs: {
inputmode: 'url',
placeholder: 'https://example.com/image.png'
}
},
{
id: 'LiteGraph.Pointer.TrackpadGestures',
category: ['LiteGraph', 'Pointer', 'Trackpad Gestures'],
Expand Down
2 changes: 2 additions & 0 deletions src/locales/en/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
"deprecated": "DEPR",
"loadWorkflow": "Load Workflow",
"goToNode": "Go to Node",
"setAsBackground": "Set as Background",
"customBackground": "Custom Background",
"settings": "Settings",
"searchWorkflows": "Search Workflows",
"searchSettings": "Search Settings",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
"custom": "custom"
}
},
"Comfy_Canvas_BackgroundImage": {
"name": "Canvas background image",
"tooltip": "Image URL for the canvas background. You can right-click an image in the outputs panel and select \"Set as Background\" to use it."
},
"Comfy_Canvas_SelectionToolbox": {
"name": "Show selection toolbox"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/es/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "Copiar",
"copyToClipboard": "Copiar al portapapeles",
"currentUser": "Usuario actual",
"customBackground": "Fondo personalizado",
"customize": "Personalizar",
"customizeFolder": "Personalizar carpeta",
"delete": "Eliminar",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "Buscar nodos",
"searchSettings": "Buscar configuraciones",
"searchWorkflows": "Buscar flujos de trabajo",
"setAsBackground": "Establecer como fondo",
"settings": "Configuraciones",
"showReport": "Mostrar informe",
"sort": "Ordenar",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/es/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "Personalizado: Reemplace la barra de título del sistema con el menú superior de ComfyUI"
},
"Comfy_Canvas_BackgroundImage": {
"name": "Imagen de fondo del lienzo",
"tooltip": "URL de la imagen para el fondo del lienzo. Puedes hacer clic derecho en una imagen del panel de resultados y seleccionar \"Establecer como fondo\" para usarla."
},
"Comfy_Canvas_SelectionToolbox": {
"name": "Mostrar caja de herramientas de selección"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/fr/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "Copier",
"copyToClipboard": "Copier dans le presse-papiers",
"currentUser": "Utilisateur actuel",
"customBackground": "Arrière-plan personnalisé",
"customize": "Personnaliser",
"customizeFolder": "Personnaliser le dossier",
"delete": "Supprimer",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "Rechercher des nœuds",
"searchSettings": "Rechercher des paramètres",
"searchWorkflows": "Rechercher des flux de travail",
"setAsBackground": "Définir comme arrière-plan",
"settings": "Paramètres",
"showReport": "Afficher le rapport",
"sort": "Trier",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/fr/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "Choisissez l'option personnalisée pour masquer la barre de titre du système"
},
"Comfy_Canvas_BackgroundImage": {
"name": "Image de fond du canevas",
"tooltip": "URL de l'image pour le fond du canevas. Vous pouvez faire un clic droit sur une image dans le panneau de sortie et sélectionner « Définir comme fond » pour l'utiliser."
},
"Comfy_Canvas_SelectionToolbox": {
"name": "Afficher la boîte à outils de sélection"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/ja/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "コピー",
"copyToClipboard": "クリップボードにコピー",
"currentUser": "現在のユーザー",
"customBackground": "カスタム背景",
"customize": "カスタマイズ",
"customizeFolder": "フォルダーをカスタマイズ",
"delete": "削除",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "ノードを検索",
"searchSettings": "設定を検索",
"searchWorkflows": "ワークフローを検索",
"setAsBackground": "背景として設定",
"settings": "設定",
"showReport": "レポートを表示",
"sort": "並び替え",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/ja/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "システムタイトルバーを非表示にするにはカスタムオプションを選択してください"
},
"Comfy_Canvas_BackgroundImage": {
"name": "キャンバス背景画像",
"tooltip": "キャンバスの背景画像のURLです。出力パネルで画像を右クリックし、「背景として設定」を選択すると使用できます。"
},
"Comfy_Canvas_SelectionToolbox": {
"name": "選択ツールボックスを表示"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/ko/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "복사",
"copyToClipboard": "클립보드에 복사",
"currentUser": "현재 사용자",
"customBackground": "맞춤 배경",
"customize": "사용자 정의",
"customizeFolder": "폴더 사용자 정의",
"delete": "삭제",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "노드 검색",
"searchSettings": "설정 검색",
"searchWorkflows": "워크플로 검색",
"setAsBackground": "배경으로 설정",
"settings": "설정",
"showReport": "보고서 보기",
"sort": "정렬",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/ko/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "시스템 제목 표시 줄을 숨기려면 사용자 정의 옵션을 선택하세요"
},
"Comfy_Canvas_BackgroundImage": {
"name": "캔버스 배경 이미지",
"tooltip": "캔버스 배경에 사용할 이미지 URL입니다. 출력 패널에서 이미지를 마우스 오른쪽 버튼으로 클릭한 후 \"배경으로 설정\"을 선택해 사용할 수 있습니다."
},
"Comfy_Canvas_SelectionToolbox": {
"name": "선택 도구 상자 표시"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/ru/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "Копировать",
"copyToClipboard": "Скопировать в буфер обмена",
"currentUser": "Текущий пользователь",
"customBackground": "Пользовательский фон",
"customize": "Настроить",
"customizeFolder": "Настроить папку",
"delete": "Удалить",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "Поиск нод",
"searchSettings": "Поиск настроек",
"searchWorkflows": "Поиск рабочих процессов",
"setAsBackground": "Установить как фон",
"settings": "Настройки",
"showReport": "Показать отчёт",
"sort": "Сортировать",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/ru/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "Выберите пользовательский вариант, чтобы скрыть системную строку заголовка"
},
"Comfy_Canvas_BackgroundImage": {
"name": "Фоновое изображение холста",
"tooltip": "URL изображения для фона холста. Вы можете кликнуть правой кнопкой мыши на изображении в панели результатов и выбрать «Установить как фон», чтобы использовать его."
},
"Comfy_Canvas_SelectionToolbox": {
"name": "Показать панель инструментов выбора"
},
Expand Down
2 changes: 2 additions & 0 deletions src/locales/zh/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
"copy": "复制",
"copyToClipboard": "复制到剪贴板",
"currentUser": "当前用户",
"customBackground": "自定义背景",
"customize": "自定义",
"customizeFolder": "自定义文件夹",
"delete": "删除",
Expand Down Expand Up @@ -342,6 +343,7 @@
"searchNodes": "搜索节点",
"searchSettings": "搜索设置",
"searchWorkflows": "搜索工作流",
"setAsBackground": "设为背景",
"settings": "设置",
"showReport": "显示报告",
"sort": "排序",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/zh/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
},
"tooltip": "选择自定义选项以隐藏系统标题栏"
},
"Comfy_Canvas_BackgroundImage": {
"name": "画布背景图像",
"tooltip": "画布背景的图像 URL。你可以在输出面板中右键点击一张图片,并选择“设为背景”来使用它。"
},
"Comfy_Canvas_SelectionToolbox": {
"name": "显示选择工具箱"
},
Expand Down
1 change: 1 addition & 0 deletions src/schemas/apiSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ const zNodeBadgeMode = z.enum(
const zSettings = z.object({
'Comfy.ColorPalette': z.string(),
'Comfy.CustomColorPalettes': colorPalettesSchema,
'Comfy.Canvas.BackgroundImage': z.string().optional(),
'Comfy.ConfirmClear': z.boolean(),
'Comfy.DevMode': z.boolean(),
'Comfy.Workflow.ShowMissingNodesWarning': z.boolean(),
Expand Down
16 changes: 14 additions & 2 deletions src/services/colorPaletteService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,13 @@ export const useColorPaletteService = () => {
// Sets the colors of the LiteGraph objects
app.canvas.node_title_color = palette.NODE_TITLE_COLOR
app.canvas.default_link_color = palette.LINK_COLOR
app.canvas.background_image = palette.BACKGROUND_IMAGE
app.canvas.clear_background_color = palette.CLEAR_BACKGROUND_COLOR
const backgroundImage = settingStore.get('Comfy.Canvas.BackgroundImage')
if (backgroundImage) {
app.canvas.clear_background_color = 'transparent'
} else {
app.canvas.background_image = palette.BACKGROUND_IMAGE
app.canvas.clear_background_color = palette.CLEAR_BACKGROUND_COLOR
}
app.canvas._pattern = undefined

for (const [key, value] of Object.entries(palette)) {
Expand Down Expand Up @@ -126,6 +131,13 @@ export const useColorPaletteService = () => {
for (const [key, value] of Object.entries(comfyColorPalette)) {
rootStyle.setProperty('--' + key, value)
}
const backgroundImage = settingStore.get('Comfy.Canvas.BackgroundImage')
if (backgroundImage) {
rootStyle.setProperty(
'--bg-img',
`url('${backgroundImage}') no-repeat center /cover`
)
}
}
}

Expand Down