История изменений
Исправление wandrien, (текущая версия) :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var @workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)
Максимум вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var @workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)
Максимум вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)
Максимум вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.
Максимум вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.
Максимум вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.
Максимум что вы можете заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исправление wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list ^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.
Максимум что вы можете это заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.
Исходная версия wandrien, :
Я, конечно, из принципа сейчас допишу код до рабочего состояния,
Да хрен с ней не буду. Выглядит это всё примерно вот так:
fn list_all_windows {|regexp|
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
}
fn check_xfdesktop {
var @ids = (list_all_windows xfdesktop)
for id $ids {
var props = (xprop -id $id | slurp)
if (and ^
(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
) {
put $true
return
}
}
put $false
}
fn set_wallpaper_xfdesktop {|path|
if (and (has-external xfconf-query) (check_xfdesktop) ) {
var workspaces = (
xfconf-query --channel xfce4-desktop --list \^
| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
)
for workspace $workspaces {
xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
}
put $true
return
}
put $false
}
В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.
Максимум что вы можете это заглушить бросок исключения:
set _ = ?(
xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
)
А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.
Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.
В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.
Вот и получается, что синтаксически TCL по всем параметрам лучше.